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 for (vector<SPDesktopWidget*>::iterator it = dtws.begin(); it != dtws.end(); ++it) {
62 SPDesktopWidget* dtw = *it;
63 if (dtw->desktop == dt) {
64 if (val == 0) {
65 dtw->setToolboxPosition("ToolToolbar", GTK_POS_LEFT);
66 dtw->setToolboxPosition("CommandsToolbar", GTK_POS_TOP);
67 dtw->setToolboxPosition("SnapToolbar", GTK_POS_TOP);
68 // for now skip "AuxToolbar";
69 } else {
70 dtw->setToolboxPosition("ToolToolbar", GTK_POS_TOP);
71 dtw->setToolboxPosition("CommandsToolbar", GTK_POS_LEFT);
72 dtw->setToolboxPosition("SnapToolbar", GTK_POS_RIGHT);
73 // for now skip "AuxToolbar";
74 }
75 break;
76 }
77 }
78 }
81 void UXManager::addTrack( SPDesktopWidget* dtw )
82 {
83 if (std::find(dtws.begin(), dtws.end(), dtw) == dtws.end()) {
84 dtws.push_back(dtw);
85 }
86 }
88 void UXManager::delTrack( SPDesktopWidget* dtw )
89 {
90 vector<SPDesktopWidget*>::iterator iter = std::find(dtws.begin(), dtws.end(), dtw);
91 if (iter != dtws.end()) {
92 dtws.erase(iter);
93 }
94 }
96 void UXManager::connectToDesktop( vector<GtkWidget *> const & toolboxes, SPDesktop *desktop )
97 {
98 //static map<SPDesktop*, vector<GtkWidget*> > trackedBoxes;
100 for (vector<GtkWidget*>::const_iterator it = toolboxes.begin(); it != toolboxes.end(); ++it ) {
101 GtkWidget* toolbox = *it;
103 ToolboxFactory::setToolboxDesktop( toolbox, desktop );
104 vector<GtkWidget*>& tracked = trackedBoxes[desktop];
105 if (find(tracked.begin(), tracked.end(), toolbox) == tracked.end()) {
106 tracked.push_back(toolbox);
107 }
108 }
110 if (std::find(desktops.begin(), desktops.end(), desktop) == desktops.end()) {
111 desktops.push_back(desktop);
112 }
113 }
116 } // namespace UI
117 } // namespace Inkscape
119 /*
120 Local Variables:
121 mode:c++
122 c-file-style:"stroustrup"
123 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
124 indent-tabs-mode:nil
125 fill-column:99
126 End:
127 */
128 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :