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 }
109 }
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 :