Checkpoint: Key shortcuts.

This commit is contained in:
Ernie Pasveer
2022-02-19 10:54:26 -06:00
parent 99d4ac4848
commit 0918ffd135
12 changed files with 550 additions and 2 deletions
+4
View File
@@ -34,6 +34,7 @@ set(HEADER_FILES
SeerEditorConfigPage.h
SeerSourceConfigPage.h
SeerSeerConfigPage.h
SeerKeysConfigPage.h
SeerDebugDialog.h
SeerDirectoryFilterProxyModel.h
SeerEditorManagerEntry.h
@@ -71,6 +72,7 @@ set(HEADER_FILES
SeerAboutDialog.h
SeerSlashProcDialog.h
SeerHighlighterSettings.h
SeerKeySettings.h
QProcessInfo.h
QProcessInfoWidget.h
QProgressIndicator.h
@@ -95,6 +97,7 @@ set(SOURCE_FILES
SeerEditorConfigPage.cpp
SeerSourceConfigPage.cpp
SeerSeerConfigPage.cpp
SeerKeysConfigPage.cpp
SeerDebugDialog.cpp
SeerEditorManagerWidget.cpp
SeerEditorOptionsBarWidget.cpp
@@ -133,6 +136,7 @@ set(SOURCE_FILES
SeerAboutDialog.cpp
SeerSlashProcDialog.cpp
SeerHighlighterSettings.cpp
SeerKeySettings.cpp
QProcessInfo.cpp
QProcessInfoWidget.cpp
QProgressIndicator.cpp
+8
View File
@@ -23,12 +23,14 @@ SeerConfigDialog::SeerConfigDialog(QWidget* parent) : QDialog(parent) {
_gdbConfigPage = new SeerGdbConfigPage;
_editorConfigPage = new SeerEditorConfigPage;
_sourceConfigPage = new SeerSourceConfigPage;
_keysConfigPage = new SeerKeysConfigPage;
_seerConfigPage = new SeerSeerConfigPage;
// Add the pages to the stacked widget.
pagesStackedWidget->addWidget(_gdbConfigPage);
pagesStackedWidget->addWidget(_editorConfigPage);
pagesStackedWidget->addWidget(_sourceConfigPage);
pagesStackedWidget->addWidget(_keysConfigPage);
pagesStackedWidget->addWidget(_seerConfigPage);
// Create icons.
@@ -50,6 +52,12 @@ SeerConfigDialog::SeerConfigDialog(QWidget* parent) : QDialog(parent) {
configSourceButton->setTextAlignment(Qt::AlignHCenter);
configSourceButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
QListWidgetItem* configKeysButton = new QListWidgetItem(contentsListWidget);
configKeysButton->setIcon(QIcon(":/seer/resources/keyboard-key.png"));
configKeysButton->setText(tr("Keys"));
configKeysButton->setTextAlignment(Qt::AlignHCenter);
configKeysButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
QListWidgetItem* configSeerButton = new QListWidgetItem(contentsListWidget);
configSeerButton->setIcon(QIcon(":/seer/resources/seer_128x128.png"));
configSeerButton->setText(tr("Seer"));
+2
View File
@@ -3,6 +3,7 @@
#include "SeerGdbConfigPage.h"
#include "SeerEditorConfigPage.h"
#include "SeerSourceConfigPage.h"
#include "SeerKeysConfigPage.h"
#include "SeerSeerConfigPage.h"
#include <QtWidgets/QDialog>
@@ -74,6 +75,7 @@ class SeerConfigDialog : public QDialog, protected Ui::SeerConfigDialogForm {
SeerGdbConfigPage* _gdbConfigPage;
SeerEditorConfigPage* _editorConfigPage;
SeerSourceConfigPage* _sourceConfigPage;
SeerKeysConfigPage* _keysConfigPage;
SeerSeerConfigPage* _seerConfigPage;
};
+2 -2
View File
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>634</width>
<height>542</height>
<width>736</width>
<height>569</height>
</rect>
</property>
<property name="windowTitle">
+64
View File
@@ -0,0 +1,64 @@
#include "SeerKeySettings.h"
#include <QtCore/QList>
SeerKeySettings::SeerKeySettings () {
}
SeerKeySettings::SeerKeySettings (const SeerKeySettings& other) {
*this = other;
}
SeerKeySettings::~SeerKeySettings () {
}
SeerKeySettings& SeerKeySettings::operator== (const SeerKeySettings& rhs) {
_keys = rhs._keys;
}
QStringList SeerKeySettings::keys () const {
QList<QString> keylist = _keys.keys();
QStringList keys;
for (int i=0; i<keylist.count(); i++) {
keys.push_back(keylist[i]);
}
return keys;
}
bool SeerKeySettings::has (const QString& name) const {
return _keys.contains(name);
}
SeerKeySetting SeerKeySettings::get (const QString& name) const {
return _keys[name];
}
void SeerKeySettings::add (const QString& name, const SeerKeySetting& setting) {
_keys[name] = setting;
}
SeerKeySettings SeerKeySettings::populate () {
SeerKeySettings keySettings;
keySettings.add("Run", SeerKeySetting("Run", QKeySequence::fromString("F1"), "Run the program again. Do not break in main()."));
keySettings.add("Start", SeerKeySetting("Start", QKeySequence::fromString("F1"), "Run the program again. Break in main()."));
keySettings.add("Continue", SeerKeySetting("Continue", QKeySequence::fromString("F8"), "Continue execution of the program."));
keySettings.add("Next", SeerKeySetting("Next", QKeySequence::fromString("F5"), "Execute the next line. Step over functions."));
keySettings.add("Step", SeerKeySetting("Step", QKeySequence::fromString("F6"), "Execute the next line. Step into functions."));
keySettings.add("Finish", SeerKeySetting("Finish", QKeySequence::fromString("F7"), "Finish the current function."));
keySettings.add("Debug", SeerKeySetting("Debug", QKeySequence::fromString("Alt+D"), "Open the debug dialog."));
keySettings.add("TextFind", SeerKeySetting("TextFind", QKeySequence::fromString("Ctrl+F"), "Seach for text in the code editor."));
keySettings.add("AlternateDir", SeerKeySetting("AlternateDir", QKeySequence::fromString("Ctrl+O"), "Look for source file in an alternate directory."));
return keySettings;
}
+38
View File
@@ -0,0 +1,38 @@
#pragma once
#include <QtGui/QKeySequence>
#include <QtCore/QMap>
#include <QtCore/QStringList>
#include <QtCore/QString>
struct SeerKeySetting {
SeerKeySetting(QString name, QKeySequence sequence, QString help) : _name(name), _sequence(sequence), _help(help) {}
SeerKeySetting() {};
QString _name;
QKeySequence _sequence;
QString _help;
};
class SeerKeySettings {
public:
SeerKeySettings ();
SeerKeySettings (const SeerKeySettings& other);
~SeerKeySettings ();
SeerKeySettings& operator== (const SeerKeySettings& rhs);
QStringList keys () const;
bool has (const QString& name) const;
SeerKeySetting get (const QString& name) const;
void add (const QString& name, const SeerKeySetting& setting);
static SeerKeySettings populate ();
private:
QMap<QString, SeerKeySetting> _keys;
};
+17
View File
@@ -0,0 +1,17 @@
#include "SeerKeysConfigPage.h"
#include <QtWidgets/QWidget>
#include <QtWidgets/QFileDialog>
SeerKeysConfigPage::SeerKeysConfigPage(QWidget* parent) : QWidget(parent) {
// Set up the UI.
setupUi(this);
// Setup the widgets
// Connect things.
}
SeerKeysConfigPage::~SeerKeysConfigPage() {
}
+17
View File
@@ -0,0 +1,17 @@
#pragma once
#include <QtWidgets/QWidget>
#include "ui_SeerKeysConfigPage.h"
class SeerKeysConfigPage : public QWidget, protected Ui::SeerKeysConfigPage {
Q_OBJECT
public:
explicit SeerKeysConfigPage (QWidget* parent = 0);
~SeerKeysConfigPage ();
protected slots:
};
+396
View File
@@ -0,0 +1,396 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SeerKeysConfigPage</class>
<widget class="QWidget" name="SeerKeysConfigPage">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>887</width>
<height>817</height>
</rect>
</property>
<property name="windowTitle">
<string>SeerKeysConfigPage</string>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<widget class="QGroupBox" name="gdbKeysGroupBox">
<property name="title">
<string>Gdb Keys</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="runLabel">
<property name="text">
<string>Run</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QKeySequenceEdit" name="runKeySequenceEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="keySequence">
<string/>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="runHelpLabel">
<property name="text">
<string>Run the program again. Do not break in main().</string>
</property>
</widget>
</item>
<item row="0" column="3">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>308</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0">
<widget class="QLabel" name="startLabel">
<property name="text">
<string>Start</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QKeySequenceEdit" name="startKeySequenceEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLabel" name="startHelpLabel">
<property name="text">
<string>Run the program again. Break in main().</string>
</property>
</widget>
</item>
<item row="1" column="3">
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>308</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="0">
<widget class="QLabel" name="continueLabel">
<property name="text">
<string>Continue</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QKeySequenceEdit" name="continueKeySequenceEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLabel" name="continueHelpLabel">
<property name="text">
<string>Continue execution of the program.</string>
</property>
</widget>
</item>
<item row="2" column="3">
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>308</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="0">
<widget class="QLabel" name="nextLabel">
<property name="text">
<string>Next</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QKeySequenceEdit" name="nextKeySequenceEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLabel" name="nextHelpLabel">
<property name="text">
<string>Execute the next line. Step over functions.</string>
</property>
</widget>
</item>
<item row="3" column="3">
<spacer name="horizontalSpacer_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>308</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="0">
<widget class="QLabel" name="stepLabel">
<property name="text">
<string>Step</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QKeySequenceEdit" name="stepKeySequenceEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QLabel" name="stepHelpLabel">
<property name="text">
<string>Execute the next line. Step into functions.</string>
</property>
</widget>
</item>
<item row="4" column="3">
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>308</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="5" column="0">
<widget class="QLabel" name="finishLabel">
<property name="text">
<string>Finish</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QKeySequenceEdit" name="finishKeySequenceEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="QLabel" name="finishHelpLabel">
<property name="text">
<string>Finish the current function.</string>
</property>
</widget>
</item>
<item row="5" column="3">
<spacer name="horizontalSpacer_8">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>308</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="6" column="0">
<widget class="QLabel" name="debugLabel">
<property name="text">
<string>Debug</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QKeySequenceEdit" name="debugKeySequenceEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="6" column="2">
<widget class="QLabel" name="debugHelpLabel">
<property name="text">
<string>Open the debug dialog.</string>
</property>
</widget>
</item>
<item row="6" column="3">
<spacer name="horizontalSpacer_9">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>308</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QGroupBox" name="editorKeysGroupBox">
<property name="title">
<string>Editor Keys</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="3">
<spacer name="horizontalSpacer_1">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>311</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="1">
<widget class="QKeySequenceEdit" name="textSearchSequenceEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QKeySequenceEdit" name="alternateDirectorySequenceEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="alternateDirectoryLabel">
<property name="text">
<string>Alternate Directory</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="textSearchLabel">
<property name="text">
<string>Text Search</string>
</property>
</widget>
</item>
<item row="1" column="3">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>311</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="2">
<widget class="QLabel" name="textSearchHelpLabel">
<property name="text">
<string>Search for text in the code editor.</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QLabel" name="alternateDirectoryHelpLabel">
<property name="text">
<string>Look for the source in an alternate directory.</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="2" column="0">
<widget class="QTextBrowser" name="textBrowser">
<property name="html">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Specify key bindings for important Seer operations.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
</layout>
<zorder>gdbKeysGroupBox</zorder>
<zorder>textBrowser</zorder>
<zorder>editorKeysGroupBox</zorder>
</widget>
<resources>
<include location="resource.qrc"/>
</resources>
<connections/>
</ui>
+1
View File
@@ -24,6 +24,7 @@
<file>resources/gdb.png</file>
<file>resources/editor.png</file>
<file>resources/source.png</file>
<file>resources/keyboard-key.png</file>
<file>resources/font.png</file>
<file>resources/console.png</file>
<file>resources/hide.png</file>
+1
View File
@@ -15,6 +15,7 @@ Most are 32x32.
https://www.flaticon.com/premium-icon/close_3718000 https://www.flaticon.com/authors/flat-icons
https://www.flaticon.com/free-icon/up-arrow_2223694 https://www.flaticon.com/authors/bqlqn
https://www.flaticon.com/free-icon/down-arrow_2223613 https://www.flaticon.com/authors/bqlqn
https://www.flaticon.com/free-icons/keyboard https://www.flaticon.com/authors/freepik
https://icon-icons.com/icon/GDB/132365 https://creativecommons.org/licenses/by/4.0/ John Gardner
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB