diff options
| author | Jon A. Cruz <jon@joncruz.org> | 2010-01-10 11:22:05 +0000 |
|---|---|---|
| committer | Jon A. Cruz <jon@joncruz.org> | 2010-01-10 11:22:05 +0000 |
| commit | 7d549f19e53f6bb1b157f04a1cffb69d8f910ec5 (patch) | |
| tree | 30b3624b86b22bb8422852d1508a0386367c015c /src/ui/uxmanager.cpp | |
| parent | Avoid crash by uninitialized perspectives. (diff) | |
| download | inkscape-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.cpp | 62 |
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); } } |
