src/gui.cpp

changeset 207
e8c47e51e03d
parent 205
d60cf73fb164
child 208
0bb57b81c92a
--- a/src/gui.cpp	Tue May 14 23:05:04 2013 +0300
+++ b/src/gui.cpp	Wed May 15 01:25:04 2013 +0300
@@ -54,6 +54,11 @@
 extern_cfg (float, gl_maincolor_alpha);
 extern_cfg (bool, gl_wireframe);
 
+const char* g_modeActionNames[] = {
+	"modeSelect",
+	"modeDraw"
+};
+
 // =============================================================================
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 // =============================================================================
@@ -115,10 +120,12 @@
 	
 	findAction ("axes")->setCheckable (true);
 	findAction ("axes")->setChecked (gl_axes);
-	
+
 	findAction ("wireframe")->setCheckable (true);
 	findAction ("wireframe")->setChecked (gl_wireframe);
 	
+	updateEditModeActions ();
+	
 	// things not implemented yet
 	findAction ("help")->setEnabled (false);
 	
@@ -187,7 +194,8 @@
 	addMenuAction ("newVertex");			// New Vertex
 	addMenuAction ("newRadial");			// New Radial
 	menu->addSeparator ();					// -----
-	addMenuAction ("draw");				// Draw Mode
+	addMenuAction ("modeSelect");			// Select Mode
+	addMenuAction ("modeDraw");			// Draw Mode
 	
 	// Edit menu
 	initMenu ("&Edit");
@@ -257,7 +265,6 @@
 	addMenuAction ("aboutQt");				// About Qt
 }
 
-
 // =============================================================================
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 // =============================================================================
@@ -373,8 +380,6 @@
 	addToolBar (Qt::RightToolBarArea, m_colorToolBar);
 	
 	// ==========================================
-	// Left area toolbars
-	//g_ToolBarArea = Qt::LeftToolBarArea;
 	initSingleToolBar ("Tools");
 	addToolBarAction ("setColor");
 	addToolBarAction ("invert");
@@ -398,6 +403,13 @@
 	addToolBarAction ("intersector");
 	addToolBarAction ("isecalc");
 	addToolBarAction ("coverer");
+	
+	// ==========================================
+	g_ToolBarArea = Qt::LeftToolBarArea;
+	initSingleToolBar ("Modes");
+	addToolBarAction ("modeSelect");
+	addToolBarAction ("modeDraw");
+	
 	updateToolBars ();
 }
 
@@ -703,21 +715,25 @@
 	const QList<QListWidgetItem*> items = m_objList->selectedItems ();
 	
 	for (LDObject* obj : g_curfile->m_objs)
-	for (QListWidgetItem* qItem : items) {
-		if (qItem == obj->qObjListEntry) {
+	for (QListWidgetItem* item : items) {
+		if (item == obj->qObjListEntry) {
 			m_sel.push_back (obj);
 			break;
 		}
 	}
 	
 	// Update the GL renderer
-	for (LDObject* obj : m_sel)
+	for (LDObject* obj : m_sel) {
+		printf ("recompile %lu\n", obj->getIndex (g_curfile));
 		m_renderer->compileObject (obj);
+	}
 	
-	for (LDObject* obj : priorSelection)
+	for (LDObject* obj : priorSelection) {
+		printf ("recompile %lu\n", obj->getIndex (g_curfile));
 		m_renderer->compileObject (obj);
+	}
 	
-	m_renderer->refresh ();
+	m_renderer->update ();
 }
 
 // =============================================================================
@@ -939,6 +955,22 @@
 }
 
 // ========================================================================================================================================
+void ForgeWindow::updateEditModeActions () {
+	const GL::EditMode mode = R ()->editMode ();
+	const size_t numModeActions = (sizeof g_modeActionNames / sizeof *g_modeActionNames);
+	assert ((size_t) mode < numModeActions);
+	
+	for (size_t i = 0; i < numModeActions; ++i) {
+		QAction* act = findAction (g_modeActionNames[i]);
+		
+		act->setCheckable (true);
+		act->setChecked (i == (size_t) mode);
+	}
+	
+	findAction ("modeDraw")->setEnabled (R ()->camera () != GL::Free);
+}
+
+// ========================================================================================================================================
 void ObjectList::contextMenuEvent (QContextMenuEvent* ev) {
 	g_win->spawnContextMenu (ev->globalPos ());
 }

mercurial