1 |
/* |
/* |
2 |
* Copyright (C) 2006-2009 Andreas Persson |
* Copyright (C) 2006-2010 Andreas Persson |
3 |
* |
* |
4 |
* This program is free software; you can redistribute it and/or |
* This program is free software; you can redistribute it and/or |
5 |
* modify it under the terms of the GNU General Public License as |
* modify it under the terms of the GNU General Public License as |
20 |
#include <iostream> |
#include <iostream> |
21 |
#include <cstring> |
#include <cstring> |
22 |
|
|
23 |
|
#include <gtkmm/aboutdialog.h> |
24 |
#include <gtkmm/filechooserdialog.h> |
#include <gtkmm/filechooserdialog.h> |
25 |
#include <gtkmm/messagedialog.h> |
#include <gtkmm/messagedialog.h> |
26 |
#include <gtkmm/stock.h> |
#include <gtkmm/stock.h> |
31 |
|
|
32 |
#include "global.h" |
#include "global.h" |
33 |
|
|
34 |
#if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION >= 6) || GTKMM_MAJOR_VERSION > 2 |
#if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION < 18) || GTKMM_MAJOR_VERSION < 2 |
35 |
#define ABOUT_DIALOG |
#define set_can_default() set_flags(Gtk::CAN_DEFAULT) |
|
#include <gtkmm/aboutdialog.h> |
|
|
#endif |
|
|
|
|
|
#if (GLIBMM_MAJOR_VERSION == 2 && GLIBMM_MINOR_VERSION < 6) || GLIBMM_MAJOR_VERSION < 2 |
|
|
namespace Glib { |
|
|
Glib::ustring filename_display_basename(const std::string& filename) |
|
|
{ |
|
|
gchar* gstr = g_path_get_basename(filename.c_str()); |
|
|
Glib::ustring str(gstr); |
|
|
g_free(gstr); |
|
|
return Glib::filename_to_utf8(str); |
|
|
} |
|
|
} |
|
36 |
#endif |
#endif |
37 |
|
|
38 |
#include <stdio.h> |
#include <stdio.h> |
167 |
action = Gtk::Action::create("MenuHelp", Gtk::Stock::HELP); |
action = Gtk::Action::create("MenuHelp", Gtk::Stock::HELP); |
168 |
actionGroup->add(Gtk::Action::create("MenuHelp", |
actionGroup->add(Gtk::Action::create("MenuHelp", |
169 |
action->property_label())); |
action->property_label())); |
|
#ifdef ABOUT_DIALOG |
|
170 |
actionGroup->add(Gtk::Action::create("About", Gtk::Stock::ABOUT), |
actionGroup->add(Gtk::Action::create("About", Gtk::Stock::ABOUT), |
171 |
sigc::mem_fun( |
sigc::mem_fun( |
172 |
*this, &MainWindow::on_action_help_about)); |
*this, &MainWindow::on_action_help_about)); |
|
#endif |
|
173 |
actionGroup->add( |
actionGroup->add( |
174 |
Gtk::Action::create("AddInstrument", _("Add _Instrument")), |
Gtk::Action::create("AddInstrument", _("Add _Instrument")), |
175 |
sigc::mem_fun(*this, &MainWindow::on_action_add_instrument) |
sigc::mem_fun(*this, &MainWindow::on_action_add_instrument) |
225 |
" <menu action='MenuView'>" |
" <menu action='MenuView'>" |
226 |
" <menuitem action='Statusbar'/>" |
" <menuitem action='Statusbar'/>" |
227 |
" </menu>" |
" </menu>" |
|
#ifdef ABOUT_DIALOG |
|
228 |
" <menu action='MenuHelp'>" |
" <menu action='MenuHelp'>" |
229 |
" <menuitem action='About'/>" |
" <menuitem action='About'/>" |
230 |
" </menu>" |
" </menu>" |
|
#endif |
|
231 |
" </menubar>" |
" </menubar>" |
232 |
" <popup name='PopupMenu'>" |
" <popup name='PopupMenu'>" |
233 |
" <menuitem action='InstrProperties'/>" |
" <menuitem action='InstrProperties'/>" |
484 |
} |
} |
485 |
|
|
486 |
Loader::Loader(const char* filename) |
Loader::Loader(const char* filename) |
487 |
: thread(0), filename(filename) |
: filename(filename), thread(0) |
488 |
{ |
{ |
489 |
} |
} |
490 |
|
|
566 |
Glib::filename_display_basename(filename).c_str()); |
Glib::filename_display_basename(filename).c_str()); |
567 |
Gtk::MessageDialog dialog(*this, msg, false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE); |
Gtk::MessageDialog dialog(*this, msg, false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE); |
568 |
g_free(msg); |
g_free(msg); |
|
#if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION >= 6) || GTKMM_MAJOR_VERSION > 2 |
|
569 |
dialog.set_secondary_text(_("If you close without saving, your changes will be lost.")); |
dialog.set_secondary_text(_("If you close without saving, your changes will be lost.")); |
|
#endif |
|
570 |
dialog.add_button(_("Close _Without Saving"), Gtk::RESPONSE_NO); |
dialog.add_button(_("Close _Without Saving"), Gtk::RESPONSE_NO); |
571 |
dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); |
dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); |
572 |
dialog.add_button(file_has_name ? Gtk::Stock::SAVE : Gtk::Stock::SAVE_AS, Gtk::RESPONSE_YES); |
dialog.add_button(file_has_name ? Gtk::Stock::SAVE : Gtk::Stock::SAVE_AS, Gtk::RESPONSE_YES); |
580 |
bool MainWindow::leaving_shared_mode_dialog() { |
bool MainWindow::leaving_shared_mode_dialog() { |
581 |
Glib::ustring msg = _("Detach from sampler and proceed working stand-alone?"); |
Glib::ustring msg = _("Detach from sampler and proceed working stand-alone?"); |
582 |
Gtk::MessageDialog dialog(*this, msg, false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE); |
Gtk::MessageDialog dialog(*this, msg, false, Gtk::MESSAGE_WARNING, Gtk::BUTTONS_NONE); |
|
#if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION >= 6) || GTKMM_MAJOR_VERSION > 2 |
|
583 |
dialog.set_secondary_text( |
dialog.set_secondary_text( |
584 |
_("If you proceed to work on another instrument file, it won't be " |
_("If you proceed to work on another instrument file, it won't be " |
585 |
"used by the sampler until you tell the sampler explicitly to " |
"used by the sampler until you tell the sampler explicitly to " |
586 |
"load it.") |
"load it.")); |
|
); |
|
|
#endif |
|
587 |
dialog.add_button(_("_Yes, Detach"), Gtk::RESPONSE_YES); |
dialog.add_button(_("_Yes, Detach"), Gtk::RESPONSE_YES); |
588 |
dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); |
dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); |
589 |
dialog.set_default_response(Gtk::RESPONSE_CANCEL); |
dialog.set_default_response(Gtk::RESPONSE_CANCEL); |
725 |
dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); |
dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); |
726 |
dialog.add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_OK); |
dialog.add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_OK); |
727 |
dialog.set_default_response(Gtk::RESPONSE_OK); |
dialog.set_default_response(Gtk::RESPONSE_OK); |
|
|
|
|
#if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION >= 8) || GTKMM_MAJOR_VERSION > 2 |
|
728 |
dialog.set_do_overwrite_confirmation(); |
dialog.set_do_overwrite_confirmation(); |
729 |
// TODO: an overwrite dialog for gtkmm < 2.8 |
|
|
#endif |
|
730 |
Gtk::FileFilter filter; |
Gtk::FileFilter filter; |
731 |
filter.add_pattern("*.gig"); |
filter.add_pattern("*.gig"); |
732 |
dialog.set_filter(filter); |
dialog.set_filter(filter); |
893 |
|
|
894 |
void MainWindow::on_action_help_about() |
void MainWindow::on_action_help_about() |
895 |
{ |
{ |
|
#ifdef ABOUT_DIALOG |
|
896 |
Gtk::AboutDialog dialog; |
Gtk::AboutDialog dialog; |
897 |
#if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION >= 12) || GTKMM_MAJOR_VERSION > 2 |
#if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION >= 12) || GTKMM_MAJOR_VERSION > 2 |
898 |
dialog.set_program_name("Gigedit"); |
dialog.set_program_name("Gigedit"); |
900 |
dialog.set_name("Gigedit"); |
dialog.set_name("Gigedit"); |
901 |
#endif |
#endif |
902 |
dialog.set_version(VERSION); |
dialog.set_version(VERSION); |
903 |
dialog.set_copyright("Copyright (C) 2006-2009 Andreas Persson"); |
dialog.set_copyright("Copyright (C) 2006-2010 Andreas Persson"); |
904 |
dialog.set_comments(_( |
dialog.set_comments(_( |
905 |
"Released under the GNU General Public License.\n" |
"Released under the GNU General Public License.\n" |
906 |
"\n" |
"\n" |
913 |
dialog.set_website("http://www.linuxsampler.org"); |
dialog.set_website("http://www.linuxsampler.org"); |
914 |
dialog.set_website_label("http://www.linuxsampler.org"); |
dialog.set_website_label("http://www.linuxsampler.org"); |
915 |
dialog.run(); |
dialog.run(); |
|
#endif |
|
916 |
} |
} |
917 |
|
|
918 |
PropDialog::PropDialog() |
PropDialog::PropDialog() |
919 |
: table(2,1), |
: eName(_("Name")), |
|
eName(_("Name")), |
|
920 |
eCreationDate(_("Creation date")), |
eCreationDate(_("Creation date")), |
921 |
eComments(_("Comments")), |
eComments(_("Comments")), |
922 |
eProduct(_("Product")), |
eProduct(_("Product")), |
933 |
eCommissioned(_("Commissioned")), |
eCommissioned(_("Commissioned")), |
934 |
eSubject(_("Subject")), |
eSubject(_("Subject")), |
935 |
quitButton(Gtk::Stock::CLOSE), |
quitButton(Gtk::Stock::CLOSE), |
936 |
|
table(2, 1), |
937 |
update_model(0) |
update_model(0) |
938 |
{ |
{ |
939 |
set_title(_("File Properties")); |
set_title(_("File Properties")); |
982 |
buttonBox.set_border_width(5); |
buttonBox.set_border_width(5); |
983 |
buttonBox.show(); |
buttonBox.show(); |
984 |
buttonBox.pack_start(quitButton); |
buttonBox.pack_start(quitButton); |
985 |
quitButton.set_flags(Gtk::CAN_DEFAULT); |
quitButton.set_can_default(); |
986 |
quitButton.grab_focus(); |
quitButton.grab_focus(); |
987 |
quitButton.signal_clicked().connect( |
quitButton.signal_clicked().connect( |
988 |
sigc::mem_fun(*this, &PropDialog::hide)); |
sigc::mem_fun(*this, &PropDialog::hide)); |
1052 |
} |
} |
1053 |
|
|
1054 |
InstrumentProps::InstrumentProps() |
InstrumentProps::InstrumentProps() |
1055 |
: table(2,1), |
: update_model(0), |
1056 |
quitButton(Gtk::Stock::CLOSE), |
quitButton(Gtk::Stock::CLOSE), |
1057 |
|
table(2,1), |
1058 |
eName(_("Name")), |
eName(_("Name")), |
1059 |
eIsDrum(_("Is drum")), |
eIsDrum(_("Is drum")), |
1060 |
eMIDIBank(_("MIDI bank"), 0, 16383), |
eMIDIBank(_("MIDI bank"), 0, 16383), |
1066 |
ePitchbendRange(_("Pitchbend range"), 0, 12), |
ePitchbendRange(_("Pitchbend range"), 0, 12), |
1067 |
ePianoReleaseMode(_("Piano release mode")), |
ePianoReleaseMode(_("Piano release mode")), |
1068 |
eDimensionKeyRangeLow(_("Keyswitching range low")), |
eDimensionKeyRangeLow(_("Keyswitching range low")), |
1069 |
eDimensionKeyRangeHigh(_("Keyswitching range high")), |
eDimensionKeyRangeHigh(_("Keyswitching range high")) |
|
update_model(0) |
|
1070 |
{ |
{ |
1071 |
set_title(_("Instrument Properties")); |
set_title(_("Instrument Properties")); |
1072 |
|
|
1117 |
buttonBox.set_border_width(5); |
buttonBox.set_border_width(5); |
1118 |
buttonBox.show(); |
buttonBox.show(); |
1119 |
buttonBox.pack_start(quitButton); |
buttonBox.pack_start(quitButton); |
1120 |
quitButton.set_flags(Gtk::CAN_DEFAULT); |
quitButton.set_can_default(); |
1121 |
quitButton.grab_focus(); |
quitButton.grab_focus(); |
1122 |
|
|
1123 |
quitButton.signal_clicked().connect( |
quitButton.signal_clicked().connect( |