From e701adea419300f2cf7e760f14e7b17b9046b478 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 9 Mar 2013 13:44:22 +0000 Subject: [PATCH] add code to display announcements, and parameterize several URL's used in the program git-svn-id: svn://localhost/ardour2/branches/3.0@14197 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/ardour_ui.cc | 4 +- gtk2_ardour/pingback.cc | 7 ++- gtk2_ardour/startup.cc | 53 ++++++++++++++++++++++ gtk2_ardour/startup.h | 6 +++ libs/ardour/ardour/rc_configuration_vars.h | 8 ++++ libs/pbd/openuri.cc | 5 ++ libs/pbd/pbd/openuri.h | 3 ++ 7 files changed, 82 insertions(+), 4 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 550d3cef7b..e4c480bc2c 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -2874,13 +2874,13 @@ ARDOUR_UI::show_about () void ARDOUR_UI::launch_manual () { - PBD::open_uri("http://ardour.org/flossmanual"); + PBD::open_uri (Config->get_tutorial_manual_url()); } void ARDOUR_UI::launch_reference () { - PBD::open_uri ("http://ardour.org/refmanual"); + PBD::open_uri (Config->get_reference_manual_url()); } void diff --git a/gtk2_ardour/pingback.cc b/gtk2_ardour/pingback.cc index 9a5169668f..c108e5e96e 100644 --- a/gtk2_ardour/pingback.cc +++ b/gtk2_ardour/pingback.cc @@ -30,11 +30,14 @@ #include "pbd/compose.h" #include "pbd/pthread_utils.h" + #include "ardour/filesystem_paths.h" +#include "ardour/rc_configuration.h" #include "pingback.h" using std::string; +using namespace ARDOUR; static size_t curl_write_data (char *bufptr, size_t size, size_t nitems, void *ptr) @@ -96,9 +99,9 @@ _pingback (void *arg) string url; #ifdef __APPLE__ - url = "https://community.ardour.org/pingback/osx/"; + url = Config->get_osx_pingback_url (); #else - url = "https://community.ardour.org/pingback/linux/"; + url = Config->get_linux_pingback_url (); #endif char* v = curl_easy_escape (c, cm->version.c_str(), cm->version.length()); diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc index 303326e003..208364447c 100644 --- a/gtk2_ardour/startup.cc +++ b/gtk2_ardour/startup.cc @@ -32,6 +32,7 @@ #include "pbd/replace_all.h" #include "pbd/whitespace.h" #include "pbd/stacktrace.h" +#include "pbd/openuri.h" #include "ardour/filesystem_paths.h" #include "ardour/recent_sessions.h" @@ -551,7 +552,34 @@ ArdourStartup::setup_initial_choice_page () centering_vbox->pack_start (ic_new_session_button, false, true); centering_vbox->pack_start (ic_existing_session_button, false, true); + + if (ARDOUR_UI::instance()->announce_string() != "" ) { + Gtk::Frame *info_frame = manage(new Gtk::Frame); + info_frame->set_shadow_type(SHADOW_ETCHED_OUT); + centering_vbox->pack_start (*info_frame, false, false, 20); + + Box *info_box = manage (new VBox); + info_box->set_border_width (12); + info_box->set_spacing (6); + info_box->set_name("mixbus_info_box"); + + info_box->pack_start (info_scroller_label, false, false); + + info_frame->add (*info_box); + info_frame->show_all(); + + info_scroller_count = 0; + info_scroller_connection = Glib::signal_timeout().connect (mem_fun(*this, &ArdourStartup::info_scroller_update), 50); + + Gtk::Button *updates_button = manage (new Gtk::Button (_("Check the website for more..."))); + + updates_button->signal_clicked().connect (mem_fun(*this, &ArdourStartup::updates_button_clicked) ); + ARDOUR_UI::instance()->tooltips().set_tip (*updates_button, _("Click to open the program website in your web browser")); + + info_box->pack_start (*updates_button, false, false); + } + ic_new_session_button.signal_button_press_event().connect(sigc::mem_fun(*this, &ArdourStartup::initial_button_clicked), false); ic_new_session_button.signal_activate().connect(sigc::mem_fun(*this, &ArdourStartup::initial_button_activated), false); @@ -1410,3 +1438,28 @@ ArdourStartup::been_here_before_path () const // XXXX use more specific version so we can catch upgrades return Glib::build_filename (user_config_directory (), ".a3"); } + +void +ArdourStartup::updates_button_clicked () +{ + //now open a browser window so user can see more + PBD::open_uri (Config->get_updates_url()); +} + +bool +ArdourStartup::info_scroller_update() +{ + info_scroller_count++; + + char buf[512]; + snprintf (buf, std::min(info_scroller_count,sizeof(buf)-1), "%s", ARDOUR_UI::instance()->announce_string().c_str() ); + buf[info_scroller_count] = NULL; + info_scroller_label.set_text (buf); + info_scroller_label.show(); + + if (info_scroller_count > ARDOUR_UI::instance()->announce_string().length()) { + info_scroller_connection.disconnect(); + } + + return true; +} diff --git a/gtk2_ardour/startup.h b/gtk2_ardour/startup.h index cf14103b52..4af6ffbc2a 100644 --- a/gtk2_ardour/startup.h +++ b/gtk2_ardour/startup.h @@ -295,6 +295,12 @@ class ArdourStartup : public Gtk::Assistant { bool _existing_session_chooser_used; ///< set to true when the existing session chooser has been used void setup_prerelease_page (); + + Gtk::Label info_scroller_label; + std::string::size_type info_scroller_count; + bool info_scroller_update(); + sigc::connection info_scroller_connection; + void updates_button_clicked (); }; #endif /* __gtk2_ardour_startup_h__ */ diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h index c153bfd34a..1564d01315 100644 --- a/libs/ardour/ardour/rc_configuration_vars.h +++ b/libs/ardour/ardour/rc_configuration_vars.h @@ -206,3 +206,11 @@ CONFIG_VARIABLE (bool, use_tooltips, "use-tooltips", true) CONFIG_VARIABLE (std::string, mixer_strip_visibility, "mixer-strip-visibility", "PhaseInvert,SoloSafe,SoloIsolated,Group,MeterPoint") CONFIG_VARIABLE (bool, allow_non_quarter_pulse, "allow-non-quarter-pulse", false) CONFIG_VARIABLE (bool, show_region_gain, "show-region-gain", false) + +/* web addresses used in the program */ + +CONFIG_VARIABLE (std::string, osx_pingback_url, "osx-pingback-url", "https://community.ardour.org/pingback/osx/") +CONFIG_VARIABLE (std::string, linux_pingback_url, "linux-pingback-url", "https://community.ardour.org/pingback/linux/") +CONFIG_VARIABLE (std::string, tutorial_manual_url, "tutorial-manual-url", "http://ardour.org/flossmanual") +CONFIG_VARIABLE (std::string, reference_manual_url, "reference-manual-url", "http://manual.ardour.org/") +CONFIG_VARIABLE (std::string, updates_url, "updates-url", "http://ardour.org/whatsnew.html") diff --git a/libs/pbd/openuri.cc b/libs/pbd/openuri.cc index a43c78a792..45154d0ad1 100644 --- a/libs/pbd/openuri.cc +++ b/libs/pbd/openuri.cc @@ -55,3 +55,8 @@ PBD::open_uri (const char* uri) #endif } +bool +PBD::open_uri (const std::string& uri) +{ + return open_uri (uri.c_str()); +} diff --git a/libs/pbd/pbd/openuri.h b/libs/pbd/pbd/openuri.h index 0e74c6da90..ec17b5a34a 100644 --- a/libs/pbd/pbd/openuri.h +++ b/libs/pbd/pbd/openuri.h @@ -20,8 +20,11 @@ #ifndef __libpbd_openuri_h__ #define __libpbd_openuri_h__ +#include + namespace PBD { bool open_uri (const char*); + bool open_uri (const std::string&); } #endif