summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mainsbridge <beatroute@iprimus.com.au>2006-04-22 15:28:59 +0000
committerNick Mainsbridge <beatroute@iprimus.com.au>2006-04-22 15:28:59 +0000
commitdcd4c89f34f51e3a65f01584f79d6569ccc3b1b1 (patch)
tree592436821dcd315f0709b7fad071b367226c260f
parentf81f877adffccffd5ada8431faa567db81122fee (diff)
Prompter now prevents blank strings or unaltered names & now has a horizontal orientation. Rename marker now uses the ArdourPrompter.
git-svn-id: svn://localhost/trunk/ardour2@463 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--gtk2_ardour/ardour_ui.cc5
-rw-r--r--gtk2_ardour/audio_time_axis.cc3
-rw-r--r--gtk2_ardour/editor_markers.cc26
-rw-r--r--gtk2_ardour/editor_mouse.cc1
-rw-r--r--gtk2_ardour/editor_selection_list.cc1
-rw-r--r--gtk2_ardour/meter_bridge_strip.cc1
-rw-r--r--gtk2_ardour/plugin_selector.cc4
-rw-r--r--gtk2_ardour/plugin_ui.cc1
-rw-r--r--gtk2_ardour/redirect_box.cc1
-rw-r--r--gtk2_ardour/route_ui.cc3
-rw-r--r--gtk2_ardour/sfdb_ui.cc1
-rw-r--r--gtk2_ardour/visual_time_axis.cc1
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/prompter.h3
-rw-r--r--libs/gtkmm2ext/prompter.cc27
14 files changed, 54 insertions, 24 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 7239dced3c..f0f7fb6da3 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -470,6 +470,7 @@ ARDOUR_UI::ask_about_saving_session (const string & what)
prompt_label.set_text (prompt);
prompt_label.set_name (X_("PrompterLabel"));
prompt_label.set_alignment(ALIGN_LEFT, ALIGN_TOP);
+ dhbox.set_homogeneous (false);
dhbox.pack_start (*dimage, true, false, 5);
dhbox.pack_start (prompt_label, true, false, 5);
window.get_vbox()->pack_start (dhbox);
@@ -1532,6 +1533,7 @@ ARDOUR_UI::snapshot_session ()
prompter.set_name ("Prompter");
prompter.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
+ prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
prompter.set_prompt (_("Name of New Snapshot"));
prompter.set_initial_text (now);
@@ -1681,7 +1683,8 @@ ARDOUR_UI::save_template ()
prompter.set_prompt (_("Name for mix template:"));
prompter.set_initial_text(session->name() + _("-template"));
prompter.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
-
+ prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
+
switch (prompter.run()) {
case RESPONSE_ACCEPT:
prompter.get_result (name);
diff --git a/gtk2_ardour/audio_time_axis.cc b/gtk2_ardour/audio_time_axis.cc
index 42ad1656fa..aae3b8a505 100644
--- a/gtk2_ardour/audio_time_axis.cc
+++ b/gtk2_ardour/audio_time_axis.cc
@@ -835,6 +835,7 @@ AudioTimeAxisView::rename_current_playlist ()
prompter.set_prompt (_("Name for playlist"));
prompter.set_initial_text (pl->name());
prompter.add_button (_("Rename"), Gtk::RESPONSE_ACCEPT);
+ prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
switch (prompter.run ()) {
case Gtk::RESPONSE_ACCEPT:
@@ -869,6 +870,7 @@ AudioTimeAxisView::use_copy_playlist (bool prompt)
prompter.set_prompt (_("Name for Playlist"));
prompter.set_initial_text (name);
prompter.add_button (Gtk::Stock::NEW, Gtk::RESPONSE_ACCEPT);
+ prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
prompter.show_all ();
switch (prompter.run ()) {
@@ -908,6 +910,7 @@ AudioTimeAxisView::use_new_playlist (bool prompt)
prompter.set_prompt (_("Name for Playlist"));
prompter.set_initial_text (name);
prompter.add_button (Gtk::Stock::NEW, Gtk::RESPONSE_ACCEPT);
+ prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
switch (prompter.run ()) {
case Gtk::RESPONSE_ACCEPT:
diff --git a/gtk2_ardour/editor_markers.cc b/gtk2_ardour/editor_markers.cc
index cafe1cec0c..df64b9ed43 100644
--- a/gtk2_ardour/editor_markers.cc
+++ b/gtk2_ardour/editor_markers.cc
@@ -34,6 +34,7 @@
#include "gui_thread.h"
#include "simplerect.h"
#include "actions.h"
+#include "prompter.h"
#include "i18n.h"
@@ -807,10 +808,10 @@ Editor::marker_menu_rename ()
if (!loc) return;
- Dialog dialog;
- Entry entry;
- HBox dhbox;
- Label dlabel (_("New Name:"));
+ ArdourPrompter dialog (true);
+ string txt;
+
+ dialog.set_prompt (_("New Name:"));
if (loc->is_mark()) {
dialog.set_title (_("ardour: rename mark"));
@@ -821,20 +822,12 @@ Editor::marker_menu_rename ()
dialog.set_name ("MarkRenameWindow");
dialog.set_size_request (250, -1);
dialog.set_position (Gtk::WIN_POS_MOUSE);
- dialog.set_modal (true);
- dhbox.pack_start (dlabel, true, false, 10);
- dhbox.pack_start (entry, true, false, 10);
- dialog.get_vbox()->pack_start (dhbox, true, false, 10);
- dialog.add_button (Stock::CANCEL, RESPONSE_CANCEL);
dialog.add_button (_("Rename"), RESPONSE_ACCEPT);
- dialog.set_default_response (RESPONSE_ACCEPT);
-
- entry.set_text (loc->name());
- entry.set_name ("MarkerNameDisplay");
+ dialog.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
+ dialog.set_initial_text (loc->name());
- dialog.show_all ();
- entry.grab_focus ();
+ dialog.show ();
switch (dialog.run ()) {
case RESPONSE_ACCEPT:
@@ -846,7 +839,8 @@ Editor::marker_menu_rename ()
begin_reversible_command ( _("rename marker") );
session->add_undo( session->locations()->get_memento() );
- loc->set_name (entry.get_text());
+ dialog.get_result(txt);
+ loc->set_name (txt);
session->add_redo_no_execute( session->locations()->get_memento() );
commit_reversible_command ();
diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc
index ab3560448c..8eb97f2165 100644
--- a/gtk2_ardour/editor_mouse.cc
+++ b/gtk2_ardour/editor_mouse.cc
@@ -4607,6 +4607,7 @@ Editor::mouse_rename_region (ArdourCanvas::Item* item, GdkEvent* event)
prompter.set_prompt (_("Name for region:"));
prompter.set_initial_text (clicked_regionview->region.name());
prompter.add_button (_("Rename"), Gtk::RESPONSE_ACCEPT);
+ prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
prompter.show_all ();
switch (prompter.run ()) {
case Gtk::RESPONSE_ACCEPT:
diff --git a/gtk2_ardour/editor_selection_list.cc b/gtk2_ardour/editor_selection_list.cc
index 9ede3f906a..be4c52d621 100644
--- a/gtk2_ardour/editor_selection_list.cc
+++ b/gtk2_ardour/editor_selection_list.cc
@@ -109,6 +109,7 @@ Editor::name_selection ()
p.set_prompt (_("Name for Chunk:"));
p.add_button (Gtk::Stock::NEW, Gtk::RESPONSE_ACCEPT);
+ p.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
p.change_labels (_("Create Chunk"), _("Forget it"));
p.show_all ();
diff --git a/gtk2_ardour/meter_bridge_strip.cc b/gtk2_ardour/meter_bridge_strip.cc
index d6422add40..50562a68d0 100644
--- a/gtk2_ardour/meter_bridge_strip.cc
+++ b/gtk2_ardour/meter_bridge_strip.cc
@@ -221,6 +221,7 @@ MeterBridgeStrip::label_button_press_release (GdkEventButton *ev)
prompter.set_prompt (_("New Name for Meter:"));
prompter.set_initial_text (label.get_text());
prompter.add_button (_("Rename"), Gtk::RESPONSE_ACCEPT);
+ prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
prompter.show_all();
switch (prompter.run ()) {
diff --git a/gtk2_ardour/plugin_selector.cc b/gtk2_ardour/plugin_selector.cc
index 52c0350181..1f28d6a9f4 100644
--- a/gtk2_ardour/plugin_selector.cc
+++ b/gtk2_ardour/plugin_selector.cc
@@ -64,7 +64,7 @@ PluginSelector::PluginSelector (PluginManager *mgr)
amodel = Gtk::ListStore::create(acols);
added_list.set_model (amodel);
- added_list.append_column (_("Plugins to be Applied to Channel"), acols.text);
+ added_list.append_column (_("Plugins to be Connected to Insert"), acols.text);
added_list.set_headers_visible (true);
added_list.set_reorderable (false);
@@ -114,7 +114,7 @@ PluginSelector::PluginSelector (PluginManager *mgr)
table->attach(ascroller, 0, 7, 7, 9);
add_button (Stock::CANCEL, RESPONSE_CANCEL);
- add_button (Stock::APPLY, RESPONSE_APPLY);
+ add_button (Stock::CONNECT, RESPONSE_APPLY);
set_default_response (RESPONSE_APPLY);
get_vbox()->pack_start (*table);
diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc
index 423b0c0b82..00b5ad2dc7 100644
--- a/gtk2_ardour/plugin_ui.cc
+++ b/gtk2_ardour/plugin_ui.cc
@@ -862,6 +862,7 @@ PlugUIBase::save_plugin_setting ()
ArdourPrompter prompter (true);
prompter.set_prompt(_("Name of New Preset:"));
prompter.add_button (Gtk::Stock::ADD, Gtk::RESPONSE_ACCEPT);
+ prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
prompter.show_all();
diff --git a/gtk2_ardour/redirect_box.cc b/gtk2_ardour/redirect_box.cc
index 2ded0b10fb..87b31d8c03 100644
--- a/gtk2_ardour/redirect_box.cc
+++ b/gtk2_ardour/redirect_box.cc
@@ -746,6 +746,7 @@ RedirectBox::rename_redirect (Redirect* redirect)
name_prompter.set_prompt (_("rename redirect"));
name_prompter.set_initial_text (redirect->name());
name_prompter.add_button (_("Rename"), Gtk::RESPONSE_ACCEPT);
+ name_prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
name_prompter.show_all ();
switch (name_prompter.run ()) {
diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc
index b46574a0cc..af32215c51 100644
--- a/gtk2_ardour/route_ui.cc
+++ b/gtk2_ardour/route_ui.cc
@@ -727,9 +727,10 @@ RouteUI::route_rename ()
{
ArdourPrompter name_prompter (true);
string result;
- name_prompter.set_prompt (_("new name: "));
+ name_prompter.set_prompt (_("New Name: "));
name_prompter.set_initial_text (_route.name());
name_prompter.add_button (_("Rename"), Gtk::RESPONSE_ACCEPT);
+ name_prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
name_prompter.show_all ();
switch (name_prompter.run ()) {
diff --git a/gtk2_ardour/sfdb_ui.cc b/gtk2_ardour/sfdb_ui.cc
index 10f1530612..149b7f66ca 100644
--- a/gtk2_ardour/sfdb_ui.cc
+++ b/gtk2_ardour/sfdb_ui.cc
@@ -236,6 +236,7 @@ SoundFileBox::add_field_clicked ()
prompter.set_prompt (_("Name for Field"));
prompter.add_button (Gtk::Stock::ADD, Gtk::RESPONSE_ACCEPT);
+ prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
switch (prompter.run ()) {
case Gtk::RESPONSE_ACCEPT:
diff --git a/gtk2_ardour/visual_time_axis.cc b/gtk2_ardour/visual_time_axis.cc
index cf2582bd15..b6c96c55ab 100644
--- a/gtk2_ardour/visual_time_axis.cc
+++ b/gtk2_ardour/visual_time_axis.cc
@@ -323,6 +323,7 @@ VisualTimeAxis::start_time_axis_rename()
name_prompter.set_prompt (_("new name: ")) ;
name_prompter.add_button (_("Rename"), Gtk::RESPONSE_ACCEPT);
+ name_prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
name_prompter.show_all() ;
switch (name_prompter.run ()) {
diff --git a/libs/gtkmm2ext/gtkmm2ext/prompter.h b/libs/gtkmm2ext/gtkmm2ext/prompter.h
index 795d982295..9847e73661 100644
--- a/libs/gtkmm2ext/gtkmm2ext/prompter.h
+++ b/libs/gtkmm2ext/gtkmm2ext/prompter.h
@@ -54,13 +54,14 @@ class Prompter : public Gtk::Dialog
void change_labels (std::string ok, std::string cancel);
void get_result (std::string &str, bool strip=true);
+ bool maybe_allow_response (GdkEventKey* );
protected:
Gtk::Entry& the_entry() { return entry; }
private:
Gtk::Entry entry;
- Gtk::VBox entryBox;
+ Gtk::HBox entryBox;
Gtk::Label entryLabel;
void init ();
diff --git a/libs/gtkmm2ext/prompter.cc b/libs/gtkmm2ext/prompter.cc
index 508e509868..c3a04f19a8 100644
--- a/libs/gtkmm2ext/prompter.cc
+++ b/libs/gtkmm2ext/prompter.cc
@@ -48,14 +48,15 @@ Prompter::init ()
set_type_hint (Gdk::WINDOW_TYPE_HINT_DIALOG);
set_position (Gtk::WIN_POS_MOUSE);
set_name ("Prompter");
-
- set_default_response (Gtk::RESPONSE_ACCEPT);
add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
/*
Alas a generic 'affirmative' button seems a bit useless sometimes.
You will have to add your own.
+ After adding, use :
+ set_response_sensitive (Gtk::RESPONSE_ACCEPT, false)
+ to prevent the RESPONSE_ACCEPT button from permitting blank strings.
*/
entryLabel.set_line_wrap (true);
@@ -69,7 +70,7 @@ Prompter::init ()
get_vbox()->pack_start (entryBox);
show_all_children();
-
+ entry.signal_key_release_event().connect (mem_fun (*this, &Prompter::maybe_allow_response));
entry.signal_activate().connect (bind (mem_fun (*this, &Prompter::response), Gtk::RESPONSE_ACCEPT));
}
@@ -88,3 +89,23 @@ Prompter::get_result (string &str, bool strip)
strip_whitespace_edges (str);
}
}
+
+bool
+Prompter::maybe_allow_response (GdkEventKey* ev)
+{
+ /*
+ This is set up so that entering text in the entry
+ field makes the RESPONSE_ACCEPT button active.
+ Of course if you haven't added a RESPONSE_ACCEPT
+ button, nothing will happen at all.
+ */
+
+ if (entry.get_text() != "") {
+ set_response_sensitive (Gtk::RESPONSE_ACCEPT, true);
+ set_default_response (Gtk::RESPONSE_ACCEPT);
+ } else {
+ set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
+ }
+ return true;
+}
+