From ffca84a92225ef05afeaeba4d54c1ac34ab29fb2 Mon Sep 17 00:00:00 2001 From: Ernie Pasveer Date: Tue, 11 Jan 2022 19:47:31 -0600 Subject: [PATCH] Finished console mode (normal,minimized,hidden). --- src/SeerConfigDialog.cpp | 29 +++++++++++++ src/SeerConfigDialog.h | 7 +++ src/SeerEditorConfigPage.ui | 2 +- src/SeerGdbConfigPage.ui | 2 +- src/SeerGdbWidget.cpp | 52 ++++++++++++++++++++++- src/SeerGdbWidget.h | 9 +++- src/SeerMainWindow.cpp | 21 +++++++++ src/SeerMainWindow.h | 3 ++ src/SeerMainWindow.ui | 55 ++++++++++++++++++++++++ src/SeerSeerConfigPage.cpp | 44 +++++++++++++++++++ src/SeerSeerConfigPage.h | 5 +++ src/SeerSeerConfigPage.ui | 82 ++++++++++++++++++++++++++++++++++-- src/SeerSourceConfigPage.ui | 2 +- src/resource.qrc | 4 ++ src/resources/README.icons | 4 ++ src/resources/console.png | Bin 0 -> 896 bytes src/resources/hide.png | Bin 0 -> 3450 bytes src/resources/maximize.png | Bin 0 -> 1336 bytes src/resources/minimize.png | Bin 0 -> 1363 bytes src/seer.cpp | 1 + 20 files changed, 313 insertions(+), 9 deletions(-) create mode 100644 src/resources/console.png create mode 100644 src/resources/hide.png create mode 100644 src/resources/maximize.png create mode 100644 src/resources/minimize.png diff --git a/src/SeerConfigDialog.cpp b/src/SeerConfigDialog.cpp index 0fd635e..3c257e3 100644 --- a/src/SeerConfigDialog.cpp +++ b/src/SeerConfigDialog.cpp @@ -125,6 +125,26 @@ bool SeerConfigDialog::editorHighlighterEnabled () const { return _editorConfigPage->highlighterEnabled(); } +void SeerConfigDialog::setSeerRememberWindowSizes (bool flag) { + + _seerConfigPage->setRememberWindowSizes(flag); +} + +bool SeerConfigDialog::seerRememberWindowSizes () const { + + return _seerConfigPage->rememberWindowSizes(); +} + +void SeerConfigDialog::setSeerConsoleMode (const QString& mode) { + + _seerConfigPage->setConsoleMode(mode); +} + +QString SeerConfigDialog::seerConsoleMode () const { + + return _seerConfigPage->consoleMode(); +} + void SeerConfigDialog::handleChangePage(QListWidgetItem* current, QListWidgetItem* previous) { //qDebug() << __PRETTY_FUNCTION__ << ":" << current << previous; @@ -171,6 +191,15 @@ void SeerConfigDialog::handleButtonClicked (QAbstractButton* button) { }else if (itemLabel == "Seer") { + int result = QMessageBox::warning(this, "Seer", + QString("Reset settings for '") + itemLabel + "'?", + QMessageBox::Ok|QMessageBox::Cancel, QMessageBox::Cancel); + + if (result == QMessageBox::Ok) { + setSeerRememberWindowSizes(true); + setSeerConsoleMode("normal"); + } + }else{ } } diff --git a/src/SeerConfigDialog.h b/src/SeerConfigDialog.h index 1a4fbe8..5ebd915 100644 --- a/src/SeerConfigDialog.h +++ b/src/SeerConfigDialog.h @@ -41,6 +41,13 @@ class SeerConfigDialog : public QDialog, protected Ui::SeerConfigDialogForm { void setEditorHighlighterEnabled (bool flag); bool editorHighlighterEnabled () const; + // Seer settings. + void setSeerRememberWindowSizes (bool flag); + bool seerRememberWindowSizes () const; + + void setSeerConsoleMode (const QString& mode); + QString seerConsoleMode () const; + public slots: void handleChangePage (QListWidgetItem* current, QListWidgetItem* previous); void handleButtonClicked (QAbstractButton* button); diff --git a/src/SeerEditorConfigPage.ui b/src/SeerEditorConfigPage.ui index d4e5814..2053317 100644 --- a/src/SeerEditorConfigPage.ui +++ b/src/SeerEditorConfigPage.ui @@ -122,7 +122,7 @@ <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify font and highlighting colors for the code editor.</p> +<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Specify font and highlighting colors for the code editor.</span></p> <p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">These formats apply only when highlighting is enabled and if the file is C or C++.</p> <ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Class</li> <li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Comment</li> diff --git a/src/SeerGdbConfigPage.ui b/src/SeerGdbConfigPage.ui index fd338cf..1b0e5de 100644 --- a/src/SeerGdbConfigPage.ui +++ b/src/SeerGdbConfigPage.ui @@ -65,7 +65,7 @@ <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify an alternate gdb program or alternate gdb flags.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Specify an alternate gdb program and alternate gdb flags.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Note, Seer relies on the &quot;mi&quot; interpreter that is built into gdb. If a different debugger is used, it must provide that. So, usually, the &quot;--interpreter=mi&quot; argument is a must.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> diff --git a/src/SeerGdbWidget.cpp b/src/SeerGdbWidget.cpp index 800393f..d35947c 100644 --- a/src/SeerGdbWidget.cpp +++ b/src/SeerGdbWidget.cpp @@ -4,6 +4,7 @@ #include "SeerArrayVisualizerWidget.h" #include "SeerUtl.h" #include +#include #include #include #include @@ -179,6 +180,7 @@ SeerGdbWidget::SeerGdbWidget (QWidget* parent) : QWidget(parent) { QObject::connect(stackThreadManagersplitter, &QSplitter::splitterMoved, this, &SeerGdbWidget::handleSplitterMoved); // Restore window settings. + setConsoleMode("normal"); readSettings(); } @@ -1291,6 +1293,10 @@ void SeerGdbWidget::writeSettings () { settings.setValue("sourceLibraryVariableManagerSplitter", sourceLibraryVariableManagerSplitter->saveState()); settings.setValue("stackThreadManagersplitter", stackThreadManagersplitter->saveState()); settings.endGroup(); + + settings.beginGroup("consolewindow"); + settings.setValue("start", consoleMode()); + settings.endGroup(); } void SeerGdbWidget::readSettings () { @@ -1303,6 +1309,10 @@ void SeerGdbWidget::readSettings () { sourceLibraryVariableManagerSplitter->restoreState(settings.value("sourceLibraryVariableManagerSplitter").toByteArray()); stackThreadManagersplitter->restoreState(settings.value("stackThreadManagersplitter").toByteArray()); settings.endGroup(); + + settings.beginGroup("consolewindow"); + setConsoleMode(settings.value("start", "normal").toString()); + settings.endGroup(); } bool SeerGdbWidget::isGdbRuning () const { @@ -1365,7 +1375,8 @@ void SeerGdbWidget::createConsole () { if (_consoleWidget == 0) { _consoleWidget = new SeerConsoleWidget(0); _consoleWidget->setWindowFlags(Qt::Window | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint); - _consoleWidget->show(); + + setConsoleMode(consoleMode()); } } @@ -1377,6 +1388,45 @@ void SeerGdbWidget::deleteConsole () { } } +void SeerGdbWidget::setConsoleMode (const QString& mode) { + + _consoleMode = mode; + + if (_consoleWidget != 0) { + if (_consoleMode == "normal") { + _consoleWidget->show(); + _consoleWidget->setWindowState(Qt::WindowNoState); + + }else if (_consoleMode == "minimized") { + _consoleWidget->show(); + _consoleWidget->setWindowState(Qt::WindowMinimized); + + }else if (_consoleMode == "hidden") { + _consoleWidget->hide(); + + }else if (_consoleMode == "") { + _consoleMode = "normal"; + _consoleWidget->show(); + _consoleWidget->setWindowState(Qt::WindowNoState); + + }else{ + } + } + + //_consoleWidget->hide(); // Hide the console. Use show() to restore it. + //_consoleWidget->setWindowState(Qt::WindowNoState); // Show it normally. + //_consoleWidget->setWindowState(Qt::WindowMinimized); // Show it minimized. +} + +QString SeerGdbWidget::consoleMode () const { + + if (_consoleMode == "") { + return "normal"; + } + + return _consoleMode; +} + void SeerGdbWidget::sendGdbInterrupt (int signal) { //qDebug() << __PRETTY_FUNCTION__ << "Sending an interrupt to the program. Signal =" << signal; diff --git a/src/SeerGdbWidget.h b/src/SeerGdbWidget.h index 19c4aca..05621cb 100644 --- a/src/SeerGdbWidget.h +++ b/src/SeerGdbWidget.h @@ -58,9 +58,15 @@ class SeerGdbWidget : public QWidget, protected Ui::SeerGdbWidgetForm { void setGdbAsyncMode (bool flag); bool gdbAsyncMode () const; + void setConsoleMode (const QString& mode); + QString consoleMode () const; + // Editor manager. SeerEditorManagerWidget* editorManager (); + void writeSettings (); + void readSettings (); + public slots: void handleText (const QString& text); void handleExecute (); @@ -133,8 +139,6 @@ class SeerGdbWidget : public QWidget, protected Ui::SeerGdbWidgetForm { void stoppingPointReached (); protected: - void writeSettings (); - void readSettings (); private: bool isGdbRuning () const; @@ -158,6 +162,7 @@ class SeerGdbWidget : public QWidget, protected Ui::SeerGdbWidgetForm { bool _newExecutableFlag; SeerConsoleWidget* _consoleWidget; + QString _consoleMode; SeerBreakpointsBrowserWidget* _breakpointsBrowserWidget; SeerWatchpointsBrowserWidget* _watchpointsBrowserWidget; SeerCatchpointsBrowserWidget* _catchpointsBrowserWidget; diff --git a/src/SeerMainWindow.cpp b/src/SeerMainWindow.cpp index 2fce8b7..e234dd3 100644 --- a/src/SeerMainWindow.cpp +++ b/src/SeerMainWindow.cpp @@ -73,6 +73,9 @@ SeerMainWindow::SeerMainWindow(QWidget* parent) : QMainWindow(parent) { QObject::connect(actionFileQuit, &QAction::triggered, this, &SeerMainWindow::handleFileQuit); QObject::connect(actionViewMemoryVisualizer, &QAction::triggered, this, &SeerMainWindow::handleViewMemoryVisualizer); QObject::connect(actionViewArrayVisualizer, &QAction::triggered, this, &SeerMainWindow::handleViewArrayVisualizer); + QObject::connect(actionConsoleNormal, &QAction::triggered, this, &SeerMainWindow::handleViewConsoleNormal); + QObject::connect(actionConsoleHidden, &QAction::triggered, this, &SeerMainWindow::handleViewConsoleHidden); + QObject::connect(actionConsoleMinimized, &QAction::triggered, this, &SeerMainWindow::handleViewConsoleMinimized); QObject::connect(actionHelpAbout, &QAction::triggered, this, &SeerMainWindow::handleHelpAbout); QObject::connect(actionControlRun, &QAction::triggered, gdbWidget, &SeerGdbWidget::handleGdbRunExecutable); @@ -278,6 +281,21 @@ void SeerMainWindow::handleViewArrayVisualizer () { gdbWidget->handleGdbArrayVisualizer(); } +void SeerMainWindow::handleViewConsoleNormal () { + + gdbWidget->setConsoleMode("normal"); +} + +void SeerMainWindow::handleViewConsoleHidden () { + + gdbWidget->setConsoleMode("hidden"); +} + +void SeerMainWindow::handleViewConsoleMinimized () { + + gdbWidget->setConsoleMode("minimized"); +} + void SeerMainWindow::handleSettingsConfiguration () { SeerConfigDialog dlg(this); @@ -288,6 +306,7 @@ void SeerMainWindow::handleSettingsConfiguration () { dlg.setEditorFont(gdbWidget->editorManager()->editorFont()); dlg.setEditorHighlighterSettings(gdbWidget->editorManager()->editorHighlighterSettings()); dlg.setEditorHighlighterEnabled(gdbWidget->editorManager()->editorHighlighterEnabled()); + dlg.setSeerConsoleMode(gdbWidget->consoleMode()); int ret = dlg.exec(); @@ -301,6 +320,7 @@ void SeerMainWindow::handleSettingsConfiguration () { gdbWidget->editorManager()->setEditorFont(dlg.editorFont()); gdbWidget->editorManager()->setEditorHighlighterSettings(dlg.editorHighlighterSettings()); gdbWidget->editorManager()->setEditorHighlighterEnabled(dlg.editorHighlighterEnabled()); + gdbWidget->setConsoleMode(dlg.seerConsoleMode()); } void SeerMainWindow::handleSettingsSaveConfiguration () { @@ -314,6 +334,7 @@ void SeerMainWindow::handleSettingsSaveConfiguration () { } writeConfigSettings(); + gdbWidget->writeSettings(); QMessageBox::information(this, "Seer", "Saved."); } diff --git a/src/SeerMainWindow.h b/src/SeerMainWindow.h index e6a6267..286948c 100644 --- a/src/SeerMainWindow.h +++ b/src/SeerMainWindow.h @@ -40,6 +40,9 @@ class SeerMainWindow : public QMainWindow, protected Ui::SeerMainWindowForm { void handleFileQuit (); void handleViewMemoryVisualizer (); void handleViewArrayVisualizer (); + void handleViewConsoleNormal (); + void handleViewConsoleHidden (); + void handleViewConsoleMinimized (); void handleSettingsConfiguration (); void handleSettingsSaveConfiguration (); void handleHelpAbout (); diff --git a/src/SeerMainWindow.ui b/src/SeerMainWindow.ui index fbfbe9f..c3e34ee 100644 --- a/src/SeerMainWindow.ui +++ b/src/SeerMainWindow.ui @@ -40,8 +40,27 @@ View + + + + + + + + + Console + + + + :/seer/resources/console.png:/seer/resources/console.png + + + + + + @@ -428,6 +447,42 @@ Save the configurations so future Seer sessions will use them. + + + + :/seer/resources/maximize.png:/seer/resources/maximize.png + + + Normal + + + Show the console window. + + + + + + :/seer/resources/hide.png:/seer/resources/hide.png + + + Hidden + + + Hide the console window. + + + + + + :/seer/resources/minimize.png:/seer/resources/minimize.png + + + Minimized + + + Minimize the console window. + + diff --git a/src/SeerSeerConfigPage.cpp b/src/SeerSeerConfigPage.cpp index d0cdc6c..f22fd97 100644 --- a/src/SeerSeerConfigPage.cpp +++ b/src/SeerSeerConfigPage.cpp @@ -7,6 +7,8 @@ SeerSeerConfigPage::SeerSeerConfigPage(QWidget* parent) : QWidget(parent) { setupUi(this); // Setup the widgets + setConsoleMode("normal"); + setRememberWindowSizes(true); // Connect things. } @@ -14,3 +16,45 @@ SeerSeerConfigPage::SeerSeerConfigPage(QWidget* parent) : QWidget(parent) { SeerSeerConfigPage::~SeerSeerConfigPage() { } +void SeerSeerConfigPage::setConsoleMode (const QString& mode) { + + if (mode == "normal") { + normalRadioButton->setChecked(true); + + }else if (mode == "minimized") { + minimizedRadioButton->setChecked(true); + + }else if (mode == "hidden") { + hiddenRadioButton->setChecked(true); + + }else{ + normalRadioButton->setChecked(true); + } +} + +QString SeerSeerConfigPage::consoleMode () const { + + if (normalRadioButton->isChecked()) { + return "normal"; + + }else if (minimizedRadioButton->isChecked()) { + return "minimized"; + + }else if (hiddenRadioButton->isChecked()) { + return "hidden"; + + }else{ + return "normal"; + } +} + +void SeerSeerConfigPage::setRememberWindowSizes (bool flag) { + + rememberSizescheckBox->setChecked(flag); +} + +bool SeerSeerConfigPage::rememberWindowSizes () const { + + return rememberSizescheckBox->isChecked(); +} + diff --git a/src/SeerSeerConfigPage.h b/src/SeerSeerConfigPage.h index f376be8..f449c68 100644 --- a/src/SeerSeerConfigPage.h +++ b/src/SeerSeerConfigPage.h @@ -12,5 +12,10 @@ class SeerSeerConfigPage : public QWidget, public Ui::SeerSeerConfigPage { explicit SeerSeerConfigPage (QWidget* parent = 0); ~SeerSeerConfigPage (); + void setConsoleMode (const QString& mode); + QString consoleMode () const; + + void setRememberWindowSizes (bool flag); + bool rememberWindowSizes () const; }; diff --git a/src/SeerSeerConfigPage.ui b/src/SeerSeerConfigPage.ui index 8546510..6aac174 100644 --- a/src/SeerSeerConfigPage.ui +++ b/src/SeerSeerConfigPage.ui @@ -20,22 +20,98 @@ 0 - + + + + Number of manual gdb/mi commands to remember + + + + + + + Remember window sizes. + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify general settings for the Seer program itself.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Specify general settings for the Seer program itself.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Coming soon near you.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">On startup, the console can be shown normal, minimized, or hidden.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The window sizes can be remembered if they get changed. On startup, Seer will start with the rembered sizes.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Also, 'N' number of the most recent gdb/mi commands will be remembered.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + + + Console mode on startup + + + + + + Normal + + + modeButtonGroup + + + + + + + Minimized + + + modeButtonGroup + + + + + + + Hidden + + + modeButtonGroup + + + + + + + + + diff --git a/src/SeerSourceConfigPage.ui b/src/SeerSourceConfigPage.ui index 30f3a17..8837497 100644 --- a/src/SeerSourceConfigPage.ui +++ b/src/SeerSourceConfigPage.ui @@ -27,7 +27,7 @@ <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Specify directory mappings for locating source files.</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Specify directory mappings for locating source files.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Coming soon near you.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> diff --git a/src/resource.qrc b/src/resource.qrc index 13e2003..97f8ac0 100644 --- a/src/resource.qrc +++ b/src/resource.qrc @@ -25,5 +25,9 @@ resources/editor.png resources/source.png resources/font.png + resources/console.png + resources/hide.png + resources/maximize.png + resources/minimize.png diff --git a/src/resources/README.icons b/src/resources/README.icons index 4e94d81..adce094 100644 --- a/src/resources/README.icons +++ b/src/resources/README.icons @@ -9,6 +9,10 @@ Most are 32x32. https://www.flaticon.com/premium-icon/contrast-adjustment_4353977 https://www.flaticon.com/authors/creatype https://www.flaticon.com/free-icon/blogger_3860232 https://www.flaticon.com/authors/xnimrodx https://www.flaticon.com/premium-icon/c_2085176 https://www.flaticon.com/authors/justicon + https://www.flaticon.com/premium-icon/command_6008504 https://www.flaticon.com/authors/flat-icons + https://www.flaticon.com/free-icon/maximize_3580204 https://www.flaticon.com/authors/mavadee + https://www.flaticon.com/free-icon/minimize_3580225 https://www.flaticon.com/authors/mavadee + https://www.flaticon.com/premium-icon/close_3718000 https://www.flaticon.com/authors/flat-icons https://icon-icons.com/icon/GDB/132365 https://creativecommons.org/licenses/by/4.0/ John Gardner The debugging icons used are from the NetBeans project (via the Gede debugger) and licensed under the diff --git a/src/resources/console.png b/src/resources/console.png new file mode 100644 index 0000000000000000000000000000000000000000..88871fe740e83ead3907794807da8b2e559e45ff GIT binary patch literal 896 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ zFx~)R#$PeZihzQWC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)l{q=Nl z45^s&c9wnqWe164^7DIzR{AnAd#g$~yXd+$Ei6`_aLa{dPEc3G4+b5bFU}i2FeW&J zxO#g2U-C+xvvZ-4bkHi7C89bP7BYushpSFGR?c%GPinh`=En7Y@6GqV|0!epe)8_m zKT{kO1UOij4pzEm`5c?h#$M(8EX2R#o9CsA*^bRdoV!h%c>gke(Pqv&IK@?}*m@AGSqm@QCu`Q3NNQ-a}IRb5+WOJ*?l?o`()HmBc+317$_Y=8^3JoeasU7A>y2;4_Dn5|dssiX6}}emKQi&u zGDe2atxBt&u6n-c&yiA=C7UvjBn1LdkDXNOtdPGKo=WHXGAapYBu9nMe2{gZW+6wG z+`A>a&a#9vuX?Iglwag0ESKeR&!5bv~4^AleM-O^19gV>76BV z^kvfV)}OAY*;bsaOaC}!(T8mUFYYFKv;EPvd#zKqso~P{N$HRN9QYcmuuyHz(b*zD zJ8e!a-E>!Me;se8Zf}Okr}OtOmogXcj9e3b{l9bB^8#5$=b4GuA2BMF>OYOLVE}q? z$<{BLORAisyB~NSWtR+Repa;kLMijHzQ&W+C##F)e=Rt!*TTS**ywOzzWt&LoLO@$%AJ6@ Og~8L+&t;ucLK6T5Q1zqRW|n126^1Qh zIi`eTNgm6|6c z=8&S$tkjeQpV?#(OeUSdpy$Ey1Ui8Q0QiG4BvFCaC&KCUdmXbr(e3f;2+K?>3cVr) zd3jJ8)%N?~_+F+Mr3 zJbW~_Fz5DzF!)FcDDQNBV7V77n`0ut-s64M0!Q9v7^Z4>X{JzIWa5&I39;yU8E#Ji zBco1faOg=8!0n)4KGk*3a(lD=Zc2a`8v6@ao}A@5rn;&k*HBz!W>_{ZqiPwlOmTl? zhIaQ)dS!{;T2$oYeeYVninhO~tbOgZ^X!!Axl@$lRAqUNP`*2hi#PGLkY$Sg!D+c~ zU^)okKXaUq-v0RG@5@^I(QI|aiQb$BO8xEkEjQJ+ zRZXGhr+p0^A%CcQbz9<=Tw`>W#u;N19<*G0?2|?1_0F@FCN*tT2~hJ^|C>Bve%(-4 zXvj!6Y|hF!!!hHan z9Pvq_^ut?cDlctRmu&Q~va$aFOUQ=}*1~@p@&J&UqCM> z%d>ekFPe4waG_}gc_|b|PQ-<#5iBgKGg1u}7K6CZGy)?hA~%`hLemIlojz4Y#5sN0``=ZllU0J!w& zSJ+yRhJ=K$!mGx@Vi1>Xqc~V?!s~}}QMTQPOp}2BZT=GZTasbWZ~PxI43NJinZG-1 zugNQW>!b03-?~;l|C$FFSoUmXd5)lFGc)J%<8tdLeq_x>?Vhyd^19j#9Inm4rIrWq z%t!ADE6E>yDQmgBx-1oq4SBG&K2+ri#v}ojJ=ubw$8Xm@TlM$sJ>FNX6WD)y^}EmN z2-$dsT#tMRg$0Qq04`sT&J)%nAHtR_ohDDn&PpN!_v|^DC2xK@Iq=?OsC<vW zRYk5L(#B?f;i++N9?lC(K7_j34Aj@Aqq%idQ%nevuiI}9OFo3^vQ)fzG!Md8t1XQ^rJ=HA0k{Nma(8K_pk`aku?!Y{>UW-M zMbJuqxt&i2VK-dU0RUK*V0THTpySz-p)vvhFP?7W6yWt8g{H`1A3#}YCi+I^Ve7D~ zHZqb3(UP}y*wH^SkKJYJ+UzJab5y|_FP?7WfF%LEW5$D~R2@>1)h%~*2^@}C3t_uC zi;I7LqS{z%Z6>Vy({ZtR_3W@R;AtY?Zbx(b4C=pEhy+1hkWEQRKuU@ZfwAQ8080Y! zJgMKl&6K42%>a@T1st^&;_7XuCK1+7k&&YPda$+I(cCeEBi14$8?_~6wr@*IA{?;- z00#gpm_u7~jgbe@8iYh>vWBJA+RS0RUHVqBmVpXjVqLUUNsl-$b}%8wD7sc46y*Oz^@}%@07UBTV z(&0dJ`%|}%mOKCuhCxblf`8Vj>?8`q7NwgaETdE)+L)jgEgcSAZg)gA=EK2k(sLBF zi0~X!VlwHX^Zzx7mk6;Y4*+Jf-oSIDlyEG`GZ^@o<#%H(LOjR=fI-hOEJtz)1x*q7 z&23rNB32^Ai#z}bJPQU)Dgj}Vd0z7j7!fN)xYjwNx&5`S8Q5;lpy6=r$pZk-vtSsc z#Gd&YFaYQ`6T25IOC~zczThMPpiuhB_~g9ixo}k`N8^6Jx#MXj=cu(1w$EqL)TSY`bRc|Y zNiD|5J&G*TE5K4lNb<{ss=Pe{_UP*m70%L)dD?LogN{U%hlEWpzB)7$qS%to9KOLu1AMz<54cU_UHswN+T zRuMYyx^Sc0iPDmch;@fXW)uS4>OEUI6e?Tg?m@qNs=IH}E6W>eU`!Hlq^=O}U!Fk6 zow;@Et<2kN$>D`Wh;;7Ib zC9UM$?f~u#PD^r7d28*nuSK%Sf%iPml%K%#lf~-dqI4nBZBV_QLw;T|&bRy(3tkyr zLvFO+ap7ov5n^$THslGdZR41l3E;t(i@0#Zu9`fh6qm0&T3qx=|K54#`IfcM!_zxW z$$_bXn|pR;S*k2Ks#50j3qcIucYv@2yGk>l=6a15_yZE|4mqI63QBfns1~=YXHvR5 zWWSR&`>-b5W$JbR-^yd%*$D#oe|4{JOU=(q-h}D@IQ;c1H?Ca&VosEU#kbE?hmEG| z2D+XPs-{Irsc*UZ*z1^yZlm;%gx%rAmFr)4<)CC;k310Jrs(bWEjMLJdE-yEQLoGG zkG+*~!ko*Grj}73Rq(^kb5*xCsvB|H+j-W~B#X+=&tDw*r|<;3!;6nEj`$==Ir;f} z&tHyIUvZ)!~VYRrSy>yLd@#t+nx2Q+>#QQg?HkK@?pJ-f1# z_Eu!`TE7H~7bvCZ>YWq^@7WjRpk$5Y_A8;8LFKXTY<&XXWHRf@zWdTvgW78~@q*hO zz|}whWpU2szZ;YS4I2f#aL{}xI63g%Le;Y`pPQn|((tgOMo~brvyw=pif3GE1U$Vo@uqv*rZ3eQe zU}$89_V!NsB#L&wKX{_&T-8{#{l(;Ot31|Ssn-j?1Zef{l1yPop_xmG@dp+zcK{DY zXQja*y9mPE@_B=&dOoP?*=)Zt^;=70PpOV)Pg06EQjI!ne=aR4KhH=qG7KOZ1E#X{ z>Fn6}yz=O=bHOzq0K?#qeo=mB<$iv%h|9oz@pKy(7)$;R%aM9Qa7dPEZgR5DpKjK1 z=_Y-mUeAH&S?HE7Q2PTiL{Wy%D`CdzTbyeV=FEeRp2 z4~+I{sm}w)fR=6gOQN~qLw%JVKRr`yd?7$A-eoBD8_=;$N7W)FrR>d&4gP6u44k<7 zkrHAO2-etN!Zh^(ZVf#GFp8~)R^I|0@9pW}Xm1ZYLpy5hcQe*g8SYNa@^Ee;q?Eb{ zoVE5VA-(~Eq1N5(dS^dABd{%hW;V^z{Czf76CHj-T*|_i0J3DE83Z_b$a(Sr;ZT4h zhq{Z-k8fde45$ft0K>n7U3>QDy^-e%Rsjmv{LZlRh(zD7 z%DHU@I7ogKhzlt{DZc{%WX6Z4g%Y0uV+C6qXtd5%9fWNL6k*;tCG4$gi|oylzhWs^ z*+_ zpFUva*+bj0D!v4~f;@Q{2in4sDDCg|yhQ%_+zjh0&j3Lr`oU|*Yp4v!r@g!ew1rzc zUm_2h=TBw}_MX9y}&MwYNGO@~gn6M`_D>>EX&V z0#vuct7zsY;KhDI&djhhe}7XScw{N;0C|LzBU-6XQ_00p*?vMwSoR-W&j2UL17ybr zC#96Vz-7??<_|7QDSNHk@UCV+q2N`u!mFm>6*gMVzRt$A45)Xte-&I2z$@gz1p&N7 z9_m~J>P5CLzvH-VbPK;!JKKVz{rfwNfZ}R?u(LUwV_kdv_S~!N4Pv7$o zjP@1n>XHF&q`mg33uqDCx3{zO3hwUIEDs(p1hr3H0Af&w3~=q5*WxHZ-@$G|!2qFP zfWCv>oBF_E0bDM4Es%c+TZHAj^sRwo0(h<3zY2~B&?w}=i6R(_cWI^K6d!48w6=E& zHO~NFPMrgGhg#Y_PaYf)KnQUhAoA8e&yxp7YJg4ws9g3%i$}?WGez(xfW(u(Nv|!D z-B@Mu(X=PYg9Am-G=rB6W8+LNvvK&@KfhbM5<;pWFOdf)GT>JKs+r34qs2Mk7hqb$ z_ol&NuaO6*o&_d`lO~)ee|Q?M?+Ln%rT}gS;5M29xE+AoXbRwV0B)lxfZGAMjfz)- z#uwM@Ke}r`*k-`noo#j|o<$|G+h)M2&kxol7_Z`uuK`v8k^pP#X_rEA9&4!*x6-Gy zRspU9+?ksBUy87nN^^ViF8~B$wAfzSwcK&yN>5J6JJkP=ll8`;smuf1Jo6YV8IT@7 uJ!6{sfPf#V;%n;$!m>d8U?tx~6Yw7?ZW#omSkN#40000v$B2!5m*32D+AY@1rCX_XIm zS&e$pi~c2T(vb8@ubQ-fN9{#>QGrFE)K*OsjG7cfQPVV9ODv*%v&`%{z1Uq`U||m@R^Csm|WtOluSSQGyUz?bh||kdWLWDWO8P^8Z?nA`{C%8et9J&lMhE( zUYt!%f_CDobYIR2@Q-*#vOe?eJ<-%`Us74OcfEL(VDix@@r7v+JTgqt$?)09bbrnY zNaGAdMeeA=Vz&20g(1ENf|Yf93DqB5)vr{7$%l7|&nLy3hG>h&y6$Jj6vZ5n4ISd4 zNDa^>9*WQao#LU$4A3newlE2LjTZ6YSiL3XkHCyG5bcB_F+hv>XwNRomIJ`y%x2#| z0{X;@LDq-|pBtd9>}`gC!=cy8*WJUn259@`r5ph9c6C)bk&j!}-N%;(=q~%}s&cwc zv`|)BvhH5Kn*?<&b(Sr9NtJ!%#1YDZfvoq_YCuU_-&@jD7l98`P1lWt=wAM*Yc!wh z^E=huT{+m~Sm)mZHWd#VAAvx7-%)9*5#T(qEA=@qO*Il|?>n07`h1VHd5T|QGx4CY z0+cB)phRhDWeqhAO(@{`!~>S*rb?A5F96|?ndp~ge2 z`m*7rc+fisR03Fm7w;4;E4Zp}E&097$orXpDLh*S-8k6144xR^7xCbM0e%t>1vbEM z;-P>B_)$C*a4Ref@dJ8xcv>msS-`WUZZljrKnQ_S3cvmGXOE}9spLoFH?9(zSh^t+3=~>F3Jaweg!qC~jA)^9ZIM4fyX@U4QQ~VA)z<-M+ V5Y;I?M`-{6002ovPDHLkV1nQvho%4k literal 0 HcmV?d00001 diff --git a/src/seer.cpp b/src/seer.cpp index 54d3805..e8425f3 100644 --- a/src/seer.cpp +++ b/src/seer.cpp @@ -110,6 +110,7 @@ int main (int argc, char* argv[]) { seer.move(800, 400); seer.show(); + seer.activateWindow(); return app.exec(); }