Runs basically on Mac now. Undo debug output still enabled
1.1 --- a/aboutdialog.cpp Tue Aug 15 12:01:14 2006 +0000
1.2 +++ b/aboutdialog.cpp Tue Aug 29 08:31:42 2006 +0000
1.3 @@ -190,6 +190,6 @@
1.4 void AboutTextBrowser::setSource(const QUrl &url )
1.5 {
1.6 QProcess *proc= new QProcess ();
1.7 - proc->start( settings.value("/vym/mainwindow/readerURL").toString(),QStringList ()<<url.toString());
1.8 + proc->start( settings.value("/mainwindow/readerURL").toString(),QStringList ()<<url.toString());
1.9 if (!proc->waitForStarted() &&mainWindow->settingsURL() ) setSource(url);
1.10 }
2.1 --- a/exportoofiledialog.cpp Tue Aug 15 12:01:14 2006 +0000
2.2 +++ b/exportoofiledialog.cpp Tue Aug 29 08:31:42 2006 +0000
2.3 @@ -90,7 +90,7 @@
2.4 configPaths.append (fi.absFilePath());
2.5 set.clear();
2.6 set.readSettings (fi.absFilePath());
2.7 - addFilter (set.readEntry("Name") + " (*.odp)");
2.8 + addFilter (set.readEntry(QString("Name")) + " (*.odp)");
2.9 }
2.10 }
2.11 }
3.1 --- a/exports.cpp Tue Aug 15 12:01:14 2006 +0000
3.2 +++ b/exports.cpp Tue Aug 29 08:31:42 2006 +0000
3.3 @@ -129,8 +129,7 @@
3.4 // Main loop over all branches
3.5 QString s;
3.6 QString actIndent("");
3.7 - int i;
3.8 - uint j;
3.9 + int i,j;
3.10 BranchObj *bo;
3.11 bo=mapCenter->first();
3.12 while (bo)
4.1 --- a/exportxhtmldialog.ui.h Tue Aug 15 12:01:14 2006 +0000
4.2 +++ b/exportxhtmldialog.ui.h Tue Aug 29 08:31:42 2006 +0000
4.3 @@ -25,42 +25,42 @@
4.4 void ExportXHTMLDialog::readSettings()
4.5 {
4.6
4.7 - dir=settings.readLocalEntry (filepath,"/vym/export/xhtml/exportDir",vymBaseDir.currentDirPath() );
4.8 + dir=settings.readLocalEntry (filepath,"/export/xhtml/exportDir",vymBaseDir.currentDirPath() );
4.9 lineEditDir->setText(dir);
4.10
4.11 - if ( settings.readLocalEntry (filepath,"/vym/export/xhtml/useImage","yes")=="yes")
4.12 + if ( settings.readLocalEntry (filepath,"/export/xhtml/useImage","yes")=="yes")
4.13 useImage=true;
4.14 else
4.15 useImage=false;
4.16 imageButton->setChecked(useImage);
4.17
4.18 - if ( settings.readLocalEntry (filepath,"/vym/export/xhtml/useTextColor","no")=="yes")
4.19 + if ( settings.readLocalEntry (filepath,"/export/xhtml/useTextColor","no")=="yes")
4.20 useTextColor=true;
4.21 else
4.22 useTextColor=false;
4.23 textColorButton->setChecked(useTextColor);
4.24
4.25 /* FIXME this was used in old html export, is not yet in new stylesheet
4.26 - if ( settings.readEntry ("/vym/export/html/useHeading","no")=="yes")
4.27 + if ( settings.readEntry ("/export/html/useHeading","no")=="yes")
4.28 useHeading=true;
4.29 else
4.30 useHeading=false;
4.31 checkBox4_2->setChecked(useHeading);
4.32 */
4.33
4.34 - if ( settings.readLocalEntry (filepath,"/vym/export/xhtml/saveSettingsInMap","no")=="yes")
4.35 + if ( settings.readLocalEntry (filepath,"/export/xhtml/saveSettingsInMap","no")=="yes")
4.36 saveSettingsInMap=true;
4.37 else
4.38 saveSettingsInMap=false;
4.39 saveSettingsInMapButton->setChecked(saveSettingsInMap);
4.40
4.41 - if ( settings.readEntry ("/vym/export/xhtml/showWarnings","yes")=="yes")
4.42 + if ( settings.readEntry ("/export/xhtml/showWarnings","yes")=="yes")
4.43 showWarnings=true;
4.44 else
4.45 showWarnings=false;
4.46 warningsButton->setChecked(showWarnings);
4.47
4.48 - if ( settings.readEntry ("/vym/export/xhtml/showOutput","no")=="yes")
4.49 + if ( settings.readEntry ("/export/xhtml/showOutput","no")=="yes")
4.50 showOutput=true;
4.51 else
4.52 showOutput=false;
4.53 @@ -74,19 +74,19 @@
4.54 } else
4.55 {
4.56 xsl=settings.readLocalEntry
4.57 - (filepath,"/vym/export/xhtml/xsl","/usr/share/vym/styles/vym2xhtml.xsl");
4.58 + (filepath,"/export/xhtml/xsl","/usr/share/vym/styles/vym2xhtml.xsl");
4.59 css=settings.readLocalEntry
4.60 - (filepath,"/vym/export/xhtml/css","/usr/share/vym/styles/vym.css");
4.61 + (filepath,"/export/xhtml/css","/usr/share/vym/styles/vym.css");
4.62 }
4.63 lineEditXSL->setText(xsl);
4.64 lineEditCSS->setText(css);
4.65
4.66 prescript=settings.readLocalEntry
4.67 - (filepath,"/vym/export/xhtml/prescript","");
4.68 + (filepath,"/export/xhtml/prescript","");
4.69 lineEditPreScript->setText (prescript);
4.70
4.71 postscript=settings.readLocalEntry
4.72 - (filepath,"/vym/export/xhtml/postscript","");
4.73 + (filepath,"/export/xhtml/postscript","");
4.74 lineEditPostScript->setText (postscript);
4.75
4.76 if (!prescript.isEmpty() || !postscript.isEmpty())
4.77 @@ -251,38 +251,38 @@
4.78 // Save options to settings file
4.79 // (but don't save at destructor, which
4.80 // is called for "cancel", too)
4.81 - settings.setLocalEntry (filepath,"/vym/export/xhtml/exportDir",dir);
4.82 - settings.setLocalEntry (filepath,"/vym/export/xhtml/prescript",prescript);
4.83 - settings.setLocalEntry (filepath,"/vym/export/xhtml/postscript",postscript);
4.84 + settings.setLocalEntry (filepath,"/export/xhtml/exportDir",dir);
4.85 + settings.setLocalEntry (filepath,"/export/xhtml/prescript",prescript);
4.86 + settings.setLocalEntry (filepath,"/export/xhtml/postscript",postscript);
4.87
4.88 if (useImage)
4.89 - settings.setLocalEntry (filepath,"/vym/export/xhtml/useImage","yes");
4.90 + settings.setLocalEntry (filepath,"/export/xhtml/useImage","yes");
4.91 else
4.92 - settings.setLocalEntry (filepath,"/vym/export/xhtml/useImage","no");
4.93 + settings.setLocalEntry (filepath,"/export/xhtml/useImage","no");
4.94
4.95 if (useTextColor)
4.96 - settings.setLocalEntry (filepath,"/vym/export/xhtml/useTextColor","yes");
4.97 + settings.setLocalEntry (filepath,"/export/xhtml/useTextColor","yes");
4.98 else
4.99 - settings.setLocalEntry (filepath,"/vym/export/xhtml/useTextColor","no");
4.100 + settings.setLocalEntry (filepath,"/export/xhtml/useTextColor","no");
4.101
4.102 if (showWarnings)
4.103 - settings.writeEntry ("/vym/export/xhtml/showWarnings","yes");
4.104 + settings.writeEntry ("/export/xhtml/showWarnings","yes");
4.105 else
4.106 - settings.writeEntry ("/vym/export/xhtml/showWarnings","no");
4.107 + settings.writeEntry ("/export/xhtml/showWarnings","no");
4.108
4.109 if (showOutput)
4.110 - settings.writeEntry ("/vym/export/xhtml/showOutput","yes");
4.111 + settings.writeEntry ("/export/xhtml/showOutput","yes");
4.112 else
4.113 - settings.writeEntry ("/vym/export/xhtml/showOutput","no");
4.114 + settings.writeEntry ("/export/xhtml/showOutput","no");
4.115
4.116 QString ipath;
4.117 ipath=vymBaseDir.path()+"/flags/flag-url-16x16.png";
4.118 if (!options.isOn ("local"))
4.119 {
4.120 settings.setLocalEntry
4.121 - (filepath,"/vym/export/xhtml/xsl",xsl);
4.122 + (filepath,"/export/xhtml/xsl",xsl);
4.123 settings.setLocalEntry
4.124 - (filepath,"/vym/export/xhtml/css",css);
4.125 + (filepath,"/export/xhtml/css",css);
4.126 }
4.127
4.128 // Provide a smaller URL-icon to improve Layout
4.129 @@ -294,10 +294,10 @@
4.130 if(!pm.save (dir + "flags/flag-url-16x16.png","PNG"))
4.131 QMessageBox::warning( 0, tr( "Warning" ),tr("Could not write %1").arg(ipath));
4.132 if (!saveSettingsInMap)
4.133 - settings.clearLocal("/vym/export/xhtml");
4.134 + settings.clearLocal("/export/xhtml");
4.135 else
4.136 settings.setLocalEntry
4.137 - (filepath,"/vym/export/xhtml/saveSettingsInMap","yes");
4.138 + (filepath,"/export/xhtml/saveSettingsInMap","yes");
4.139
4.140 // Copy CSS file
4.141 QFile css_src (css);
5.1 --- a/main.cpp Tue Aug 15 12:01:14 2006 +0000
5.2 +++ b/main.cpp Tue Aug 29 08:31:42 2006 +0000
5.3 @@ -46,6 +46,7 @@
5.4 QAction *actionEditToggleScroll;
5.5 QAction *actionEditOpenURL;
5.6 QAction *actionEditOpenURLTab;
5.7 +QAction *actionEditOpenMultipleURLTabs;
5.8 QAction *actionEditURL;
5.9 QAction *actionEditHeading2URL;
5.10 QAction *actionEditBugzilla2URL;
5.11 @@ -120,7 +121,8 @@
5.12 QMenu* fileExportMenu;
5.13
5.14
5.15 -Settings settings ("vym","vym"); // Organization, Application name
5.16 +Settings settings ("InSilmaril","vym"); // Organization, Application name
5.17 +
5.18 Options options;
5.19 ImageIO imageIO;
5.20
6.1 --- a/mainwindow.cpp Tue Aug 15 12:01:14 2006 +0000
6.2 +++ b/mainwindow.cpp Tue Aug 29 08:31:42 2006 +0000
6.3 @@ -63,6 +63,7 @@
6.4 extern QAction *actionEditToggleScroll;
6.5 extern QAction* actionEditOpenURL;
6.6 extern QAction* actionEditOpenURLTab;
6.7 +extern QAction* actionEditOpenMultipleURLTabs;
6.8 extern QAction* actionEditURL;
6.9 extern QAction* actionEditHeading2URL;
6.10 extern QAction* actionEditBugzilla2URL;
6.11 @@ -214,6 +215,9 @@
6.12 connect( tabWidget, SIGNAL( currentChanged( QWidget * ) ),
6.13 this, SLOT( editorChanged( QWidget * ) ) );
6.14
6.15 + lineedit=new QLineEdit (this);
6.16 + lineedit->hide();
6.17 +
6.18 setCentralWidget(tabWidget);
6.19
6.20 setupFileActions();
6.21 @@ -459,14 +463,13 @@
6.22 editMenu->addAction (a);
6.23 actionEditUndo=a;
6.24
6.25 - if (settings.value( "/mainwindow/showTestMenu",false).toBool())
6.26 - {
6.27 - a = new QAction( QPixmap( iconPath+"redo.png"), tr( "&Redo" ), this);
6.28 - a->setStatusTip (tr( "Redo" ));
6.29 - a->setShortcut (Qt::CTRL + Qt::Key_Y );
6.30 - editMenu->addAction (a);
6.31 - connect( a, SIGNAL( triggered() ), this, SLOT( editRedo() ) );
6.32 - }
6.33 + a = new QAction( QPixmap( iconPath+"redo.png"), tr( "&Redo" ), this);
6.34 + a->setStatusTip (tr( "Redo" ));
6.35 + a->setShortcut (Qt::CTRL + Qt::Key_Y );
6.36 + tb->addAction (a);
6.37 + editMenu->addAction (a);
6.38 + connect( a, SIGNAL( triggered() ), this, SLOT( editRedo() ) );
6.39 + actionEditRedo=a;
6.40
6.41 editMenu->addSeparator();
6.42 a = new QAction(QPixmap( iconPath+"editcopy.png"), tr( "&Copy" ), this);
6.43 @@ -500,14 +503,14 @@
6.44 a = new QAction(tr( "Edit heading" ),this);
6.45 a->setStatusTip ( tr( "edit Heading" ));
6.46 a->setShortcut ( Qt::Key_Enter);
6.47 - a->setShortcutContext (Qt::WindowShortcut);
6.48 +// a->setShortcutContext (Qt::WindowShortcut);
6.49 addAction (a);
6.50 connect( a, SIGNAL( triggered() ), this, SLOT( editHeading() ) );
6.51 actionListBranches.append(a);
6.52 a = new QAction( tr( "Edit heading" ), this);
6.53 a->setStatusTip (tr( "edit Heading" ));
6.54 a->setShortcut (Qt::Key_Return );
6.55 - a->setShortcutContext (Qt::WindowShortcut);
6.56 + //a->setShortcutContext (Qt::WindowShortcut);
6.57 addAction (a);
6.58 connect( a, SIGNAL( triggered() ), this, SLOT( editHeading() ) );
6.59 actionListBranches.append(a);
6.60 @@ -675,6 +678,13 @@
6.61 connect( a, SIGNAL( triggered() ), this, SLOT( editOpenURLTab() ) );
6.62 actionEditOpenURLTab=a;
6.63
6.64 + a = new QAction( tr( "Open all URLs in subtree" ), this);
6.65 + a->setStatusTip (tr( "Open all URLs in subtree" ));
6.66 + a->setShortcut (Qt::CTRL+Qt::Key_U );
6.67 + addAction(a);
6.68 + connect( a, SIGNAL( triggered() ), this, SLOT( editOpenMultipleURLTabs() ) );
6.69 + actionEditOpenMultipleURLTabs=a;
6.70 +
6.71 a = new QAction(QPixmap(), tr( "Edit URL"+QString("...") ), this);
6.72 a->setStatusTip ( tr( "Edit URL" ) );
6.73 a->setShortcut (Qt::SHIFT + Qt::CTRL + Qt::Key_U );
6.74 @@ -1503,7 +1513,6 @@
6.75 branchAddContextMenu->addSeparator();
6.76 branchAddContextMenu->addAction ( actionEditLoadImage);
6.77 branchAddContextMenu->addSeparator();
6.78 - branchAddContextMenu->addAction ( actionEditLoadImage);
6.79 branchAddContextMenu->addAction ( actionEditImportAdd );
6.80 branchAddContextMenu->addAction ( actionEditImportReplace );
6.81
6.82 @@ -1520,10 +1529,11 @@
6.83 branchContextMenu->addSeparator();
6.84 branchContextMenu->addAction ( actionEditOpenURL );
6.85 branchContextMenu->addAction ( actionEditOpenURLTab );
6.86 + branchContextMenu->addAction ( actionEditOpenMultipleURLTabs );
6.87 branchContextMenu->addAction ( actionEditURL );
6.88 branchContextMenu->addAction ( actionEditHeading2URL );
6.89 branchContextMenu->addAction ( actionEditBugzilla2URL );
6.90 - if (settings.value( "/mainwindow/showTestMenu",false).toBool() )
6.91 + if (settings.value( "/mainwindow/showTestMenu",true).toBool() )
6.92 {
6.93 branchContextMenu->addAction ( actionEditFATE2URL );
6.94 }
6.95 @@ -2433,6 +2443,7 @@
6.96 QMessageBox::Cancel | QMessageBox::Escape );
6.97 mb.setButtonText( QMessageBox::Yes, tr("Save map") );
6.98 mb.setButtonText( QMessageBox::No, tr("Discard changes") );
6.99 + mb.setModal (true);
6.100 mb.show();
6.101 mb.setActiveWindow();
6.102 switch( mb.exec() ) {
6.103 @@ -2508,20 +2519,86 @@
6.104 currentMapEditor()->findReset();
6.105 }
6.106
6.107 +void Main::openTabs(QStringList urls)
6.108 +{
6.109 + if (!urls.isEmpty())
6.110 + {
6.111 + bool success=true;
6.112 + QStringList args;
6.113 + QString browser=settings.value("/mainwindow/readerURL" ).toString();
6.114 + QProcess *p;
6.115 + if (!procBrowser || procBrowser->state()!=QProcess::Running)
6.116 + {
6.117 + QString u=urls.takeFirst();
6.118 + procBrowser = new QProcess( this );
6.119 + args<<u;
6.120 + procBrowser->start(browser,args);
6.121 + if ( !procBrowser->waitForStarted())
6.122 + {
6.123 + // try to set path to browser
6.124 + QMessageBox::warning(0,
6.125 + tr("Warning"),
6.126 + tr("Couldn't find a viewer to open %1.\n").arg(u)+
6.127 + tr("Please use Settings->")+tr("Set application to open an URL"));
6.128 + return;
6.129 + }
6.130 + sleep (3);
6.131 + }
6.132 + if (browser.contains("konqueror"))
6.133 + {
6.134 + for (int i=0; i<urls.size(); i++)
6.135 + {
6.136 + // Open new browser
6.137 + // Try to open new tab in existing konqueror started previously by vym
6.138 + p=new QProcess (this);
6.139 + args.clear();
6.140 + args<< QString("konqueror-%1").arg(procBrowser->pid())<<
6.141 + "konqueror-mainwindow#1"<<
6.142 + "newTab" <<
6.143 + urls.at(i);
6.144 + p->start ("dcop",args);
6.145 + if ( !p->waitForStarted() ) success=false;
6.146 + }
6.147 + if (!success)
6.148 + QMessageBox::warning(0,
6.149 + tr("Warning"),
6.150 + tr("Couldn't start %1 to open a new tab in %2.").arg("dcop").arg("konqueror"));
6.151 + return;
6.152 + } else if (browser.contains ("firefox") || browser.contains ("mozilla") )
6.153 + {
6.154 + for (int i=0; i<urls.size(); i++)
6.155 + {
6.156 + // Try to open new tab in firefox
6.157 + p=new QProcess (this);
6.158 + args<< "-remote"<< QString("openurl(%1,new-tab)").arg(urls.at(i));
6.159 + p->start (browser,args);
6.160 + if ( !p->waitForStarted() ) success=false;
6.161 + }
6.162 + if (!success)
6.163 + QMessageBox::warning(0,
6.164 + tr("Warning"),
6.165 + tr("Couldn't start %1 to open a new tab").arg(browser));
6.166 + return;
6.167 + }
6.168 + QMessageBox::warning(0,
6.169 + tr("Warning"),
6.170 + tr("Sorry, currently only Konqueror and Mozilla support tabbed browsing."));
6.171 + }
6.172 +}
6.173 +
6.174 void Main::editOpenURL()
6.175 {
6.176 // Open new browser
6.177 if (currentMapEditor())
6.178 {
6.179 QString url=currentMapEditor()->getURL();
6.180 + QStringList args;
6.181 if (url=="") return;
6.182 QString browser=settings.value("/mainwindow/readerURL" ).toString();
6.183 - procBrowser = new Q3Process( this );
6.184 -
6.185 - procBrowser->addArgument( browser);
6.186 - procBrowser->addArgument( url);
6.187 -
6.188 - if ( !procBrowser->start() )
6.189 + procBrowser = new QProcess( this );
6.190 + args<<url;
6.191 + procBrowser->start(browser,args);
6.192 + if ( !procBrowser->waitForStarted())
6.193 {
6.194 // try to set path to browser
6.195 QMessageBox::warning(0,
6.196 @@ -2536,45 +2613,24 @@
6.197 {
6.198 if (currentMapEditor())
6.199 {
6.200 - QString url=currentMapEditor()->getURL();
6.201 - if (url=="") return;
6.202 - QString browser=settings.value("/mainwindow/readerURL" ).toString();
6.203 - if (procBrowser && procBrowser->isRunning())
6.204 - {
6.205 - if (browser.contains("konqueror"))
6.206 - {
6.207 - // Try to open new tab in existing konqueror started previously by vym
6.208 - Q3Process *p=new Q3Process (this);
6.209 - p->addArgument ("dcop");
6.210 - p->addArgument (QString("konqueror-%1").arg(procBrowser->processIdentifier()));
6.211 - p->addArgument ("konqueror-mainwindow#1");
6.212 - p->addArgument ("newTab");
6.213 - p->addArgument (url);
6.214 - if ( !p->start() )
6.215 - // try to set browser
6.216 - QMessageBox::warning(0,
6.217 - tr("Warning"),
6.218 - tr("Couldn't start %1 to open a new tab in %2.").arg("dcop").arg("konqueror"));
6.219 - return;
6.220 - } else if (browser.contains ("firefox") || browser.contains ("mozilla") )
6.221 - {
6.222 - // Try to open new tab in firefox
6.223 - Q3Process *p=new Q3Process (this);
6.224 - p->addArgument (browser);
6.225 - p->addArgument ("-remote");
6.226 - p->addArgument (QString("openurl(%1,new-tab)").arg(url));
6.227 - if ( !p->start() )
6.228 - // try to set browser
6.229 - QMessageBox::warning(0,
6.230 - tr("Warning"),
6.231 - tr("Couldn't start %1 to open a new tab").arg(browser));
6.232 - return;
6.233 - }
6.234 - }
6.235 - // Open new browser
6.236 - editOpenURL();
6.237 + QStringList urls;
6.238 + urls.append(currentMapEditor()->getURL());
6.239 + openTabs (urls);
6.240 }
6.241 }
6.242 +void Main::editOpenMultipleURLTabs()
6.243 +{
6.244 + if (currentMapEditor())
6.245 + {
6.246 + QStringList urls;
6.247 + urls.append ("www.suse.de");
6.248 + urls.append ("www.google.de");
6.249 + urls.append ("www.heise.de");
6.250 + urls.append ("www.insilmaril.de");
6.251 + openTabs (urls);
6.252 + }
6.253 +}
6.254 +
6.255
6.256 void Main::editURL()
6.257 {
6.258 @@ -2600,6 +2656,54 @@
6.259 currentMapEditor()->editFATE2URL();
6.260 }
6.261
6.262 +void Main::editHeading()
6.263 +{
6.264 + if (lineedit->isVisible())
6.265 + {
6.266 + if (currentMapEditor())
6.267 + currentMapEditor()->setHeading(lineedit->text());
6.268 + lineedit->releaseKeyboard();
6.269 + lineedit->hide();
6.270 + setFocus();
6.271 + } else
6.272 + {
6.273 + if (currentMapEditor())
6.274 + {
6.275 + bool ok;
6.276 + QPoint p;
6.277 + QString s=currentMapEditor()->getHeading(ok,p);
6.278 +
6.279 + if (ok)
6.280 + {
6.281 +#if defined(Q_OS_MACX)
6.282 + p = currentMapEditor()->mapToGlobal( currentMapEditor()->worldMatrix().map( p));
6.283 + QDialog *d =new QDialog(NULL);
6.284 + QLineEdit *le=new QLineEdit (d);
6.285 + d->setWindowFlags (Qt::FramelessWindowHint);
6.286 + d->setGeometry(p.x(),p.y(),200,25);
6.287 + le->resize (d->size());
6.288 + le->setText (s);
6.289 + le->selectAll();
6.290 + connect (le, SIGNAL (returnPressed()), d, SLOT (accept()));
6.291 + d->activateWindow();
6.292 + d->exec();
6.293 + currentMapEditor()->setHeading (le->text());
6.294 +#else
6.295 + p = currentMapEditor()->mapTo(this, currentMapEditor()->worldMatrix().map( p));
6.296 + lineedit->setGeometry(p.x(),p.y(),200,25);
6.297 + lineedit->setText(s);
6.298 + lineedit->setCursorPosition(1);
6.299 + lineedit->selectAll();
6.300 + lineedit->show();
6.301 + lineedit->grabKeyboard();
6.302 + lineedit->setFocus();
6.303 +#endif
6.304 +
6.305 + }
6.306 + }
6.307 + }
6.308 +}
6.309 +
6.310 void Main::editOpenVymLink()
6.311 {
6.312 // Get current path to map
6.313 @@ -2689,15 +2793,10 @@
6.314 }
6.315 }
6.316
6.317 -void Main::editHeading()
6.318 -{
6.319 - if (currentMapEditor())
6.320 - currentMapEditor()->editHeading();
6.321 -}
6.322 -
6.323 void Main::editNewBranch()
6.324 {
6.325 - if (currentMapEditor())
6.326 +
6.327 + if (!lineedit->isVisible() && currentMapEditor())
6.328 currentMapEditor()->addNewBranch(0);
6.329 }
6.330
7.1 --- a/mainwindow.h Tue Aug 15 12:01:14 2006 +0000
7.2 +++ b/mainwindow.h Tue Aug 29 08:31:42 2006 +0000
7.3 @@ -1,17 +1,12 @@
7.4 #ifndef MAINWINDOW_H
7.5 #define MAINWINDOW_H
7.6
7.7 -#include <q3popupmenu.h>
7.8 -#include <q3textedit.h>
7.9 -#include <q3intdict.h>
7.10 -#include <q3canvas.h>
7.11 -#include <qlineedit.h>
7.12 #include <QAction>
7.13 +#include <QCursor>
7.14 #include <QMainWindow>
7.15 +#include <QProcess>
7.16 #include <QToolBar>
7.17 -#include <qcursor.h>
7.18 -#include <qtabwidget.h>
7.19 -#include <qmap.h>
7.20 +#include <QTabWidget>
7.21 //Added by qt3to4:
7.22 #include <QCloseEvent>
7.23 #include <QShowEvent>
7.24 @@ -94,16 +89,20 @@
7.25 void editOpenFindWindow();
7.26 void editFind(QString);
7.27 void editFindChanged();
7.28 +private:
7.29 + void openTabs(QStringList);
7.30 public slots:
7.31 void editOpenURL();
7.32 void editOpenURLTab();
7.33 private slots:
7.34 + void editOpenMultipleURLTabs();
7.35 void editURL();
7.36 void editHeading2URL();
7.37 void editBugzilla2URL();
7.38 void editFATE2URL();
7.39 void editVymLink();
7.40 public slots:
7.41 + void editHeading();
7.42 void editOpenVymLink();
7.43 private slots:
7.44 void editDeleteVymLink();
7.45 @@ -113,7 +112,6 @@
7.46 void editMoveDown();
7.47 void editToggleScroll();
7.48 void editUnScrollAll();
7.49 - void editHeading();
7.50 void editNewBranch();
7.51 void editNewBranchHere();
7.52 void editNewBranchAbove();
7.53 @@ -188,9 +186,11 @@
7.54 FindWindow *findWindow;
7.55 QStringList lastMaps;
7.56 int maxLastMaps;
7.57 - Q3Process *procBrowser;
7.58 + QProcess *procBrowser;
7.59
7.60 QStringList imageTypes;
7.61 +
7.62 + QLineEdit *lineedit; // to enter headings of branches
7.63 };
7.64
7.65
8.1 --- a/mapeditor.cpp Tue Aug 15 12:01:14 2006 +0000
8.2 +++ b/mapeditor.cpp Tue Aug 29 08:31:42 2006 +0000
8.3 @@ -44,7 +44,6 @@
8.4 #include "linkablemapobj.h"
8.5 #include "mainwindow.h"
8.6 #include "misc.h"
8.7 -#include "settings.h"
8.8 #include "texteditor.h"
8.9 #include "warningdialog.h"
8.10 #include "xml.h"
8.11 @@ -63,6 +62,7 @@
8.12
8.13 extern QAction *actionFileSave;
8.14 extern QAction *actionEditUndo;
8.15 +extern QAction *actionEditRedo;
8.16 extern QAction *actionEditCopy;
8.17 extern QAction *actionEditCut;
8.18 extern QAction *actionEditPaste;
8.19 @@ -177,10 +177,6 @@
8.20
8.21 printer=NULL;
8.22
8.23 - lineedit = new QLineEdit(this, "lineedit" );
8.24 - connect( lineedit, SIGNAL( returnPressed() ), SLOT( finishedLineEdit() ) );
8.25 - lineedit->hide();
8.26 -
8.27 actColor=Qt::black; setColor (actColor);
8.28 defLinkColor=QColor (0,0,255);
8.29 defXLinkColor=QColor (180,180,180);
8.30 @@ -207,6 +203,8 @@
8.31 selectionLast=NULL;
8.32 movingObj=NULL;
8.33
8.34 + xelection.setMapCenter (mapCenter);
8.35 +
8.36 defXLinkWidth=1;
8.37 defXLinkColor=QColor (230,230,230);
8.38
8.39 @@ -220,8 +218,6 @@
8.40 mapName="";
8.41
8.42 undosTotal=settings.readNumEntry("/mapeditor/undoLevels",50);
8.43 - undosAvail=0;
8.44 - undoNum=0;
8.45
8.46 // Initialize find routine
8.47 itFind=NULL;
8.48 @@ -248,6 +244,8 @@
8.49 historyWindow->setCaption (fileName);
8.50
8.51 mapCenter->reposition(); // for positioning heading
8.52 +
8.53 +
8.54 }
8.55
8.56 MapEditor::~MapEditor()
8.57 @@ -372,7 +370,8 @@
8.58 void MapEditor::makeTmpDirs()
8.59 {
8.60 // Create unique temporary directories
8.61 - tmpMapDir=tmpVymDir+QString("/mapeditor-%1").arg(mapNum);
8.62 + tmpMapDir=QDir::convertSeparators (tmpVymDir+QString("/mapeditor-%1").arg(mapNum));
8.63 + histPath=QDir::convertSeparators (tmpMapDir+"/history");
8.64 QDir d;
8.65 d.mkdir (tmpMapDir,true);
8.66 }
8.67 @@ -458,32 +457,29 @@
8.68 return s;
8.69 }
8.70
8.71 -void MapEditor::saveState(const QString &comment)
8.72 +void MapEditor::saveStateComplete(const QString &comment)
8.73 {
8.74 // Save complete map
8.75 saveState (CompleteMap,"",NULL,"",NULL, comment);
8.76 }
8.77
8.78 -void MapEditor::saveState(LinkableMapObj *undoSel, const QString &comment)
8.79 +void MapEditor::saveStatePart(LinkableMapObj *undoSel, const QString &comment)
8.80 {
8.81 - // save the given part of the map
8.82 + // save the selected part of the map
8.83 saveState (PartOfMap,"",undoSel,"",NULL, comment);
8.84 }
8.85
8.86 -void MapEditor::saveState(const QString &uc, const QString &rc, const QString &comment)
8.87 +void MapEditor::saveStateConstSelection(const QString &uc, const QString &rc, const QString &comment)
8.88 {
8.89 // selection does not change during action,
8.90 // so just save commands for undo and redo
8.91 - LinkableMapObj *unsel;
8.92 - if (selection)
8.93 - unsel=selection;
8.94 - else
8.95 - unsel=NULL;
8.96 - saveState (UndoCommand,uc,unsel,rc,unsel, comment);
8.97 + // and use current selection
8.98 + saveState (UndoCommand,uc,selection,rc,selection, comment);
8.99 }
8.100
8.101 -void MapEditor::saveState(const QString & uncom, LinkableMapObj *unsel, const QString &comment)
8.102 +void MapEditor::saveStateX(LinkableMapObj *unsel, const QString &uncom, const QString &comment)
8.103 {
8.104 + //
8.105 saveState (UndoCommand,uncom,unsel,"FIXME-redoCom",NULL, comment);
8.106 }
8.107
8.108 @@ -494,24 +490,24 @@
8.109 if (blockSaveState) return;
8.110
8.111 /* TODO remove after testing
8.112 + */
8.113 cout << "ME::saveState() begin\n"<<endl;
8.114 cout << " undosTotal="<<undosTotal<<endl;
8.115 - cout << " undosAvail="<<undosAvail<<endl;
8.116 - cout << " undoNum="<<undoNum<<endl;
8.117 cout << " ---------------------------"<<endl;
8.118 - */
8.119
8.120 historyWindow->append (comment);
8.121
8.122 setChanged();
8.123
8.124 + int undosAvail=undoSet.readNumEntry ("/history/undosAvail",0);
8.125 + int curStep=undoSet.readNumEntry ("/history/curStep",0);
8.126 // Find out current undo directory
8.127 if (undosAvail<undosTotal) undosAvail++;
8.128 - undoNum++;
8.129 - if (undoNum>undosTotal) undoNum=1;
8.130 + curStep++;
8.131 + if (curStep>undosTotal) curStep=1;
8.132
8.133 QString backupXML;
8.134 - QString bakMapDir=QDir::convertSeparators (QString(tmpMapDir+"/undo-%1").arg(undoNum));
8.135 + QString bakMapDir=QDir::convertSeparators (QString(tmpMapDir+"/undo-%1").arg(curStep));
8.136 QString bakMapPath=QDir::convertSeparators(bakMapDir+"/map.xml");
8.137
8.138 // Create bakMapDir if not available
8.139 @@ -550,28 +546,27 @@
8.140 // Write XML Data to disk
8.141 saveStringToDisk (QString(bakMapPath),backupXML);
8.142
8.143 - SimpleSettings set;
8.144 - set.setEntry (QString("undoCommand"),undoCommand);
8.145 - set.setEntry (QString("undoSelection"),undoSelection);
8.146 - set.setEntry (QString("redoCommand"),redoCom);
8.147 - set.setEntry (QString("redoSelection"),redoSelection);
8.148 - set.setEntry (QString("comment"),comment);
8.149 - set.writeSettings(QString(bakMapDir+"/commands"));
8.150 + undoSet.setEntry ("/history/undosAvail",QString::number(undosAvail));
8.151 + undoSet.setEntry ("/history/curStep",QString::number(curStep));
8.152 + undoSet.setEntry (QString("/history/step-%1/undoCommand").arg(curStep),undoCommand);
8.153 + undoSet.setEntry (QString("/history/step-%1/undoSelection").arg(curStep),undoSelection);
8.154 + undoSet.setEntry (QString("/history/step-%1/redoCommand").arg(curStep),redoCom);
8.155 + undoSet.setEntry (QString("/history/step-%1/redoSelection").arg(curStep),redoSelection);
8.156 + undoSet.setEntry (QString("/history/step-%1/comment").arg(curStep),comment);
8.157 + undoSet.writeSettings(histPath);
8.158
8.159 /* TODO remove after testing
8.160 - cout << " into="<< bakMapDir<<endl;
8.161 + */
8.162 + cout << " into="<< histPath.toStdString()<<endl;
8.163 cout << " undosAvail="<<undosAvail<<endl;
8.164 - cout << " undoNum="<<undoNum<<endl;
8.165 + cout << " curStep="<<curStep<<endl;
8.166 cout << " ---------------------------"<<endl;
8.167 - cout << " comment="<<comment<<endl;
8.168 - cout << " ---------------------------"<<endl;
8.169 - cout << " undoCom="<<undoCommand<<endl;
8.170 - cout << " undoSel="<<undoSelection<<endl;
8.171 - cout << " ---------------------------"<<endl;
8.172 - cout << " redoCom="<<redoCom<<endl;
8.173 - cout << " redoSel="<<redoSelection<<endl;
8.174 + cout << " comment="<<comment.toStdString()<<endl;
8.175 + cout << " undoCom="<<undoCommand.toStdString()<<endl;
8.176 + cout << " undoSel="<<undoSelection.toStdString()<<endl;
8.177 + cout << " redoCom="<<redoCom.toStdString()<<endl;
8.178 + cout << " redoSel="<<redoSelection.toStdString()<<endl;
8.179 cout << " ---------------------------"<<endl<<endl;
8.180 - */
8.181 }
8.182
8.183 void MapEditor::parseAtom(const QString &atom)
8.184 @@ -602,6 +597,17 @@
8.185 }
8.186 }
8.187 }
8.188 + else if (com=="delete")
8.189 + {
8.190 + if (api.checkParamCount(1) && selection )
8.191 + {
8.192 + s=api.parString(ok,0);
8.193 + if (ok)
8.194 + {
8.195 + if (select (s)) deleteSelection();
8.196 + }
8.197 + }
8.198 + }
8.199 else if (com=="linkBranchToPos")
8.200 {
8.201 if (selection && typeid(*selection) == typeid(BranchObj) )
8.202 @@ -637,23 +643,46 @@
8.203 if (api.checkParamCount(1))
8.204 {
8.205 s=api.parString (ok,0);
8.206 - if (ok) setHeading (s);
8.207 + if (ok)
8.208 + setHeading (s);
8.209 }
8.210 } else if (com=="setURL")
8.211 {
8.212 if (api.checkParamCount(1))
8.213 {
8.214 s=api.parString (ok,0);
8.215 - if (ok) setURL(s);
8.216 + if (ok) setURLInt(s);
8.217 }
8.218 } else if (com=="setVymLink")
8.219 {
8.220 if (api.checkParamCount(1))
8.221 {
8.222 s=api.parString (ok,0);
8.223 - if (ok) setVymLink(s);
8.224 + if (ok) setVymLinkInt(s);
8.225 }
8.226 }
8.227 + else if (com=="setFlag")
8.228 + {
8.229 + if (selection && typeid(*selection) == typeid(BranchObj) )
8.230 + {
8.231 + if (api.checkParamCount(1) )
8.232 + {
8.233 + s=api.parString(ok,0);
8.234 + if (ok) ((BranchObj*)selection)->activateStandardFlag(s);
8.235 + }
8.236 + }
8.237 + }
8.238 + else if (com=="unsetFlag")
8.239 + {
8.240 + if (selection && typeid(*selection) == typeid(BranchObj) )
8.241 + {
8.242 + if (api.checkParamCount(1) )
8.243 + {
8.244 + s=api.parString(ok,0);
8.245 + if (ok) ((BranchObj*)selection)->deactivateStandardFlag(s);
8.246 + }
8.247 + }
8.248 + }
8.249 // Internal commands, used for undo etc.
8.250 else if (com==QString("undoMap"))
8.251 {
8.252 @@ -687,31 +716,6 @@
8.253 }
8.254 }
8.255
8.256 -
8.257 -void MapEditor::finishedLineEdit()
8.258 -{
8.259 - // This is called by finishedLineEdit or any MapEditor method,
8.260 - // which wants to assure, that lineedits finish, before e.g. a branch is
8.261 - // deleted
8.262 -
8.263 - // After calling LineEdit and using the clipboard, the
8.264 - // focus is not any longer on the main widget, we
8.265 - // have to restore it using parentWidget()->setFocus()
8.266 -
8.267 - if (editingBO!=NULL)
8.268 - {
8.269 - saveState("setHeading (\""+editingBO->getHeading()+"\")",editingBO, QString("Set heading of %1 to \"%2\"").arg(getName(editingBO)).arg(lineedit->text()) );
8.270 - editingBO->setHeading(lineedit->text() );
8.271 - editingBO=NULL;
8.272 - lineedit->releaseKeyboard();
8.273 - lineedit->hide();
8.274 - parentWidget()->setFocus();
8.275 - mapCenter->reposition();
8.276 - adjustCanvasSize();
8.277 - ensureSelectionVisible();
8.278 - }
8.279 -}
8.280 -
8.281 void MapEditor::toggleHistoryWindow()
8.282 {
8.283 if (historyWindow->isVisible())
8.284 @@ -748,9 +752,6 @@
8.285
8.286 void MapEditor::closeMap()
8.287 {
8.288 - // Finish open lineEdits
8.289 - if (lineedit) finishedLineEdit();
8.290 -
8.291 // Unselect before disabling the toolbar actions
8.292 if (selection) selection->unselect();
8.293 selection=NULL;
8.294 @@ -816,9 +817,6 @@
8.295
8.296 ErrorCode MapEditor::load (QString fname, LoadMode lmode)
8.297 {
8.298 - // Finish open lineEdits
8.299 - if (lineedit) finishedLineEdit();
8.300 -
8.301 ErrorCode err=success;
8.302
8.303 if (lmode==NewMap)
8.304 @@ -830,7 +828,7 @@
8.305 // (map state is set later at end of load...)
8.306 } else
8.307 {
8.308 - saveState(selection,"Load map");
8.309 + saveStatePart(selection,"Load map");
8.310 }
8.311
8.312
8.313 @@ -885,9 +883,6 @@
8.314
8.315 int MapEditor::save (const SaveMode &savemode)
8.316 {
8.317 - // Finish open lineEdits
8.318 - if (lineedit) finishedLineEdit();
8.319 -
8.320 int returnCode=0;
8.321
8.322 // The SaveMode UndoCommand is not supported here
8.323 @@ -935,9 +930,6 @@
8.324
8.325 void MapEditor::print()
8.326 {
8.327 - // Finish open lineEdits
8.328 - if (lineedit) finishedLineEdit();
8.329 -
8.330 if ( !printer )
8.331 {
8.332 printer = new QPrinter;
8.333 @@ -1111,9 +1103,6 @@
8.334
8.335 void MapEditor::exportImage(QString fn)
8.336 {
8.337 - // Finish open lineEdits
8.338 - if (lineedit) finishedLineEdit();
8.339 -
8.340 setExportMode (true);
8.341 QPixmap pix (getPixmap());
8.342 pix.save(fn, "PNG");
8.343 @@ -1132,9 +1121,6 @@
8.344
8.345 void MapEditor::exportImage(QString fn, QString format)
8.346 {
8.347 - // Finish open lineEdits
8.348 - if (lineedit) finishedLineEdit();
8.349 -
8.350 setExportMode (true);
8.351 QPixmap pix (getPixmap());
8.352 pix.save(fn, format);
8.353 @@ -1201,9 +1187,6 @@
8.354
8.355 void MapEditor::copy()
8.356 {
8.357 - // Finish open lineEdits
8.358 - if (lineedit) finishedLineEdit();
8.359 -
8.360 if (selection)
8.361 {
8.362 // write to directory
8.363 @@ -1232,124 +1215,134 @@
8.364
8.365 void MapEditor::redo()
8.366 {
8.367 - // Finish open lineEdits
8.368 - if (lineedit) finishedLineEdit();
8.369 -
8.370 blockSaveState=true;
8.371
8.372 + // Restore variables
8.373 + int curStep=undoSet.readNumEntry (QString("/history/curStep"));
8.374 + int undosAvail=undoSet.readNumEntry (QString("/history/undosAvail"));
8.375 + int redosAvail=undoSet.readNumEntry (QString("/history/redosAvail"));
8.376 + if (redosAvail>0) redosAvail--;
8.377 + if (undosAvail<undosTotal) undosAvail++;
8.378 + curStep++;
8.379 + if (curStep>undosTotal) curStep=1;
8.380 + QString undoCommand= undoSet.readEntry (QString("/history/step-%1/undoCommand").arg(curStep));
8.381 + QString undoSelection=undoSet.readEntry (QString("/history/step-%1/undoSelection").arg(curStep));
8.382 + QString redoCommand= undoSet.readEntry (QString("/history/step-%1/redoCommand").arg(curStep));
8.383 + QString redoSelection=undoSet.readEntry (QString("/history/step-%1/redoSelection").arg(curStep));
8.384 + QString comment=undoSet.readEntry (QString("/history/step-%1/comment").arg(curStep));
8.385 +
8.386 // Find out current undo directory
8.387 - QString bakMapDir=QDir::convertSeparators (QString(tmpMapDir+"/undo-%1").arg(undoNum));
8.388 -
8.389 - // Restore variables
8.390 - QString undoCommand;
8.391 - QString undoSelection;
8.392 - QString redoCommand;
8.393 - QString redoSelection;
8.394 - SimpleSettings set;
8.395 - set.readSettings(QString(bakMapDir+"/commands"));
8.396 - undoCommand=set.readEntry ("undoCommand");
8.397 - undoSelection=set.readEntry ("undoSelection");
8.398 - redoCommand=set.readEntry ("redoCommand");
8.399 - redoSelection=set.readEntry ("redoSelection");
8.400 + QString bakMapDir=QDir::convertSeparators (QString(tmpMapDir+"/undo-%1").arg(curStep));
8.401 +
8.402 +/* TODO remove testing
8.403 +*/
8.404 + cout << "ME::redo() begin\n";
8.405 + cout << " undosAvail="<<undosAvail<<endl;
8.406 + cout << " redosAvail="<<redosAvail<<endl;
8.407 + cout << " curStep="<<curStep<<endl;
8.408 + cout << " ---------------------------"<<endl;
8.409 + cout << " comment="<<comment.toStdString()<<endl;
8.410 + cout << " undoCom="<<undoCommand.toStdString()<<endl;
8.411 + cout << " undoSel="<<undoSelection.toStdString()<<endl;
8.412 + cout << " redoCom="<<redoCommand.toStdString()<<endl;
8.413 + cout << " redoSel="<<redoSelection.toStdString()<<endl;
8.414 + cout << " ---------------------------"<<endl<<endl;
8.415
8.416 // select object before redo
8.417 + // FIXME better give up if no selection there...
8.418 if (!redoSelection.isEmpty())
8.419 select (redoSelection);
8.420
8.421 +
8.422 + parseAtom (redoCommand);
8.423 + mapCenter->reposition();
8.424 +
8.425 + //if (!redoSelection.isEmpty())
8.426 + // select (redoSelection);
8.427 +
8.428 + blockSaveState=false;
8.429 /* TODO remove testing
8.430 - cout << "ME::redo() begin\n";
8.431 - cout << " undosTotal="<<undosTotal<<endl;
8.432 +*/
8.433 + cout << "ME::redo() end\n";
8.434 cout << " undosAvail="<<undosAvail<<endl;
8.435 - cout << " undoNum="<<undoNum<<endl;
8.436 + cout << " redosAvail="<<redosAvail<<endl;
8.437 + cout << " curStep="<<curStep<<endl;
8.438 + cout << " ---------------------------"<<endl<<endl;
8.439 +
8.440 +
8.441 + undoSet.setEntry ("/history/undosAvail",QString::number(undosAvail));
8.442 + undoSet.setEntry ("/history/redosAvail",QString::number(redosAvail));
8.443 + undoSet.setEntry ("/history/curStep",QString::number(curStep));
8.444 + undoSet.writeSettings(histPath);
8.445 +
8.446 + updateActions();
8.447 +}
8.448 +
8.449 +void MapEditor::undo()
8.450 +{
8.451 + blockSaveState=true;
8.452 +
8.453 + // Restore variables
8.454 + int curStep=undoSet.readNumEntry (QString("/history/curStep"));
8.455 + int undosAvail=undoSet.readNumEntry (QString("/history/undosAvail"));
8.456 + int redosAvail=undoSet.readNumEntry (QString("/history/redosAvail"));
8.457 + QString undoCommand= undoSet.readEntry (QString("/history/step-%1/undoCommand").arg(curStep));
8.458 + QString undoSelection=undoSet.readEntry (QString("/history/step-%1/undoSelection").arg(curStep));
8.459 + QString redoCommand= undoSet.readEntry (QString("/history/step-%1/redoCommand").arg(curStep));
8.460 + QString redoSelection=undoSet.readEntry (QString("/history/step-%1/redoSelection").arg(curStep));
8.461 + QString comment=undoSet.readEntry (QString("/history/step-%1/comment").arg(curStep));
8.462 +
8.463 + // Find out current undo directory
8.464 + QString bakMapDir=QDir::convertSeparators (QString(tmpMapDir+"/undo-%1").arg(curStep));
8.465 +
8.466 + // select object before undo
8.467 + if (!undoSelection.isEmpty())
8.468 + select (undoSelection);
8.469 +
8.470 +/* TODO testing
8.471 +*/
8.472 + cout << "ME::undo() begin\n";
8.473 + cout << " undosAvail="<<undosAvail<<endl;
8.474 + cout << " redosAvail="<<redosAvail<<endl;
8.475 + cout << " curStep="<<curStep<<endl;
8.476 cout << " ---------------------------"<<endl;
8.477 - cout << " undoCom="<<undoCommand<<endl;
8.478 - cout << " undoSel="<<undoSelection<<endl;
8.479 - cout << " ---------------------------"<<endl;
8.480 - cout << " redoCom="<<redoCommand<<endl;
8.481 - cout << " redoSel="<<redoSelection<<endl;
8.482 - cout << " ---------------------------"<<endl;
8.483 -*/
8.484 + cout << " comment="<<comment.toStdString()<<endl;
8.485 + cout << " undoCom="<<undoCommand.toStdString()<<endl;
8.486 + cout << " undoSel="<<undoSelection.toStdString()<<endl;
8.487 + cout << " redoCom="<<redoCommand.toStdString()<<endl;
8.488 + cout << " redoSel="<<redoSelection.toStdString()<<endl;
8.489 + cout << " ---------------------------"<<endl<<endl;
8.490 parseAtom (undoCommand);
8.491 mapCenter->reposition();
8.492
8.493 //if (!redoSelection.isEmpty())
8.494 // select (redoSelection);
8.495
8.496 +
8.497 undosAvail--;
8.498 if (undosAvail<1)
8.499 // Undo not longer available now
8.500 actionEditUndo->setEnabled (false);
8.501 else
8.502 - undoNum--; if (undoNum<1) undoNum=undosTotal;
8.503 + curStep--; if (curStep<1) curStep=undosTotal;
8.504 +
8.505 + redosAvail++;
8.506
8.507 blockSaveState=false;
8.508 /* TODO remove testing
8.509 - cout << "ME::redo() end\n";
8.510 - cout << " undosAvail="<<undosAvail<<endl;
8.511 - cout << " undoNum="<<undoNum<<endl;
8.512 - cout << " ---------------------------"<<endl<<endl;
8.513 -*/
8.514 -}
8.515 -
8.516 -void MapEditor::undo()
8.517 -{
8.518 - // Finish open lineEdits
8.519 - if (lineedit) finishedLineEdit();
8.520 -
8.521 - blockSaveState=true;
8.522 -
8.523 - // Find out current undo directory
8.524 - QString bakMapDir=QDir::convertSeparators (QString(tmpMapDir+"/undo-%1").arg(undoNum));
8.525 -
8.526 - // Restore variables
8.527 - QString undoCommand;
8.528 - QString undoSelection;
8.529 - QString redoCommand;
8.530 - QString redoSelection;
8.531 - SimpleSettings set;
8.532 - set.readSettings(QString(bakMapDir+"/commands"));
8.533 - undoCommand= set.readEntry ("undoCommand");
8.534 - undoSelection=set.readEntry ("undoSelection");
8.535 - redoCommand= set.readEntry ("redoCommand");
8.536 - redoSelection=set.readEntry ("redoSelection");
8.537 -
8.538 - // select object before undo
8.539 - if (!undoSelection.isEmpty())
8.540 - select (undoSelection);
8.541 -
8.542 -/* TODO testing
8.543 - cout << "ME::undo() begin\n";
8.544 - cout << " undosTotal="<<undosTotal<<endl;
8.545 - cout << " undosAvail="<<undosAvail<<endl;
8.546 - cout << " undoNum="<<undoNum<<endl;
8.547 - cout << " ---------------------------"<<endl;
8.548 - cout << " undoCom="<<undoCommand<<endl;
8.549 - cout << " undoSel="<<undoSelection<<endl;
8.550 - cout << " ---------------------------"<<endl;
8.551 - cout << " redoCom="<<redoCommand<<endl;
8.552 - cout << " redoSel="<<redoSelection<<endl;
8.553 - cout << " ---------------------------"<<endl;
8.554 -*/
8.555 - parseAtom (undoCommand);
8.556 - mapCenter->reposition();
8.557 -
8.558 - //if (!redoSelection.isEmpty())
8.559 - // select (redoSelection);
8.560 -
8.561 - undosAvail--;
8.562 - if (undosAvail<1)
8.563 - // Undo not longer available now
8.564 - actionEditUndo->setEnabled (false);
8.565 - else
8.566 - undoNum--; if (undoNum<1) undoNum=undosTotal;
8.567 -
8.568 - blockSaveState=false;
8.569 -/* TODO remove testing
8.570 +*/
8.571 cout << "ME::undo() end\n";
8.572 cout << " undosAvail="<<undosAvail<<endl;
8.573 - cout << " undoNum="<<undoNum<<endl;
8.574 + cout << " redosAvail="<<redosAvail<<endl;
8.575 + cout << " curStep="<<curStep<<endl;
8.576 cout << " ---------------------------"<<endl<<endl;
8.577 -*/
8.578 +
8.579 + undoSet.setEntry ("/history/undosAvail",QString::number(undosAvail));
8.580 + undoSet.setEntry ("/history/redosAvail",QString::number(undosAvail));
8.581 + undoSet.setEntry ("/history/curStep",QString::number(curStep));
8.582 + undoSet.writeSettings(histPath);
8.583 +
8.584 + updateActions();
8.585 }
8.586
8.587 void MapEditor::undoXML(const QString &undoSel, const QString &bakMapPath)
8.588 @@ -1400,9 +1393,6 @@
8.589
8.590 void MapEditor::pasteNoSave()
8.591 {
8.592 - // Finish open lineEdits
8.593 - if (lineedit) finishedLineEdit();
8.594 -
8.595 load (clipboardDir+"/part.xml",ImportAdd);
8.596 }
8.597
8.598 @@ -1417,7 +1407,7 @@
8.599 if (selection && (typeid(*selection) == typeid(BranchObj) ||
8.600 typeid(*selection) == typeid(MapCenterObj)))
8.601 {
8.602 - saveState(selection,QString("Paste to %1").arg( getName(selection)));
8.603 + saveStatePart(selection,QString("Paste to %1").arg( getName(selection)));
8.604 pasteNoSave();
8.605 mapCenter->reposition();
8.606 adjustCanvasSize();
8.607 @@ -1426,7 +1416,7 @@
8.608
8.609 void MapEditor::cut()
8.610 {
8.611 - saveState(selection->getParObj(),QString("Cut %1").arg(getName(selection)));
8.612 + saveStatePart(selection->getParObj(),QString("Cut %1").arg(getName(selection)));
8.613 copy();
8.614 cutNoSave();
8.615 mapCenter->reposition();
8.616 @@ -1443,9 +1433,6 @@
8.617
8.618 void MapEditor::moveBranchUp()
8.619 {
8.620 - // Finish open lineEdits
8.621 - if (lineedit) finishedLineEdit();
8.622 -
8.623 BranchObj* bo;
8.624 BranchObj* par;
8.625 if (typeid(*selection) == typeid(BranchObj) )
8.626 @@ -1456,7 +1443,7 @@
8.627 selection->unselect();
8.628 selection=par->moveBranchUp (bo);
8.629 selection->select();
8.630 - saveState("moveBranchDown ()",bo,QString("Move up %1").arg(getName(bo)));
8.631 + saveStateX(bo,"moveBranchDown ()",QString("Move up %1").arg(getName(bo)));
8.632 mapCenter->reposition();
8.633 ensureSelectionVisible();
8.634 }
8.635 @@ -1464,9 +1451,6 @@
8.636
8.637 void MapEditor::moveBranchDown()
8.638 {
8.639 - // Finish open lineEdits
8.640 - if (lineedit) finishedLineEdit();
8.641 -
8.642 BranchObj* bo;
8.643 BranchObj* par;
8.644 if (typeid(*selection) == typeid(BranchObj) )
8.645 @@ -1477,7 +1461,7 @@
8.646 selection->unselect();
8.647 selection=par->moveBranchDown(bo);
8.648 selection->select();
8.649 - saveState("moveBranchUp ()",bo,QString("Move down %1").arg(getName(bo)));
8.650 + saveStateX(bo,"moveBranchUp ()",QString("Move down %1").arg(getName(bo)));
8.651 mapCenter->reposition();
8.652 ensureSelectionVisible();
8.653 }
8.654 @@ -1485,32 +1469,56 @@
8.655
8.656 void MapEditor::editHeading()
8.657 {
8.658 - // Finish open lineEdits
8.659 - if (lineedit->isVisible())
8.660 - {
8.661 - finishedLineEdit();
8.662 - return;
8.663 - }
8.664 -
8.665 +/* FIXME not needed any longer
8.666 if (selection &&
8.667 (typeid(*selection) == typeid(BranchObj) ||
8.668 typeid(*selection) == typeid(MapCenterObj) ) )
8.669 {
8.670 editingBO=(BranchObj*)selection;
8.671 -
8.672 ensureSelectionVisible();
8.673 QPoint p = worldMatrix().map(QPoint (editingBO->x(),editingBO->y()));
8.674 - lineedit->setGeometry(p.x()-contentsX(),p.y()-contentsY(),200,25);
8.675 - QString s=editingBO->getHeading();
8.676 - lineedit->setText(s);
8.677 - lineedit->setCursorPosition(1);
8.678 - if (actionSettingsAutoselectText->isOn() && !s.isEmpty() && actionSettingsPasteNewHeading->isOn() )
8.679 - lineedit->selectAll();
8.680 - lineedit->show();
8.681 - lineedit->setFocus();
8.682 - lineedit->grabKeyboard();
8.683 - cout << "le="<<lineedit<<" kgrabber="<<keyboardGrabber()<<endl;
8.684 - }
8.685 +
8.686 + QDialog *d =new QDialog(NULL);
8.687 + QLineEdit *le=new QLineEdit (d);
8.688 + d->setWindowFlags (Qt::FramelessWindowHint);
8.689 + QPoint q=mapToGlobal (QPoint(0,0));
8.690 + d->setGeometry(p.x()+q.x(),p.y()+q.y(),200,25);
8.691 + le->resize (d->size());
8.692 + le->setText (editingBO->getHeading());
8.693 + le->selectAll();
8.694 + connect (le, SIGNAL (returnPressed()), d, SLOT (accept()));
8.695 + d->activateWindow();
8.696 + d->exec();
8.697 +
8.698 + saveStateConstSelection(
8.699 + "setHeading (\""+editingBO->getHeading()+"\")",
8.700 + "setHeading (\""+le->text()+"\")",
8.701 + QString("Set heading of %1 to \"%2\"").arg(getName(editingBO)).arg(le->text()) );
8.702 + editingBO->setHeading(le->text() );
8.703 + editingBO=NULL;
8.704 + mapCenter->reposition();
8.705 + adjustCanvasSize();
8.706 + ensureSelectionVisible();
8.707 + activateWindow();
8.708 + }
8.709 +*/
8.710 +}
8.711 +
8.712 +QString MapEditor::getHeading(bool &ok, QPoint &p)
8.713 +{
8.714 + if (selection &&
8.715 + (typeid(*selection) == typeid(BranchObj) ||
8.716 + typeid(*selection) == typeid(MapCenterObj) ) )
8.717 + {
8.718 + ok=true;
8.719 + ensureSelectionVisible();
8.720 + p = ((BranchObj*)selection)->getAbsPos();
8.721 + p.setY(p.y()+((BranchObj*)selection)->height()/2);
8.722 +// p = mapTo(mainWindow,worldMatrix().map( p));
8.723 + return ((BranchObj*)selection)->getHeading();
8.724 + }
8.725 + ok=false;
8.726 + return QString();
8.727 }
8.728
8.729 void MapEditor::setHeading(const QString &s)
8.730 @@ -1520,14 +1528,20 @@
8.731 (typeid(*selection) == typeid(BranchObj) ||
8.732 typeid(*selection) == typeid(MapCenterObj) ) )
8.733 {
8.734 - ((BranchObj*)selection)->setHeading(s);
8.735 + editingBO=(BranchObj*)selection;
8.736 + saveStateConstSelection(
8.737 + "setHeading (\""+editingBO->getHeading()+"\")",
8.738 + "setHeading (\""+s+"\")",
8.739 + QString("Set heading of %1 to \"%2\"").arg(getName(editingBO)).arg(s) );
8.740 + editingBO->setHeading(s );
8.741 + editingBO=NULL;
8.742 mapCenter->reposition();
8.743 adjustCanvasSize();
8.744 ensureSelectionVisible();
8.745 }
8.746 }
8.747
8.748 -void MapEditor::setURL (const QString &s)
8.749 +void MapEditor::setURLInt (const QString &s)
8.750 {
8.751 // Internal function, no saveState needed
8.752 if (selection &&
8.753 @@ -1541,7 +1555,20 @@
8.754 }
8.755 }
8.756
8.757 -void MapEditor::setVymLink (const QString &s)
8.758 +void MapEditor::setHeadingInt(const QString &s)
8.759 +{
8.760 + if (selection &&
8.761 + (typeid(*selection) == typeid(BranchObj) ||
8.762 + typeid(*selection) == typeid(MapCenterObj) ) )
8.763 + {
8.764 + ((BranchObj*)selection)->setHeading(s);
8.765 + mapCenter->reposition();
8.766 + adjustCanvasSize();
8.767 + ensureSelectionVisible();
8.768 + }
8.769 +}
8.770 +
8.771 +void MapEditor::setVymLinkInt (const QString &s)
8.772 {
8.773 // Internal function, no saveState needed
8.774 if (selection &&
8.775 @@ -1557,15 +1584,11 @@
8.776
8.777 void MapEditor::addNewBranch(int pos)
8.778 {
8.779 - // Finish open lineEdits
8.780 - if (lineedit) finishedLineEdit();
8.781 -
8.782 if (selection &&
8.783 (typeid(*selection) == typeid(BranchObj) ||
8.784 typeid(*selection) == typeid(MapCenterObj) ) )
8.785 {
8.786 BranchObj* bo1 = (BranchObj*) selection;
8.787 - saveState(selection, QString("Add new branch to %1").arg(getName(bo1))); //TODO undoCommand
8.788
8.789 bool wasScrolled=false;
8.790 BranchObj *newbo=NULL;
8.791 @@ -1588,14 +1611,65 @@
8.792 newbo=parbo->insertBranch(bo1->getNum()+1);
8.793 } else
8.794 // This should not happen...
8.795 + // ...but it happens if CTRL-A is pressed on MCO,
8.796 + // ignore it then
8.797 return;
8.798 -
8.799 }
8.800 + saveStateX(selection,QString ("delete (\"%1\")").arg(newbo->getSelectString()),QString("Add new branch to %1").arg(getName(bo1))); //TODO undoCommand
8.801
8.802 LinkableMapObj *oldselection=selection;
8.803
8.804 mapCenter->reposition();
8.805 adjustCanvasSize();
8.806 +
8.807 +
8.808 + if (actionSettingsAutoedit->isOn() ||
8.809 + actionSettingsAutoselectHeading->isOn() )
8.810 + {
8.811 + selection->unselect();
8.812 + selection=newbo;
8.813 + selection->select();
8.814 + if (actionSettingsPasteNewHeading->isOn() )
8.815 + {
8.816 + BranchObj *bo2= (BranchObj*)selection;
8.817 + bo2->setHeading("");
8.818 + }
8.819 + if (actionSettingsAutoedit->isOn() )
8.820 + mainWindow->editHeading();
8.821 + if (!actionSettingsAutoselectHeading->isOn()
8.822 + && !wasScrolled)
8.823 + {
8.824 + selection->unselect();
8.825 + selection=oldselection;
8.826 + selection->select();
8.827 + }
8.828 + }
8.829 + }
8.830 +}
8.831 +
8.832 +
8.833 +void MapEditor::addNewBranchHere()
8.834 +{
8.835 + if (selection &&
8.836 + (typeid(*selection) == typeid(BranchObj) ) )
8.837 + {
8.838 + BranchObj* bo1 = (BranchObj*) selection;
8.839 + saveStatePart(selection, QString("Add new branch here").arg(getName(bo1)));
8.840 +
8.841 + bool wasScrolled=false;
8.842 + BranchObj *newbo=NULL;
8.843 + BranchObj *parbo=(BranchObj*)(selection->getParObj());
8.844 + if (parbo)
8.845 + {
8.846 + // add below selection
8.847 + newbo=parbo->insertBranch(bo1->getNum()+1);
8.848 + }
8.849 +
8.850 + LinkableMapObj *oldselection=selection;
8.851 + ((BranchObj*)selection)->moveBranchTo (newbo,-1);
8.852 +
8.853 + mapCenter->reposition();
8.854 + adjustCanvasSize();
8.855 if (actionSettingsAutoedit->isOn() ||
8.856 actionSettingsAutoselectHeading->isOn() )
8.857 {
8.858 @@ -1620,61 +1694,8 @@
8.859 }
8.860 }
8.861
8.862 -
8.863 -void MapEditor::addNewBranchHere()
8.864 -{
8.865 - // Finish open lineEdits
8.866 - if (lineedit) finishedLineEdit();
8.867 -
8.868 - if (selection &&
8.869 - (typeid(*selection) == typeid(BranchObj) ) )
8.870 - {
8.871 - BranchObj* bo1 = (BranchObj*) selection;
8.872 - saveState(selection, QString("Add new branch here").arg(getName(bo1)));
8.873 -
8.874 - bool wasScrolled=false;
8.875 - BranchObj *newbo=NULL;
8.876 - BranchObj *parbo=(BranchObj*)(selection->getParObj());
8.877 - if (parbo)
8.878 - {
8.879 - // add below selection
8.880 - newbo=parbo->insertBranch(bo1->getNum()+1);
8.881 - }
8.882 -
8.883 - LinkableMapObj *oldselection=selection;
8.884 - ((BranchObj*)selection)->moveBranchTo (newbo,-1);
8.885 -
8.886 - mapCenter->reposition();
8.887 - adjustCanvasSize();
8.888 - if (actionSettingsAutoedit->isOn() ||
8.889 - actionSettingsAutoselectHeading->isOn() )
8.890 - {
8.891 - selection->unselect();
8.892 - selection=newbo;
8.893 - selection->select();
8.894 - if (actionSettingsPasteNewHeading->isOn() )
8.895 - {
8.896 - BranchObj *bo2= (BranchObj*)selection;
8.897 - bo2->setHeading("");
8.898 - }
8.899 - if (actionSettingsAutoedit->isOn() )
8.900 - editHeading();
8.901 - if (!actionSettingsAutoselectHeading->isOn()
8.902 - && !wasScrolled)
8.903 - {
8.904 - selection->unselect();
8.905 - selection=oldselection;
8.906 - selection->select();
8.907 - }
8.908 - }
8.909 - }
8.910 -}
8.911 -
8.912 void MapEditor::deleteSelection()
8.913 {
8.914 - // Finish open lineEdits
8.915 - if (lineedit) finishedLineEdit();
8.916 -
8.917 if (selection && typeid(*selection) ==typeid(BranchObj) )
8.918 {
8.919 BranchObj* bo=dynamic_cast <BranchObj*> (selection);
8.920 @@ -1682,12 +1703,12 @@
8.921 bo->unselect();
8.922 if (selection->getDepth()>1)
8.923 // Normal branch, save parent with childs
8.924 - saveState(par,QString("Delete %1").arg(getName(bo)));
8.925 + saveStatePart(par,QString("Delete %1").arg(getName(bo)));
8.926 else
8.927 // Mainbranch, save whole map
8.928 // TODO Better would be to insert mainbranch again at pos
8.929 // But undoCommand is missing right now
8.930 - saveState(QString("Delete %1").arg(getName(bo)));
8.931 + saveStateComplete(QString("Delete %1").arg(getName(bo)));
8.932 selection=NULL;
8.933 par->removeBranch(bo);
8.934 selection=par;
8.935 @@ -1700,7 +1721,7 @@
8.936 {
8.937 FloatImageObj* fio=dynamic_cast <FloatImageObj*> (selection);
8.938 BranchObj* par=(BranchObj*)(fio->getParObj());
8.939 - saveState(par, QString("Delete %1").arg(getName(fio)));
8.940 + saveStatePart(par, QString("Delete %1").arg(getName(fio)));
8.941 fio->unselect();
8.942 selection=NULL;
8.943 par->removeFloatImage(fio);
8.944 @@ -1754,7 +1775,7 @@
8.945 return false;
8.946 }
8.947
8.948 -void MapEditor::select (LinkableMapObj *lmo)
8.949 +void MapEditor::selectInt (LinkableMapObj *lmo)
8.950 {
8.951 if (lmo && selection != lmo)
8.952 {
8.953 @@ -1768,7 +1789,7 @@
8.954
8.955 }
8.956
8.957 -void MapEditor::selectNextBranch()
8.958 +void MapEditor::selectNextBranchInt()
8.959 {
8.960 // Increase number of branch
8.961 if (selection)
8.962 @@ -1848,7 +1869,7 @@
8.963 }
8.964 }
8.965
8.966 -void MapEditor::selectPrevBranch()
8.967 +void MapEditor::selectPrevBranchInt()
8.968 {
8.969 // Decrease number of branch
8.970 if (selection)
8.971 @@ -1929,40 +1950,34 @@
8.972
8.973 void MapEditor::selectUpperBranch()
8.974 {
8.975 - // Finish open lineEdits
8.976 - if (lineedit) finishedLineEdit();
8.977 -
8.978 if (selection)
8.979 {
8.980 if (typeid(*selection) == typeid(BranchObj))
8.981 {
8.982 if (selection->getOrientation()==OrientRightOfCenter)
8.983 - selectPrevBranch();
8.984 + selectPrevBranchInt();
8.985 else
8.986 if (selection->getDepth()==1)
8.987 - selectNextBranch();
8.988 + selectNextBranchInt();
8.989 else
8.990 - selectPrevBranch();
8.991 + selectPrevBranchInt();
8.992 }
8.993 }
8.994 }
8.995
8.996 void MapEditor::selectLowerBranch()
8.997 {
8.998 - // Finish open lineEdits
8.999 - if (lineedit) finishedLineEdit();
8.1000 -
8.1001 if (selection)
8.1002 {
8.1003 if (typeid(*selection) == typeid(BranchObj))
8.1004 {
8.1005 if (selection->getOrientation()==OrientRightOfCenter)
8.1006 - selectNextBranch();
8.1007 + selectNextBranchInt();
8.1008 else
8.1009 if (selection->getDepth()==1)
8.1010 - selectPrevBranch();
8.1011 + selectPrevBranchInt();
8.1012 else
8.1013 - selectNextBranch();
8.1014 + selectNextBranchInt();
8.1015 }
8.1016 }
8.1017 }
8.1018 @@ -1970,9 +1985,6 @@
8.1019
8.1020 void MapEditor::selectLeftBranch()
8.1021 {
8.1022 - // Finish open lineEdits
8.1023 - if (lineedit) finishedLineEdit();
8.1024 -
8.1025 BranchObj* bo;
8.1026 BranchObj* par;
8.1027 if (selection)
8.1028 @@ -2032,9 +2044,6 @@
8.1029
8.1030 void MapEditor::selectRightBranch()
8.1031 {
8.1032 - // Finish open lineEdits
8.1033 - if (lineedit) finishedLineEdit();
8.1034 -
8.1035 BranchObj* bo;
8.1036 BranchObj* par;
8.1037
8.1038 @@ -2046,7 +2055,7 @@
8.1039 bo=par->getLastSelectedBranch();
8.1040 if (bo)
8.1041 {
8.1042 - // Workaround for relecting on left and right side
8.1043 + // Workaround for reselecting on left and right side
8.1044 if (bo->getOrientation()==OrientLeftOfCenter)
8.1045 bo=par->getFirstBranch();
8.1046 if (bo)
8.1047 @@ -2092,9 +2101,6 @@
8.1048
8.1049 void MapEditor::selectFirstBranch()
8.1050 {
8.1051 - // Finish open lineEdits
8.1052 - if (lineedit) finishedLineEdit();
8.1053 -
8.1054 BranchObj *bo1;
8.1055 BranchObj *bo2;
8.1056 BranchObj* par;
8.1057 @@ -2117,9 +2123,6 @@
8.1058
8.1059 void MapEditor::selectLastBranch()
8.1060 {
8.1061 - // Finish open lineEdits
8.1062 - if (lineedit) finishedLineEdit();
8.1063 -
8.1064 BranchObj *bo1;
8.1065 BranchObj *bo2;
8.1066 BranchObj* par;
8.1067 @@ -2147,13 +2150,11 @@
8.1068
8.1069 void MapEditor::selectBackgroundColor()
8.1070 {
8.1071 - // Finish open lineEdits
8.1072 - if (lineedit) finishedLineEdit();
8.1073 -
8.1074 QColor col = QColorDialog::getColor( mapCanvas->backgroundColor(), this );
8.1075 if ( !col.isValid() ) return;
8.1076 setBackgroundColor( col );
8.1077 - saveState(QString("Set background color of map to %1").arg(col.name()));
8.1078 + //TODO undocomm
8.1079 + saveStateComplete(QString("Set background color of map to %1").arg(col.name()));
8.1080 }
8.1081
8.1082 void MapEditor::setBackgroundColor(QColor c)
8.1083 @@ -2183,7 +2184,7 @@
8.1084 typeid(*selection) == typeid(MapCenterObj))
8.1085 {
8.1086 BranchObj *bo=(BranchObj*)selection;
8.1087 - saveState(selection, QString("Set color of %1 to %2").arg(getName(bo)).arg(actColor.name())); //TODO undoCommand
8.1088 + saveStatePart(selection, QString("Set color of %1 to %2").arg(getName(bo)).arg(actColor.name())); //TODO undoCommand
8.1089 bo->setColor(actColor); // color branch
8.1090 }
8.1091 }
8.1092 @@ -2197,7 +2198,7 @@
8.1093 typeid(*selection) == typeid(MapCenterObj))
8.1094 {
8.1095 BranchObj *bo=(BranchObj*)selection;
8.1096 - saveState(selection, QString ("Set color of %1 and childs to %2").arg(getName(bo)).arg(actColor.name())); //TODO undoCommand
8.1097 + saveStatePart(selection, QString ("Set color of %1 and childs to %2").arg(getName(bo)).arg(actColor.name())); //TODO undoCommand
8.1098 bo->setColorChilds(actColor); // color links, color childs
8.1099 }
8.1100 }
8.1101 @@ -2212,12 +2213,20 @@
8.1102 typeid(*selection) == typeid(MapCenterObj))
8.1103 {
8.1104 BranchObj *bo=(BranchObj*)selection;
8.1105 - QString s;
8.1106 + QString u,r;
8.1107 if (bo->isSetStandardFlag(f))
8.1108 - s="Unset";
8.1109 + {
8.1110 + r="unsetFlag";
8.1111 + u="setFlag";
8.1112 + }
8.1113 else
8.1114 - s="Set";
8.1115 - saveState(selection, QString("%1 standard flag \"%2\" of %3").arg(s).arg(f).arg(getName(bo)));// TODO undoCommand
8.1116 + {
8.1117 + u="unsetFlag";
8.1118 + r="setFlag";
8.1119 + }
8.1120 + saveStateConstSelection(QString("%1 (\"%2\")").arg(u).arg(f),
8.1121 + QString("%1 (\"%2\")").arg(r).arg(f),
8.1122 + QString("Toggling standard flag \"%1\" of %2").arg(f).arg(getName(bo)));
8.1123 bo->toggleStandardFlag (f,actionSettingsUseFlagGroups->isOn());
8.1124 adjustCanvasSize();
8.1125 }
8.1126 @@ -2311,7 +2320,7 @@
8.1127 if ( ok)
8.1128 {
8.1129 // user entered something and pressed OK
8.1130 - saveState("setURL (\""+bo->getURL()+"\")","setURL (\""+text+"\")", QString("Set URL of %1 to %21").arg(getName(bo)).arg(text));
8.1131 + saveStateConstSelection("setURL (\""+bo->getURL()+"\")","setURL (\""+text+"\")", QString("Set URL of %1 to %21").arg(getName(bo)).arg(text));
8.1132 bo->setURL (text);
8.1133 updateActions();
8.1134 }
8.1135 @@ -2333,7 +2342,7 @@
8.1136 typeid(*selection) == typeid(MapCenterObj)) )
8.1137 {
8.1138 BranchObj *bo=(BranchObj*)selection;
8.1139 - saveState("setURL (\""+bo->getURL()+"\")","setURL (\""+bo->getHeading()+"\")",QString("Copy heading of %1 to URL").arg(getName(bo)));
8.1140 + saveStateConstSelection("setURL (\""+bo->getURL()+"\")","setURL (\""+bo->getHeading()+"\")",QString("Copy heading of %1 to URL").arg(getName(bo)));
8.1141 bo->setURL (bo->getHeading());
8.1142 updateActions();
8.1143 }
8.1144 @@ -2346,7 +2355,7 @@
8.1145 {
8.1146 BranchObj *bo=(BranchObj*)selection;
8.1147 QString url= "https://bugzilla.novell.com/show_bug.cgi?id="+bo->getHeading();
8.1148 - saveState("setURL (\""+bo->getURL()+"\")","setURL (\""+url+"\")",QString("Use heading of %1 as link to Novell Bugzilla").arg(getName(bo)));
8.1149 + saveStateConstSelection("setURL (\""+bo->getURL()+"\")","setURL (\""+url+"\")",QString("Use heading of %1 as link to Novell Bugzilla").arg(getName(bo)));
8.1150 bo->setURL (url);
8.1151 updateActions();
8.1152 }
8.1153 @@ -2359,7 +2368,7 @@
8.1154 {
8.1155 BranchObj *bo=(BranchObj*)selection;
8.1156 QString url= "http://keeper.suse.de:8080/webfate/match/id?value=ID"+bo->getHeading();
8.1157 - saveState("setURL (\""+bo->getURL()+"\")","setURL (\""+url+"\")",QString("Use heading of %1 as link to FATE").arg(getName(bo)));
8.1158 + saveStateConstSelection("setURL (\""+bo->getURL()+"\")","setURL (\""+url+"\")",QString("Use heading of %1 as link to FATE").arg(getName(bo)));
8.1159 bo->setURL (url);
8.1160 updateActions();
8.1161 }
8.1162 @@ -2381,7 +2390,7 @@
8.1163 QString fn;
8.1164 if ( fd->exec() == QDialog::Accepted )
8.1165 {
8.1166 - saveState("setVymLink (\""+bo->getVymLink()+"\")","setVymLink (\""+fd->selectedFile()+"\")",QString("Set vymlink of %1 to %2").arg(getName(bo)).arg(fd->selectedFile()));
8.1167 + saveStateConstSelection("setVymLink (\""+bo->getVymLink()+"\")","setVymLink (\""+fd->selectedFile()+"\")",QString("Set vymlink of %1 to %2").arg(getName(bo)).arg(fd->selectedFile()));
8.1168 bo->setVymLink (fd->selectedFile() );
8.1169 updateActions();
8.1170 mapCenter->reposition();
8.1171 @@ -2397,7 +2406,7 @@
8.1172 typeid(*selection) == typeid(MapCenterObj)) )
8.1173 {
8.1174 BranchObj *bo=(BranchObj*)selection;
8.1175 - saveState("setVymLink (\""+bo->getVymLink()+"\")","setVymLink (\"\")",QString("Unset vymlink of %1").arg(getName(bo)));
8.1176 + saveStateConstSelection("setVymLink (\""+bo->getVymLink()+"\")","setVymLink (\"\")",QString("Unset vymlink of %1").arg(getName(bo)));
8.1177 bo->setVymLink ("" );
8.1178 updateActions();
8.1179 mapCenter->reposition();
8.1180 @@ -2425,7 +2434,7 @@
8.1181 oo->setHideInExport(true);
8.1182 s="Set";
8.1183 }
8.1184 - saveState(QString ("%1 hide export flag of %2").arg(s).arg(getName(selection))); //TODO undoCommand
8.1185 + saveStateComplete(QString ("%1 hide export flag of %2").arg(s).arg(getName(selection))); //TODO undoCommand
8.1186 actionEditToggleHideExport->setOn (oo->hideInExport());
8.1187 updateActions();
8.1188 mapCenter->reposition();
8.1189 @@ -2453,9 +2462,9 @@
8.1190 BranchObj* par=(BranchObj*)(bo->getParObj());
8.1191 QString s=QString("Remove %1 and keep its childs").arg(getName(bo));
8.1192 if (bo->getDepth()==1)
8.1193 - saveState(s);
8.1194 + saveStateComplete(s);
8.1195 else
8.1196 - saveState(selection->getParObj(),s); // TODO undoCommand
8.1197 + saveStatePart(selection->getParObj(),s); // TODO undoCommand
8.1198 QString sel=selection->getSelectString();
8.1199 unselect();
8.1200 par->removeBranchHere(bo);
8.1201 @@ -2468,7 +2477,7 @@
8.1202 {
8.1203 if (selection && (typeid(*selection) == typeid(BranchObj) ))
8.1204 {
8.1205 - saveState(selection->getParObj(), QString("Remove childs of branch %1").arg(getName(selection)));
8.1206 + saveStatePart(selection->getParObj(), QString("Remove childs of branch %1").arg(getName(selection)));
8.1207 ((BranchObj*)selection)->removeChilds();
8.1208 mapCenter->reposition();
8.1209 }
8.1210 @@ -2512,7 +2521,7 @@
8.1211 // Finally show dialog
8.1212 if (dia.exec() == QDialog::Accepted)
8.1213 {
8.1214 - saveState("Edit info about map"); //TODO undoCommand
8.1215 + saveStateComplete("Edit info about map"); //TODO undoCommand
8.1216 mapCenter->setAuthor (dia.getAuthor() );
8.1217 mapCenter->setComment (dia.getComment() );
8.1218 }
8.1219 @@ -2550,8 +2559,16 @@
8.1220 pix.fill( defLinkColor );
8.1221 actionFormatLinkColor->setIconSet( pix );
8.1222
8.1223 - actionEditUndo->setEnabled( mapChanged );
8.1224 actionFileSave->setEnabled( mapUnsaved );
8.1225 + if (undoSet.readNumEntry("/history/undosAvail",0)>0)
8.1226 + actionEditUndo->setEnabled( true);
8.1227 + else
8.1228 + actionEditUndo->setEnabled( false);
8.1229 +
8.1230 + if (undoSet.readNumEntry("/history/redosAvail",0)>0)
8.1231 + actionEditRedo->setEnabled( true);
8.1232 + else
8.1233 + actionEditRedo->setEnabled( false);
8.1234
8.1235 if (selection)
8.1236 {
8.1237 @@ -2710,7 +2727,7 @@
8.1238 {
8.1239 linkstyle=ls;
8.1240
8.1241 - saveState("Set link style"); // TODO undoCommand
8.1242 + saveStateComplete("Set link style"); // TODO undoCommand
8.1243 BranchObj *bo;
8.1244 bo=mapCenter->first();
8.1245 bo=bo->next();
8.1246 @@ -2798,13 +2815,10 @@
8.1247
8.1248 void MapEditor::selectLinkColor()
8.1249 {
8.1250 - // Finish open lineEdits
8.1251 - if (lineedit) finishedLineEdit();
8.1252 -
8.1253 QColor col = QColorDialog::getColor( defLinkColor, this );
8.1254 if ( !col.isValid() ) return;
8.1255 setLinkColor( col );
8.1256 - saveState(QString("Set link color to %1").arg(col.name())); //TODO undoCommand
8.1257 + saveStateComplete(QString("Set link color to %1").arg(col.name())); //TODO undoCommand
8.1258
8.1259 }
8.1260
8.1261 @@ -2820,7 +2834,7 @@
8.1262 s="Unscroll";
8.1263 else
8.1264 s="Scroll";
8.1265 - saveState(selection, QString ("%1 %2").arg(s).arg(getName(bo)));
8.1266 + saveStatePart(selection, QString ("%1 %2").arg(s).arg(getName(bo)));
8.1267 bo->toggleScroll();
8.1268 adjustCanvasSize();
8.1269 canvas()->update();
8.1270 @@ -2860,7 +2874,7 @@
8.1271 QString fn;
8.1272 if ( fd->exec() == QDialog::Accepted )
8.1273 {
8.1274 - saveState(selection, QString("Add floatimage to %1").arg(getName(selection)));
8.1275 + saveStatePart(selection, QString("Add floatimage to %1").arg(getName(selection)));
8.1276 // FIXME in QT4 use: lastImageDir=fd->directory();
8.1277 lastImageDir=QDir (fd->dirPath());
8.1278 QStringList flist = fd->selectedFiles();
8.1279 @@ -2968,7 +2982,7 @@
8.1280 selection->setHideLinkUnselected(b);
8.1281 }
8.1282
8.1283 -void MapEditor::importDir(BranchObj *dst, QDir d)
8.1284 +void MapEditor::importDirInt(BranchObj *dst, QDir d)
8.1285 {
8.1286 if (selection &&
8.1287 (typeid(*selection) == typeid(BranchObj)) ||
8.1288 @@ -2996,7 +3010,7 @@
8.1289 else
8.1290 {
8.1291 // Recursively add subdirs
8.1292 - importDir (bo,d);
8.1293 + importDirInt (bo,d);
8.1294 d.cdUp();
8.1295 }
8.1296 }
8.1297 @@ -3034,7 +3048,7 @@
8.1298 if ( fd->exec() == QDialog::Accepted )
8.1299 {
8.1300 BranchObj *bo=((BranchObj*)selection);
8.1301 - importDir (bo,QDir(fd->selectedFile()) );
8.1302 + importDirInt (bo,QDir(fd->selectedFile()) );
8.1303 mapCenter->reposition();
8.1304 adjustCanvasSize();
8.1305 canvas()->update();
8.1306 @@ -3061,7 +3075,7 @@
8.1307
8.1308 void MapEditor::editXLink(int i)
8.1309 {
8.1310 - qDebug ("ko.");
8.1311 + qDebug ("ko."); //FIXME Huh?
8.1312 if (selection &&
8.1313 (typeid(*selection) == typeid(BranchObj)) ||
8.1314 (typeid(*selection) == typeid(MapCenterObj)) )
8.1315 @@ -3081,7 +3095,7 @@
8.1316 }
8.1317 if (dia.deleteXLink())
8.1318 ((BranchObj*)selection)->deleteXLinkAt(i);
8.1319 - saveState("Edit xLink"); //TODO undoCommand
8.1320 + saveStateComplete("Edit xLink"); //TODO undoCommand
8.1321 }
8.1322 }
8.1323 }
8.1324 @@ -3091,32 +3105,43 @@
8.1325 {
8.1326 cout << "MapEditor::testFunction() called\n";
8.1327
8.1328 - mapCenter->positionBBox();
8.1329 +/*
8.1330 + bool ok;
8.1331 + QString text = QInputDialog::getText(
8.1332 + this,
8.1333 + tr("QInputDialog::getText()"),
8.1334 + tr("User name:"), QLineEdit::Normal,
8.1335 + QDir::home().dirName(), &ok, Qt::FramelessWindowHint);
8.1336 +*/
8.1337 +
8.1338 + QDialog *d =new QDialog(NULL);
8.1339 + QLineEdit *le=new QLineEdit (d);
8.1340 +// d->setModal (true);
8.1341 + d->setWindowFlags (Qt::FramelessWindowHint);
8.1342 + le->setFocus();
8.1343 + le->setText ("Foo");
8.1344 + le->selectAll();
8.1345 + connect (le, SIGNAL (returnPressed()), d, SLOT (accept()));
8.1346 + d->exec();
8.1347 + qWarning( le->text());
8.1348 return;
8.1349 -
8.1350 +
8.1351 +
8.1352 +
8.1353 +/*
8.1354 WarningDialog dia;
8.1355 dia.setCancelButton (true);
8.1356 dia.setText("This is a longer \nWarning");
8.1357 dia.setCaption("Warning: Flux problem");
8.1358 dia.setShowAgainName("/warnings/mapeditor");
8.1359 + dia.setWindowFlags (Qt::FramelessWindowHint);
8.1360 if (dia.exec()==QDialog::Accepted)
8.1361 cout << "accepted!\n";
8.1362 else
8.1363 cout << "canceled!\n";
8.1364 return;
8.1365 -
8.1366 - QString ub=vymBaseDir.path()+"/scripts/update-bookmarks";
8.1367 -
8.1368 - QProcess *proc= new QProcess (this);
8.1369 - proc->start( ub);
8.1370 - if (!proc->waitForStarted());
8.1371 - {
8.1372 - QMessageBox::warning(0,
8.1373 - tr("Warning"),
8.1374 - tr("Couldn't find script %1\nto notifiy Browsers of changed bookmarks.").arg(ub));
8.1375 - }
8.1376 -
8.1377 -
8.1378 +*/
8.1379 +
8.1380 /* Hide hidden stuff temporary, maybe add this as regular function somewhere
8.1381 if (hidemode==HideNone)
8.1382 {
8.1383 @@ -3222,9 +3247,6 @@
8.1384 return;
8.1385 }
8.1386
8.1387 - // Finish open lineEdits
8.1388 - if (lineedit) finishedLineEdit();
8.1389 -
8.1390 QPoint p = inverseWorldMatrix().map(e->pos());
8.1391 LinkableMapObj* lmo=mapCenter->findMapObj(p, NULL);
8.1392
8.1393 @@ -3239,7 +3261,7 @@
8.1394 if (!foname.isEmpty())
8.1395 {
8.1396 // systemFlag clicked
8.1397 - select (lmo);
8.1398 + selectInt (lmo);
8.1399 if (foname=="url")
8.1400 {
8.1401 if (e->state() & Qt::ControlModifier)
8.1402 @@ -3297,7 +3319,7 @@
8.1403 }
8.1404 if (lmo)
8.1405 {
8.1406 - select (lmo);
8.1407 + selectInt (lmo);
8.1408 // Left Button Move Branches
8.1409 if (e->button() == Qt::LeftButton )
8.1410 {
8.1411 @@ -3370,7 +3392,7 @@
8.1412 if (typeid(*selection) == typeid(FloatImageObj))
8.1413 {
8.1414 FloatObj *fo=(FloatObj*)selection;
8.1415 - saveState(
8.1416 + saveStateConstSelection(
8.1417 "move "+qpointToString(movingObj_orgPos),fo->getSelectString() ,
8.1418 QString("Move %1").arg(getName(selection)));
8.1419 fo->move (p.x() -movingObj_start.x(), p.y()-movingObj_start.y() );
8.1420 @@ -3387,7 +3409,8 @@
8.1421 {
8.1422 if (typeid(*fo) == typeid(FloatImageObj))
8.1423 {
8.1424 - saveState(QString("Relink %1 to %2").arg(getName(fo)).arg(getName(lmo) ) );
8.1425 + //TODO undocom
8.1426 + saveStateComplete(QString("Relink %1 to %2").arg(getName(fo)).arg(getName(lmo) ) );
8.1427 FloatImageObj *fio=(FloatImageObj*)(fo);
8.1428 ((BranchObj*)(lmo))->addFloatImage (fio);
8.1429 fio->unselect();
8.1430 @@ -3513,7 +3536,7 @@
8.1431 tmpXLink->setEnd ( ((BranchObj*)(dst)) );
8.1432 tmpXLink->updateXLink();
8.1433 tmpXLink->activate();
8.1434 - saveState(QString("Activate xLink from %1 to %2").arg(getName(tmpXLink->getBegin())).arg(getName(tmpXLink->getEnd())) ); //TODO undoCommand
8.1435 + saveStateComplete(QString("Activate xLink from %1 to %2").arg(getName(tmpXLink->getBegin())).arg(getName(tmpXLink->getEnd())) ); //TODO undoCommand
8.1436 } else
8.1437 {
8.1438 delete(tmpXLink);
8.1439 @@ -3578,11 +3601,11 @@
8.1440 if (dst->getDepth()==0)
8.1441 bs->move (savePos);
8.1442 }
8.1443 - saveState (undoCom,bs->getSelectString(),QString("Relink %1 to %2").arg(getName(bs)).arg(getName(dst)) );
8.1444 + saveStateConstSelection (undoCom,bs->getSelectString(),QString("Relink %1 to %2").arg(getName(bs)).arg(getName(dst)) );
8.1445 } else
8.1446 if (selection->getDepth()==1)
8.1447 // If we have moved mainbranch only save endposition
8.1448 - saveState("move "+qpointToString(movingObj_orgPos), selection->getSelectString(), QString("Move %1 to %2").arg(getName(selection)).arg(qpointToString(movingObj_orgPos)));
8.1449 + saveStateConstSelection("move "+qpointToString(movingObj_orgPos), selection->getSelectString(), QString("Move %1 to %2").arg(getName(selection)).arg(qpointToString(movingObj_orgPos)));
8.1450
8.1451 // Draw the original link, before selection was moved around
8.1452 mapCenter->reposition();
8.1453 @@ -3599,9 +3622,6 @@
8.1454
8.1455 void MapEditor::contentsMouseDoubleClickEvent(QMouseEvent* e)
8.1456 {
8.1457 - // Finish open lineEdits
8.1458 - if (lineedit) finishedLineEdit();
8.1459 -
8.1460 if (e->button() == Qt::LeftButton )
8.1461 {
8.1462 QPoint p = inverseWorldMatrix().map(e->pos());
8.1463 @@ -3782,7 +3802,7 @@
8.1464 if (update)
8.1465 {
8.1466 //FIXME saveState has to be called earlier for each of the drops...
8.1467 - saveState("Drop Event"); //TODO undo Command
8.1468 + saveStateComplete("Drop Event"); //TODO undo Command
8.1469 mapCenter->reposition();
8.1470 adjustCanvasSize();
8.1471 canvas()->update();
8.1472 @@ -3797,7 +3817,7 @@
8.1473 (typeid(*selection) == typeid(MapCenterObj)) )
8.1474 {
8.1475 BranchObj *bo=((BranchObj*)selection);
8.1476 - saveState(selection,QString("Add floatimage to %1").arg(getName(bo)));
8.1477 + saveStatePart(selection,QString("Add floatimage to %1").arg(getName(bo)));
8.1478 //QString fn=fd->selectedFile();
8.1479 //lastImageDir=fn.left(fn.findRev ("/"));
8.1480 bo->addFloatImage();
9.1 --- a/mapeditor.h Tue Aug 15 12:01:14 2006 +0000
9.2 +++ b/mapeditor.h Tue Aug 29 08:31:42 2006 +0000
9.3 @@ -2,23 +2,24 @@
9.4 #define MAPEDITOR_H
9.5
9.6 #include <q3canvas.h>
9.7 -#include <qlineedit.h>
9.8 -#include <qcursor.h>
9.9 -#include <q3filedialog.h>
9.10 -#include <qevent.h>
9.11 -#include <q3process.h>
9.12 +#include <QCursor>
9.13 +//#include <q3filedialog.h>
9.14 +#include <QEvent>
9.15 +//#include <q3process.h>
9.16 #include <qbuffer.h>
9.17 -//Added by qt3to4:
9.18 +#include <QDragEnterEvent>
9.19 #include <QContextMenuEvent>
9.20 #include <QDropEvent>
9.21 +#include <QLineEdit>
9.22 +#include <QMouseEvent>
9.23 +#include <QPixmap>
9.24 #include <QResizeEvent>
9.25 -#include <QPixmap>
9.26 -#include <QMouseEvent>
9.27 -#include <QDragEnterEvent>
9.28
9.29 #include "mapcenterobj.h"
9.30 #include "file.h"
9.31 #include "misc.h"
9.32 +#include "selection.h"
9.33 +#include "settings.h"
9.34 #include "showtextdialog.h"
9.35
9.36 class Q3NetworkOperation;
9.37 @@ -41,17 +42,16 @@
9.38 QString getName(LinkableMapObj*); // Get e.g. heading or filename
9.39 void makeTmpDirs(); // create temporary directories
9.40 QString saveToDir(const QString&,const QString &,bool, const QPoint &,LinkableMapObj*);
9.41 - void saveState(const QString &); // save actual state to backup
9.42 - void saveState(LinkableMapObj *, const QString &);
9.43 - void saveState(const QString &, const QString &, const QString &);
9.44 - void saveState(const QString &, LinkableMapObj *, const QString &);
9.45 + void saveStateComplete (const QString &);
9.46 + void saveStatePart (LinkableMapObj *, const QString &);
9.47 + void saveStateConstSelection (const QString &, const QString &, const QString &);
9.48 + void saveStateX (LinkableMapObj *, const QString &, const QString &);
9.49 void saveState(const SaveMode&, const QString &, LinkableMapObj *, const QString &, LinkableMapObj *, const QString &);
9.50 void parseAtom(const QString &);
9.51
9.52 void addFloatImage(const QPixmap &img);
9.53
9.54 private slots:
9.55 - void finishedLineEdit();
9.56 void fetchImage(const QString &img);
9.57 void imageDataFetched(const QByteArray &, Q3NetworkOperation *);
9.58 void imageDataFinished(Q3NetworkOperation *);
9.59 @@ -99,11 +99,13 @@
9.60 void move(const int &,const int&);
9.61 void moveBranchUp();
9.62 void moveBranchDown();
9.63 - void editHeading(); // Start editing heading
9.64 + void editHeading(); // Start editing heading
9.65 + QString getHeading (bool &,QPoint &); // Get heading, ok if selection is branch
9.66 + void setHeading(const QString &);
9.67 private:
9.68 - void setHeading(const QString &); // Just set the heading for selection
9.69 - void setURL(const QString &); // Just set the URL for selection
9.70 - void setVymLink(const QString &); // Set vymLink for selection
9.71 + void setHeadingInt(const QString &);
9.72 + void setURLInt(const QString &); // Just set the URL for selection
9.73 + void setVymLinkInt(const QString &); // Set vymLink for selection
9.74 public:
9.75 void addNewBranch(int); // pos allows to add above/below selection
9.76 void addNewBranchHere(); // insert and make selection its
9.77 @@ -113,9 +115,9 @@
9.78 void reselect(); // after changing current noteedit
9.79 bool select(const QString &); // Select
9.80 private:
9.81 - void select(LinkableMapObj*);
9.82 - void selectNextBranch(); // Increment number of branch
9.83 - void selectPrevBranch(); // Decrement number of branch
9.84 + void selectInt(LinkableMapObj*);
9.85 + void selectNextBranchInt(); // Increment number of branch
9.86 + void selectPrevBranchInt(); // Decrement number of branch
9.87 public:
9.88 void selectUpperBranch();
9.89 void selectLowerBranch();
9.90 @@ -170,7 +172,7 @@
9.91 void setHideLinkUnselected (bool);
9.92 bool getHideLinkUnselected ();
9.93 private:
9.94 - void importDir(BranchObj *,QDir);
9.95 + void importDirInt(BranchObj *,QDir);
9.96 public:
9.97 void importDir();
9.98 void followXLink (int);
9.99 @@ -194,7 +196,6 @@
9.100
9.101 bool adjustCanvasRequested; // collect requests until end of user event
9.102 BranchObj *editingBO; // entering Text into BO
9.103 - QLineEdit* lineedit;
9.104
9.105 QColor actColor; // actual color
9.106 QColor defLinkColor; // default color for links
9.107 @@ -209,7 +210,8 @@
9.108 bool drawingLink; // true while creating a link
9.109 bool copyingObj; // true while creating a link
9.110 XLinkObj* tmpXLink;
9.111 -
9.112 +
9.113 + Selection xelection;
9.114 LinkableMapObj* selection; // select a LinkableMapObj
9.115 LinkableMapObj* selectionLast; // last selection
9.116 MapObj* movingObj; // moving a MapObj
9.117 @@ -238,9 +240,9 @@
9.118
9.119 bool isInteractive; // non interactive don't need tmpdirs
9.120 QString tmpMapDir; // tmp directory with data for undo/redo
9.121 + QString histPath; // Path to history file
9.122 int undosTotal; // total number of undos
9.123 - int undoNum; // current number of bakMapDir to be used
9.124 - int undosAvail; // how many actions can currently be undone
9.125 + SimpleSettings undoSet; // undo/redo commands
9.126 bool blockReposition; // block while load or undo
9.127 bool blockSaveState; // block while load or undo
9.128
10.1 --- a/ornamentedobj.cpp Tue Aug 15 12:01:14 2006 +0000
10.2 +++ b/ornamentedobj.cpp Tue Aug 29 08:31:42 2006 +0000
10.3 @@ -281,6 +281,15 @@
10.4 forceReposition();
10.5 }
10.6
10.7 +void OrnamentedObj::deactivateStandardFlag(QString f)
10.8 +{
10.9 + standardFlags->deactivate(f);
10.10 + calcBBoxSize();
10.11 + positionBBox();
10.12 + move (absPos.x(), absPos.y() );
10.13 + forceReposition();
10.14 +}
10.15 +
10.16 bool OrnamentedObj::isSetStandardFlag (QString f)
10.17 {
10.18 return standardFlags->isActive(f);
11.1 --- a/ornamentedobj.h Tue Aug 15 12:01:14 2006 +0000
11.2 +++ b/ornamentedobj.h Tue Aug 29 08:31:42 2006 +0000
11.3 @@ -35,6 +35,7 @@
11.4
11.5 virtual void toggleStandardFlag(QString, bool);
11.6 virtual void activateStandardFlag(QString);
11.7 + virtual void deactivateStandardFlag(QString);
11.8 virtual bool isSetStandardFlag(QString);
11.9 virtual QString getSystemFlagName (const QPoint &p);
11.10 virtual bool isActiveFlag(const QString&); // check if flag is set
12.1 --- a/selection.cpp Tue Aug 15 12:01:14 2006 +0000
12.2 +++ b/selection.cpp Tue Aug 29 08:31:42 2006 +0000
12.3 @@ -5,21 +5,19 @@
12.4 {
12.5 }
12.6
12.7 -Selection::Selection(const Selection &other)
12.8 -{
12.9 -}
12.10 -
12.11 Selection::~Selection()
12.12 {
12.13 }
12.14
12.15 -void Selection::init()
12.16 +void Selection::setMapCenter(MapCenterObj *mco)
12.17 {
12.18 - selectList.setAutoDelete(true);
12.19 + mapCenter=mco;
12.20 }
12.21
12.22 void Selection::copy(const Selection &other)
12.23 {
12.24 + mapCenter=other.mapCenter;
12.25 + selectList=other.selectList;
12.26 }
12.27
12.28 void Selection::clear()
12.29 @@ -29,11 +27,29 @@
12.30
12.31 bool Selection::select(LinkableMapObj *lmo)
12.32 {
12.33 + clear();
12.34 + selectList.append (lmo);
12.35 return false;
12.36 }
12.37
12.38 -void Selection::unselect(LinkableMapObj *lmo)
12.39 +bool Selection::select (const QString &s)
12.40 {
12.41 + LinkableMapObj *lmo=mapCenter->findObjBySelect(s);
12.42 +
12.43 + // Finally select the found object
12.44 + if (lmo)
12.45 + {
12.46 + clear();
12.47 + select (lmo);
12.48 + return true;
12.49 + }
12.50 + return false;
12.51 +
12.52 +}
12.53 +
12.54 +void Selection::unselect()
12.55 +{
12.56 + clear();
12.57 }
12.58
12.59 bool Selection::isEmpty()
12.60 @@ -45,3 +61,14 @@
12.61 {
12.62 return selectList.count();
12.63 }
12.64 +
12.65 +QString Selection::getSelectString()
12.66 +{
12.67 + // TODO multiselection (maybe separated by ";")
12.68 + if (selectList.count()==1)
12.69 + return selectList.first()->getSelectString();
12.70 + else
12.71 + return"";
12.72 +}
12.73 +
12.74 +
13.1 --- a/selection.h Tue Aug 15 12:01:14 2006 +0000
13.2 +++ b/selection.h Tue Aug 29 08:31:42 2006 +0000
13.3 @@ -1,26 +1,32 @@
13.4 -#ifndef SELECTIONOBJ_H
13.5 -#define SELECTIONOBJ_H
13.6 +#ifndef SELECTION_H
13.7 +#define SELECTION_H
13.8 +
13.9 +#include <q3ptrlist.h>
13.10
13.11 #include "linkablemapobj.h"
13.12 -#include <q3ptrlist.h>
13.13 +#include "mapcenterobj.h"
13.14
13.15 class Selection
13.16 {
13.17 public:
13.18 Selection ();
13.19 - Selection (const Selection&);
13.20 ~Selection();
13.21 - void init();
13.22 void copy(const Selection&);
13.23 void clear();
13.24 + void setMapCenter (MapCenterObj *);
13.25
13.26 bool select (LinkableMapObj*);
13.27 - void unselect (LinkableMapObj*);
13.28 + bool select (const QString &);
13.29 + void unselect ();
13.30 bool isEmpty();
13.31 uint count();
13.32
13.33 + QString getSelectString();
13.34 +
13.35 private:
13.36 - Q3PtrList <LinkableMapObj> selectList;
13.37 + void init();
13.38 + QList <LinkableMapObj*> selectList;
13.39 + MapCenterObj *mapCenter;
13.40 };
13.41 #endif
13.42
14.1 --- a/settings.cpp Tue Aug 15 12:01:14 2006 +0000
14.2 +++ b/settings.cpp Tue Aug 29 08:31:42 2006 +0000
14.3 @@ -61,6 +61,7 @@
14.4 qWarning ("SimpleSettings::writeSettings() Couldn't write "+path);
14.5 }
14.6
14.7 +/*
14.8 QString SimpleSettings::readEntry (const QString &key)
14.9 {
14.10 QStringList::Iterator itk=keylist.begin();
14.11 @@ -77,6 +78,46 @@
14.12 qWarning ("SimpleSettings::readEntry() Couldn't find key "+key);
14.13 return "";
14.14 }
14.15 +*/
14.16 +
14.17 +QString SimpleSettings::readEntry (const QString &key, const QString &def)
14.18 +{
14.19 + QStringList::Iterator itk=keylist.begin();
14.20 + QStringList::Iterator itv=valuelist.begin();
14.21 +
14.22 + // First search for value in settings saved in map
14.23 + while (itk !=keylist.end() )
14.24 + {
14.25 + if (*itk == key)
14.26 + return *itv;
14.27 + itk++;
14.28 + itv++;
14.29 + }
14.30 + return def;
14.31 +}
14.32 +
14.33 +int SimpleSettings::readNumEntry (const QString &key, int def)
14.34 +{
14.35 + QStringList::Iterator itk=keylist.begin();
14.36 + QStringList::Iterator itv=valuelist.begin();
14.37 +
14.38 + // First search for value in settings saved in map
14.39 + while (itk !=keylist.end() )
14.40 + {
14.41 + if (*itk == key)
14.42 + {
14.43 + bool ok;
14.44 + int i=(*itv).toInt(&ok,10);
14.45 + if (ok)
14.46 + return i;
14.47 + else
14.48 + return def;
14.49 + }
14.50 + itk++;
14.51 + itv++;
14.52 + }
14.53 + return def;
14.54 +}
14.55
14.56 void SimpleSettings::setEntry (const QString &key, const QString &value)
14.57 {
15.1 --- a/settings.h Tue Aug 15 12:01:14 2006 +0000
15.2 +++ b/settings.h Tue Aug 29 08:31:42 2006 +0000
15.3 @@ -18,7 +18,8 @@
15.4 void clear();
15.5 void readSettings(const QString &);
15.6 void writeSettings(const QString &);
15.7 - QString readEntry (const QString &);
15.8 + QString readEntry (const QString &key, const QString &def=QString());
15.9 + int readNumEntry (const QString &, int=0);
15.10 void setEntry (const QString &,const QString &);
15.11 private:
15.12 QStringList keylist;
16.1 --- a/version.h Tue Aug 15 12:01:14 2006 +0000
16.2 +++ b/version.h Tue Aug 29 08:31:42 2006 +0000
16.3 @@ -2,7 +2,7 @@
16.4 #define VERSION_H
16.5
16.6 #define __VYM "VYM"
16.7 -#define __VYM_VERSION "1.8.52"
16.8 -#define __BUILD_DATE "August 15, 2006"
16.9 +#define __VYM_VERSION "1.8.53"
16.10 +#define __BUILD_DATE "August 23, 2006"
16.11
16.12 #endif