Fix session-open after selecting new, template, then back
[ardour.git] / gtk2_ardour / about.cc
index df1bd586c5702cbadc44b941cc4be3daccac1c8f..fb706681ee1960582e531781c50826117eb8ea87 100644 (file)
 #include <ctime>
 #include <cstdlib>
 
+#include "pbd/error.h"
 #include "pbd/file_utils.h"
+#include "pbd/openuri.h"
 
+#include "ardour/profile.h"
 #include "ardour/revision.h"
-#include "ardour/version.h"
 #include "ardour/filesystem_paths.h"
 
-#include "utils.h"
-#include "version.h"
-
 #include "about.h"
 #include "configinfo.h"
 #include "rgb_macros.h"
-#include "ardour_ui.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
+
+#ifdef WAF_BUILD
+#include "gtk2ardour-version.h"
+#endif
 
 using namespace Gtk;
 using namespace Gdk;
@@ -46,6 +48,10 @@ using namespace std;
 using namespace ARDOUR;
 using namespace PBD;
 
+#ifndef CODENAME
+#define CODENAME ""
+#endif
+
 #ifdef WITH_PAYMENT_OPTIONS
 
 /* XPM */
@@ -118,6 +124,7 @@ static const gchar * paypal_xpm[] = {
 #endif
 
 static const char* authors[] = {
+       N_("Fons Adriaensen"),
        N_("Brian Ahr"),
        N_("John Anderson"),
        N_("Marcus Andersson"),
@@ -125,17 +132,22 @@ static const char* authors[] = {
        N_("Hans Baier"),
        N_("Ben Bell"),
        N_("Sakari Bergen"),
+       N_("Christian Borss"),
+       N_("Thomas Brand"),
        N_("Chris Cannam"),
+       N_("Jeremy Carter"),
        N_("Jesse Chappell"),
        N_("Thomas Charbonnel"),
        N_("Sam Chessman"),
        N_("André Colomb"),
        N_("Paul Davis"),
        N_("Gerard van Dongen"),
+       N_("John Emmas"),
        N_("Colin Fletcher"),
        N_("Dave Flick"),
        N_("Hans Fugal"),
        N_("Robin Gareus"),
+       N_("Nil Geisweiller"),
        N_("Christopher George"),
        N_("Chris Goddard"),
        N_("J. Abelardo Gutierrez"),
@@ -151,6 +163,7 @@ static const char* authors[] = {
        N_("Armand Klenk"),
        N_("Julien de Kozak"),
        N_("Matt Krai"),
+       N_("Georg Krause"),
        N_("Nick Lanham"),
        N_("Colin Law"),
        N_("Joshua Leach"),
@@ -158,27 +171,39 @@ static const char* authors[] = {
        N_("Nick Mainsbridge"),
        N_("Tim Mayberry"),
        N_("Doug Mclain"),
+       N_("Johannes Mueller"),
+       N_("Todd Naugle"),
+       N_("André Nusser"),
+       N_("Bent Bisballe Nyeng"),
        N_("Jack O'Quin"),
+       N_("Len Ovens"),
+       N_("Pavel Potocek"),
        N_("Nimal Ratnayake"),
+       N_("Julien Rivaud"),
        N_("David Robillard"),
+       N_("Julien Roger"),
        N_("Taybin Rutkin"),
        N_("Andreas Ruge"),
        N_("Sampo Savolainen"),
        N_("Rodrigo Severo"),
+       N_("Daniel Sheeler"),
        N_("Per Sigmond"),
        N_("Lincoln Spiteri"),
        N_("Mike Start"),
        N_("Mark Stewart"),
+       N_("Nathan Stewart"),
        N_("Roland Stigge"),
        N_("Petter Sundlöf"),
        N_("Mike Täht"),
        N_("Roy Vegard"),
        N_("Thorsten Wilms"),
+       N_("Damien Zammit"),
+       N_("Grygorii Zharun"),
        0
 };
 
 static const char* translators[] = {
-       N_("French:\n\tAlain Fréhel <alain.frehel@free.fr>\n\tChristophe Combelles <ccomb@free.fr>\n\tMartin Blanchard\n\tRomain Arnaud <roming22@gmail.com>\n"),
+       N_("French:\n\tAlain Fréhel <alain.frehel@free.fr>\n\tChristophe Combelles <ccomb@free.fr>\n\tMartin Blanchard\n\tRomain Arnaud <roming22@gmail.com>\n\tOlivier Humbert <trebmuh@tuxfamily.org>\n"),
        N_("German:\n\tKarsten Petersen <kapet@kapet.de>\
 \n\tSebastian Arnold <mail@sebastian-arnold.net>\
 \n\tRobert Schwede <schwede@ironshark.com>\
@@ -199,6 +224,7 @@ static const char* translators[] = {
        N_("Czech:\n\t Pavel Fric <pavelfric@seznam.cz>\n"),
        N_("Norwegian:\n\t Eivind Ødegård\n"),
        N_("Chinese:\n\t Rui-huai Zhang <zrhzrh@mail.ustc.edu.cn>\n"),
+       N_("Japanese:\n\t Hiroki Inagaki <hiroki.ingk@gmail.com>\n"),
        0
 };
 
@@ -563,8 +589,9 @@ About::About ()
        std::string splash_file;
 
        Searchpath spath(ardour_data_search_path());
+       spath.add_subdirectory_to_paths ("resources");
 
-       if (find_file_in_search_path (spath, "splash.png", splash_file)) {
+       if (find_file (spath, PROGRAM_NAME "-splash.png", splash_file)) {
                set_logo (Gdk::Pixbuf::create_from_file (splash_file));
        } else {
                error << "Could not find splash file" << endmsg;
@@ -577,15 +604,40 @@ About::About ()
                t += ' ';
        }
 
+#if defined __x86_64__ || defined _M_X64
+       const std::string cpu_arch = _("Intel 64-bit");
+#elif defined __i386__  || defined _M_IX86
+       const std::string cpu_arch = _("Intel 32-bit");
+#elif defined __ppc__ && defined  __LP64__
+       const std::string cpu_arch = _("PowerPC 64-bit");
+#elif defined __ppc__
+       const std::string cpu_arch = _("PowerPC 32-bit");
+#elif defined  __LP64__
+       const std::string cpu_arch = _("64-bit");
+#else
+       const std::string cpu_arch = _("32-bit"); // ARM, ALPHA,..
+#endif
+       std::string codename = CODENAME;
+       if (ARDOUR::Profile->get_mixbus() || ARDOUR::Profile->get_trx()) {
+               codename = "";
+       }
+
+#ifndef NDEBUG
+       const std::string suffix = _(" - debug");
+#else
+       const std::string suffix = "";
+#endif
+
        set_translator_credits (t);
-       set_copyright (_("Copyright (C) 1999-2013 Paul Davis\n"));
+       set_copyright (_("Copyright (C) 1999-2017 Paul Davis\n"));
        set_license (gpl);
        set_name (X_("Ardour"));
        set_website (X_("http://ardour.org/"));
        set_website_label (_("http://ardour.org/"));
-       set_version ((string_compose(_("%1\n(built from revision %2)"),
+       set_version ((string_compose(_("%1%2\n(rev %3)\n%4%5"),
                                     VERSIONSTRING,
-                                    revision)));
+                                    codename,
+                                    revision, cpu_arch, suffix)));
 
        Gtk::Button* config_button = manage (new Button (_("Config")));
 
@@ -597,6 +649,7 @@ About::About ()
        if (btn) {
                btn->signal_clicked().connect(sigc::mem_fun(static_cast<Gtk::Window*>(this), &Gtk::Window::hide));
        }
+       set_url_hook (sigc::ptr_fun(&About::launch_homepage));
 }
 
 About::~About ()
@@ -615,3 +668,8 @@ About::show_config_info ()
        config_info->hide ();
 }
 
+void
+About::launch_homepage (AboutDialog& /* about */, const Glib::ustring& website_url)
+{
+       PBD::open_uri (website_url);
+}