From cc84f5bd3902494fb5e7d5ce8cf6f2ab879ae3a0 Mon Sep 17 00:00:00 2001 From: arif Date: Thu, 24 Feb 2011 17:44:43 +0000 Subject: [PATCH] more gvedit development --- cmd/gvedit/main.cpp | 2 +- cmd/gvedit/mainwindow.cpp | 314 ++++++++++++++++++-------------------- cmd/gvedit/mainwindow.h | 73 +++++---- cmd/gvedit/mdichild.h | 4 +- cmd/gvedit/ui_settings.h | 2 +- cmd/gvedit/vc90.idb | Bin 2190336 -> 2190336 bytes cmd/gvedit/vc90.pdb | Bin 1880064 -> 1888256 bytes 7 files changed, 189 insertions(+), 206 deletions(-) diff --git a/cmd/gvedit/main.cpp b/cmd/gvedit/main.cpp index 289d34038..b48e39df8 100644 --- a/cmd/gvedit/main.cpp +++ b/cmd/gvedit/main.cpp @@ -61,7 +61,7 @@ int main(int argc, char *argv[]) Q_INIT_RESOURCE(mdi); QApplication app(argc, argv); - MainWindow mainWin; + CMainWindow mainWin; mainWin.show(); return app.exec(); } diff --git a/cmd/gvedit/mainwindow.cpp b/cmd/gvedit/mainwindow.cpp index e1eb57e31..111c8e86e 100644 --- a/cmd/gvedit/mainwindow.cpp +++ b/cmd/gvedit/mainwindow.cpp @@ -1,45 +1,4 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the examples of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - #include - #include "mainwindow.h" #include "mdichild.h" #include "csettings.h" @@ -90,7 +49,7 @@ void LoadLayouts(QComboBox* cb) gvFreeLayout(gvc, g); } -MainWindow::MainWindow() +CMainWindow::CMainWindow() { QWidget* centralwidget = new QWidget(this); @@ -122,17 +81,17 @@ MainWindow::MainWindow() connect(mdiArea, SIGNAL(subWindowActivated(QMdiSubWindow*)), - this, SLOT(updateMenus())); + this, SLOT(slotRefreshMenus())); windowMapper = new QSignalMapper(this); connect(windowMapper, SIGNAL(mapped(QWidget*)), this, SLOT(setActiveSubWindow(QWidget*))); frmSettings= new CFrmSettings(); - createActions(); - createMenus(); - createToolBars(); - createStatusBar(); + actions(); + menus(); + toolBars(); + statusBar(); updateMenus(); readSettings(); @@ -144,9 +103,10 @@ MainWindow::MainWindow() // (QComboBox*)frmSettings->findChild("cbLayout") LoadLayouts((QComboBox*)frmSettings->findChild("cbLayout")); LoadRenderers((QComboBox*)frmSettings->findChild("cbExtension")); + statusBar()->showMessage(tr("Ready")); } -void MainWindow::closeEvent(QCloseEvent *event) +void CMainWindow::closeEvent(QCloseEvent *event) { mdiArea->closeAllSubWindows(); if (mdiArea->currentSubWindow()) { @@ -157,14 +117,14 @@ void MainWindow::closeEvent(QCloseEvent *event) } } -void MainWindow::newFile() +void CMainWindow::slotNew() { MdiChild *child = createMdiChild(); child->newFile(); child->show(); } -void MainWindow::open() +void CMainWindow::slotOpen() { QStringList filters; filters << "*.cpp" << "*.cxx" << "*.cc"; @@ -191,37 +151,37 @@ void MainWindow::open() } } -void MainWindow::save() +void CMainWindow::slotSave() { if (activeMdiChild() && activeMdiChild()->save()) statusBar()->showMessage(tr("File saved"), 2000); } -void MainWindow::saveAs() +void CMainWindow::slotSaveAs() { if (activeMdiChild() && activeMdiChild()->saveAs()) statusBar()->showMessage(tr("File saved"), 2000); } -void MainWindow::cut() +void CMainWindow::slotCut() { if (activeMdiChild()) activeMdiChild()->cut(); } -void MainWindow::copy() +void CMainWindow::slotCopy() { if (activeMdiChild()) activeMdiChild()->copy(); } -void MainWindow::paste() +void CMainWindow::slotPaste() { if (activeMdiChild()) activeMdiChild()->paste(); } -void MainWindow::about() +void CMainWindow::slotAbout() { QMessageBox::about(this, tr("About MDI"), tr("The MDI example demonstrates how to write multiple " @@ -229,47 +189,81 @@ void MainWindow::about() } -void MainWindow::settings() +void CMainWindow::slotSettings() { frmSettings->showSettings(activeMdiChild()); } +void CMainWindow::updateFileMenu() +{ + if (!activeMdiChild()) + { + saveAct->setEnabled(false); + saveAsAct->setEnabled(false); + pasteAct->setEnabled(false); + closeAct->setEnabled(false); + closeAllAct->setEnabled(false); + tileAct->setEnabled(false); + cascadeAct->setEnabled(false); + nextAct->setEnabled(false); + previousAct->setEnabled(false); + separatorAct->setVisible(false); + } + else + { + saveAct->setEnabled(true); + saveAsAct->setEnabled(true); + pasteAct->setEnabled(true); + closeAct->setEnabled(true); + closeAllAct->setEnabled(true); + tileAct->setEnabled(true); + cascadeAct->setEnabled(true); + nextAct->setEnabled(true); + previousAct->setEnabled(true); + separatorAct->setVisible(true); + if(activeMdiChild()->textCursor().hasSelection()) + { + cutAct->setEnabled(true); + copyAct->setEnabled(true); + + } + else + { + cutAct->setEnabled(false); + copyAct->setEnabled(false); + + } -void MainWindow::updateMenus() + } + +} + +void CMainWindow::slotRefreshMenus() +{ + updateMenus(); +} +void CMainWindow::updateMenus() { - bool hasMdiChild = (activeMdiChild() != 0); - saveAct->setEnabled(hasMdiChild); - saveAsAct->setEnabled(hasMdiChild); - pasteAct->setEnabled(hasMdiChild); - closeAct->setEnabled(hasMdiChild); - closeAllAct->setEnabled(hasMdiChild); - tileAct->setEnabled(hasMdiChild); - cascadeAct->setEnabled(hasMdiChild); - nextAct->setEnabled(hasMdiChild); - previousAct->setEnabled(hasMdiChild); - separatorAct->setVisible(hasMdiChild); - - bool hasSelection = (activeMdiChild() && - activeMdiChild()->textCursor().hasSelection()); - cutAct->setEnabled(hasSelection); - copyAct->setEnabled(hasSelection); + this->updateFileMenu(); + this->updateWindowMenu(); + } -void MainWindow::updateWindowMenu() +void CMainWindow::updateWindowMenu() { - windowMenu->clear(); - windowMenu->addAction(closeAct); - windowMenu->addAction(closeAllAct); - windowMenu->addSeparator(); - windowMenu->addAction(tileAct); - windowMenu->addAction(cascadeAct); - windowMenu->addSeparator(); - windowMenu->addAction(nextAct); - windowMenu->addAction(previousAct); - windowMenu->addAction(separatorAct); + mWindow->clear(); + mWindow->addAction(closeAct); + mWindow->addAction(closeAllAct); + mWindow->addSeparator(); + mWindow->addAction(tileAct); + mWindow->addAction(cascadeAct); + mWindow->addSeparator(); + mWindow->addAction(nextAct); + mWindow->addAction(previousAct); + mWindow->addAction(separatorAct); QList windows = mdiArea->subWindowList(); separatorAct->setVisible(!windows.isEmpty()); @@ -286,7 +280,7 @@ void MainWindow::updateWindowMenu() text = tr("%1 %2").arg(i + 1) .arg(child->userFriendlyCurrentFile()); } - QAction *action = windowMenu->addAction(text); + QAction *action = mWindow->addAction(text); action->setCheckable(true); action ->setChecked(child == activeMdiChild()); connect(action, SIGNAL(triggered()), windowMapper, SLOT(map())); @@ -295,7 +289,7 @@ void MainWindow::updateWindowMenu() } } -MdiChild *MainWindow::createMdiChild() +MdiChild *CMainWindow::createMdiChild() { MdiChild *child = new MdiChild; child->parentFrm=this; @@ -310,62 +304,55 @@ MdiChild *MainWindow::createMdiChild() return child; } -void MainWindow::createActions() +void CMainWindow::actions() { newAct = new QAction(QIcon(":/images/new.png"), tr("&New"), this); newAct->setShortcuts(QKeySequence::New); newAct->setStatusTip(tr("Create a new file")); - connect(newAct, SIGNAL(triggered()), this, SLOT(newFile())); + connect(newAct, SIGNAL(triggered()), this, SLOT(slotNew())); openAct = new QAction(QIcon(":/images/open.png"), tr("&Open..."), this); openAct->setShortcuts(QKeySequence::Open); openAct->setStatusTip(tr("Open an existing file")); - connect(openAct, SIGNAL(triggered()), this, SLOT(open())); + connect(openAct, SIGNAL(triggered()), this, SLOT(slotOpen())); saveAct = new QAction(QIcon(":/images/save.png"), tr("&Save"), this); saveAct->setShortcuts(QKeySequence::Save); saveAct->setStatusTip(tr("Save the document to disk")); - connect(saveAct, SIGNAL(triggered()), this, SLOT(save())); + connect(saveAct, SIGNAL(triggered()), this, SLOT(slotSave())); saveAsAct = new QAction(tr("Save &As..."), this); saveAsAct->setShortcuts(QKeySequence::SaveAs); saveAsAct->setStatusTip(tr("Save the document under a new name")); - connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs())); - -//! [0] + connect(saveAsAct, SIGNAL(triggered()), this, SLOT(slotSaveAs())); exitAct = new QAction(tr("E&xit"), this); exitAct->setShortcuts(QKeySequence::Quit); exitAct->setStatusTip(tr("Exit the application")); connect(exitAct, SIGNAL(triggered()), qApp, SLOT(closeAllWindows())); -//! [0] - cutAct = new QAction(QIcon(":/images/cut.png"), tr("Cu&t"), this); cutAct->setShortcuts(QKeySequence::Cut); - cutAct->setStatusTip(tr("Cut the current selection's contents to the " - "clipboard")); - connect(cutAct, SIGNAL(triggered()), this, SLOT(cut())); + cutAct->setStatusTip(tr("Cut the current selection's contents to the ""clipboard")); + connect(cutAct, SIGNAL(triggered()), this, SLOT(slotCut())); copyAct = new QAction(QIcon(":/images/copy.png"), tr("&Copy"), this); copyAct->setShortcuts(QKeySequence::Copy); copyAct->setStatusTip(tr("Copy the current selection's contents to the " "clipboard")); - connect(copyAct, SIGNAL(triggered()), this, SLOT(copy())); + connect(copyAct, SIGNAL(triggered()), this, SLOT(slotCopy())); pasteAct = new QAction(QIcon(":/images/paste.png"), tr("&Paste"), this); pasteAct->setShortcuts(QKeySequence::Paste); pasteAct->setStatusTip(tr("Paste the clipboard's contents into the current " "selection")); - connect(pasteAct, SIGNAL(triggered()), this, SLOT(paste())); + connect(pasteAct, SIGNAL(triggered()), this, SLOT(slotPaste())); closeAct = new QAction(tr("Cl&ose"), this); closeAct->setStatusTip(tr("Close the active window")); - connect(closeAct, SIGNAL(triggered()), - mdiArea, SLOT(closeActiveSubWindow())); + connect(closeAct, SIGNAL(triggered()),mdiArea, SLOT(closeActiveSubWindow())); closeAllAct = new QAction(tr("Close &All"), this); closeAllAct->setStatusTip(tr("Close all the windows")); - connect(closeAllAct, SIGNAL(triggered()), - mdiArea, SLOT(closeAllSubWindows())); + connect(closeAllAct, SIGNAL(triggered()),mdiArea, SLOT(closeAllSubWindows())); tileAct = new QAction(tr("&Tile"), this); tileAct->setStatusTip(tr("Tile the windows")); @@ -378,22 +365,19 @@ void MainWindow::createActions() nextAct = new QAction(tr("Ne&xt"), this); nextAct->setShortcuts(QKeySequence::NextChild); nextAct->setStatusTip(tr("Move the focus to the next window")); - connect(nextAct, SIGNAL(triggered()), - mdiArea, SLOT(activateNextSubWindow())); + connect(nextAct, SIGNAL(triggered()),mdiArea, SLOT(activateNextSubWindow())); previousAct = new QAction(tr("Pre&vious"), this); previousAct->setShortcuts(QKeySequence::PreviousChild); - previousAct->setStatusTip(tr("Move the focus to the previous " - "window")); - connect(previousAct, SIGNAL(triggered()), - mdiArea, SLOT(activatePreviousSubWindow())); + previousAct->setStatusTip(tr("Move the focus to the previous window")); + connect(previousAct, SIGNAL(triggered()),mdiArea, SLOT(activatePreviousSubWindow())); separatorAct = new QAction(this); separatorAct->setSeparator(true); aboutAct = new QAction(tr("&About"), this); aboutAct->setStatusTip(tr("Show the application's About box")); - connect(aboutAct, SIGNAL(triggered()), this, SLOT(about())); + connect(aboutAct, SIGNAL(triggered()), this, SLOT(slotAbout())); aboutQtAct = new QAction(tr("About &Qt"), this); aboutQtAct->setStatusTip(tr("Show the Qt library's About box")); @@ -402,7 +386,7 @@ void MainWindow::createActions() settingsAct = new QAction(tr("Settings"), this); settingsAct->setStatusTip(tr("Show Graphviz Settings")); - connect(settingsAct, SIGNAL(triggered()), this, SLOT(settings())); + connect(settingsAct, SIGNAL(triggered()), this, SLOT(slotSettings())); @@ -413,62 +397,58 @@ void MainWindow::createActions() } -void MainWindow::createMenus() +void CMainWindow::menus() { - fileMenu = menuBar()->addMenu(tr("&File")); - fileMenu->addAction(newAct); - fileMenu->addAction(openAct); - fileMenu->addAction(saveAct); - fileMenu->addAction(saveAsAct); - fileMenu->addSeparator(); - QAction *action = fileMenu->addAction(tr("Switch layout direction")); - connect(action, SIGNAL(triggered()), this, SLOT(switchLayoutDirection())); - fileMenu->addAction(exitAct); - - editMenu = menuBar()->addMenu(tr("&Edit")); - editMenu->addAction(cutAct); - editMenu->addAction(copyAct); - editMenu->addAction(pasteAct); - - graphMenu = menuBar()->addMenu (tr("&Graph")); - graphMenu->addAction(settingsAct); - graphMenu->addAction(layoutAct); - - windowMenu = menuBar()->addMenu(tr("&Window")); - updateWindowMenu(); - connect(windowMenu, SIGNAL(aboutToShow()), this, SLOT(updateWindowMenu())); + mFile = menuBar()->addMenu(tr("&File")); + mEdit = menuBar()->addMenu(tr("&Edit")); + mWindow = menuBar()->addMenu(tr("&Window")); + mHelp = menuBar()->addMenu(tr("&Help")); - menuBar()->addSeparator(); - helpMenu = menuBar()->addMenu(tr("&Help")); - helpMenu->addAction(aboutAct); - helpMenu->addAction(aboutQtAct); -} + mFile->addAction(newAct); + mFile->addAction(openAct); + mFile->addAction(saveAct); + mFile->addAction(saveAsAct); + mFile->addSeparator(); -void MainWindow::createToolBars() -{ - fileToolBar = addToolBar(tr("File")); - fileToolBar->addAction(newAct); - fileToolBar->addAction(openAct); - fileToolBar->addAction(saveAct); + mFile->addAction(exitAct); - editToolBar = addToolBar(tr("Edit")); - editToolBar->addAction(cutAct); - editToolBar->addAction(copyAct); - editToolBar->addAction(pasteAct); + mEdit->addAction(cutAct); + mEdit->addAction(copyAct); + mEdit->addAction(pasteAct); - graphToolBar = addToolBar(tr("Graph")); - graphToolBar->addAction(settingsAct); - graphToolBar->addAction(layoutAct); + mGraph = menuBar()->addMenu (tr("&Graph")); + mGraph->addAction(settingsAct); + mGraph->addAction(layoutAct); + mGraph->addSeparator(); + loadPlugins(); + updateWindowMenu(); + connect(mWindow, SIGNAL(aboutToShow()), this, SLOT(slotRefreshMenus())); + mHelp->addAction(aboutAct); + mHelp->addAction(aboutQtAct); } -void MainWindow::createStatusBar() +void CMainWindow::toolBars() { - statusBar()->showMessage(tr("Ready")); + tbFile = addToolBar(tr("File")); + tbFile->addAction(newAct); + tbFile->addAction(openAct); + tbFile->addAction(saveAct); + + tbEdit = addToolBar(tr("Edit")); + tbEdit->addAction(cutAct); + tbEdit->addAction(copyAct); + tbEdit->addAction(pasteAct); + + tbGraph = addToolBar(tr("Graph")); + tbGraph->addAction(settingsAct); + tbGraph->addAction(layoutAct); + } -void MainWindow::readSettings() + +void CMainWindow::readSettings() { QSettings settings("Trolltech", "MDI Example"); QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint(); @@ -477,14 +457,14 @@ void MainWindow::readSettings() resize(size); } -void MainWindow::writeSettings() +void CMainWindow::writeSettings() { QSettings settings("Trolltech", "MDI Example"); settings.setValue("pos", pos()); settings.setValue("size", size()); } -MdiChild *MainWindow::activeMdiChild() +MdiChild *CMainWindow::activeMdiChild() { if (QMdiSubWindow *activeSubWindow = mdiArea->activeSubWindow()) { @@ -497,7 +477,7 @@ MdiChild *MainWindow::activeMdiChild() return 0; } -QMdiSubWindow *MainWindow::findMdiChild(const QString &fileName) +QMdiSubWindow *CMainWindow::findMdiChild(const QString &fileName) { QString canonicalFilePath = QFileInfo(fileName).canonicalFilePath(); @@ -523,17 +503,13 @@ QMdiSubWindow *MainWindow::findMdiChild(const QString &fileName) return 0; } -void MainWindow::switchLayoutDirection() -{ - if (layoutDirection() == Qt::LeftToRight) - qApp->setLayoutDirection(Qt::RightToLeft); - else - qApp->setLayoutDirection(Qt::LeftToRight); -} - -void MainWindow::setActiveSubWindow(QWidget *window) +void CMainWindow::setActiveSubWindow(QWidget *window) { if (!window) return; mdiArea->setActiveSubWindow(qobject_cast(window)); } +void CMainWindow::loadPlugins() +{ + +} \ No newline at end of file diff --git a/cmd/gvedit/mainwindow.h b/cmd/gvedit/mainwindow.h index 2d77e39f9..fca8b0da3 100644 --- a/cmd/gvedit/mainwindow.h +++ b/cmd/gvedit/mainwindow.h @@ -1,6 +1,10 @@ +/* +Core structures of mdi windowing code is either inspired or directly copied from Nokia Corporation's QT Toolkit examples. +These examples are published under the terms of the BSD +*/ -#ifndef MAINWINDOW_H -#define MAINWINDOW_H +#ifndef CMAINWINDOW_H +#define CMAINWINDOW_H #include #include "ui_settings.h" @@ -15,55 +19,52 @@ class QMdiSubWindow; class QSignalMapper; QT_END_NAMESPACE -class MainWindow : public QMainWindow +class CMainWindow : public QMainWindow { Q_OBJECT public: - MainWindow(); + CMainWindow(); QMdiArea *mdiArea; +private slots: + void slotSettings(); + void slotNew(); + void slotOpen(); + void slotSave(); + void slotSaveAs(); + void slotCut(); + void slotCopy(); + void slotPaste(); + void slotAbout(); + void slotRefreshMenus(); + MdiChild *createMdiChild(); + void activateChild(QWidget *window); protected: void closeEvent(QCloseEvent *event); -private slots: - void newFile(); - void open(); - void save(); - void saveAs(); - void cut(); - void copy(); - void paste(); - void about(); - void updateMenus(); - void updateWindowMenu(); - MdiChild *createMdiChild(); - void switchLayoutDirection(); - void setActiveSubWindow(QWidget *window); - void settings(); private: - void createActions(); - void createMenus(); - void createToolBars(); - void createStatusBar(); + void actions(); + void menus(); + void updateMenus(); + void updateWindowMenu(); + void updateFileMenu(); + void toolBars(); void readSettings(); void writeSettings(); + void loadPlugins(); MdiChild *activeMdiChild(); QMdiSubWindow *findMdiChild(const QString &fileName); - QSignalMapper *windowMapper; - QMenu *fileMenu; - QMenu *editMenu; - QMenu *graphMenu; - QMenu *windowMenu; - QMenu *helpMenu; - QToolBar *fileToolBar; - QToolBar *editToolBar; - QToolBar *graphToolBar; + + QToolBar *tbFile; + QToolBar *tbEdit; + QToolBar *tbGraph; + QAction *newAct; QAction *openAct; QAction *saveAct; @@ -85,8 +86,14 @@ private: QAction *settingsAct; QAction *layoutAct; - CFrmSettings* frmSettings; + //menus + QMenu *mFile; + QMenu *mEdit; + QMenu *mGraph; + QMenu *mWindow; + QMenu *mHelp; + }; #endif diff --git a/cmd/gvedit/mdichild.h b/cmd/gvedit/mdichild.h index fa5f7e4e3..83f2b8d23 100644 --- a/cmd/gvedit/mdichild.h +++ b/cmd/gvedit/mdichild.h @@ -43,7 +43,7 @@ #include #include "imageviewer.h" -class MainWindow; +class CMainWindow; class MdiChild : public QTextEdit { @@ -66,7 +66,7 @@ public: bool applyCairo; QString attributes; ImageViewer* previewFrm; - MainWindow* parentFrm; + CMainWindow* parentFrm; void loadPreview(QString fileName); protected: void closeEvent(QCloseEvent *event); diff --git a/cmd/gvedit/ui_settings.h b/cmd/gvedit/ui_settings.h index aa5f6a54d..8c7743107 100644 --- a/cmd/gvedit/ui_settings.h +++ b/cmd/gvedit/ui_settings.h @@ -1,7 +1,7 @@ /******************************************************************************** ** Form generated from reading UI file 'settings.ui' ** -** Created: Wed Feb 23 16:12:05 2011 +** Created: Thu Feb 24 12:31:24 2011 ** by: Qt User Interface Compiler version 4.7.0 ** ** WARNING! All changes made in this file will be lost when recompiling UI file! diff --git a/cmd/gvedit/vc90.idb b/cmd/gvedit/vc90.idb index 6050567bee17632d28e67bf1b60d414c1014d1d9..27f21fc59cb643e79a4f26df02430486fa27a5d2 100644 GIT binary patch delta 17463 zcmcJ13zVEynQi}7e|1$q(?xekNV=0Q5+sl`NlTOf!E^y4Xt$&!BOOfY;Y0-`ni5n{ zBPquRAQ>q-)&U`7ip4ZR$xO<${Rboibq5??QCg!WLNM*cdqIiNcXDS0J8<{jUjv1Y zyS#U;$yz^OpR><*Uf=o8*|qBwoA!U%+k|JE-@EChSMhJftFKI8H->`q{FZy8 z4O>p>^+s2JXkhWKhUWi_jyAU}s_&eS0?VeS>t6g~P7T86^?yU&TV@Sy8uxd7c-A*P z*SoQy)3q&YnKraz)?0>_wA8z!H@7qoeSFqp=Ta@xhaPF}9NP4w_|VD~jlt7PyO00Q zO`Xdd-{|hH^E$s0X?&xvyMC59IW&5xd-&8~xXHU@K`9&d1An3Gh-b0(hU?&!O`4+Mi(dfTI}`%~dQ*Ei@r z?mDjw&vzZCwa!mGi$X8pc@fV9p8vq}dps}W`2!x$efd-2Q|Eje6L2@4f5!7&JP|9c&cqp^QeW%JVC6_`G8*)s>y3nmH+cS?&%P(&k8bk%V?qCI-bi%x25%%3 z3B${GkyG=7<9o{9b;jG9)Z?&s*#}^`%W9kx@`f>-&Jxr}}xrDIzJA|EOX2&xv#Nx*b zt6Jt^Gke}I_bRc~F26!8Y^7P_#uBlGjcd>i{<~txr9Ty()vykKUxw$SF0oRL445e# zA7eif$9K_;F>{T}Cy-j>dglono39QOQo?qasm^SrL*WEMGqp;!95$>tU+&|? z*0|Jj7!8L1TMa6Cg0SL6@~iv}{664%e$z5z^hl)N5Bf*Ek*3nB*|m!?IB(VLd!wbN z!oKtOdrO054|@+U#{12K-1F+*sQ6C5Gt}+;8@<~4g7dCwyS{$b8*c$UvG&a1zrnwp9ePJ-*MbB4 zL!q`~acIxO|r!w$fx=^&?nV8Q1kqnZz7n1HTKi>H$k_y;Rs3Gc#_CnHiV56`5&w z(p)(dUXVk;h!Ao~WqOs9K*!%AE7c|8Je~UL69(^{vJLI+vdw%4$ zWA=HTE6xhFyBj|qiu|Qe4l0zTHCWo`9$∨heEw7?rwvr69)^_f;c2WtbGeRDvw z7SOCyK(iLmtOYdd6ws`z4Jb-7pjoGY!Z4s&3ux8?nso{&3p^D575g*`6~hjisSwM$gJyEa$ZxZm+$qA6N%_Uwg`Gu{ahK7gU3{^MRD}hH+x;1M zv9?E!MxEE`&p^e;b;_%1haqgn>c6t`<^<>TeI*G%C8 z6-nMDEHzKiwbG z8@E);nJUtAw*1EWQzXMZONUCJAPwthksD;gQyH0hF z_u-Yq_G?I2QU$iYQ}s_gp|;DGxt9iu=^Ry69ut;2TMk9btX`{%Q$Gflao#z?ddwv6 zlb`n!`Bg0QpqYtv!YYR4&XwP0GvyBn%k7h2{GGy5_gO<978d`hu&QB)&3GRXRy8bt z9{dnX8fdh6+q!&%a-_95Afdr8(;z zFzgn!o>*-!<^lPQ8kQn%|3BdJ`A= z?SX$Y4#d(`ekViyplT?tQOgsr;?)5UxXNlzSsx!#k@8cjJ$1FPjWlcAT{PGhtcdqn zVextLOPnB6{DIsn#4_%n6&ZIObKTDO`pxJ<UB(k zU&ZEX?wDHRS~jc5>1L{rtG=S8_L!MiFZcXjVadOj!+JB74Z;#X6gFX*U0+v`svUo0 zhLtUIubG#IPy`YGpXz67iyStZDL$cDNIfge`-WBaNj22}5Q{#c!l|5jL)Sk@gjGhtZOu>8%!;^)b){1f@*pO;_a z7GYJxQs?3`4GxgQ!p00cYR3Di{Kkl7T;ZGMcbDoMIA5k>MS5=)w${vMJK=IaqkAxZ ztIzZEnfl#Lfqz4IGR#vHk-u9Nw7f@Vyj`&_ZdW~f%sgkN_@erjyi3@6Gkg9?eqNL2 zaKbXXzO5n`n3GC+zHse^&+0q5(m&RPm7Ns9NfOXACAr#zR&kd`*m~{|Dd{) z`&Fj!E;+`3XC1xXhBSqJO{uD36O*dDd_aB^_X^9uAiwfaVX0pT+i0eEf_7~0H})Pr zDXfPEM=3wL<3q!Xa<3ScU)wRS^c1(!-O=TK(6>GOKzngzjOAvjmz7u5_1v?nYO|TH zuUjvlS2OYFgjFwA{g+uP?m=$A`DQ7vXk8yvk*Z<&-^gz(4cNmRwO4pSbtZl*tZ<1O z)*n%y6JgakX4r&fmgmZE%&;BiQ2yU?*lVWX%dht()tUMaVb?K*{WcM^XGbVP(tQOOtUgS*jdU zUs6Zqu+hv>J1|oX!n{|6r5;u%Hk$Dog;fkYXl5@zw&SHWEcdD!8vB}BzsFL!rugiU zh>s7$I!Bu$I!Bu!^km&xGT$hue0+&EfT}@<&GdT0s?BOV-y*lIX2uQ6w*bqyM60ms zKd480Ce`<1NbX~X9W`^(G?h$-g%vE-yFz|D${i<;9`Su2y-U5SI(pkwe65-5%#?jO zk23`lvI3l9Q9Q!kcl<{!bKT(7-)-u4F|Hc+n0bx{p9SN>lE(=1>Q!HlndC9TCJd`s zW}#PWaKf;1yZmxd`UNjJFY3E3(HK9qmfPi>>QIS|G|*B$t?{Kggn842^_Z!~)VMcY zSj93An#nf^s~DC$R(_k!BpQX~j+I}0hOo2DTt<^|@fpA%BU$EAb2w}VU6mO0iEjCA zHS>s>{7hkqgs_R2hJLlB$_@51TI#5o-W?j>*m3eJ9Iw`kadmKynZhh#z4KIO@)%+3 z%~W*S1>^G~b7P}f-;ezx)`0C%6IPVQ zOkKhzELF9Sc;36U^LW!$vV4mCa_>>*!S8B76~j`Cg(d8yxyw?yV`B@4mo>#o*{(nS zR$+N)cX+tNkB#<){MeoTmgAZOe~EuI9C(+9uK2$Tkwb+A?XLU8mik?H{lmqcl#q-m zA!#QiB<-YxAoW)$Avh8!b6_Qq3Z~zrgruF65Kwa~A|)hkN(hMBG4hiVl6F!;AZ}6# zf#}gL?9V76X(uHl?WlwV{t=AXgpjleA;2kwfPHtOinNmul6JL1NZLsVK}iZBX%j-Q z!BFhL$7Bj2X(u5B?i50hX_$l%xKr%NI0+$XCm|&5B!r-(VG=@+Ng)LL$6O6Z@(1W3 z0`N7_mLKrNI%5L?P0SRrqhpX86Ull*~9${z>?F$C3&zqG+DQ_@lu;5vLzF~t3Y;lFNg{{@B#~iA zBEzv`V-iHLdMJn>sFXd>X9^-2_a}k~bbg8+SdSD$ApTPjL7XkKRuDlZ1rbah1rc}u5v)#1AXwZqcu&nx5b?PHM(@BL z?)-k}M))Se#19E0m}pB$7)iTYVFXbdP;FHTBUmgHMi5_$9|)yk5=O9eD2yPJ7-o{f z2>L|v1CvH!1TP$g5xiRzMi6vj*i0#mz>mTR{3f)DC5OO)atP+NMh-zID2JdE)H*P) zltVC+SEJ61`!jL~V)a?ICpiRNBD+J?ltVCg#HQpBY(1~bAy{3ML-3A%PR^1;FddXb zkO?_t6mkei{5F3|4?+B{RZ;07=qB|L^p7NzOG@oX4?#85Ly$>51h4FM!lZ{_^R<-p z5Y%$LFzF%aJM|D`QV+od5<^ERgy5i{!A?g#1aHdM?Nn`oRNDjf$q#T0aQu4qqY({bj`c26LeX~r-AsD@# zfs#WoPt-xM8er;e!wOy*@2Qn#spdnz#@IC_nwcySI zpI9BcU5|zFfIm5-bhAGbB_*1`!Tcne;C-Pmf^kzcK@2FGAhNgE7z~qWf=m-eB$}k1 zL=y~*iU`I~BbuNEa!H&r6iqN_D-2A}eGHrdyY zl1#8gQ!>GeStFTX%h|3DN;1LQO38$Wr7|U%pa>-sbdV$xV>e8aN!m#=L1v9)g4ID; z1REC(CWMj+f=ZDDJzYAq8b>gcM9Jg%qq^ ziY4eMg%rHj6jIO`3MrTv!z832ng`T`gcM8+g%o5`NI`#pAwLNzXox}zdPpG!=1F0- zLJH=GLJGoX7=#p-lxl)N*Qh2K3sn>F0IDX~wy2t**UzahQcXaqm_m%HjG)(sNj1US zNYw0u@YP1OWrAO_w<2LzsS z3FwmO|UI9g-og@h@7QrRTHdrDkGS|m*pqb1a(q1!MqqI)dU^qGO#w#51Y5HisVSI1swwEi zAFCI^uzQMsVQk!tEQkIR7~(HQ8CFlsVU5qpVSn*O2n{ysit6yB8IS1 zO~D=mHKpFpx8Ri(kx-jSD(E036@-sk3c^<-sW4NRBo%DQlua;olvL0W$|h)&nTW7q zl2j03!z8JIGgDH*%SD9*9igOxFj6)_XwCc?NhKW|o)KAr#k(QYjc)=v!{5WF-R=mN zuS6Df!~__LEQmJMm5h_ff_I)G3)-ZDf~la$0v62_W`rUOqHUN&7QB%ZS&&JQ1<|e% zS#SnYWWl^rWI>oIvT*8^DUk&u*7+!r1=gClwRKd%9=qs=G;oW5lJxB=C)jmX) z*Z1(I@GAqn$-KUYkXfd#_Tla0)jnhr!*Rkpeb|_37#&>gdyS7>F%-P=tw<q92*^`T@+nC|uA9GR(QpnH8N$-8?P5%2Y3 zg&C%MeFz>gd@A9+K8&6B`aqL-uMZLBy*|YMjeC8=MB3ey3ifKB$soOkubWU?x%WWR27NTVa(2 zY9Ub-<}DOfA%<9;q&o9k6oHCixl4s@HWNQtMRJSe7r#t(dI|NjN(@o$5mq&gqn=@*h=wTWPSOKcqh9Pf>k|k12D21{9f} z5E0+S!p5dDS9ptqMGuDd;fq0h5Z(~s2jR8$d2Y-~7BJTzvLBG=MrVEr@<;YRoHqOYzCiK zofC#lT#P*d?=LfP?i%)znR2gcNo^EXeN3Idiz!6;t*YAlg0LPltIc?)3aeNuu~&X$ zXIYdD%Uz>dHq+oW<>xl6htuM-M;FwSF5VWIY%hJu&fhPoXyJ!iWQBJqNWHhKwyI%q zen7(uV;}#j%QW2lmsNN1OudAUSSr6*EhWApEIFpGP28b66Y05shguS+Y1CtBO-$jd zYJKcVwJ`RthFOu`YlWrGk$d4mVTENH{5Uau;<-*mdLI(jd%8@Knb>*EJZDA5tw{2E zImCaap7rul7J~Z&`Au9Oxfs(_V>DTOu>zlY30nR;P9I+H!u2d~)ZgzUn#Z zPQDEo;`0q*12k)0{#;>&O^U&oVMonW2j!kWPO@pC1P2@*c5dZYtG&c5U5n{;s&g$3 z4&L)L?!+Z@55_O5pGS$`oBE24CoA?^JK}oZrRK+26mi0vJ)Nv0!c(6Ro=gi*y$8OS2Vw~I2G!d`gEhq>I9lBK$PN7)q6be+xQ1lPI zKf_RLT>eI17>Yp)1$-C^ym<@-QVa!B48>Xt1vQSQ!f-ZBL>QNfNraI}B8-wL`H2XlZIWGN@&_(c zL>R*&5ynL^!$gE}0pNY|6A{K(NrZ9n`~+1kB8(Y(6A_M;W;SD{9}J<(q{O(oY^6ns z(IzP|Y9b}ZxBH~TC_+k%#z={?PLvp#e@cn7PLvoUCJ9EDNr^E=ONkOAlav?{B<)4- zNQvPUSt|3N{sL9Nr{nZSS=++SWlL_C^1r(sZLR1%%WkU#7G$?N{l*5iIMqN zP-3jW8cGaTQeyPDh7#jOEGaQENpvw_V%gy6w<2K*62^wJ#)g4fA+cdB#SQAS*f6G_ zY#56puS~IFR8BUGOfp_X!LV93j7-DChVdH((qOD)Gh)M76=cIOq`LUULJb?v1`}6A zrun7MM|f4XmJ%b%q{LVVB*FNNf^lI{Vq}sMBcLR~m`hUPtP>?hCMhuj`UPR4#91dw zj7-vA1k^B5V$2FDF)|ISrNp?pLoSO&IYo)VJ#@8~lo&xL?ZwQI62p)ZW3EVv(I>-1 ziSg=KHKN3bBS|pkij+9(M2V3}N{l#?5@W7Ni7^MH#KPQ_L6`>2CHlW{m4xc9Tb(7%t?*Xic`q<>Vno(3abo;>$FM)ciLtK8iQzy_jA)V*BYxz>sEnK# zDRScdAzq2}$a_(YoESYI;YEs^7&B1AiP0Z&V$^Fz#ECH~a$?LsIWg)bCq@j(dr=F? zFb)JW;>4J0!^DX()#SunRw`M`iP1V~Glps=QA2RE`*%zjk zWEUy2FKoY4)R#mUGi(^y*XV;0>J0euT2~QChA~c(VN58=Fh)eeiwa42ks=w!oRjHd zM23kBW9niywm-LcZ4dN7^N=t$FW zEE=P}I@}iZOKlDM*uBa%&+2Lja?7IM3g5oOFLgAaa32cazBE=^6vcF`icYoz2|z(elWPaVS9L}_mNYAQ})H? zU`Eev7@0ddi3;7KFGc4ED=%%>86Fz@;0f-DFSf*j9>3w|(ZHYIfXQEZ6`;|j4V=17 z4LCvi8aSdG(GNF%cYLAy#JgJ}!IE`IgF`e-er%|Ge|yk=dBX(KvBt^SuKZBLDejk7 zwKNB3e7@mPg=!#3Eol7bQ-=z-bnfcB`eA83qCop?)|M{u3++@{Is@WYLM=@~A~l}#hFM;~wG$U6L`ez5GyribT_?rZe1 z^0zfjP8;oR!UXh>G>x1(`g@PXE^Wl`fiG|3ZD{>8c#HnrhVPz7ck0iM=E;jjpKW5< z7aP&mp^$%v=a0S^V$O!f1s%bnr<(Xx&mG|-;h^uf<_At4ZEj|LNBC3YOPg8lQ1j%x z;VYYC!yR6%w3I)P-_knZe)XBIIqr!swY7isiybY&7du*SI^JbJ6`tAn`u_`{&YgE! z>%FZ{hU)5mjpunhFNdZ+P%Uf4oV6`)?RM)fY-@8%mbX6jU-N%v_)1^vXy3GvIsYI3 z2 M9UNGfI5GNv0J=3$PXGV_ delta 12901 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 Fe*p~>`1=3= -- 2.40.0