mainwindow.cpp
changeset 474 d9add21ee9d3
parent 450 beb875135811
child 486 9c86935835a4
     1.1 --- a/mainwindow.cpp	Wed Apr 11 09:21:14 2007 +0000
     1.2 +++ b/mainwindow.cpp	Wed Apr 25 16:02:54 2007 +0000
     1.3 @@ -98,6 +98,9 @@
     1.4  	// Initialize properties window
     1.5  	branchPropertyWindow = new BranchPropertyWindow();
     1.6  	branchPropertyWindow->move (20,20);
     1.7 +	branchPropertyWindow->resize (settings.value( "/branchpropertywindow/geometry/size",QSize (150,100)).toSize());
     1.8 +	branchPropertyWindow->move   (settings.value( "/branchpropertywindow/geometry/pos", QPoint(20,20)).toPoint());
     1.9 +
    1.10  
    1.11  	// Initialize script editor
    1.12  	scriptEditor = new SimpleScriptEditor();
    1.13 @@ -201,12 +204,12 @@
    1.14  	settings.setValue( "/mapeditor/editmode/useFlagGroups",actionSettingsUseFlagGroups->isOn() );
    1.15  	settings.setValue( "/export/useHideExport",actionSettingsUseHideExport->isOn() );
    1.16  
    1.17 -	//FIXME save branchPropWindow settings
    1.18 -	//FIXME save scriptEditor settings
    1.19 +	//TODO save scriptEditor settings
    1.20  
    1.21  	// call the destructors
    1.22  	delete textEditor;
    1.23  	delete historyWindow;
    1.24 +	delete branchPropertyWindow;
    1.25  
    1.26  	// Remove temporary directory
    1.27  	removeDir (QDir(tmpVymDir));
    1.28 @@ -361,7 +364,7 @@
    1.29  
    1.30      a = new QAction( QPixmap(iconPath+"fileclose.png"), tr( "&Close Map","File menu" ), this);
    1.31  	a->setStatusTip (tr( "Close Map" ) );
    1.32 -	a->setShortcut (Qt::ALT + Qt::Key_C );			//Close map
    1.33 +	a->setShortcut (Qt::CTRL + Qt::Key_W );			//Close map
    1.34  	fileMenu->addAction (a);
    1.35      connect( a, SIGNAL( triggered() ), this, SLOT( fileCloseMap() ) );
    1.36  
    1.37 @@ -580,10 +583,10 @@
    1.38  	addAction (alt);
    1.39  	actionListBranches.append(actionEditToggleScroll);
    1.40  	
    1.41 -    a = new QAction( tr( "Unscroll all scrolled branches","Edit menu" ), this);
    1.42 -	a->setStatusTip (tr( "Unscroll all" ));
    1.43 +    a = new QAction( tr( "Unscroll childs","Edit menu" ), this);
    1.44 +	a->setStatusTip (tr( "Unscroll all scrolled branches in selected subtree" ));
    1.45  	editMenu->addAction (a);
    1.46 -    connect( a, SIGNAL( triggered() ), this, SLOT( editUnScrollAll() ) );
    1.47 +    connect( a, SIGNAL( triggered() ), this, SLOT( editUnscrollChilds() ) );
    1.48  	
    1.49  	editMenu->addSeparator();
    1.50  
    1.51 @@ -785,13 +788,13 @@
    1.52      connect( a, SIGNAL( triggered() ), this, SLOT( editLoadImage() ) );
    1.53  	actionEditLoadImage=a;
    1.54  
    1.55 -    a = new QAction( tr( "Property Dialog","Dialog to edit properties of selection" )+QString ("..."), this);
    1.56 +    a = new QAction( tr( "Property window","Dialog to edit properties of selection" )+QString ("..."), this);
    1.57  	a->setStatusTip (tr( "Set properties for selection" ));
    1.58  	a->setShortcut ( Qt::CTRL + Qt::Key_I );		//Property window
    1.59  	a->setShortcutContext (Qt::WindowShortcut);
    1.60  	addAction (a);
    1.61 -    connect( a, SIGNAL( triggered() ), this, SLOT( showPropertyDialog() ) );
    1.62 -	actionTogglePropertyDialog=a;
    1.63 +    connect( a, SIGNAL( triggered() ), this, SLOT( windowToggleProperty() ) );
    1.64 +	actionTogglePropertyWindow=a;
    1.65  }
    1.66  
    1.67  // Format Actions
    1.68 @@ -869,18 +872,6 @@
    1.69  	formatMenu->addAction (a);
    1.70  	actionFormatLinkStylePolyParabel=a;
    1.71  	
    1.72 -    a = new QAction( tr( "Include images vertically","Branch attribute" ),  this);
    1.73 -	a->setStatusTip ( tr ("Include top and bottom position of images into branch"));
    1.74 -	a->setToggleAction(true);
    1.75 -    connect( a, SIGNAL( triggered() ), this, SLOT( formatIncludeImagesVer() ) );
    1.76 -	actionFormatIncludeImagesVer=a;
    1.77 -
    1.78 -    a = new QAction( tr( "Include images horizontally","Branch attribute" ),  this);
    1.79 -	a->setStatusTip ( tr ("Include left and right position of images into branch"));
    1.80 -	a->setToggleAction(true);
    1.81 -    connect( a, SIGNAL( triggered() ), this, SLOT( formatIncludeImagesHor() ) );
    1.82 -	actionFormatIncludeImagesHor=a;
    1.83 -
    1.84      a = new QAction( tr( "Hide link if object is not selected","Branch attribute" ), this);
    1.85  	a->setStatusTip (tr( "Hide link" ));
    1.86  	a->setToggleAction(true);
    1.87 @@ -974,7 +965,7 @@
    1.88      connect( a, SIGNAL( triggered() ), this, SLOT(windowToggleHistory() ) );
    1.89  	actionViewToggleHistoryWindow=a;
    1.90  
    1.91 -	viewMenu->addAction (actionTogglePropertyDialog );
    1.92 +	viewMenu->addAction (actionTogglePropertyWindow);
    1.93  
    1.94      a = new QAction(tr( "Antialiasing","View action" ),this );
    1.95  	a->setStatusTip ( tr( "Antialiasing" ));
    1.96 @@ -992,13 +983,13 @@
    1.97      connect( a, SIGNAL( triggered() ), this, SLOT(windowToggleSmoothPixmap() ) );
    1.98  	actionViewToggleSmoothPixmapTransform=a;
    1.99  
   1.100 -    a = new QAction(tr( "Next Window","View action" ), this);
   1.101 +    a = new QAction(tr( "Next Map","View action" ), this);
   1.102  	a->setStatusTip (a->text());
   1.103  	a->setShortcut (Qt::ALT + Qt::Key_N );
   1.104  	viewMenu->addAction (a);
   1.105      connect( a, SIGNAL( triggered() ), this, SLOT(windowNextEditor() ) );
   1.106  
   1.107 -    a = new QAction (tr( "Previous Window","View action" ), this );
   1.108 +    a = new QAction (tr( "Previous Map","View action" ), this );
   1.109  	a->setStatusTip (a->text());
   1.110  	a->setShortcut (Qt::ALT + Qt::Key_P );
   1.111  	viewMenu->addAction (a);
   1.112 @@ -1375,12 +1366,34 @@
   1.113      connect( a, SIGNAL( triggered() ), this, SLOT( settingsURL() ) );
   1.114  	settingsMenu->addAction (a);
   1.115  
   1.116 -    a = new QAction( tr( "Set path for macros","Settings action"), this);
   1.117 +    a = new QAction( tr( "Set path for macros","Settings action")+"...", this);
   1.118      a->setStatusTip( tr( "Set path for macros"));
   1.119      connect( a, SIGNAL( triggered() ), this, SLOT( settingsMacroDir() ) );
   1.120  	settingsMenu->addAction (a);
   1.121  
   1.122 +    a = new QAction( tr( "Set number of undo levels","Settings action")+"...", this);
   1.123 +    a->setStatusTip( tr( "Set number of undo levels"));
   1.124 +    connect( a, SIGNAL( triggered() ), this, SLOT( settingsUndoLevels() ) );
   1.125 +	settingsMenu->addAction (a);
   1.126 +
   1.127  	settingsMenu->addSeparator();
   1.128 +
   1.129 +    a = new QAction( tr( "Autosave","Settings action"), this);
   1.130 +    a->setStatusTip( tr( "Autosave"));
   1.131 +	a->setToggleAction(true);
   1.132 +	a->setOn ( settings.value ("/mapeditor/autosave/use",true).toBool());
   1.133 +    connect( a, SIGNAL( triggered() ), this, SLOT( settingsAutosaveToggle() ) );
   1.134 +	settingsMenu->addAction (a);
   1.135 +	actionSettingsAutosaveToggle=a;
   1.136 +
   1.137 +    a = new QAction( tr( "Autosave time","Settings action")+"...", this);
   1.138 +    a->setStatusTip( tr( "Autosave time"));
   1.139 +    connect( a, SIGNAL( triggered() ), this, SLOT( settingsAutosaveTime() ) );
   1.140 +	settingsMenu->addAction (a);
   1.141 +	actionSettingsAutosaveTime=a;
   1.142 +
   1.143 +	settingsMenu->addSeparator();
   1.144 +
   1.145      a = new QAction( tr( "Edit branch after adding it","Settings action" ), this );
   1.146      a->setStatusTip( tr( "Edit branch after adding it" ));
   1.147  	a->setToggleAction(true);
   1.148 @@ -1472,7 +1485,7 @@
   1.149  
   1.150  	// Context Menu for branch or mapcenter
   1.151  	branchContextMenu =new QMenu (this);
   1.152 -	branchContextMenu->addAction (actionTogglePropertyDialog);
   1.153 +	branchContextMenu->addAction (actionTogglePropertyWindow);
   1.154  	branchContextMenu->addSeparator();	
   1.155  
   1.156  		// Submenu "Add"
   1.157 @@ -1498,14 +1511,12 @@
   1.158  
   1.159  	branchContextMenu->addSeparator();	
   1.160  	branchContextMenu->addAction ( actionEditLoadImage);
   1.161 -	branchContextMenu->addAction ( actionFormatIncludeImagesVer );
   1.162 -	branchContextMenu->addAction ( actionFormatIncludeImagesHor );
   1.163  
   1.164  	// Submenu for Links (URLs, vymLinks)
   1.165  	branchLinksContextMenu =new QMenu (this);
   1.166  
   1.167  		branchContextMenu->addSeparator();	
   1.168 -		branchLinksContextMenu=branchContextMenu->addMenu(tr("URLs and vymLinks","Context menu name"));	
   1.169 +		branchLinksContextMenu=branchContextMenu->addMenu(tr("References (URLs, vymLinks, ...)","Context menu name"));	
   1.170  		branchLinksContextMenu->addAction ( actionEditOpenURL );
   1.171  		branchLinksContextMenu->addAction ( actionEditOpenURLTab );
   1.172  		branchLinksContextMenu->addAction ( actionEditOpenMultipleURLTabs );
   1.173 @@ -1677,9 +1688,8 @@
   1.174  {
   1.175  	// Unselect all possibly selected objects
   1.176  	// (Important to update note editor)
   1.177 -	int i;
   1.178  	MapEditor *me;
   1.179 -	for (i=0;i<=tabWidget->count() -1;i++)
   1.180 +	for (int i=0;i<=tabWidget->count() -1;i++)
   1.181  	{
   1.182  		
   1.183  		me=(MapEditor*)tabWidget->page(i);
   1.184 @@ -1972,7 +1982,7 @@
   1.185  	setupRecentMapsMenu();
   1.186  }
   1.187  
   1.188 -void Main::fileSave(const SaveMode &savemode)
   1.189 +void Main::fileSave(MapEditor *me, const SaveMode &savemode)
   1.190  {
   1.191  	// tmp dir for zipping 
   1.192  	QString tmpMapDir;
   1.193 @@ -1982,13 +1992,12 @@
   1.194  	
   1.195  	QString safeFilePath;
   1.196  
   1.197 -	bool saveZipped=currentMapEditor()->saveZipped();
   1.198 -
   1.199 -	MapEditor *	me=currentMapEditor();
   1.200 +	bool saveZipped=me->saveZipped();
   1.201 +
   1.202  	if (me)
   1.203  	{
   1.204  		QString fn=me->getFilePath();
   1.205 -		// filename=unnamed, filepath="" in constructor...
   1.206 +		// filename=unnamed, filepath="" in constructor of mapEditor
   1.207  		if ( !fn.isEmpty() ) 
   1.208  		{	
   1.209  			// We have a filepath, go on saving			
   1.210 @@ -2067,6 +2076,8 @@
   1.211  			// We have  no filepath yet,
   1.212  			// call fileSaveAs() now, this will call fileSave() 
   1.213  			// again.
   1.214 +			// First switch to editor
   1.215 +			tabWidget->setCurrentWidget (me);
   1.216  			fileSaveAs(savemode);
   1.217  		}
   1.218      }
   1.219 @@ -2089,7 +2100,12 @@
   1.220  
   1.221  void Main::fileSave()
   1.222  {
   1.223 -	fileSave (CompleteMap);
   1.224 +	fileSave (currentMapEditor(), CompleteMap);
   1.225 +}
   1.226 +
   1.227 +void Main::fileSave(MapEditor *me)
   1.228 +{
   1.229 +	fileSave (me,CompleteMap);
   1.230  }
   1.231  
   1.232  void Main::fileSaveAs(const SaveMode& savemode)
   1.233 @@ -2145,7 +2161,7 @@
   1.234  
   1.235  			// Save now
   1.236  			currentMapEditor()->setFilePath(fn);
   1.237 -			fileSave(savemode);
   1.238 +			fileSave(currentMapEditor(), savemode);
   1.239  
   1.240  			// Set name of tab
   1.241  			if (savemode==CompleteMap)
   1.242 @@ -2415,7 +2431,7 @@
   1.243  			{
   1.244  				case QMessageBox::Yes:
   1.245  					// save and close
   1.246 -					fileSave(CompleteMap);
   1.247 +					fileSave(currentMapEditor(), CompleteMap);
   1.248  					break;
   1.249  				case QMessageBox::No:
   1.250  				// close  without saving
   1.251 @@ -2466,7 +2482,7 @@
   1.252  			switch( mb.exec() ) {
   1.253  				case QMessageBox::Yes:
   1.254  					// save (the changed editors) and exit
   1.255 -					fileSave(CompleteMap);
   1.256 +					fileSave(currentMapEditor(), CompleteMap);
   1.257  					break;
   1.258  				case QMessageBox::No:
   1.259  					// exit without saving
   1.260 @@ -2846,7 +2862,7 @@
   1.261  	}	
   1.262  }
   1.263  
   1.264 -void Main::editUnScrollAll()
   1.265 +void Main::editUnscrollChilds()
   1.266  {
   1.267  	if (currentMapEditor())
   1.268  		currentMapEditor()->unscrollChilds();	
   1.269 @@ -3124,18 +3140,6 @@
   1.270  }
   1.271  
   1.272  
   1.273 -void Main::formatIncludeImagesVer()
   1.274 -{
   1.275 -	if (currentMapEditor())
   1.276 -		currentMapEditor()->setIncludeImagesVer(actionFormatIncludeImagesVer->isOn());
   1.277 -}
   1.278 -
   1.279 -void Main::formatIncludeImagesHor()
   1.280 -{
   1.281 -	if (currentMapEditor())
   1.282 -		currentMapEditor()->setIncludeImagesHor(actionFormatIncludeImagesHor->isOn());
   1.283 -}
   1.284 -
   1.285  void Main::formatHideLinkUnselected()	//FIXME get rid of this with imagepropertydialog
   1.286  {
   1.287  	if (currentMapEditor())
   1.288 @@ -3213,6 +3217,39 @@
   1.289  		settings.setValue ("/macros/macroDir",dir.path());
   1.290  }
   1.291  
   1.292 +void Main::settingsUndoLevels()
   1.293 +{
   1.294 +	bool ok;
   1.295 +	int i = QInputDialog::getInteger(
   1.296 +		this, 
   1.297 +		tr("QInputDialog::getInteger()"),
   1.298 +	    tr("Number of undo/redo levels:"), settings.value("/mapeditor/stepsTotal").toInt(), 0, 1000, 1, &ok);
   1.299 +	if (ok)
   1.300 +	{
   1.301 +		settings.setValue ("/mapeditor/stepsTotal",i);
   1.302 +		QMessageBox::information( this, tr( "VYM -Information:" ),
   1.303 +		   tr("Settings have been changed. The next map opened will have \"%1\" undo/redo levels").arg(i)); 
   1.304 +   }	
   1.305 +}
   1.306 +
   1.307 +void Main::settingsAutosaveToggle()
   1.308 +{
   1.309 +	settings.setValue ("/mapeditor/autosave/used",actionSettingsAutosaveToggle->isOn() );
   1.310 +}
   1.311 +
   1.312 +void Main::settingsAutosaveTime()
   1.313 +{
   1.314 +	bool ok;
   1.315 +	int i = QInputDialog::getInteger(
   1.316 +		this, 
   1.317 +		tr("QInputDialog::getInteger()"),
   1.318 +	    tr("Number of seconds before autosave:"), settings.value("/mapeditor/autosave/ms").toInt() / 1000, 10, 10000, 1, &ok);
   1.319 +	if (ok)
   1.320 +	{
   1.321 +		settings.setValue ("/mapeditor/autosave/ms",i * 1000);
   1.322 +    }	
   1.323 +}
   1.324 +
   1.325  void Main::settingsToggleDelKey()
   1.326  {
   1.327  	if (actionSettingsUseDelKey->isOn())
   1.328 @@ -3241,6 +3278,27 @@
   1.329  
   1.330  }
   1.331  
   1.332 +void Main::windowToggleProperty()
   1.333 +{
   1.334 +	if (branchPropertyWindow->isVisible())
   1.335 +		branchPropertyWindow->hide();
   1.336 +	else	
   1.337 +		branchPropertyWindow->show();
   1.338 +	if(currentMapEditor())
   1.339 +	{
   1.340 +		LinkableMapObj *sel=currentMapEditor()->getSelection();
   1.341 +		if (sel && (typeid(*sel) == typeid(BranchObj) ||
   1.342 +		           typeid(*sel) == typeid(MapCenterObj)))
   1.343 +		{
   1.344 +			branchPropertyWindow->setMapEditor(currentMapEditor());
   1.345 +			branchPropertyWindow->setBranch((BranchObj*)sel);
   1.346 +			return;
   1.347 +		}
   1.348 +		
   1.349 +	}	
   1.350 +	branchPropertyWindow->setBranch(NULL);
   1.351 +}
   1.352 +
   1.353  void Main::windowToggleAntiAlias()
   1.354  {
   1.355  	bool b=actionViewToggleAntiAlias->isOn();
   1.356 @@ -3293,23 +3351,23 @@
   1.357  	actionViewToggleNoteEditor->setOn (textEditor->showWithMain());
   1.358  	actionViewToggleHistoryWindow->setOn (historyWindow->showWithMain());
   1.359  
   1.360 -	if (me->getMapLinkColorHint()==HeadingColor) 
   1.361 +	if (me->getMapLinkColorHint()==LinkableMapObj::HeadingColor) 
   1.362  		actionFormatLinkColorHint->setOn(true);
   1.363  	else	
   1.364  		actionFormatLinkColorHint->setOn(false);
   1.365  
   1.366  	switch (me->getMapLinkStyle())
   1.367  	{
   1.368 -		case StyleLine: 
   1.369 +		case LinkableMapObj::Line: 
   1.370  			actionFormatLinkStyleLine->setOn(true);
   1.371  			break;
   1.372 -		case StyleParabel:
   1.373 +		case LinkableMapObj::Parabel:
   1.374  			actionFormatLinkStyleParabel->setOn(true);
   1.375  			break;
   1.376 -		case StylePolyLine:	
   1.377 +		case LinkableMapObj::PolyLine:	
   1.378  			actionFormatLinkStylePolyLine->setOn(true);
   1.379  			break;
   1.380 -		case StylePolyParabel:	
   1.381 +		case LinkableMapObj::PolyParabel:	
   1.382  			actionFormatLinkStylePolyParabel->setOn(true);
   1.383  			break;
   1.384  		default:
   1.385 @@ -3419,10 +3477,6 @@
   1.386  			for (int i=0; i<actionListBranches.size(); ++i)	
   1.387  				actionListBranches.at(i)->setEnabled(true);
   1.388  			actionEditDelete->setEnabled (true);
   1.389 -			actionFormatIncludeImagesVer->setOn
   1.390 -				( ((BranchObj*)selection)->getIncludeImagesVer());
   1.391 -			actionFormatIncludeImagesHor->setOn
   1.392 -				( ((BranchObj*)selection)->getIncludeImagesHor());
   1.393  			actionFormatHideLinkUnselected->setOn
   1.394  				(selection->getHideLinkUnselected());
   1.395  		}
   1.396 @@ -3469,7 +3523,7 @@
   1.397  	}	
   1.398  }
   1.399  
   1.400 -ModMode Main::getModMode()
   1.401 +Main::ModMode Main::getModMode()
   1.402  {
   1.403  	if (actionModModeColor->isOn()) return ModModeColor;
   1.404  	if (actionModModeCopy->isOn()) return ModModeCopy;
   1.405 @@ -3517,24 +3571,6 @@
   1.406  		currentMapEditor()->runScript (script);
   1.407  }
   1.408  
   1.409 -void Main::showPropertyDialog()
   1.410 -{
   1.411 -	if(currentMapEditor())
   1.412 -	{
   1.413 -		LinkableMapObj *sel=currentMapEditor()->getSelection();
   1.414 -		if (sel && (typeid(*sel) == typeid(BranchObj) ||
   1.415 -		           typeid(*sel) == typeid(MapCenterObj)))
   1.416 -		{
   1.417 -			branchPropertyWindow->show();
   1.418 -			branchPropertyWindow->setMapEditor(currentMapEditor());
   1.419 -			branchPropertyWindow->setBranch((BranchObj*)sel);
   1.420 -			return;
   1.421 -		}
   1.422 -		
   1.423 -	}	
   1.424 -	branchPropertyWindow->setBranch(NULL);
   1.425 -}
   1.426 -
   1.427  void Main::windowNextEditor()
   1.428  {
   1.429  	if (tabWidget->currentPageIndex() < tabWidget->count())