/* Copyright 2006-2008 Xavier Guerrin This file is part of QElectroTech. QElectroTech is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. QElectroTech is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with QElectroTech. If not, see . */ #ifndef QET_APP_H #define QET_APP_H #include #include #include class QETDiagramEditor; class QETElementEditor; /** Cette classe represente l'application QElectroTech. */ class QETApp : public QApplication { Q_OBJECT // constructeurs, destructeur public: QETApp(int &, char **); virtual ~QETApp(); private: QETApp(const QETApp &); // methodes public: void setLanguage(const QString &); static void printHelp(); static void printVersion(); static void printLicense(); static QString commonElementsDir(); static QString customElementsDir(); static QString configDir(); static QSettings &settings(); static QString languagesPath(); static QString realPath(const QString &); static QString symbolicPath(const QString &); #ifdef QET_ALLOW_OVERRIDE_CED_OPTION public: static void overrideCommonElementsDir(const QString &); private: static QString common_elements_dir; ///< Dossier contenant la collection d'elements commune #endif #ifdef QET_ALLOW_OVERRIDE_CD_OPTION public: static void overrideConfigDir(const QString &); private: static QString config_dir; ///< Dossier contenant la configuration et la collection d'elements de l'utilisateur #endif public: static QString diagramTextsFont(); protected: bool event(QEvent *); // attributs private: QTranslator qtTranslator; QTranslator qetTranslator; QSystemTrayIcon *qsti; QMenu *menu_systray; QAction *quitter_qet; QAction *reduce_appli; QAction *restore_appli; QAction *reduce_diagrams; QAction *restore_diagrams; QAction *reduce_elements; QAction *restore_elements; QAction *new_diagram; QAction *new_element; QHash window_geometries; QHash window_states; bool every_editor_reduced; bool every_diagram_reduced; bool every_diagram_visible; bool every_element_reduced; bool every_element_visible; QSignalMapper signal_map; QSettings *qet_settings; static QString diagram_texts_font; public slots: void systray(QSystemTrayIcon::ActivationReason); void reduceEveryEditor(); void restoreEveryEditor(); void reduceDiagramEditors(); void restoreDiagramEditors(); void reduceElementEditors(); void restoreElementEditors(); void newDiagramEditor(); void newElementEditor(); bool closeEveryEditor(); void setMainWindowVisible(QMainWindow *, bool); void invertMainWindowVisibility(QWidget *); void quitQET(); void checkRemainingWindows(); // methodes privees private slots: void cleanup(); private: QList diagramEditors() const; QList elementEditors() const; QList floatingToolbarsAndDocksForMainWindow(QMainWindow *) const; void buildSystemTrayMenu(); void fetchWindowStats(const QList &diagrams, const QList &elements); }; /** Cette classe represente le style de QElectroTech Il s'agit de modifications simples appliquees aux styles communs de Qt */ class QETStyle : public QPlastiqueStyle { Q_OBJECT public: QETStyle(); virtual ~QETStyle(); virtual int styleHint(StyleHint hint, const QStyleOption * = 0, const QWidget * = 0, QStyleHintReturn * = 0) const; protected slots: virtual QIcon standardIconImplementation(StandardPixmap, const QStyleOption * = 0, const QWidget * = 0) const; }; #endif