00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef INTERFACE_H
00024 #define INTERFACE_H
00025
00026 #include <QMainWindow>
00027 #include <QHash>
00028
00029 class Sheet;
00030 class Track;
00031 class Project;
00032 class BusMonitor;
00033 class InfoBox;
00034 class ViewPort;
00035 class ContextItem;
00036 class Command;
00037
00038 class QLabel;
00039 class ExportDialog;
00040 class CDWritingDialog;
00041 class QStackedWidget;
00042 class QHBoxLayout;
00043 class QVBoxLayout;
00044 class QUndoView;
00045 class QDockWidget;
00046 class QToolBar;
00047 class QToolButton;
00048 class ResourcesWidget;
00049 class ResourcesInfoWidget;
00050 class SheetWidget;
00051 class CorrelationMeterWidget;
00052 class SpectralMeterWidget;
00053 class TransportConsoleWidget;
00054 class SettingsDialog;
00055 class ProjectManagerDialog;
00056 class OpenProjectDialog;
00057 class InfoToolBar;
00058 class SysInfoToolBar;
00059 class InsertSilenceDialog;
00060 class MarkerDialog;
00061 class BusSelectorDialog;
00062 class NewSheetDialog;
00063 class NewTrackDialog;
00064 class NewProjectDialog;
00065 class Ui_QuickStartDialog;
00066 class RestoreProjectBackupDialog;
00067 class ProgressToolBar;
00068 struct MenuData;
00069
00070 class Interface : public QMainWindow
00071 {
00072 Q_OBJECT
00073 Q_CLASSINFO("show_export_widget", tr("Show Export Dialog"))
00074 Q_CLASSINFO("show_context_menu", tr("Show Context Menu"))
00075 Q_CLASSINFO("about_traverso", tr("About Traverso"))
00076 Q_CLASSINFO("show_project_manager_dialog", tr("Show Project Management Dialog"))
00077 Q_CLASSINFO("full_screen", tr("Full Screen"))
00078 Q_CLASSINFO("export_keymap", tr("Export keymap"))
00079 Q_CLASSINFO("start_transport", tr("Play"))
00080 Q_CLASSINFO("set_recordable_and_start_transport", tr("Record"));
00081
00082
00083 public :
00084 Interface();
00085 ~Interface();
00086
00087 static Interface* instance();
00088
00089 void select_fade_in_shape();
00090 void select_fade_out_shape();
00091 void show_busselector(Track* track);
00092 void set_insertsilence_track(Track* track);
00093
00094 protected:
00095 void keyPressEvent ( QKeyEvent* e);
00096 void keyReleaseEvent ( QKeyEvent* e);
00097 void closeEvent ( QCloseEvent * event );
00098 QSize sizeHint () const;
00099 void changeEvent(QEvent *event);
00100 bool eventFilter(QObject *obj, QEvent *ev);
00101
00102 private:
00103 QStackedWidget* centerAreaWidget;
00104 QHash<Sheet*, SheetWidget* > m_sheetWidgets;
00105 SheetWidget* currentSheetWidget;
00106 QList<ViewPort* > currentProjectViewPortList;
00107 QHash<QString, QMenu*> m_contextMenus;
00108 ExportDialog* m_exportDialog;
00109 CDWritingDialog* m_cdWritingDialog;
00110 QUndoView* historyWidget;
00111 QDockWidget* historyDW;
00112 QDockWidget* busMonitorDW;
00113 QDockWidget* AudioSourcesDW;
00114 ResourcesWidget* audiosourcesview;
00115 QDockWidget* correlationMeterDW;
00116 CorrelationMeterWidget* correlationMeter;
00117 TransportConsoleWidget* transportConsole;
00118 QDockWidget* spectralMeterDW;
00119 SpectralMeterWidget* spectralMeter;
00120 SettingsDialog* m_settingsdialog;
00121 ProjectManagerDialog* m_projectManagerDialog;
00122 OpenProjectDialog* m_openProjectDialog;
00123 InsertSilenceDialog* m_insertSilenceDialog;
00124 SysInfoToolBar* m_sysinfo;
00125 ProgressToolBar* m_progressBar;
00126 BusSelectorDialog* m_busSelector;
00127 NewSheetDialog* m_newSheetDialog;
00128 NewTrackDialog* m_newTrackDialog;
00129 NewProjectDialog* m_newProjectDialog;
00130 QDialog* m_quickStart;
00131 RestoreProjectBackupDialog* m_restoreProjectBackupDialog;
00132 Project* m_project;
00133 bool m_isFollowing;
00134
00135 BusMonitor* busMonitor;
00136 QToolBar* mainToolBar;
00137 QToolBar* m_projectToolBar;
00138 QToolBar* m_editToolBar;
00139 QToolButton* openGlButton;
00140 QAction* m_projectSaveAction;
00141 QAction* m_projectSheetManagerAction;
00142 QAction* m_projectExportAction;
00143 QAction* m_sheetMenuAction;
00144 QAction* m_snapAction;
00145 QAction* m_followAction;
00146 QAction* m_effectAction;
00147 QMenu* m_encodingMenu;
00148 QMenu* m_resampleQualityMenu;
00149 QMenu* m_projectMenu;
00150 QMenu* m_sheetMenu;
00151 QMenu* m_editMenu;
00152 QMenu* m_viewMenu;
00153 QMenu* m_settingsMenu;
00154 QMenu* m_helpMenu;
00155 QList<QAction*> m_currentSheetActions;
00156
00157 void create_menus();
00158 void save_config_and_emit_message(const QString& message);
00159
00160 static Interface* m_instance;
00161
00162 QMenu* create_context_menu(QObject* item, QList<MenuData >* list = 0);
00163 QMenu* create_fade_selector_menu(const QString& fadeTypeName);
00164
00165 public slots :
00166 void set_project(Project* project);
00167 void show_sheet(Sheet* sheet);
00168 void show_settings_dialog();
00169 void show_settings_dialog_sound_system_page();
00170 void open_help_browser();
00171 void process_context_menu_action(QAction* action);
00172 void set_fade_in_shape(QAction* action);
00173 void set_fade_out_shape(QAction* action);
00174 void config_changed();
00175 void import_audio();
00176 void show_restore_project_backup_dialog();
00177 void change_recording_format_to_wav();
00178 void change_recording_format_to_wav64();
00179 void change_recording_format_to_wavpack();
00180 void change_resample_quality_to_best();
00181 void change_resample_quality_to_high();
00182 void change_resample_quality_to_medium();
00183 void change_resample_quality_to_fast();
00184
00185 Command* full_screen();
00186 Command* about_traverso();
00187 Command* quick_start();
00188 Command* export_keymap();
00189 Command* get_keymap(QString &);
00190 Command* show_export_widget();
00191 Command* show_cd_writing_dialog();
00192 Command* show_context_menu();
00193 Command* show_open_project_dialog();
00194 Command* show_project_manager_dialog();
00195 Command* show_restore_project_backup_dialog(QString projectdir);
00196 Command* show_insertsilence_dialog();
00197 Command* show_marker_dialog();
00198 Command* show_newsheet_dialog();
00199 Command* show_newtrack_dialog();
00200 Command* show_newproject_dialog();
00201 Command* start_transport();
00202 Command* set_recordable_and_start_transport();
00203
00204
00205 private slots:
00206 void delete_sheetwidget(Sheet*);
00207 void project_dir_change_detected();
00208 void project_load_failed(QString project, QString reason);
00209 void project_file_mismatch(QString rootdir, QString projectname);
00210 void snap_state_changed(bool state);
00211 void update_snap_state();
00212 void effect_state_changed(bool state);
00213 void update_effects_state();
00214 void follow_state_changed(bool state);
00215 void update_follow_state();
00216 void update_temp_follow_state(bool state);
00217 void sheet_selector_update_sheets();
00218 void sheet_selected();
00219 void sheet_selector_sheet_added(Sheet*);
00220 void sheet_selector_sheet_removed(Sheet*);
00221 };
00222
00223
00224 #include <QLCDNumber>
00225
00226 class DigitalClock : public QLCDNumber
00227 {
00228 Q_OBJECT
00229
00230 public:
00231 DigitalClock(QWidget *parent = 0);
00232
00233 private slots:
00234 void showTime();
00235 };
00236
00237 #endif
00238
00239