File indexing completed on 2022-09-27 12:24:10

0001 /*
0002     SPDX-FileCopyrightText: 2003, 2004, 2005, 2006, 2007 Carsten Niehaus <cniehaus@kde.org>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #ifndef KALZIUM_H
0007 #define KALZIUM_H
0008 
0009 #include "calculator/calculator.h"
0010 #include "elementdataviewer.h"
0011 #include "isotopetabledialog.h"
0012 #include "periodictableview.h"
0013 #include "rsdialog.h"
0014 #include "settings/kalziumconfigdialog.h"
0015 #include "tablesdialog.h"
0016 #include <kxmlguiwindow.h>
0017 
0018 class KAction;
0019 class KSelectAction;
0020 class QToolBox;
0021 class QDockWidget;
0022 class DetailedInfoDlg;
0023 class PeriodicTableView;
0024 class DetailedGraphicalOverview;
0025 class GradientWidgetImpl;
0026 class GlossaryDialog;
0027 class IsotopeTable;
0028 class LegendWidget;
0029 class TableInfoWidget;
0030 class ExportDialog;
0031 class MoleculeDialog;
0032 
0033 /**
0034  * @brief Application Main Window
0035  * @author Carsten Niehaus <cniehaus@kde.org>
0036  * @version 1.2
0037  *
0038  * This class connects the parts of kalzium. All actions will
0039  * be set, the menu generated and so on.
0040  */
0041 class Kalzium : public KXmlGuiWindow
0042 {
0043     Q_OBJECT
0044 public:
0045     /**
0046      * Default Constructor
0047      */
0048     Kalzium();
0049 
0050     /**
0051      * Default Destructor
0052      */
0053     ~Kalzium() override;
0054 
0055     void loadMolecule(const QString &moleculeFile);
0056 
0057 private:
0058     DetailedInfoDlg *m_infoDialog;
0059 
0060     LegendWidget *m_legendWidget;
0061 
0062     TableInfoWidget *m_TableInfoWidget;
0063 
0064     PeriodicTableView *m_periodicTable;
0065 
0066     IsotopeTableDialog *m_isotopeDialog;
0067 
0068     ElementDataViewer *m_elementDataPlotter;
0069 
0070     TablesDialog *m_tablesDialog;
0071 
0072     RSDialog *m_rsDialog;
0073 
0074     calculator *m_calculator;
0075 
0076     /**
0077      *initialize actions
0078      */
0079     void setupActions();
0080 
0081     /**
0082      *initialize the sidebars
0083      */
0084     void setupSidebars();
0085 
0086     void extractIconicInformationAboutElement(int elementNumber);
0087 
0088     /**
0089      * all KActions Kalzium uses
0090      */
0091     KSelectAction *look_action_schemes;
0092     KSelectAction *look_action_gradients;
0093 
0094     KSelectAction *table_action;
0095     KSelectAction *table_action_schemes;
0096     KSelectAction *numeration_action;
0097     // settings
0098     QAction *m_pLegendAction;
0099     QAction *m_SidebarAction;
0100     // tools
0101     QAction *m_pPlotAction;
0102     QAction *m_pcalculator;
0103     QAction *m_pIsotopeTableAction;
0104     QAction *m_pGlossaryAction;
0105     QAction *m_pRSAction;
0106     QAction *m_pTables;
0107     QAction *m_pMoleculesviewer;
0108     QAction *m_pOBConverterAction;
0109     QAction *export_action;
0110 
0111     QAction *m_legendAction;
0112 
0113     GradientWidgetImpl *m_gradientWidget;
0114 
0115     DetailedGraphicalOverview *m_detailWidget;
0116 
0117     /**
0118      * the dock of the central pse Widget
0119      */
0120     QDockWidget *m_dockWin;
0121     QDockWidget *m_legendDock;
0122     QDockWidget *m_tableDock;
0123 
0124     QToolBox *m_toolbox;
0125 
0126     GlossaryDialog *m_glossarydlg;
0127 
0128     ExportDialog *m_exportDialog;
0129 
0130     KalziumConfigDialog *m_configDialog;
0131 
0132     QLabel *m_elementInfo;
0133 
0134 Q_SIGNALS:
0135     void numerationChanged(int);
0136 
0137 private Q_SLOTS:
0138     /**
0139      * opens the information dialog for the element @p number
0140      */
0141     void openInformationDialog(int number);
0142 
0143     void elementHover(int num);
0144     void setupStatusBar();
0145 
0146     /**
0147      * switched to the table with the index @p index
0148      */
0149     void slotSwitchtoTable(int index);
0150 
0151     /**
0152      * start the glossary
0153      */
0154     void slotGlossary();
0155 
0156     /**
0157      * show the R/S-phrases
0158      */
0159     void slotRS();
0160 
0161     MoleculeDialog *slotMoleculeviewer();
0162 
0163     void slotOBConverter();
0164 
0165     void slotTables();
0166 
0167     void slotSwitchtoLookGradient(int);
0168     void slotSwitchtoLookScheme(int);
0169     void slotSwitchtoNumeration(int);
0170 
0171     /**
0172      *start the isotopetable
0173      */
0174     void slotIsotopeTable();
0175 
0176     void slotPlotData();
0177     /**
0178      * Start the calculator
0179      */
0180     void showCalculator();
0181 
0182     void slotExportTable();
0183 
0184     void slotShowExportDialog();
0185 
0186     /**
0187      * These slots are for the standard actions
0188      */
0189     void showSettingsDialog();
0190 
0191     void slotUpdateSettings();
0192 
0193 protected:
0194     QSize sizeHint() const override;
0195 };
0196 
0197 #endif // KALZIUM_H