From 7d549f19e53f6bb1b157f04a1cffb69d8f910ec5 Mon Sep 17 00:00:00 2001 From: "Jon A. Cruz" Date: Sun, 10 Jan 2010 03:22:05 -0800 Subject: Completed base code to flip toolbox orientation. Basic integration of task switching control. (bzr r8963) --- src/ui/uxmanager.cpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 59 insertions(+), 3 deletions(-) (limited to 'src/ui/uxmanager.cpp') 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 + #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 desktops; +static vector dtws; +static map > 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::iterator it = dtws.begin(); it != dtws.end(); ++it) { + if ((*it)->desktop == dt) { + vector& boxes = trackedBoxes[dt]; + for (vector::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 const & toolboxes, SPDesktop *desktop ) +void UXManager::addTrack( SPDesktopWidget* dtw ) { - for (std::vector::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::iterator iter = std::find(dtws.begin(), dtws.end(), dtw); + if (iter != dtws.end()) { + dtws.erase(iter); + } +} + +void UXManager::connectToDesktop( vector const & toolboxes, SPDesktop *desktop ) +{ +//static map > trackedBoxes; + + for (vector::const_iterator it = toolboxes.begin(); it != toolboxes.end(); ++it ) { + GtkWidget* toolbox = *it; + ToolboxFactory::setToolboxDesktop( toolbox, desktop ); + + vector& 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); } } -- cgit v1.2.3