summaryrefslogtreecommitdiffstats
path: root/src/ui/uxmanager.cpp
diff options
context:
space:
mode:
authorJon A. Cruz <jon@joncruz.org>2010-01-10 11:22:05 +0000
committerJon A. Cruz <jon@joncruz.org>2010-01-10 11:22:05 +0000
commit7d549f19e53f6bb1b157f04a1cffb69d8f910ec5 (patch)
tree30b3624b86b22bb8422852d1508a0386367c015c /src/ui/uxmanager.cpp
parentAvoid crash by uninitialized perspectives. (diff)
downloadinkscape-7d549f19e53f6bb1b157f04a1cffb69d8f910ec5.tar.gz
inkscape-7d549f19e53f6bb1b157f04a1cffb69d8f910ec5.zip
Completed base code to flip toolbox orientation.
Basic integration of task switching control. (bzr r8963)
Diffstat (limited to 'src/ui/uxmanager.cpp')
-rw-r--r--src/ui/uxmanager.cpp62
1 files changed, 59 insertions, 3 deletions
diff --git a/src/ui/uxmanager.cpp b/src/ui/uxmanager.cpp
index d152e473e..48ff9dca0 100644
--- a/src/ui/uxmanager.cpp
+++ b/src/ui/uxmanager.cpp
@@ -13,9 +13,21 @@
# include "config.h"
#endif
+#include <algorithm>
+
#include "uxmanager.h"
#include "util/ege-tags.h"
#include "widgets/toolbox.h"
+#include "widgets/desktop-widget.h"
+
+using std::map;
+using std::vector;
+
+static vector<SPDesktop*> desktops;
+static vector<SPDesktopWidget*> dtws;
+static map<SPDesktop*, vector<GtkWidget*> > trackedBoxes;
+
+
namespace Inkscape {
namespace UI {
@@ -44,11 +56,55 @@ UXManager::~UXManager()
{
}
+void UXManager::setTask(SPDesktop* dt, gint val)
+{
+ GtkOrientation orientation = (val == 0)? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL;
+ for (vector<SPDesktopWidget*>::iterator it = dtws.begin(); it != dtws.end(); ++it) {
+ if ((*it)->desktop == dt) {
+ vector<GtkWidget*>& boxes = trackedBoxes[dt];
+ for (vector<GtkWidget*>::iterator it2 = boxes.begin(); it2 != boxes.end(); ++it2) {
+ gint id = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(*it2), "BarIdValue"));
+ if (id != 1) {
+ //ToolboxFactory::setOrientation(*it2, orientation);
+ }
+ }
+ break;
+ }
+ }
+}
+
-void UXManager::connectToDesktop( std::vector<GtkWidget *> const & toolboxes, SPDesktop *desktop )
+void UXManager::addTrack( SPDesktopWidget* dtw )
{
- for (std::vector<GtkWidget*>::const_iterator it = toolboxes.begin(); it != toolboxes.end(); ++it ) {
- ToolboxFactory::setToolboxDesktop( *it, desktop );
+ if (std::find(dtws.begin(), dtws.end(), dtw) == dtws.end()) {
+ dtws.push_back(dtw);
+ }
+}
+
+void UXManager::delTrack( SPDesktopWidget* dtw )
+{
+ vector<SPDesktopWidget*>::iterator iter = std::find(dtws.begin(), dtws.end(), dtw);
+ if (iter != dtws.end()) {
+ dtws.erase(iter);
+ }
+}
+
+void UXManager::connectToDesktop( vector<GtkWidget *> const & toolboxes, SPDesktop *desktop )
+{
+//static map<SPDesktop*, vector<GtkWidget*> > trackedBoxes;
+
+ for (vector<GtkWidget*>::const_iterator it = toolboxes.begin(); it != toolboxes.end(); ++it ) {
+ GtkWidget* toolbox = *it;
+ ToolboxFactory::setToolboxDesktop( toolbox, desktop );
+
+ vector<GtkWidget*>& tracked = trackedBoxes[desktop];
+ if (find(tracked.begin(), tracked.end(), toolbox) == tracked.end()) {
+ tracked.push_back(toolbox);
+ }
+ }
+
+ if (std::find(desktops.begin(), desktops.end(), desktop) == desktops.end()) {
+ desktops.push_back(desktop);
}
}