~ubuntu-branches/debian/experimental/inkscape/experimental

« back to all changes in this revision

Viewing changes to src/ui/dialog/dialog-manager.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Thomas Viehmann
  • Date: 2008-09-09 23:29:02 UTC
  • mfrom: (1.1.7 upstream)
  • Revision ID: james.westby@ubuntu.com-20080909232902-c50iujhk1w79u8e7
Tags: 0.46-2.1
* Non-maintainer upload.
* Add upstream patch fixing a crash in the open dialog
  in the zh_CN.utf8 locale. Closes: #487623.
  Thanks to Luca Bruno for the patch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
 * \brief Object for managing a set of dialogs, including their signals and
3
3
 *        construction/caching/destruction of them.
4
4
 *
5
 
 * Author:
 
5
 * Authors:
6
6
 *   Bryce W. Harrington <bryce@bryceharrington.org>
7
7
 *   Jon Phillips <jon@rejon.org>
 
8
 *   Gustav Broberg <broberg@kth.se>
8
9
 *
9
 
 * Copyright (C) 2004, 2005 Authors
 
10
 * Copyright (C) 2004--2007 Authors
10
11
 *
11
12
 * Released under GNU GPL.  Read the file 'COPYING' for more information.
12
13
 */
23
24
#include "ui/dialog/export.h"
24
25
#include "ui/dialog/extension-editor.h"
25
26
#include "ui/dialog/fill-and-stroke.h"
 
27
#include "ui/dialog/filter-effects-dialog.h"
26
28
#include "ui/dialog/find.h"
27
29
#include "ui/dialog/inkscape-preferences.h"
28
30
#include "ui/dialog/layer-editor.h"
 
31
#include "ui/dialog/livepatheffect-editor.h"
29
32
#include "ui/dialog/memory.h"
30
33
#include "ui/dialog/messages.h"
31
34
#include "ui/dialog/scriptdialog.h"
32
35
#include "ui/dialog/text-properties.h"
33
36
#include "ui/dialog/tracedialog.h"
34
37
#include "ui/dialog/transformation.h"
35
 
 
36
 
#ifdef WITH_INKBOARD
37
 
#include "ui/dialog/whiteboard-sharewithchat.h"
38
 
#include "ui/dialog/whiteboard-sharewithuser.h"
39
 
#include "ui/dialog/whiteboard-connect.h"
40
 
#include "ui/dialog/session-player.h"
41
 
#endif
42
 
 
 
38
#include "ui/dialog/undo-history.h"
43
39
#include "ui/dialog/xml-editor.h"
 
40
#include "ui/dialog/panel-dialog.h"
44
41
 
 
42
#include "dialogs/layers-panel.h"
45
43
#include "dialogs/tiledialog.h"
 
44
#include "dialogs/iconpreview.h"
 
45
 
 
46
#include "ui/dialog/floating-behavior.h"
 
47
#include "ui/dialog/dock-behavior.h"
46
48
 
47
49
namespace Inkscape {
48
50
namespace UI {
50
52
 
51
53
namespace {
52
54
 
53
 
template <typename T>
54
 
Dialog *create() { return T::create(); }
 
55
using namespace Behavior;
 
56
 
 
57
template <typename T, typename B>
 
58
inline Dialog *create() { return PanelDialog<B>::template create<T>(); }
55
59
 
56
60
}
57
61
 
76
80
 *
77
81
 */
78
82
DialogManager::DialogManager() {
79
 
    registerFactory("AlignAndDistribute",  &create<AlignAndDistribute>);
80
 
    registerFactory("DocumentMetadata",    &create<DocumentMetadata>);
81
 
    registerFactory("DocumentProperties",  &create<DocumentProperties>);
82
 
    registerFactory("Export",              &create<Export>);
83
 
    registerFactory("ExtensionEditor",     &create<ExtensionEditor>);
84
 
    registerFactory("FillAndStroke",       &create<FillAndStroke>);
85
 
    registerFactory("Find",                &create<Find>);
86
 
    registerFactory("InkscapePreferences", &create<InkscapePreferences>);
87
 
    registerFactory("LayerEditor",         &create<LayerEditor>);
88
 
    registerFactory("Memory",              &create<Memory>);
89
 
    registerFactory("Messages",            &create<Messages>);
90
 
    registerFactory("Script",              &create<ScriptDialog>);
91
 
    registerFactory("TextProperties",      &create<TextProperties>);
92
 
    registerFactory("TileDialog",          &create<TileDialog>);
93
 
    registerFactory("Trace",               &create<TraceDialog>);
94
 
    registerFactory("Transformation",      &create<Transformation>);
95
 
#ifdef WITH_INKBOARD
96
 
        registerFactory("SessionPlayer",       &create<SessionPlaybackDialog>);
97
 
    registerFactory("WhiteboardConnect",   &create<WhiteboardConnectDialog>);
98
 
    registerFactory("WhiteboardShareWithUser",   &create<WhiteboardShareWithUserDialog>);
99
 
    registerFactory("WhiteboardShareWithChat",   &create<WhiteboardShareWithChatroomDialog>);
100
 
#endif
101
 
    registerFactory("XmlEditor",           &create<XmlEditor>);
 
83
 
 
84
    using namespace Behavior;
 
85
    using namespace Inkscape::UI::Dialogs; // temporary
 
86
 
 
87
    int dialogs_type = prefs_get_int_attribute_limited ("options.dialogtype", "value", DOCK, 0, 1);
 
88
 
 
89
    if (dialogs_type == FLOATING) {
 
90
 
 
91
        registerFactory("AlignAndDistribute",  &create<AlignAndDistribute,   FloatingBehavior>);
 
92
        registerFactory("DocumentMetadata",    &create<DocumentMetadata,     FloatingBehavior>);
 
93
        registerFactory("DocumentProperties",  &create<DocumentProperties,   FloatingBehavior>);
 
94
        registerFactory("Export",              &create<Export,               FloatingBehavior>);
 
95
        registerFactory("ExtensionEditor",     &create<ExtensionEditor,      FloatingBehavior>);
 
96
        registerFactory("FillAndStroke",       &create<FillAndStroke,        FloatingBehavior>);
 
97
        registerFactory("FilterEffectsDialog", &create<FilterEffectsDialog,  FloatingBehavior>);
 
98
        registerFactory("Find",                &create<Find,                 FloatingBehavior>);
 
99
        registerFactory("IconPreviewPanel",    &create<IconPreviewPanel,     FloatingBehavior>);
 
100
        registerFactory("InkscapePreferences", &create<InkscapePreferences,  FloatingBehavior>);
 
101
        registerFactory("LayerEditor",         &create<LayerEditor,          FloatingBehavior>);
 
102
        registerFactory("LayersPanel",         &create<LayersPanel,          FloatingBehavior>);
 
103
        registerFactory("LivePathEffect",      &create<LivePathEffectEditor, FloatingBehavior>);
 
104
        registerFactory("Memory",              &create<Memory,               FloatingBehavior>);
 
105
        registerFactory("Messages",            &create<Messages,             FloatingBehavior>);
 
106
        registerFactory("Script",              &create<ScriptDialog,         FloatingBehavior>);
 
107
        registerFactory("Swatches",            &create<SwatchesPanel,        FloatingBehavior>);
 
108
        registerFactory("TextProperties",      &create<TextProperties,       FloatingBehavior>);
 
109
        registerFactory("TileDialog",          &create<TileDialog,           FloatingBehavior>);
 
110
        registerFactory("Trace",               &create<TraceDialog,          FloatingBehavior>);
 
111
        registerFactory("Transformation",      &create<Transformation,       FloatingBehavior>);
 
112
        registerFactory("UndoHistory",         &create<UndoHistory,          FloatingBehavior>);
 
113
        registerFactory("XmlEditor",           &create<XmlEditor,            FloatingBehavior>);
 
114
 
 
115
    } else {
 
116
 
 
117
        registerFactory("AlignAndDistribute",  &create<AlignAndDistribute,   DockBehavior>);
 
118
        registerFactory("DocumentMetadata",    &create<DocumentMetadata,     DockBehavior>);
 
119
        registerFactory("DocumentProperties",  &create<DocumentProperties,   DockBehavior>);
 
120
        registerFactory("Export",              &create<Export,               DockBehavior>);
 
121
        registerFactory("ExtensionEditor",     &create<ExtensionEditor,      DockBehavior>);
 
122
        registerFactory("FillAndStroke",       &create<FillAndStroke,        DockBehavior>);
 
123
        registerFactory("FilterEffectsDialog", &create<FilterEffectsDialog,  DockBehavior>);
 
124
        registerFactory("Find",                &create<Find,                 DockBehavior>);
 
125
        registerFactory("IconPreviewPanel",    &create<IconPreviewPanel,     DockBehavior>);
 
126
        registerFactory("InkscapePreferences", &create<InkscapePreferences,  DockBehavior>);
 
127
        registerFactory("LayerEditor",         &create<LayerEditor,          DockBehavior>);
 
128
        registerFactory("LayersPanel",         &create<LayersPanel,          DockBehavior>);
 
129
        registerFactory("LivePathEffect",      &create<LivePathEffectEditor, DockBehavior>);
 
130
        registerFactory("Memory",              &create<Memory,               DockBehavior>);
 
131
        registerFactory("Messages",            &create<Messages,             DockBehavior>);
 
132
        registerFactory("Script",              &create<ScriptDialog,         DockBehavior>);
 
133
        registerFactory("Swatches",            &create<SwatchesPanel,        DockBehavior>);
 
134
        registerFactory("TextProperties",      &create<TextProperties,       DockBehavior>);
 
135
        registerFactory("TileDialog",          &create<TileDialog,           DockBehavior>);
 
136
        registerFactory("Trace",               &create<TraceDialog,          DockBehavior>);
 
137
        registerFactory("Transformation",      &create<Transformation,       DockBehavior>);
 
138
        registerFactory("UndoHistory",         &create<UndoHistory,          DockBehavior>);
 
139
        registerFactory("XmlEditor",           &create<XmlEditor,            DockBehavior>);
 
140
 
 
141
    }
102
142
}
103
143
 
104
144
DialogManager::~DialogManager() {
107
147
    //        Appears to cause a segfault if we do
108
148
}
109
149
 
 
150
 
 
151
DialogManager &DialogManager::getInstance()
 
152
{
 
153
    int dialogs_type = prefs_get_int_attribute_limited ("options.dialogtype", "value", DOCK, 0, 1);
 
154
 
 
155
    /* Use singleton behavior for floating dialogs */
 
156
    if (dialogs_type == FLOATING) {
 
157
        static DialogManager *instance = 0;
 
158
        
 
159
        if (!instance)
 
160
            instance = new DialogManager();
 
161
        return *instance;
 
162
    } 
 
163
 
 
164
    return *new DialogManager();
 
165
}
 
166
 
110
167
/**
111
168
 * Registers a dialog factory function used to create the named dialog.
112
169
 */
171
228
    Dialog *dialog=getDialog(name);
172
229
    if (dialog) {
173
230
        dialog->present();
174
 
        dialog->read_geometry();
175
231
    }
176
232
}
177
233