--- gigedit/trunk/src/gigedit/mainwindow.h 2017/05/05 18:44:59 3151 +++ gigedit/trunk/src/gigedit/mainwindow.h 2017/05/11 20:59:46 3177 @@ -244,6 +244,19 @@ InstrumentProps instrumentProps; MidiRules midiRules; + /** + * Ensures that the 2 signals MainWindow::dimreg_to_be_changed_signal and + * MainWindowv::dimreg_changed_signal are always triggered correctly as a + * pair. It behaves similar to a "mutex lock guard" design pattern. + */ + class DimRegionChangeGuard : public SignalGuard { + public: + DimRegionChangeGuard(MainWindow* w, gig::DimensionRegion* pDimReg) : + SignalGuard(w->dimreg_to_be_changed_signal, w->dimreg_changed_signal, pDimReg) + { + } + }; + sigc::signal file_structure_to_be_changed_signal; sigc::signal file_structure_changed_signal; sigc::signal > samples_to_be_removed_signal; @@ -273,6 +286,11 @@ void on_saver_progress(); void on_saver_error(); void on_saver_finished(); + void updateMacroMenu(); + void onMacroSelected(int iMacro); + void setupMacros(); + void onMacrosSetupChanged(const std::vector& macros); + void applyMacro(Serialization::Archive& macro); void dimreg_all_dimregs_toggled(); gig::Instrument* get_instrument(); @@ -445,7 +463,8 @@ void select_prev_dimension(); void select_next_dimension(); - Serialization::Archive m_serializationArchive; + Serialization::Archive m_serializationArchive; ///< Clipboard content. + std::vector m_macros; ///< User configured list of macros. void copy_selected_dimrgn(); void paste_copied_dimrgn();