add code to display announcements, and parameterize several URL's used in the program
authorPaul Davis <paul@linuxaudiosystems.com>
Sat, 9 Mar 2013 13:44:22 +0000 (13:44 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Sat, 9 Mar 2013 13:44:22 +0000 (13:44 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@14197 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/ardour_ui.cc
gtk2_ardour/pingback.cc
gtk2_ardour/startup.cc
gtk2_ardour/startup.h
libs/ardour/ardour/rc_configuration_vars.h
libs/pbd/openuri.cc
libs/pbd/pbd/openuri.h

index 550d3cef7bbdc1717f2df447afda5451dca7d44b..e4c480bc2ceac0c750ac0d5af5e53864e7a60e50 100644 (file)
@@ -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
index 9a5169668f791bfaeca9835559c00c77313479fc..c108e5e96e1bec765c6140bd7c3eeaeced470c46 100644 (file)
 
 #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());
index 303326e00360b77ad1a40d916e5e3b75050322a9..208364447cb56826cba83b3e1e48ea588b0770d1 100644 (file)
@@ -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;
+}
index cf14103b52ee7056836d5989da461a378feaf188..4af6ffbc2ac28d5a91594f0cb645439289f3c0ea 100644 (file)
@@ -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__ */
index c153bfd34a28694130c5bc30b7c4970039985b75..1564d01315b24659756de3903885ffbc99426734 100644 (file)
@@ -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")
index a43c78a792e8297a20e560d609a3010126bf04c3..45154d0ad1b1501357b3e8f74294383ca89b0892 100644 (file)
@@ -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());
+}
index 0e74c6da9000cf79832dfb8c84bf6eb0ef10aa53..ec17b5a34ab784b479d311fa21415386c88e5dff 100644 (file)
 #ifndef __libpbd_openuri_h__
 #define __libpbd_openuri_h__
 
+#include <string>
+
 namespace PBD {
         bool open_uri (const char*);
+        bool open_uri (const std::string&);
 }
 
 #endif