1 /* 2 Copyright (C) 2005-2007 Remon Sijrier 3 4 This file is part of Traverso 5 6 Traverso is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program; if not, write to the Free Software 18 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 19 20 21 */ 22 23 #ifndef INTERFACE_H 24 #define INTERFACE_H 25 26 #include <QMainWindow> 27 #include <QHash> 28 29 class Sheet; 30 class Track; 31 class Project; 32 class BusMonitor; 33 class InfoBox; 34 class ViewPort; 35 class ContextItem; 36 class Command; 37 38 class QLabel; 39 class ExportDialog; 40 class CDWritingDialog; 41 class QStackedWidget; 42 class QHBoxLayout; 43 class QVBoxLayout; 44 class QUndoView; 45 class QDockWidget; 46 class QToolBar; 47 class QToolButton; 48 class ResourcesWidget; 49 class ResourcesInfoWidget; 50 class SheetWidget; 51 class CorrelationMeterWidget; 52 class SpectralMeterWidget; 53 class TransportConsoleWidget; 54 class SettingsDialog; 55 class ProjectManagerDialog; 56 class OpenProjectDialog; 57 class InfoToolBar; 58 class SysInfoToolBar; 59 class InsertSilenceDialog; 60 class MarkerDialog; 61 class BusSelectorDialog; 62 class NewSheetDialog; 63 class NewTrackDialog; 64 class NewProjectDialog; 65 class Ui_QuickStartDialog; 66 class RestoreProjectBackupDialog; 67 class ProgressToolBar; 68 struct MenuData; 69 70 class Interface : public QMainWindow 71 { 72 Q_OBJECT 73 Q_CLASSINFO("show_export_widget", tr("Show Export Dialog")) 74 Q_CLASSINFO("show_context_menu", tr("Show Context Menu")) 75 Q_CLASSINFO("about_traverso", tr("About Traverso")) 76 Q_CLASSINFO("show_project_manager_dialog", tr("Show Project Management Dialog")) 77 Q_CLASSINFO("full_screen", tr("Full Screen")) 78 Q_CLASSINFO("export_keymap", tr("Export keymap")) 79 Q_CLASSINFO("start_transport", tr("Play")) 80 Q_CLASSINFO("set_recordable_and_start_transport", tr("Record")); 81 82 83 public : 84 Interface(); 85 ~Interface(); 86 87 static Interface* instance(); 88 89 void select_fade_in_shape(); 90 void select_fade_out_shape(); 91 void show_busselector(Track* track); 92 void set_insertsilence_track(Track* track); 93 94 protected: 95 void keyPressEvent ( QKeyEvent* e); 96 void keyReleaseEvent ( QKeyEvent* e); 97 void closeEvent ( QCloseEvent * event ); 98 QSize sizeHint () const; 99 void changeEvent(QEvent *event); 100 bool eventFilter(QObject *obj, QEvent *ev); 101 102 private: 103 QStackedWidget* centerAreaWidget; 104 QHash<Sheet*, SheetWidget* > m_sheetWidgets; 105 SheetWidget* currentSheetWidget; 106 QList<ViewPort* > currentProjectViewPortList; 107 QHash<QString, QMenu*> m_contextMenus; 108 ExportDialog* m_exportDialog; 109 CDWritingDialog* m_cdWritingDialog; 110 QUndoView* historyWidget; 111 QDockWidget* historyDW; 112 QDockWidget* busMonitorDW; 113 QDockWidget* AudioSourcesDW; 114 ResourcesWidget* audiosourcesview; 115 QDockWidget* correlationMeterDW; 116 CorrelationMeterWidget* correlationMeter; 117 TransportConsoleWidget* transportConsole; 118 QDockWidget* spectralMeterDW; 119 SpectralMeterWidget* spectralMeter; 120 SettingsDialog* m_settingsdialog; 121 ProjectManagerDialog* m_projectManagerDialog; 122 OpenProjectDialog* m_openProjectDialog; 123 InsertSilenceDialog* m_insertSilenceDialog; 124 SysInfoToolBar* m_sysinfo; 125 ProgressToolBar* m_progressBar; 126 BusSelectorDialog* m_busSelector; 127 NewSheetDialog* m_newSheetDialog; 128 NewTrackDialog* m_newTrackDialog; 129 NewProjectDialog* m_newProjectDialog; 130 QDialog* m_quickStart; 131 RestoreProjectBackupDialog* m_restoreProjectBackupDialog; 132 Project* m_project; 133 bool m_isFollowing; 134 135 BusMonitor* busMonitor; 136 QToolBar* mainToolBar; 137 QToolBar* m_projectToolBar; 138 QToolBar* m_editToolBar; 139 QToolButton* openGlButton; 140 QAction* m_projectSaveAction; 141 QAction* m_projectSheetManagerAction; 142 QAction* m_projectExportAction; 143 QAction* m_sheetMenuAction; 144 QAction* m_snapAction; 145 QAction* m_followAction; 146 QAction* m_effectAction; 147 QMenu* m_encodingMenu; 148 QMenu* m_resampleQualityMenu; 149 QMenu* m_projectMenu; 150 QMenu* m_sheetMenu; 151 QMenu* m_editMenu; 152 QMenu* m_viewMenu; 153 QMenu* m_settingsMenu; 154 QMenu* m_helpMenu; 155 QList<QAction*> m_currentSheetActions; 156 157 void create_menus(); 158 void save_config_and_emit_message(const QString& message); 159 160 static Interface* m_instance; 161 162 QMenu* create_context_menu(QObject* item, QList<MenuData >* list = 0); 163 QMenu* create_fade_selector_menu(const QString& fadeTypeName); 164 165 public slots : 166 void set_project(Project* project); 167 void show_sheet(Sheet* sheet); 168 void show_settings_dialog(); 169 void show_settings_dialog_sound_system_page(); 170 void open_help_browser(); 171 void process_context_menu_action(QAction* action); 172 void set_fade_in_shape(QAction* action); 173 void set_fade_out_shape(QAction* action); 174 void config_changed(); 175 void import_audio(); 176 void show_restore_project_backup_dialog(); 177 void change_recording_format_to_wav(); 178 void change_recording_format_to_wav64(); 179 void change_recording_format_to_wavpack(); 180 void change_resample_quality_to_best(); 181 void change_resample_quality_to_high(); 182 void change_resample_quality_to_medium(); 183 void change_resample_quality_to_fast(); 184 185 Command* full_screen(); 186 Command* about_traverso(); 187 Command* quick_start(); 188 Command* export_keymap(); 189 Command* get_keymap(QString &); 190 Command* show_export_widget(); 191 Command* show_cd_writing_dialog(); 192 Command* show_context_menu(); 193 Command* show_open_project_dialog(); 194 Command* show_project_manager_dialog(); 195 Command* show_restore_project_backup_dialog(QString projectdir); 196 Command* show_insertsilence_dialog(); 197 Command* show_marker_dialog(); 198 Command* show_newsheet_dialog(); 199 Command* show_newtrack_dialog(); 200 Command* show_newproject_dialog(); 201 Command* start_transport(); 202 Command* set_recordable_and_start_transport(); 203 204 205 private slots: 206 void delete_sheetwidget(Sheet*); 207 void project_dir_change_detected(); 208 void project_load_failed(QString project, QString reason); 209 void project_file_mismatch(QString rootdir, QString projectname); 210 void snap_state_changed(bool state); 211 void update_snap_state(); 212 void effect_state_changed(bool state); 213 void update_effects_state(); 214 void follow_state_changed(bool state); 215 void update_follow_state(); 216 void update_temp_follow_state(bool state); 217 void sheet_selector_update_sheets(); 218 void sheet_selected(); 219 void sheet_selector_sheet_added(Sheet*); 220 void sheet_selector_sheet_removed(Sheet*); 221 }; 222 223 224 #include <QLCDNumber> 225 226 class DigitalClock : public QLCDNumber 227 { 228 Q_OBJECT 229 230 public: 231 DigitalClock(QWidget *parent = 0); 232 233 private slots: 234 void showTime(); 235 }; 236 237 #endif 238 239 // eof 240