From 53d337a16882536876202324c9d68db6eba4eadf Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 30 Nov 2005 19:34:09 +0000 Subject: more miscellaneous fixes to make things even nicer git-svn-id: svn://localhost/trunk/ardour2@153 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/editor_cursors.cc | 31 +++---- gtk2_ardour/export_dialog.cc | 13 +-- gtk2_ardour/export_dialog.h | 1 - gtk2_ardour/playlist_selector.cc | 2 +- libs/gtkmm2ext/gtk_ui.cc | 186 ++++++++++++++++++++++---------------- libs/gtkmm2ext/gtkmm2ext/gtk_ui.h | 20 ++-- 6 files changed, 142 insertions(+), 111 deletions(-) diff --git a/gtk2_ardour/editor_cursors.cc b/gtk2_ardour/editor_cursors.cc index c868530476..c6551095c8 100644 --- a/gtk2_ardour/editor_cursors.cc +++ b/gtk2_ardour/editor_cursors.cc @@ -79,19 +79,20 @@ Editor::Cursor::set_position (jack_nframes_t frame) current_frame = frame; - if (new_pos == points.front().get_x()) { - - /* change in position is not visible, so just raise it */ - - canvas_item.raise_to_top(); - return; - } - - points.front().set_x(new_pos); - points.back().set_x(new_pos); + if (new_pos != points.front().get_x()) { + + points.front().set_x (new_pos); + points.back().set_x (new_pos); + + cerr << "new cursor points = " + << points.front().get_x() << ',' << points.front().get_y() + << " .. " + << points.back().get_x() << ',' << points.back().get_y() + << endl; + + canvas_item.property_points() = points; + } - // cerr << "set cursor2 al points, nc = " << points->num_points << endl; - canvas_item.property_points() = points; canvas_item.raise_to_top(); } @@ -99,8 +100,7 @@ void Editor::Cursor::set_length (double units) { length = units; - points.back().set_x (points.front().get_y() + length); - // cerr << "set cursor3 al points, nc = " << points->num_points << endl; + points.back().set_y (points.front().get_y() + length); canvas_item.property_points() = points; } @@ -108,7 +108,6 @@ void Editor::Cursor::set_y_axis (double position) { points.front().set_y (position); - points.back().set_x (position + length); - // cerr << "set cursor4 al points, nc = " << points->num_points << endl; + points.back().set_y (position + length); canvas_item.property_points() = points; } diff --git a/gtk2_ardour/export_dialog.cc b/gtk2_ardour/export_dialog.cc index c2bde2c72b..8074b12afd 100644 --- a/gtk2_ardour/export_dialog.cc +++ b/gtk2_ardour/export_dialog.cc @@ -122,11 +122,6 @@ ExportDialog::ExportDialog(PublicEditor& e, AudioRegion* r) set_name ("ExportWindow"); add_events (Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK); - add (vpacker); - - vpacker.set_border_width (10); - vpacker.set_spacing (10); - file_selector = 0; spec.running = false; @@ -172,7 +167,7 @@ ExportDialog::ExportDialog(PublicEditor& e, AudioRegion* r) track_scroll.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); master_scroll.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC); - vpacker.pack_start (file_frame, false, false); + get_vbox()->pack_start (file_frame, false, false); hpacker.set_spacing (5); hpacker.set_border_width (5); @@ -196,13 +191,13 @@ ExportDialog::ExportDialog(PublicEditor& e, AudioRegion* r) hpacker.pack_start (track_vpacker); } - vpacker.pack_start (hpacker); + get_vbox()->pack_start (hpacker); track_selector_button.set_name ("EditorGTKButton"); track_selector_button.signal_clicked().connect (mem_fun(*this, &ExportDialog::track_selector_button_click)); - vpacker.pack_start (button_box, false, false); - vpacker.pack_start (progress_bar, false, false); + get_vbox()->pack_start (button_box, false, false); + get_vbox()->pack_start (progress_bar, false, false); Gtkmm2ext::set_size_request_to_display_given_text (file_entry, X_("Kg/quite/a/reasonable/size/for/files/i/think"), 5, 8); diff --git a/gtk2_ardour/export_dialog.h b/gtk2_ardour/export_dialog.h index 16343e55bc..12532fafd4 100644 --- a/gtk2_ardour/export_dialog.h +++ b/gtk2_ardour/export_dialog.h @@ -73,7 +73,6 @@ class ExportDialog : public ArdourDialog PublicEditor& editor; ARDOUR::Session* session; ARDOUR::AudioRegion* audio_region; - Gtk::VBox vpacker; Gtk::VBox track_vpacker; Gtk::HBox hpacker; Gtk::HBox button_box; diff --git a/gtk2_ardour/playlist_selector.cc b/gtk2_ardour/playlist_selector.cc index 512695aad7..eb0e7e3203 100644 --- a/gtk2_ardour/playlist_selector.cc +++ b/gtk2_ardour/playlist_selector.cc @@ -102,7 +102,7 @@ PlaylistSelector::show_for (RouteUI* ruix) clear_map (); select_connection.disconnect (); - model.clear (); + model->clear (); session->foreach_playlist (this, &PlaylistSelector::add_playlist_to_map); diff --git a/libs/gtkmm2ext/gtk_ui.cc b/libs/gtkmm2ext/gtk_ui.cc index ea3e432d37..2da27872a9 100644 --- a/libs/gtkmm2ext/gtk_ui.cc +++ b/libs/gtkmm2ext/gtk_ui.cc @@ -40,6 +40,8 @@ #include "i18n.h" using namespace Gtkmm2ext; +using namespace Gtk; +using namespace Glib; using std::map; pthread_t UI::gui_thread; @@ -48,8 +50,8 @@ UI *UI::theGtkUI = 0; UI::UI (string name, int *argc, char ***argv, string rcfile) : _ui_name (name) { - theMain = new Gtk::Main (argc, argv); - tips = new Gtk::Tooltips; + theMain = new Main (argc, argv); + tips = new Tooltips; if (pthread_key_create (&thread_request_buffer_key, 0)) { cerr << _("cannot create thread request buffer key") << endl; @@ -73,8 +75,6 @@ UI::UI (string name, int *argc, char ***argv, string rcfile) return; } - load_rcfile (rcfile); - errors = new TextViewer (850,100); errors->text().set_editable (false); errors->text().set_name ("ErrorText"); @@ -85,10 +85,12 @@ UI::UI (string name, int *argc, char ***argv, string rcfile) errors->set_title (title); errors->dismiss_button().set_name ("ErrorLogCloseButton"); - errors->signal_delete_event().connect (bind (ptr_fun (just_hide_it), (Gtk::Window *) errors)); + errors->signal_delete_event().connect (bind (ptr_fun (just_hide_it), (Window *) errors)); register_thread (pthread_self(), X_("GUI")); + load_rcfile (rcfile); + _ok = true; } @@ -113,38 +115,76 @@ UI::load_rcfile (string path) return -1; } - gtk_rc_parse (path.c_str()); - - Gtk::Label *a_widget1; - Gtk::Label *a_widget2; - Gtk::Label *a_widget3; - Gtk::Label *a_widget4; - - a_widget1 = new Gtk::Label; - a_widget2 = new Gtk::Label; - a_widget3 = new Gtk::Label; - a_widget4 = new Gtk::Label; - - a_widget1->set_name ("FatalMessage"); - a_widget1->ensure_style (); - fatal_message_style = a_widget1->get_style(); - - a_widget2->set_name ("ErrorMessage"); - a_widget2->ensure_style (); - error_message_style = a_widget2->get_style(); - - a_widget3->set_name ("WarningMessage"); - a_widget3->ensure_style (); - warning_message_style = a_widget3->get_style(); - - a_widget4->set_name ("InfoMessage"); - a_widget4->ensure_style (); - info_message_style = a_widget4->get_style(); - - delete a_widget1; - delete a_widget2; - delete a_widget3; - delete a_widget4; + RC rc (path.c_str()); + + /* have to pack widgets into a toplevel window so that styles will stick */ + + Window temp_window (WINDOW_TOPLEVEL); + HBox box; + Label a_widget1; + Label a_widget2; + Label a_widget3; + Label a_widget4; + RefPtr style; + RefPtr buffer (errors->text().get_buffer()); + + box.pack_start (a_widget1); + box.pack_start (a_widget2); + box.pack_start (a_widget3); + box.pack_start (a_widget4); + + error_ptag = buffer->create_tag(); + error_mtag = buffer->create_tag(); + fatal_ptag = buffer->create_tag(); + fatal_mtag = buffer->create_tag(); + warning_ptag = buffer->create_tag(); + warning_mtag = buffer->create_tag(); + info_ptag = buffer->create_tag(); + info_mtag = buffer->create_tag(); + + a_widget1.set_name ("FatalMessage"); + a_widget1.ensure_style (); + style = a_widget1.get_style(); + + fatal_ptag->property_font_desc().set_value(style->get_font()); + fatal_ptag->property_foreground_gdk().set_value(style->get_fg(STATE_ACTIVE)); + fatal_ptag->property_background_gdk().set_value(style->get_bg(STATE_ACTIVE)); + fatal_mtag->property_font_desc().set_value(style->get_font()); + fatal_mtag->property_foreground_gdk().set_value(style->get_fg(STATE_NORMAL)); + fatal_mtag->property_background_gdk().set_value(style->get_bg(STATE_NORMAL)); + + a_widget2.set_name ("ErrorMessage"); + a_widget2.ensure_style (); + style = a_widget2.get_style(); + + error_ptag->property_font_desc().set_value(style->get_font()); + error_ptag->property_foreground_gdk().set_value(style->get_fg(STATE_ACTIVE)); + error_ptag->property_background_gdk().set_value(style->get_bg(STATE_ACTIVE)); + error_mtag->property_font_desc().set_value(style->get_font()); + error_mtag->property_foreground_gdk().set_value(style->get_fg(STATE_NORMAL)); + error_mtag->property_background_gdk().set_value(style->get_bg(STATE_NORMAL)); + + a_widget3.set_name ("WarningMessage"); + a_widget3.ensure_style (); + style = a_widget3.get_style(); + + warning_ptag->property_font_desc().set_value(style->get_font()); + warning_ptag->property_foreground_gdk().set_value(style->get_fg(STATE_ACTIVE)); + warning_ptag->property_background_gdk().set_value(style->get_bg(STATE_ACTIVE)); + warning_mtag->property_font_desc().set_value(style->get_font()); + warning_mtag->property_foreground_gdk().set_value(style->get_fg(STATE_NORMAL)); + warning_mtag->property_background_gdk().set_value(style->get_bg(STATE_NORMAL)); + + a_widget4.set_name ("InfoMessage"); + a_widget4.ensure_style (); + style = a_widget4.get_style(); + + info_ptag->property_font_desc().set_value(style->get_font()); + info_ptag->property_foreground_gdk().set_value(style->get_fg(STATE_ACTIVE)); + info_ptag->property_background_gdk().set_value(style->get_bg(STATE_ACTIVE)); + info_mtag->property_font_desc().set_value(style->get_font()); + info_mtag->property_foreground_gdk().set_value(style->get_fg(STATE_NORMAL)); + info_mtag->property_background_gdk().set_value(style->get_bg(STATE_NORMAL)); return 0; } @@ -190,7 +230,7 @@ UI::quit () void UI::do_quit () { - Gtk::Main::quit(); + Main::quit(); } void @@ -250,7 +290,7 @@ UI::call_slot_locked (sigc::slot slot) } void -UI::set_tip (Gtk::Widget *w, const gchar *tip, const gchar *hlp) +UI::set_tip (Widget *w, const gchar *tip, const gchar *hlp) { Request *req = get_request (SetTip); @@ -266,7 +306,7 @@ UI::set_tip (Gtk::Widget *w, const gchar *tip, const gchar *hlp) } void -UI::set_state (Gtk::Widget *w, Gtk::StateType state) +UI::set_state (Widget *w, StateType state) { Request *req = get_request (StateChange); @@ -374,7 +414,7 @@ UI::setup_signal_pipe () if (pipe (signal_pipe)) { error << "UI: cannot create error signal pipe (" - << strerror (errno) << ")" + << std::strerror (errno) << ")" << endmsg; return -1; @@ -383,7 +423,7 @@ UI::setup_signal_pipe () if (fcntl (signal_pipe[0], F_SETFL, O_NONBLOCK)) { error << "UI: cannot set O_NONBLOCK on " "signal read pipe (" - << strerror (errno) << ")" + << std::strerror (errno) << ")" << endmsg; return -1; } @@ -391,7 +431,7 @@ UI::setup_signal_pipe () if (fcntl (signal_pipe[1], F_SETFL, O_NONBLOCK)) { error << "UI: cannot set O_NONBLOCK on " "signal write pipe (" - << strerror (errno) + << std::strerror (errno) << ")" << endmsg; return -1; @@ -588,25 +628,29 @@ UI::receive (Transmitter::Channel chn, const char *str) void UI::process_error_message (Transmitter::Channel chn, const char *str) { - Glib::RefPtr style; + RefPtr