00001
00002
00003
00004
00005 #ifndef BALL_VIEW_WIDGETS_MODULARWIDGET_H
00006 #define BALL_VIEW_WIDGETS_MODULARWIDGET_H
00007
00008 #ifndef BALL_CONCEPT_EMBEDDABLE_H
00009 # include <BALL/CONCEPT/embeddable.h>
00010 #endif
00011
00012 #ifndef BALL_VIEW_KERNEL_CONNECTIONOBJECT_H
00013 # include <BALL/VIEW/KERNEL/connectionObject.h>
00014 #endif
00015
00016 #include <QtGui/QKeySequence>
00017 #include <QtGui/QToolBar>
00018
00019 class QObject;
00020 class QMenuBar;
00021 class QWidget;
00022 class QAction;
00023
00024 namespace BALL
00025 {
00026 class INIFile;
00027 class FragmentDB;
00028
00029 namespace VIEW
00030 {
00031 class Preferences;
00032 class MainControl;
00033
00057 class BALL_VIEW_EXPORT ModularWidget
00058 : public Embeddable,
00059 public ConnectionObject
00060 {
00061 public:
00062
00063 BALL_EMBEDDABLE(ModularWidget,Embeddable)
00064 BALL_CREATE(ModularWidget)
00065
00066
00069
00074 ModularWidget(const char* name = "<ModularWidget>");
00075
00078 ModularWidget(const ModularWidget& widget);
00079
00081
00084
00088 virtual ~ModularWidget();
00089
00091 virtual void destroy()
00092 { clear(); };
00093
00097 virtual void clear();
00098
00100
00103
00110 static void registerWidget(ModularWidget* mwidget)
00111 throw(Exception::NullPointer);
00112
00120 virtual void initializeWidget(MainControl& main_control);
00121
00130 virtual void finalizeWidget(MainControl& main_control);
00131
00137 virtual bool canHandle(const String& ) const { return false;}
00138
00143 virtual bool openFile(const String& ) { return false;}
00144
00146
00149
00155 virtual void checkMenu(MainControl& main_control);
00156
00158 QAction* insertMenuEntry (Position parent_id, const String& name, const QObject* receiver = 0,
00159 const char* slot = 0, const String& description = "", QKeySequence accel = QKeySequence());
00160
00164 void setMenuHint(const String& hint);
00165
00170 void setMenuHelp(const String& url);
00171
00175 virtual void registerForHelpSystem(const QObject* object, const String& url);
00176
00181 virtual void addToolBarEntries(QToolBar* main_tb);
00182
00186 void setIcon(const String& filename, bool add_to_main_toolbar = true);
00187
00188
00190
00193
00200 virtual void initializePreferencesTab(Preferences& preferences);
00201
00208 virtual void finalizePreferencesTab(Preferences& preferences);
00209
00221 virtual void applyPreferences(){};
00222
00228 virtual void fetchPreferences(INIFile& inifile);
00229
00235 virtual void writePreferences(INIFile& inifile);
00236
00238
00241
00245 bool lockComposites();
00246
00248 bool unlockComposites();
00249
00251
00254
00258 MainControl* getMainControl() const;
00259
00264 virtual void setStatusbarText(const String& text, bool important = false);
00265
00267 virtual void setStatusbarText(const QString& text, bool important = false);
00268
00270 String getWorkingDir();
00271
00273 void setWorkingDir(const String& dir);
00274
00279 FragmentDB& getFragmentDB() const;
00280
00282
00285
00293 virtual void dump(std::ostream& s = std::cout, Size depth = 0) const;
00294
00296
00297 void setWorkingDirFromFilename_(String filename);
00298
00299 virtual void showHelp(const String& url);
00300
00301 protected:
00302
00303
00304 QAction* window_menu_entry_;
00305
00306
00307 bool show_window_enty_;
00308
00309
00310 bool default_visible_;
00311
00312 QAction* last_action_;
00313 QList<QAction*> main_toolbar_actions_;
00314 };
00315
00316 }
00317 }
00318
00319 #endif // BALL_VIEW_WIDGETS_MODULARWIDGET_H