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
This commit is contained in:
parent
f81f877adf
commit
dcd4c89f34
|
@ -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);
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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);
|
||||
dialog.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false);
|
||||
dialog.set_initial_text (loc->name());
|
||||
|
||||
entry.set_text (loc->name());
|
||||
entry.set_name ("MarkerNameDisplay");
|
||||
|
||||
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 ();
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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 ();
|
||||
|
||||
|
|
|
@ -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 ()) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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 ()) {
|
||||
|
|
|
@ -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 ()) {
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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 ()) {
|
||||
|
|
|
@ -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 ();
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue