--- gigedit/trunk/src/gigedit/mainwindow.cpp 2014/06/11 16:46:27 2621 +++ gigedit/trunk/src/gigedit/mainwindow.cpp 2014/06/11 21:22:24 2625 @@ -47,6 +47,7 @@ #include "CombineInstrumentsDialog.h" #include "scripteditor.h" #include "scriptslots.h" +#include "ReferencesView.h" #include "../../gfx/status_attached.xpm" #include "../../gfx/status_detached.xpm" @@ -145,8 +146,19 @@ actionGroup->add(Gtk::Action::create("Quit", Gtk::Stock::QUIT), sigc::mem_fun( *this, &MainWindow::on_action_quit)); - actionGroup->add(Gtk::Action::create("MenuInstrument", _("_Instrument"))); - + actionGroup->add( + Gtk::Action::create("MenuSample", _("_Sample")), + sigc::mem_fun(*this, &MainWindow::show_samples_tab) + ); + actionGroup->add( + Gtk::Action::create("MenuInstrument", _("_Instrument")), + sigc::mem_fun(*this, &MainWindow::show_intruments_tab) + ); + actionGroup->add( + Gtk::Action::create("MenuScript", _("S_cript")), + sigc::mem_fun(*this, &MainWindow::show_scripts_tab) + ); + actionGroup->add(Gtk::Action::create("AllInstruments", _("_Select"))); actionGroup->add(Gtk::Action::create("MenuEdit", _("_Edit"))); @@ -236,6 +248,10 @@ sigc::mem_fun(*this, &MainWindow::on_action_remove_sample) ); actionGroup->add( + Gtk::Action::create("ShowSampleRefs", _("Show References...")), + sigc::mem_fun(*this, &MainWindow::on_action_view_references) + ); + actionGroup->add( Gtk::Action::create("ReplaceAllSamplesInAllGroups", _("Replace All Samples in All Groups...")), sigc::mem_fun(*this, &MainWindow::on_action_replace_all_samples_in_all_groups) @@ -282,7 +298,33 @@ " " " " " " + " " + " " + " " + " " + " " + " " + " " + " " + " " " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " + " " " " " " " " @@ -311,6 +353,7 @@ " " " " " " + " " " " " " " " @@ -364,7 +407,7 @@ instrument_menu = static_cast( - uiManager->get_widget("/MenuBar/MenuInstrument"))->get_submenu(); + uiManager->get_widget("/MenuBar/MenuInstrument/AllInstruments"))->get_submenu(); Gtk::Widget* menuBar = uiManager->get_widget("/MenuBar"); m_VBox.pack_start(*menuBar, Gtk::PACK_SHRINK); @@ -1430,7 +1473,7 @@ add_instrument_to_menu(name); } instrument_name_connection.unblock(); - uiManager->get_widget("/MenuBar/MenuInstrument")->show(); + uiManager->get_widget("/MenuBar/MenuInstrument/AllInstruments")->show(); updateSampleRefCountMap(gig); @@ -1452,7 +1495,7 @@ rowSample[m_SamplesModel.m_col_group] = NULL; int refcount = sample_ref_count.count(sample) ? sample_ref_count[sample] : 0; rowSample[m_SamplesModel.m_col_refcount] = ToString(refcount) + " " + _("Refs."); - rowSample[m_SamplesModel.m_color] = refcount ? "black" : "gray"; + rowSample[m_SamplesModel.m_color] = refcount ? "black" : "red"; } } } @@ -1476,7 +1519,8 @@ rowScript[m_ScriptsModel.m_col_group] = NULL; } } - // unfold all script groups by default + // unfold all sample groups & script groups by default + m_TreeViewSamples.expand_all(); m_TreeViewScripts.expand_all(); file = gig; @@ -1609,9 +1653,15 @@ show_instr_props(); } else if (button->type == GDK_BUTTON_PRESS && button->button == 3) { // gig v2 files have no midi rules + const bool bEnabled = !(file->pVersion && file->pVersion->major == 2); + static_cast( + uiManager->get_widget("/MenuBar/MenuInstrument/MidiRules"))->set_sensitive( + bEnabled + ); static_cast( uiManager->get_widget("/PopupMenu/MidiRules"))->set_sensitive( - !(file->pVersion && file->pVersion->major == 2)); + bEnabled + ); popup_menu->popup(button->button, button->time); } } @@ -1645,16 +1695,31 @@ group_selected = row[m_SamplesModel.m_col_group]; sample_selected = row[m_SamplesModel.m_col_sample]; } + + dynamic_cast(uiManager->get_widget("/SamplePopupMenu/SampleProperties"))-> set_sensitive(group_selected || sample_selected); dynamic_cast(uiManager->get_widget("/SamplePopupMenu/AddSample"))-> set_sensitive(group_selected || sample_selected); dynamic_cast(uiManager->get_widget("/SamplePopupMenu/AddGroup"))-> set_sensitive(file); + dynamic_cast(uiManager->get_widget("/SamplePopupMenu/ShowSampleRefs"))-> + set_sensitive(sample_selected); dynamic_cast(uiManager->get_widget("/SamplePopupMenu/RemoveSample"))-> set_sensitive(group_selected || sample_selected); // show sample popup sample_popup->popup(button->button, button->time); + + dynamic_cast(uiManager->get_widget("/MenuBar/MenuSample/SampleProperties"))-> + set_sensitive(group_selected || sample_selected); + dynamic_cast(uiManager->get_widget("/MenuBar/MenuSample/AddSample"))-> + set_sensitive(group_selected || sample_selected); + dynamic_cast(uiManager->get_widget("/MenuBar/MenuSample/AddGroup"))-> + set_sensitive(file); + dynamic_cast(uiManager->get_widget("/MenuBar/MenuSample/ShowSampleRefs"))-> + set_sensitive(sample_selected); + dynamic_cast(uiManager->get_widget("/MenuBar/MenuSample/RemoveSample"))-> + set_sensitive(group_selected || sample_selected); } } @@ -1682,6 +1747,15 @@ set_sensitive(group_selected || script_selected); // show sample popup script_popup->popup(button->button, button->time); + + dynamic_cast(uiManager->get_widget("/MenuBar/MenuScript/AddScript"))-> + set_sensitive(group_selected || script_selected); + dynamic_cast(uiManager->get_widget("/MenuBar/MenuScript/AddScriptGroup"))-> + set_sensitive(file); + dynamic_cast(uiManager->get_widget("/MenuBar/MenuScript/EditScript"))-> + set_sensitive(script_selected); + dynamic_cast(uiManager->get_widget("/MenuBar/MenuScript/RemoveScript"))-> + set_sensitive(group_selected || script_selected); } } @@ -2535,6 +2609,22 @@ delete d; } +void MainWindow::on_action_view_references() { + Glib::RefPtr sel = m_TreeViewSamples.get_selection(); + Gtk::TreeModel::iterator it = sel->get_selected(); + if (!it) return; + Gtk::TreeModel::Row row = *it; + gig::Sample* sample = row[m_SamplesModel.m_col_sample]; + if (!sample) return; + + ReferencesView* d = new ReferencesView(*this); + d->setSample(sample); + d->show_all(); + d->resize(500, 400); + d->run(); + delete d; +} + void MainWindow::mergeFiles(const std::vector& filenames) { struct _Source { std::vector riffs; @@ -2707,7 +2797,7 @@ Gtk::TreeModel::Row rowSample = rowGroup.children()[s]; if (rowSample[m_SamplesModel.m_col_sample] != sample) continue; rowSample[m_SamplesModel.m_col_refcount] = ToString(refcount) + " " + _("Refs."); - rowSample[m_SamplesModel.m_color] = refcount ? "black" : "gray"; + rowSample[m_SamplesModel.m_color] = refcount ? "black" : "red"; } } } @@ -2727,6 +2817,18 @@ } } +void MainWindow::show_samples_tab() { + m_TreeViewNotebook.set_current_page(0); +} + +void MainWindow::show_intruments_tab() { + m_TreeViewNotebook.set_current_page(1); +} + +void MainWindow::show_scripts_tab() { + m_TreeViewNotebook.set_current_page(2); +} + sigc::signal& MainWindow::signal_file_structure_to_be_changed() { return file_structure_to_be_changed_signal; }