Code

Completed base code to flip toolbox orientation.
[inkscape.git] / src / ui / uxmanager.cpp
1 /** \file
2  * Desktop widget implementation
3  */
4 /* Authors:
5  *   Jon A. Cruz <jon@joncruz.org>
6  *
7  * Copyright (C) 2010 Jon A. Cruz
8  *
9  * Released under GNU GPL, read the file 'COPYING' for more information
10  */
12 #ifdef HAVE_CONFIG_H
13 # include "config.h"
14 #endif
16 #include <algorithm>
18 #include "uxmanager.h"
19 #include "util/ege-tags.h"
20 #include "widgets/toolbox.h"
21 #include "widgets/desktop-widget.h"
23 using std::map;
24 using std::vector;
26 static vector<SPDesktop*> desktops;
27 static vector<SPDesktopWidget*> dtws;
28 static map<SPDesktop*, vector<GtkWidget*> > trackedBoxes;
32 namespace Inkscape {
33 namespace UI {
35 UXManager* instance = 0;
37 UXManager* UXManager::getInstance()
38 {
39     if (!instance) {
40         instance = new UXManager();
41     }
42     return instance;
43 }
46 UXManager::UXManager()
47 {
48     ege::TagSet tags;
49     tags.setLang("en");
51     tags.addTag(ege::Tag("General"));
52     tags.addTag(ege::Tag("Icons"));
53 }
55 UXManager::~UXManager()
56 {
57 }
59 void UXManager::setTask(SPDesktop* dt, gint val)
60 {
61     GtkOrientation orientation = (val == 0)? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL;
62     for (vector<SPDesktopWidget*>::iterator it = dtws.begin(); it != dtws.end(); ++it) {
63         if ((*it)->desktop == dt) {
64             vector<GtkWidget*>& boxes = trackedBoxes[dt];
65             for (vector<GtkWidget*>::iterator it2 = boxes.begin(); it2 != boxes.end(); ++it2) {
66                 gint id = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(*it2), "BarIdValue"));
67                 if (id != 1) {
68                     //ToolboxFactory::setOrientation(*it2, orientation);
69                 }
70             }
71             break;
72         }
73     }
74 }
77 void UXManager::addTrack( SPDesktopWidget* dtw )
78 {
79     if (std::find(dtws.begin(), dtws.end(), dtw) == dtws.end()) {
80         dtws.push_back(dtw);
81     }
82 }
84 void UXManager::delTrack( SPDesktopWidget* dtw )
85 {
86     vector<SPDesktopWidget*>::iterator iter = std::find(dtws.begin(), dtws.end(), dtw);
87     if (iter != dtws.end()) {
88         dtws.erase(iter);
89     }
90 }
92 void UXManager::connectToDesktop( vector<GtkWidget *> const & toolboxes, SPDesktop *desktop )
93 {
94 //static map<SPDesktop*, vector<GtkWidget*> > trackedBoxes;
96     for (vector<GtkWidget*>::const_iterator it = toolboxes.begin(); it != toolboxes.end(); ++it ) {
97         GtkWidget* toolbox = *it;
98         ToolboxFactory::setToolboxDesktop( toolbox, desktop );
100         vector<GtkWidget*>& tracked = trackedBoxes[desktop];
101         if (find(tracked.begin(), tracked.end(), toolbox) == tracked.end()) {
102             tracked.push_back(toolbox);
103         }
104     }
106     if (std::find(desktops.begin(), desktops.end(), desktop) == desktops.end()) {
107         desktops.push_back(desktop);
108     }
112 } // namespace UI
113 } // namespace Inkscape
115 /*
116   Local Variables:
117   mode:c++
118   c-file-style:"stroustrup"
119   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
120   indent-tabs-mode:nil
121   fill-column:99
122   End:
123 */
124 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :