diff --git a/src/SeerArrayVisualizerWidget.cpp b/src/SeerArrayVisualizerWidget.cpp index 4a5ede9..c78e5d5 100644 --- a/src/SeerArrayVisualizerWidget.cpp +++ b/src/SeerArrayVisualizerWidget.cpp @@ -1,4 +1,5 @@ #include "SeerArrayVisualizerWidget.h" +#include "SeerHelpPageWidget.h" #include "SeerUtl.h" #include #include @@ -68,6 +69,7 @@ SeerArrayVisualizerWidget::SeerArrayVisualizerWidget (QWidget* parent) : QWidget // Connect things. QObject::connect(aRefreshToolButton, &QToolButton::clicked, this, &SeerArrayVisualizerWidget::handleaRefreshButton); QObject::connect(bRefreshToolButton, &QToolButton::clicked, this, &SeerArrayVisualizerWidget::handlebRefreshButton); + QObject::connect(helpToolButton, &QToolButton::clicked, this, &SeerArrayVisualizerWidget::handleHelpButton); QObject::connect(aArrayLengthLineEdit, &QLineEdit::returnPressed, this, &SeerArrayVisualizerWidget::handleaRefreshButton); QObject::connect(bArrayLengthLineEdit, &QLineEdit::returnPressed, this, &SeerArrayVisualizerWidget::handlebRefreshButton); QObject::connect(aArrayOffsetLineEdit, &QLineEdit::returnPressed, this, &SeerArrayVisualizerWidget::handleaRefreshButton); @@ -493,6 +495,13 @@ void SeerArrayVisualizerWidget::handlebRefreshButton () { emit evaluateMemoryExpression(_bMemoryId, bVariableAddressLineEdit->text(), bytes); } +void SeerArrayVisualizerWidget::handleHelpButton () { + + SeerHelpPageWidget* help = new SeerHelpPageWidget; + help->loadFile(":/seer/resources/help/ArrayVisualizer.md"); + help->show(); +} + void SeerArrayVisualizerWidget::handleaVariableNameLineEdit () { setAVariableName (aVariableNameLineEdit->text()); diff --git a/src/SeerArrayVisualizerWidget.h b/src/SeerArrayVisualizerWidget.h index 6aedad2..7df4079 100644 --- a/src/SeerArrayVisualizerWidget.h +++ b/src/SeerArrayVisualizerWidget.h @@ -32,6 +32,7 @@ class SeerArrayVisualizerWidget : public QWidget, protected Ui::SeerArrayVisuali protected slots: void handleaRefreshButton (); void handlebRefreshButton (); + void handleHelpButton (); void handleaVariableNameLineEdit (); void handlebVariableNameLineEdit (); void handleaArrayDisplayFormatComboBox (int index); diff --git a/src/SeerArrayVisualizerWidget.ui b/src/SeerArrayVisualizerWidget.ui index 7587974..a961259 100644 --- a/src/SeerArrayVisualizerWidget.ui +++ b/src/SeerArrayVisualizerWidget.ui @@ -304,7 +304,7 @@ Variable axis type. - Y + X @@ -480,6 +480,20 @@ + + + + Help on Array Visualizer + + + + + + + :/seer/resources/RelaxLightIcons/help-about.svg:/seer/resources/RelaxLightIcons/help-about.svg + + + @@ -530,6 +544,8 @@ scatterRadioButton pointsCheckBox labelsCheckBox + printPushButton + helpToolButton diff --git a/src/SeerEditorManagerWidget.cpp b/src/SeerEditorManagerWidget.cpp index 3204d65..98a7f4f 100644 --- a/src/SeerEditorManagerWidget.cpp +++ b/src/SeerEditorManagerWidget.cpp @@ -2,6 +2,7 @@ #include "SeerEditorWidgetSource.h" #include "SeerEditorWidgetAssembly.h" #include "SeerCloseSourceDialog.h" +#include "SeerHelpPageWidget.h" #include "SeerUtl.h" #include "QHContainerWidget.h" #include @@ -19,7 +20,7 @@ SeerEditorManagerWidget::SeerEditorManagerWidget (QWidget* parent) : QWidget(par _editorFont = QFont("Source Code Pro", 10); // Default font. _editorHighlighterSettings = SeerHighlighterSettings::populateForCPP(""); // Default syntax highlighting. _editorHighlighterEnabled = true; - _editorKeySettings = SeerKeySettings::populate(); // Defualt key settings. + _editorKeySettings = SeerKeySettings::populate(); // Default key settings. _assemblyWidget = 0; _keepAssemblyTabOnTop = true; @@ -33,21 +34,26 @@ SeerEditorManagerWidget::SeerEditorManagerWidget (QWidget* parent) : QWidget(par // Create editor options bar. QToolButton* fileOpenToolButton = new QToolButton(tabWidget); fileOpenToolButton->setIcon(QIcon(":/seer/resources/RelaxLightIcons/document-open.svg")); - fileOpenToolButton->setToolTip("Open a source file."); + fileOpenToolButton->setToolTip("Open a file."); QToolButton* fileCloseToolButton = new QToolButton(tabWidget); fileCloseToolButton->setIcon(QIcon(":/seer/resources/RelaxLightIcons/list-remove.svg")); - fileCloseToolButton->setToolTip("Close opened source files."); + fileCloseToolButton->setToolTip("Close opened files."); QToolButton* textSearchToolButton = new QToolButton(tabWidget); textSearchToolButton->setIcon(QIcon(":/seer/resources/RelaxLightIcons/edit-find.svg")); - textSearchToolButton->setToolTip("Show search bar for text."); + textSearchToolButton->setToolTip("Show search bar."); + + QToolButton* helpToolButton = new QToolButton(tabWidget); + helpToolButton->setIcon(QIcon(":/seer/resources/RelaxLightIcons/help-about.svg")); + helpToolButton->setToolTip("Help on the code manager."); QHContainerWidget* hcontainer = new QHContainerWidget(this); hcontainer->setSpacing(3); hcontainer->addWidget(fileOpenToolButton); hcontainer->addWidget(fileCloseToolButton); hcontainer->addWidget(textSearchToolButton); + hcontainer->addWidget(helpToolButton); tabWidget->setCornerWidget(hcontainer, Qt::TopRightCorner); @@ -59,6 +65,7 @@ SeerEditorManagerWidget::SeerEditorManagerWidget (QWidget* parent) : QWidget(par QObject::connect(fileOpenToolButton, &QToolButton::clicked, this, &SeerEditorManagerWidget::handleFileOpenToolButtonClicked); QObject::connect(fileCloseToolButton, &QToolButton::clicked, this, &SeerEditorManagerWidget::handleFileCloseToolButtonClicked); QObject::connect(textSearchToolButton, &QToolButton::clicked, this, &SeerEditorManagerWidget::handleTextSearchToolButtonClicked); + QObject::connect(helpToolButton, &QToolButton::clicked, this, &SeerEditorManagerWidget::handleHelpToolButtonClicked); } SeerEditorManagerWidget::~SeerEditorManagerWidget () { @@ -936,6 +943,13 @@ void SeerEditorManagerWidget::handleTextSearchToolButtonClicked () { } } +void SeerEditorManagerWidget::handleHelpToolButtonClicked () { + + SeerHelpPageWidget* help = new SeerHelpPageWidget; + help->loadFile(":/seer/resources/help/EditorManager.md"); + help->show(); +} + void SeerEditorManagerWidget::handleAddAlternateDirectory (QString path) { // Don't re-add it if it already exists in the list. diff --git a/src/SeerEditorManagerWidget.h b/src/SeerEditorManagerWidget.h index 409a1d5..0df523f 100644 --- a/src/SeerEditorManagerWidget.h +++ b/src/SeerEditorManagerWidget.h @@ -77,6 +77,7 @@ class SeerEditorManagerWidget : public QWidget, protected Ui::SeerEditorManagerW void handleFileOpenToolButtonClicked (); void handleFileCloseToolButtonClicked (); void handleTextSearchToolButtonClicked (); + void handleHelpToolButtonClicked (); void handleAddAlternateDirectory (QString path); signals: diff --git a/src/SeerGdbWidget.cpp b/src/SeerGdbWidget.cpp index bddcd3a..f10dc7e 100644 --- a/src/SeerGdbWidget.cpp +++ b/src/SeerGdbWidget.cpp @@ -4,6 +4,7 @@ #include "SeerArrayVisualizerWidget.h" #include "SeerStructVisualizerWidget.h" #include "SeerVarVisualizerWidget.h" +#include "SeerHelpPageWidget.h" #include "SeerUtl.h" #include "QHContainerWidget.h" #include @@ -92,10 +93,15 @@ SeerGdbWidget::SeerGdbWidget (QWidget* parent) : QWidget(parent) { breakpointsSaveToolButton->setIcon(QIcon(":/seer/resources/RelaxLightIcons/document-save-as.svg")); breakpointsSaveToolButton->setToolTip("Save breakpoints to a file."); + QToolButton* helpToolButton = new QToolButton(logsTabWidget); + helpToolButton->setIcon(QIcon(":/seer/resources/RelaxLightIcons/help-about.svg")); + helpToolButton->setToolTip("Help on Breakpoint/Gdb/Seer information."); + QHContainerWidget* hcontainer = new QHContainerWidget(this); hcontainer->setSpacing(3); hcontainer->addWidget(breakpointsLoadToolButton); hcontainer->addWidget(breakpointsSaveToolButton); + hcontainer->addWidget(helpToolButton); logsTabWidget->setCornerWidget(hcontainer, Qt::TopRightCorner); @@ -277,6 +283,7 @@ SeerGdbWidget::SeerGdbWidget (QWidget* parent) : QWidget(parent) { QObject::connect(breakpointsLoadToolButton, &QToolButton::clicked, this, &SeerGdbWidget::handleGdbLoadBreakpoints); QObject::connect(breakpointsSaveToolButton, &QToolButton::clicked, this, &SeerGdbWidget::handleGdbSaveBreakpoints); + QObject::connect(helpToolButton, &QToolButton::clicked, this, &SeerGdbWidget::handleHelpToolButtonClicked); // Restore window settings. setConsoleMode("normal"); @@ -1984,6 +1991,14 @@ void SeerGdbWidget::handleGdbSaveBreakpoints () { QMessageBox::information(this, "Seer", "Saved."); } +void SeerGdbWidget::handleHelpToolButtonClicked () { + + SeerHelpPageWidget* help = new SeerHelpPageWidget; + help->loadFile(":/seer/resources/help/BreakpointGdbSeerManager.md"); + help->show(); +} + + void SeerGdbWidget::handleGdbAssemblyDisassemblyFlavor () { if (_assemblyDisassemblyFlavor != "") { diff --git a/src/SeerGdbWidget.h b/src/SeerGdbWidget.h index 4a60d50..78a24e5 100644 --- a/src/SeerGdbWidget.h +++ b/src/SeerGdbWidget.h @@ -246,6 +246,7 @@ class SeerGdbWidget : public QWidget, protected Ui::SeerGdbWidgetForm { void handleLogOuputChanged (); void handleGdbLoadBreakpoints (); void handleGdbSaveBreakpoints (); + void handleHelpToolButtonClicked (); void handleGdbAssemblyDisassemblyFlavor (); void handleGdbAssemblySymbolDemangling (); void handleGdbSchedulerLockingMode (QString mode); diff --git a/src/SeerMemoryVisualizerWidget.cpp b/src/SeerMemoryVisualizerWidget.cpp index dabb2d3..63401a0 100644 --- a/src/SeerMemoryVisualizerWidget.cpp +++ b/src/SeerMemoryVisualizerWidget.cpp @@ -1,4 +1,5 @@ #include "SeerMemoryVisualizerWidget.h" +#include "SeerHelpPageWidget.h" #include "SeerUtl.h" #include #include @@ -51,6 +52,7 @@ SeerMemoryVisualizerWidget::SeerMemoryVisualizerWidget (QWidget* parent) : QWidg // Connect things. QObject::connect(refreshToolButton, &QToolButton::clicked, this, &SeerMemoryVisualizerWidget::handleRefreshButton); + QObject::connect(helpToolButton, &QToolButton::clicked, this, &SeerMemoryVisualizerWidget::handleHelpButton); QObject::connect(memoryLengthLineEdit, &QLineEdit::returnPressed, this, &SeerMemoryVisualizerWidget::handleRefreshButton); QObject::connect(variableNameLineEdit, &QLineEdit::returnPressed, this, &SeerMemoryVisualizerWidget::handleVariableNameLineEdit); QObject::connect(memoryDisplayFormatComboBox, QOverload::of(&QComboBox::currentIndexChanged), this, &SeerMemoryVisualizerWidget::handleMemoryDisplayFormatComboBox); @@ -262,6 +264,13 @@ void SeerMemoryVisualizerWidget::handleRefreshButton () { emit evaluateAsmExpression(_asmId, variableAddressLineEdit->text(), nbytes, 2); } +void SeerMemoryVisualizerWidget::handleHelpButton () { + + SeerHelpPageWidget* help = new SeerHelpPageWidget; + help->loadFile(":/seer/resources/help/MemoryVisualizer.md"); + help->show(); +} + void SeerMemoryVisualizerWidget::handleVariableNameLineEdit () { setVariableName (variableNameLineEdit->text()); diff --git a/src/SeerMemoryVisualizerWidget.h b/src/SeerMemoryVisualizerWidget.h index 7e3d78e..91a59d5 100644 --- a/src/SeerMemoryVisualizerWidget.h +++ b/src/SeerMemoryVisualizerWidget.h @@ -26,6 +26,7 @@ class SeerMemoryVisualizerWidget : public QWidget, protected Ui::SeerMemoryVisua protected slots: void handleRefreshButton (); + void handleHelpButton (); void handleVariableNameLineEdit (); void handleMemoryDisplayFormatComboBox (int index); void handleCharDisplayFormatComboBox (int index); diff --git a/src/SeerMemoryVisualizerWidget.ui b/src/SeerMemoryVisualizerWidget.ui index 48c7484..d023d23 100644 --- a/src/SeerMemoryVisualizerWidget.ui +++ b/src/SeerMemoryVisualizerWidget.ui @@ -6,173 +6,198 @@ 0 0 - 798 + 899 683 Form - - - - - Variable expression resulting in an address. - - - Starting address - - - true - - - - - - - Memory address. - - - true - - - Memory address - - - - - - - Number of bytes to display. - - - - - - # Bytes (default 256) - - - true - - - - - - - Memory display format. - + + + - - hex - + + + Variable expression resulting in an address. + + + Starting address + + + true + + - - octal - + + + Memory address. + + + true + + + Memory address + + - - binary - + + + Number of bytes to display. + + + + + + # Bytes (default 256) + + + true + + - - decimal - - - - - - - - Character display format. - - - - ascii - + + + Memory display format. + + + + hex + + + + + octal + + + + + binary + + + + + decimal + + + - - ebcdic - + + + Character display format. + + + + ascii + + + + + ebcdic + + + - + + + + Number of columns in display. + + + 1 + + + 10 + + + + + + + Print the display. + + + ... + + + + :/seer/resources/RelaxLightIcons/document-print.svg:/seer/resources/RelaxLightIcons/document-print.svg + + + + + + + Save the display to a file. + + + ... + + + + :/seer/resources/RelaxLightIcons/document-save-as.svg:/seer/resources/RelaxLightIcons/document-save-as.svg + + + + + + + Qt::Vertical + + + + + + + Refresh the display. + + + ... + + + + :/seer/resources/RelaxLightIcons/view-refresh.svg:/seer/resources/RelaxLightIcons/view-refresh.svg + + + + + + + Automatically refresh after each stopping point. + + + Auto + + + + + + + Qt::Vertical + + + + + + + Help on Memory Visualizer + + + + + + + :/seer/resources/RelaxLightIcons/help-about.svg:/seer/resources/RelaxLightIcons/help-about.svg + + + + - - - - Number of columns in display. - - - 1 - - - 10 - - - - - - - Print the display. - - - ... - - - - :/seer/resources/RelaxLightIcons/document-print.svg:/seer/resources/RelaxLightIcons/document-print.svg - - - - - - - Save the display to a file. - - - ... - - - - :/seer/resources/RelaxLightIcons/document-save-as.svg:/seer/resources/RelaxLightIcons/document-save-as.svg - - - - - - - Qt::Vertical - - - - - - - Refresh the display. - - - ... - - - - :/seer/resources/RelaxLightIcons/view-refresh.svg:/seer/resources/RelaxLightIcons/view-refresh.svg - - - - - - - Automatically refresh after each stopping point. - - - Auto - - - - + 0 diff --git a/src/SeerSourceSymbolLibraryManagerWidget.cpp b/src/SeerSourceSymbolLibraryManagerWidget.cpp index 694f83d..d4d733b 100644 --- a/src/SeerSourceSymbolLibraryManagerWidget.cpp +++ b/src/SeerSourceSymbolLibraryManagerWidget.cpp @@ -1,4 +1,6 @@ #include "SeerSourceSymbolLibraryManagerWidget.h" +#include "SeerHelpPageWidget.h" +#include "QHContainerWidget.h" #include #include #include @@ -29,10 +31,21 @@ SeerSourceSymbolLibraryManagerWidget::SeerSourceSymbolLibraryManagerWidget (QWid QToolButton* refreshToolButton = new QToolButton(tabWidget); refreshToolButton->setIcon(QIcon(":/seer/resources/RelaxLightIcons/view-refresh.svg")); refreshToolButton->setToolTip("Refresh the source/symbol/library information."); - tabWidget->setCornerWidget(refreshToolButton, Qt::TopRightCorner); + + QToolButton* helpToolButton = new QToolButton(tabWidget); + helpToolButton->setIcon(QIcon(":/seer/resources/RelaxLightIcons/help-about.svg")); + helpToolButton->setToolTip("Help on source/symbol/library information."); + + QHContainerWidget* hcontainer = new QHContainerWidget(this); + hcontainer->setSpacing(3); + hcontainer->addWidget(refreshToolButton); + hcontainer->addWidget(helpToolButton); + + tabWidget->setCornerWidget(hcontainer, Qt::TopRightCorner); // Connect things. QObject::connect(refreshToolButton, &QToolButton::clicked, this, &SeerSourceSymbolLibraryManagerWidget::handleRefreshToolButtonClicked); + QObject::connect(helpToolButton, &QToolButton::clicked, this, &SeerSourceSymbolLibraryManagerWidget::handleHelpToolButtonClicked); } SeerSourceSymbolLibraryManagerWidget::~SeerSourceSymbolLibraryManagerWidget () { @@ -67,3 +80,10 @@ void SeerSourceSymbolLibraryManagerWidget::handleRefreshToolButtonClicked () { libraryBrowserWidget()->refresh(); } +void SeerSourceSymbolLibraryManagerWidget::handleHelpToolButtonClicked () { + + SeerHelpPageWidget* help = new SeerHelpPageWidget; + help->loadFile(":/seer/resources/help/SourceSymbolLibraryInfoBrowser.md"); + help->show(); +} + diff --git a/src/SeerSourceSymbolLibraryManagerWidget.h b/src/SeerSourceSymbolLibraryManagerWidget.h index fffe760..cf650df 100644 --- a/src/SeerSourceSymbolLibraryManagerWidget.h +++ b/src/SeerSourceSymbolLibraryManagerWidget.h @@ -28,6 +28,7 @@ class SeerSourceSymbolLibraryManagerWidget : public QWidget, protected Ui::SeerS public slots: private slots: void handleRefreshToolButtonClicked (); + void handleHelpToolButtonClicked (); private: SeerSourceBrowserWidget* _sourceBrowserWidget; diff --git a/src/SeerStructVisualizerWidget.cpp b/src/SeerStructVisualizerWidget.cpp index 77c8673..63387b5 100644 --- a/src/SeerStructVisualizerWidget.cpp +++ b/src/SeerStructVisualizerWidget.cpp @@ -1,4 +1,5 @@ #include "SeerStructVisualizerWidget.h" +#include "SeerHelpPageWidget.h" #include "SeerUtl.h" #include #include @@ -35,6 +36,7 @@ SeerStructVisualizerWidget::SeerStructVisualizerWidget (QWidget* parent) : QWidg // Connect things. QObject::connect(refreshToolButton, &QToolButton::clicked, this, &SeerStructVisualizerWidget::handleRefreshButton); + QObject::connect(helpToolButton, &QToolButton::clicked, this, &SeerStructVisualizerWidget::handleHelpButton); QObject::connect(variableNameLineEdit, &QLineEdit::returnPressed, this, &SeerStructVisualizerWidget::handleVariableNameLineEdit); QObject::connect(variableTreeWidget, &QTreeWidget::customContextMenuRequested, this, &SeerStructVisualizerWidget::handleContextMenu); QObject::connect(variableTreeWidget, &QTreeWidget::itemEntered, this, &SeerStructVisualizerWidget::handleItemEntered); @@ -424,6 +426,13 @@ void SeerStructVisualizerWidget::handleRefreshButton () { emit evaluateVariableExpression(_variableId, variableNameLineEdit->text()); } +void SeerStructVisualizerWidget::handleHelpButton () { + + SeerHelpPageWidget* help = new SeerHelpPageWidget; + help->loadFile(":/seer/resources/help/OldStructVisualizer.md"); + help->show(); +} + void SeerStructVisualizerWidget::handleVariableNameLineEdit () { if (variableNameLineEdit->text() == "") { diff --git a/src/SeerStructVisualizerWidget.h b/src/SeerStructVisualizerWidget.h index 0557266..8f0a082 100644 --- a/src/SeerStructVisualizerWidget.h +++ b/src/SeerStructVisualizerWidget.h @@ -25,6 +25,7 @@ class SeerStructVisualizerWidget : public QWidget, protected Ui::SeerStructVisua protected slots: void handleRefreshButton (); + void handleHelpButton (); void handleVariableNameLineEdit (); void handleContextMenu (const QPoint& pos); void handleItemEntered (QTreeWidgetItem* item, int column); diff --git a/src/SeerStructVisualizerWidget.ui b/src/SeerStructVisualizerWidget.ui index 8d96588..1e72339 100644 --- a/src/SeerStructVisualizerWidget.ui +++ b/src/SeerStructVisualizerWidget.ui @@ -6,62 +6,87 @@ 0 0 - 798 + 807 683 Form - - - - - Enter a variable to visualize. - - - - - - Variable name - - - true - - + + + + + + + Enter a variable to visualize. + + + + + + Variable name + + + true + + + + + + + Qt::Vertical + + + + + + + Refresh the display. + + + ... + + + + :/seer/resources/RelaxLightIcons/view-refresh.svg:/seer/resources/RelaxLightIcons/view-refresh.svg + + + + + + + Automatically refresh after each stopping point. + + + Auto + + + + + + + Qt::Vertical + + + + + + + Help on Struct Visualizer + + + + + + + :/seer/resources/RelaxLightIcons/help-about.svg:/seer/resources/RelaxLightIcons/help-about.svg + + + + - - - - Qt::Vertical - - - - - - - Refresh the display. - - - ... - - - - :/seer/resources/RelaxLightIcons/view-refresh.svg:/seer/resources/RelaxLightIcons/view-refresh.svg - - - - - - - Automatically refresh after each stopping point. - - - Auto - - - - + diff --git a/src/SeerVarVisualizerWidget.cpp b/src/SeerVarVisualizerWidget.cpp index 76d7528..917aea8 100644 --- a/src/SeerVarVisualizerWidget.cpp +++ b/src/SeerVarVisualizerWidget.cpp @@ -828,7 +828,6 @@ void SeerVarVisualizerWidget::handleHelpButton () { help->show(); } - void SeerVarVisualizerWidget::handleDebugCheckBox () { handleHideDebugColumns(!debugCheckBox->isChecked()); diff --git a/src/SeerVarVisualizerWidget.ui b/src/SeerVarVisualizerWidget.ui index f8fe893..7030f97 100644 --- a/src/SeerVarVisualizerWidget.ui +++ b/src/SeerVarVisualizerWidget.ui @@ -94,16 +94,6 @@ - - - - Automatically refresh after each stopping point. - - - Auto - - - @@ -118,6 +108,16 @@ + + + + Automatically refresh after each stopping point. + + + Auto + + + @@ -128,7 +128,7 @@ - Help on StructVisualizer + Help on Struct Visualizer @@ -215,8 +215,8 @@ collapseSelectedToolButton debugCheckBox expandRecursiveCheckBox - autoRefreshCheckBox refreshToolButton + autoRefreshCheckBox helpToolButton variableTreeWidget diff --git a/src/resource.qrc b/src/resource.qrc index b1d096d..4a41ab0 100644 --- a/src/resource.qrc +++ b/src/resource.qrc @@ -52,8 +52,14 @@ resources/RelaxLightIcons/help-whatsthis.svg resources/help/ThreadProcessInfoBrowser.md resources/help/StructVisualizer.md + resources/help/OldStructVisualizer.md + resources/help/MemoryVisualizer.md + resources/help/ArrayVisualizer.md resources/help/StackInfoBrowser.md resources/help/VariableRegisterInfoBrowser.md + resources/help/SourceSymbolLibraryInfoBrowser.md + resources/help/EditorManager.md + resources/help/BreakpointGdbSeerManager.md diff --git a/src/resources/help/ArrayVisualizer.md b/src/resources/help/ArrayVisualizer.md new file mode 100644 index 0000000..e36f2d3 --- /dev/null +++ b/src/resources/help/ArrayVisualizer.md @@ -0,0 +1,84 @@ +## Struct Visualizer + +### Introduction + +The Struct Visualizer shows the contents of C/C++ structs and classes in a tree view. + +For each variable of the struct, Seer shows these three columns: + +* Variable name +* Value +* Datatype + +*Variable name* is the name of the variable, at that point in the stuct hiearchy. +*Value* is the value of the variable, presented in the best way possible by gdb. +*Datatype* is the variables datatype (basic type, class, or struct). If the variable is a pointer, a '*' is shown at the end of the datatype. + +A variable of the struct that has a value of '{...}' means it has subvalues (ie: is nested) and can be expanded. There will be a visual icon (like a '+') to show the tree can be expanded at that level. + +gdb has the notion of virtual levels for structs and classes. + +* public +* protected +* private + +These indicate where the variables reside in scope withing the struct or class. All struct variables will have a scope of 'public'. Classes will have the appropriate scope as they are defined in the class header file. These virtual levels are easy to see in the tree as they have no value or type. + +### Operation + +The Struct Visualizer has these main components + +* Variable entry field +* Expand tree +* Collapse tree +* Recursive mode +* Refresh +* Auto mode +* Variable Tree + +### Variable entry field + +This entry field allows you to enter the name of a variable. This variable can be for a struct or a class. It could also be a simple datatype like an *int* or a *string* but that would be pointless as simple datatypes have no nesting structure. + +Enter the variable name and hit return. The first level of the struct will be shown. If it has any subvalues, a '+' icon will appear and you can expand it to look at the subvalues. + +Note, if the variable name is not valid, an error box is display. + +### Expand tree + +The big '+' icon that appears in the top bar will expand the currently selected level in the tree. If no level is selected, it will expand the top level of the tree. + +### Collapse tree + +The big '-' icon that appears in the top bar will collapse the currently selected level in the tree. If no level is selected, it will collapse the top level of the tree. + +### Recursive mode + +When expanding, the recursive mode determins how many levels to expand. For example, a struct with multiple levels, if the recursive mode is 'off', it will only expand one level each time. + +If the recursive mode is 'on', it will expand the sublevels indefinetly. + +**NOTE** The recursive mode can be fooled by some structs and cause an infinite loop. To this end, the recursive mode will always stop if the variable is a pointer ('*'). Also, while the expanding is happening, turning off the recursive mode will stop the recursion imediately. + +### Refresh + +This will refresh the tree with any variables that have changed values since the last time. + +### Auto mode + +This mode will refresh the tree each time Seer reaches a stopping point (when you 'step' or 'next' or reach a 'breakpoint'). + +### Variable tree + +As mentioned, the variable tree shows the variable names, values, and types of the struct. + +A '+' icon is shown beside each level. This will expand or collapse the level in the same way as the big '+' or '-' in the top bar. When expanding, it follows the same recursive mode. + +### Modifying values. + +The Struct Visualizer allows variables in the tree to have their value changed. This is for simple datatypes only (int, floats, etc.). + +For a variable in the tree, double click the 'Value' column for the variable. It will then allow you to enter a new value (after you change it and hit return). + +An error box is shown if the variable can't be changed. + diff --git a/src/resources/help/BreakpointGdbSeerManager.md b/src/resources/help/BreakpointGdbSeerManager.md new file mode 100644 index 0000000..742d59d --- /dev/null +++ b/src/resources/help/BreakpointGdbSeerManager.md @@ -0,0 +1,58 @@ +## Source/Symbol/Library Info Browser + +### Introduction +The Stack Info browser presents the program's stack information for the current thread/process. The current thread/process is set by the Thread/Process Info browser. + +Seer presents this information in three tabs: + +* Source +* Functions +* Types +* Statics +* Libraries + +### Frames +Frames is the most useful. It presents a stack frame (a traceback) for the selected thread. + +This information is shown for each Frame: +``` + Column Description + ---------- ----------------------------------------------------------------------- + Level The frame level. 0 is the lowest level frame (ie: the executing frame). + 1 is the caller of frame 0. 2 is the caller of 1. etc... + Function The function name for the level. + File The short name of the source file where Function is in. + Line The line number in the source file that is being executed. + Fullname The fullname of the source file. + Address The frame's address in memory. +``` +Clicking on a Frame Level will cause Seer to make that frame the active frame. This will in turn cause the Editor Manager to bring up the source file for the frame (if possible). + +Because the frame is set as the active frame, other Seer and gdb actions will default to that frame. For instance, entering a variable name in a Visualizer will use the variable in the active frame. + +### Arguments +This tab shows the function argument names and their value for each level. For example, if level 0 is for main(), the arguments for level 0 will be the values for argc and argv. +``` + Column Description + ---------- --------------------------------------------------------------------------- + Level The frame level. 0 is the executing frame. 1 is the caller of frame 0. etc. + Name List of variables names at the frame level. + Value Value of the variables at the frame level. +``` +Using the RMB will bring up a choice of Seer Visualizers and Loggers to further view the values. Note, you may need to set the level as active first in the Frames tab. + +### Locals +This tab shows the local values in the selected frame. Local values means the variables of the execution line in that frame, plus any established variables before the current line. + +Selecting a diffent frame in the Frames tab will show the locals for that frame. + +``` + Column Description + ---------- ----------------------------------------------------------------------- + Name The variable name. + Arg The function argument number, if any. May appear in the Arguements tab. + Value Value of the variable. +``` +### Refresh +The refresh button refreshes the currently exposed tab. + diff --git a/src/resources/help/EditorManager.md b/src/resources/help/EditorManager.md new file mode 100644 index 0000000..742d59d --- /dev/null +++ b/src/resources/help/EditorManager.md @@ -0,0 +1,58 @@ +## Source/Symbol/Library Info Browser + +### Introduction +The Stack Info browser presents the program's stack information for the current thread/process. The current thread/process is set by the Thread/Process Info browser. + +Seer presents this information in three tabs: + +* Source +* Functions +* Types +* Statics +* Libraries + +### Frames +Frames is the most useful. It presents a stack frame (a traceback) for the selected thread. + +This information is shown for each Frame: +``` + Column Description + ---------- ----------------------------------------------------------------------- + Level The frame level. 0 is the lowest level frame (ie: the executing frame). + 1 is the caller of frame 0. 2 is the caller of 1. etc... + Function The function name for the level. + File The short name of the source file where Function is in. + Line The line number in the source file that is being executed. + Fullname The fullname of the source file. + Address The frame's address in memory. +``` +Clicking on a Frame Level will cause Seer to make that frame the active frame. This will in turn cause the Editor Manager to bring up the source file for the frame (if possible). + +Because the frame is set as the active frame, other Seer and gdb actions will default to that frame. For instance, entering a variable name in a Visualizer will use the variable in the active frame. + +### Arguments +This tab shows the function argument names and their value for each level. For example, if level 0 is for main(), the arguments for level 0 will be the values for argc and argv. +``` + Column Description + ---------- --------------------------------------------------------------------------- + Level The frame level. 0 is the executing frame. 1 is the caller of frame 0. etc. + Name List of variables names at the frame level. + Value Value of the variables at the frame level. +``` +Using the RMB will bring up a choice of Seer Visualizers and Loggers to further view the values. Note, you may need to set the level as active first in the Frames tab. + +### Locals +This tab shows the local values in the selected frame. Local values means the variables of the execution line in that frame, plus any established variables before the current line. + +Selecting a diffent frame in the Frames tab will show the locals for that frame. + +``` + Column Description + ---------- ----------------------------------------------------------------------- + Name The variable name. + Arg The function argument number, if any. May appear in the Arguements tab. + Value Value of the variable. +``` +### Refresh +The refresh button refreshes the currently exposed tab. + diff --git a/src/resources/help/MemoryVisualizer.md b/src/resources/help/MemoryVisualizer.md new file mode 100644 index 0000000..e36f2d3 --- /dev/null +++ b/src/resources/help/MemoryVisualizer.md @@ -0,0 +1,84 @@ +## Struct Visualizer + +### Introduction + +The Struct Visualizer shows the contents of C/C++ structs and classes in a tree view. + +For each variable of the struct, Seer shows these three columns: + +* Variable name +* Value +* Datatype + +*Variable name* is the name of the variable, at that point in the stuct hiearchy. +*Value* is the value of the variable, presented in the best way possible by gdb. +*Datatype* is the variables datatype (basic type, class, or struct). If the variable is a pointer, a '*' is shown at the end of the datatype. + +A variable of the struct that has a value of '{...}' means it has subvalues (ie: is nested) and can be expanded. There will be a visual icon (like a '+') to show the tree can be expanded at that level. + +gdb has the notion of virtual levels for structs and classes. + +* public +* protected +* private + +These indicate where the variables reside in scope withing the struct or class. All struct variables will have a scope of 'public'. Classes will have the appropriate scope as they are defined in the class header file. These virtual levels are easy to see in the tree as they have no value or type. + +### Operation + +The Struct Visualizer has these main components + +* Variable entry field +* Expand tree +* Collapse tree +* Recursive mode +* Refresh +* Auto mode +* Variable Tree + +### Variable entry field + +This entry field allows you to enter the name of a variable. This variable can be for a struct or a class. It could also be a simple datatype like an *int* or a *string* but that would be pointless as simple datatypes have no nesting structure. + +Enter the variable name and hit return. The first level of the struct will be shown. If it has any subvalues, a '+' icon will appear and you can expand it to look at the subvalues. + +Note, if the variable name is not valid, an error box is display. + +### Expand tree + +The big '+' icon that appears in the top bar will expand the currently selected level in the tree. If no level is selected, it will expand the top level of the tree. + +### Collapse tree + +The big '-' icon that appears in the top bar will collapse the currently selected level in the tree. If no level is selected, it will collapse the top level of the tree. + +### Recursive mode + +When expanding, the recursive mode determins how many levels to expand. For example, a struct with multiple levels, if the recursive mode is 'off', it will only expand one level each time. + +If the recursive mode is 'on', it will expand the sublevels indefinetly. + +**NOTE** The recursive mode can be fooled by some structs and cause an infinite loop. To this end, the recursive mode will always stop if the variable is a pointer ('*'). Also, while the expanding is happening, turning off the recursive mode will stop the recursion imediately. + +### Refresh + +This will refresh the tree with any variables that have changed values since the last time. + +### Auto mode + +This mode will refresh the tree each time Seer reaches a stopping point (when you 'step' or 'next' or reach a 'breakpoint'). + +### Variable tree + +As mentioned, the variable tree shows the variable names, values, and types of the struct. + +A '+' icon is shown beside each level. This will expand or collapse the level in the same way as the big '+' or '-' in the top bar. When expanding, it follows the same recursive mode. + +### Modifying values. + +The Struct Visualizer allows variables in the tree to have their value changed. This is for simple datatypes only (int, floats, etc.). + +For a variable in the tree, double click the 'Value' column for the variable. It will then allow you to enter a new value (after you change it and hit return). + +An error box is shown if the variable can't be changed. + diff --git a/src/resources/help/OldStructVisualizer.md b/src/resources/help/OldStructVisualizer.md new file mode 100644 index 0000000..e36f2d3 --- /dev/null +++ b/src/resources/help/OldStructVisualizer.md @@ -0,0 +1,84 @@ +## Struct Visualizer + +### Introduction + +The Struct Visualizer shows the contents of C/C++ structs and classes in a tree view. + +For each variable of the struct, Seer shows these three columns: + +* Variable name +* Value +* Datatype + +*Variable name* is the name of the variable, at that point in the stuct hiearchy. +*Value* is the value of the variable, presented in the best way possible by gdb. +*Datatype* is the variables datatype (basic type, class, or struct). If the variable is a pointer, a '*' is shown at the end of the datatype. + +A variable of the struct that has a value of '{...}' means it has subvalues (ie: is nested) and can be expanded. There will be a visual icon (like a '+') to show the tree can be expanded at that level. + +gdb has the notion of virtual levels for structs and classes. + +* public +* protected +* private + +These indicate where the variables reside in scope withing the struct or class. All struct variables will have a scope of 'public'. Classes will have the appropriate scope as they are defined in the class header file. These virtual levels are easy to see in the tree as they have no value or type. + +### Operation + +The Struct Visualizer has these main components + +* Variable entry field +* Expand tree +* Collapse tree +* Recursive mode +* Refresh +* Auto mode +* Variable Tree + +### Variable entry field + +This entry field allows you to enter the name of a variable. This variable can be for a struct or a class. It could also be a simple datatype like an *int* or a *string* but that would be pointless as simple datatypes have no nesting structure. + +Enter the variable name and hit return. The first level of the struct will be shown. If it has any subvalues, a '+' icon will appear and you can expand it to look at the subvalues. + +Note, if the variable name is not valid, an error box is display. + +### Expand tree + +The big '+' icon that appears in the top bar will expand the currently selected level in the tree. If no level is selected, it will expand the top level of the tree. + +### Collapse tree + +The big '-' icon that appears in the top bar will collapse the currently selected level in the tree. If no level is selected, it will collapse the top level of the tree. + +### Recursive mode + +When expanding, the recursive mode determins how many levels to expand. For example, a struct with multiple levels, if the recursive mode is 'off', it will only expand one level each time. + +If the recursive mode is 'on', it will expand the sublevels indefinetly. + +**NOTE** The recursive mode can be fooled by some structs and cause an infinite loop. To this end, the recursive mode will always stop if the variable is a pointer ('*'). Also, while the expanding is happening, turning off the recursive mode will stop the recursion imediately. + +### Refresh + +This will refresh the tree with any variables that have changed values since the last time. + +### Auto mode + +This mode will refresh the tree each time Seer reaches a stopping point (when you 'step' or 'next' or reach a 'breakpoint'). + +### Variable tree + +As mentioned, the variable tree shows the variable names, values, and types of the struct. + +A '+' icon is shown beside each level. This will expand or collapse the level in the same way as the big '+' or '-' in the top bar. When expanding, it follows the same recursive mode. + +### Modifying values. + +The Struct Visualizer allows variables in the tree to have their value changed. This is for simple datatypes only (int, floats, etc.). + +For a variable in the tree, double click the 'Value' column for the variable. It will then allow you to enter a new value (after you change it and hit return). + +An error box is shown if the variable can't be changed. + diff --git a/src/resources/help/SourceSymbolLibraryInfoBrowser.md b/src/resources/help/SourceSymbolLibraryInfoBrowser.md new file mode 100644 index 0000000..742d59d --- /dev/null +++ b/src/resources/help/SourceSymbolLibraryInfoBrowser.md @@ -0,0 +1,58 @@ +## Source/Symbol/Library Info Browser + +### Introduction +The Stack Info browser presents the program's stack information for the current thread/process. The current thread/process is set by the Thread/Process Info browser. + +Seer presents this information in three tabs: + +* Source +* Functions +* Types +* Statics +* Libraries + +### Frames +Frames is the most useful. It presents a stack frame (a traceback) for the selected thread. + +This information is shown for each Frame: +``` + Column Description + ---------- ----------------------------------------------------------------------- + Level The frame level. 0 is the lowest level frame (ie: the executing frame). + 1 is the caller of frame 0. 2 is the caller of 1. etc... + Function The function name for the level. + File The short name of the source file where Function is in. + Line The line number in the source file that is being executed. + Fullname The fullname of the source file. + Address The frame's address in memory. +``` +Clicking on a Frame Level will cause Seer to make that frame the active frame. This will in turn cause the Editor Manager to bring up the source file for the frame (if possible). + +Because the frame is set as the active frame, other Seer and gdb actions will default to that frame. For instance, entering a variable name in a Visualizer will use the variable in the active frame. + +### Arguments +This tab shows the function argument names and their value for each level. For example, if level 0 is for main(), the arguments for level 0 will be the values for argc and argv. +``` + Column Description + ---------- --------------------------------------------------------------------------- + Level The frame level. 0 is the executing frame. 1 is the caller of frame 0. etc. + Name List of variables names at the frame level. + Value Value of the variables at the frame level. +``` +Using the RMB will bring up a choice of Seer Visualizers and Loggers to further view the values. Note, you may need to set the level as active first in the Frames tab. + +### Locals +This tab shows the local values in the selected frame. Local values means the variables of the execution line in that frame, plus any established variables before the current line. + +Selecting a diffent frame in the Frames tab will show the locals for that frame. + +``` + Column Description + ---------- ----------------------------------------------------------------------- + Name The variable name. + Arg The function argument number, if any. May appear in the Arguements tab. + Value Value of the variable. +``` +### Refresh +The refresh button refreshes the currently exposed tab. +