X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fabout.cpp;h=3afcc74eecaca4b1de670d0960de1587c1901b3b;hb=4ba22fb51d97f1ecce04dcc5e40569a4354c1bae;hp=21d3d9a6034592fee9890792fb943fa2a868474a;hpb=8ef042c40521681cea99944097c4f90a5ac6cf74;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/about.cpp b/synfig-studio/trunk/src/gtkmm/about.cpp index 21d3d9a..3afcc74 100644 --- a/synfig-studio/trunk/src/gtkmm/about.cpp +++ b/synfig-studio/trunk/src/gtkmm/about.cpp @@ -1,12 +1,11 @@ /* === S Y N F I G ========================================================= */ /*! \file about.cpp -** \brief writeme +** \brief About dialog implementation ** ** $Id$ ** ** \legal -** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley -** Copyright (c) 2007 Chris Moore +** Copyright (c) 2008 Paul Wise ** ** This package is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License as @@ -18,10 +17,8 @@ ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ** General Public License for more details. ** \endlegal -** -** === N O T E S =========================================================== -** -** ========================================================================= */ +*/ +/* ========================================================================= */ /* === H E A D E R S ======================================================= */ @@ -32,19 +29,19 @@ # include #endif -#include -#include +#include -#include +#include -#include -#include -#include -#include -#include +#include + +#include #include +// This is generated at make time from .svn or .git/svn or autorevision.conf +#include + #include "about.h" #include "app.h" @@ -52,6 +49,8 @@ #endif +/* === U S I N G =========================================================== */ + using namespace std; using namespace etl; using namespace studio; @@ -78,93 +77,97 @@ using namespace studio; # define IMAGE_EXT "png" #endif -/* === G L O B A L S ======================================================= */ -extern const guint gtk_major_version; -extern const guint gtk_minor_version; -extern const guint gtk_micro_version; -extern const guint gtk_binary_age; -extern const guint gtk_interface_age; - -/* === P R O C E D U R E S ================================================= */ +#define stringify_(x) #x +#define stringify(x) stringify_(x) -class studio::AboutProgress : public synfig::ProgressCallback -{ - About &about; - -public: - - AboutProgress(About &about):about(about) { } - - virtual bool task(const std::string &task) - { - if(about.tasklabel) - { - about.tasklabel->set_label(task); - about.tasklabel->show(); - } - else - { - cerr<set_label(_("ERROR:")+task); - about.tasklabel->show(); - } - else - { - cerr<set_label(_("WARNING:")+task); - about.tasklabel->show(); - } - else - { - cerr<set_fraction((float)current/(float)total); - about.progressbar->show(); - } - else - cerr< authors; + authors.push_back("Original developers:"); + authors.push_back(""); + authors.push_back("Robert B. Quattlebaum Jr (darco)"); + authors.push_back("Adrian Bentley"); + authors.push_back(""); + authors.push_back("Contributors:"); + authors.push_back(""); + authors.push_back("Adrian Winchell (SnapSilverlight)"); + authors.push_back("Andreas Jochens"); + authors.push_back("Carlos López González (genete)"); + authors.push_back("Chris Moore (dooglus)"); + authors.push_back("Chris Norman (pixelgeek)"); + authors.push_back("Daniel Fort"); + authors.push_back("Daniel Hornung (rubikcube)"); + authors.push_back("David Roden (Bombe)"); + authors.push_back("Dmitriy Pomerantsev (Atrus)"); + authors.push_back("Douglas Lau"); + authors.push_back("Gerald Young (Yoyobuae)"); + authors.push_back("Gerco Ballintijn"); + authors.push_back("IL'dar AKHmetgaleev (AkhIL)"); + authors.push_back("Luka Pravica"); + authors.push_back("Martin Michlmayr (tbm)"); + authors.push_back("Miguel Gea Milvaques (xerakko)"); + authors.push_back("Paul Wise (pabs)"); + authors.push_back("Ralf Corsepius"); + authors.push_back("Yue Shi Lai"); + set_authors(authors); + + std::vector artists; + artists.push_back("Robert B. Quattlebaum Jr. (darco)"); + artists.push_back("Aurore D (rore)"); + artists.push_back("Carlos López González (genete)"); + artists.push_back("Chris Norman (pixelgeek)"); + artists.push_back("Daniel Hornung (rubikcube)"); + artists.push_back("Franco Iacomella (Yaco)"); + + set_artists(artists); + + // TRANSLATORS: change this to your name, separate multiple names with \n + set_translator_credits(_("translator-credits")); std::string imagepath; #ifdef WIN32 @@ -176,168 +179,62 @@ About::About(): if(synfig_root) { imagepath=synfig_root; imagepath+=ETL_DIRECTORY_SEPARATOR; - - imagepath+="share/pixmaps"; + imagepath+="share"; + imagepath+=ETL_DIRECTORY_SEPARATOR; + imagepath+="pixmaps"; } imagepath+=ETL_DIRECTORY_SEPARATOR; - - // Create the Logo Gtk::Image *Logo = manage(new class Gtk::Image()); - Logo->set(imagepath+"about_dialog."IMAGE_EXT); - Logo->set_size_request(image_w,image_h); - Logo->set_alignment(0.5,0.5); - Logo->set_padding(0,0); - - // Create the Copyright Label - Gtk::Label *CopyrightLabel = manage(new class Gtk::Label(SYNFIG_COPYRIGHT)); - CopyrightLabel->set_size_request(image_w,24); - CopyrightLabel->set_alignment(0.5,0.5); - CopyrightLabel->set_padding(0,0); - CopyrightLabel->set_justify(Gtk::JUSTIFY_CENTER); - CopyrightLabel->set_line_wrap(false); - CopyrightLabel->modify_fg(Gtk::STATE_NORMAL,Gdk::Color("black")); - - /* Scale the text to fit */ - int width = 0; - int height = 0; - float size=11; - Glib::RefPtr l = CopyrightLabel->get_layout(); - Pango::FontDescription fd = Pango::FontDescription("Sans, 11"); - l->set_font_description(fd); - l->set_justify(Pango::ALIGN_CENTER); - fd.set_size(int(size*Pango::SCALE)); - l->set_font_description(fd); - l->get_pixel_size(width,height); - while( width >= image_w-6 ){ - size-=0.5; - fd.set_size((int)(size*Pango::SCALE)); - l->set_font_description(fd); - l->get_pixel_size(width,height); - } - CopyrightLabel->modify_font(fd); - - // Create the Version information label - Gtk::Label *VersionLabel = manage(new class Gtk::Label("Version")); - VersionLabel->set_size_request(image_w,80); - VersionLabel->set_flags(Gtk::CAN_FOCUS); - VersionLabel->set_alignment(0.5,0.5); - VersionLabel->set_padding(0,0); - VersionLabel->set_justify(Gtk::JUSTIFY_CENTER); - VersionLabel->set_line_wrap(false); - VersionLabel->modify_fg(Gtk::STATE_NORMAL,Gdk::Color("black")); - - // Set the version label to contain the correct information - string ver; - ver+="Version "VERSION" ("__DATE__" "__TIME__")\n"; - ver+="Using Synfig "; - ver+=synfig::get_version(); + Logo->set(imagepath+"synfig_icon."IMAGE_EXT); + set_logo(Logo->get_pixbuf()); + +#ifdef SHOW_EXTRA_INFO + + string extra_info = get_comments() + "\n"; + + #ifdef DEVEL_VERSION + extra_info += strprintf(_("\nDevelopment version:\n%s\n"),DEVEL_VERSION); + #endif + + extra_info += "\n"; + + extra_info += strprintf(_("Built on %s" /* at %s */ "\n"), __DATE__ /* , __TIME__ */ ); + + extra_info += "\n"; + + extra_info += strprintf(_("Built with:\n"), ETL_VERSION); + extra_info += strprintf(_("ETL %s\n"), ETL_VERSION); + extra_info += strprintf(_("Synfig API %s\n"), stringify(SYNFIG_VERSION)); + extra_info += strprintf(_("Synfig library %d\n"), SYNFIG_LIBRARY_VERSION); + extra_info += strprintf(_("GTK+ %d.%d.%d\n"), GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); #ifdef __GNUC__ - ver+=strprintf(" and GNU G++ %d.%d.%d",__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__); + extra_info += strprintf(_("GNU G++ %d.%d.%d\n"),__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__); #endif - ver+=strprintf("\nGtk+ %d.%d.%d",gtk_major_version,gtk_minor_version,gtk_micro_version); + extra_info += "\n"; + + extra_info += strprintf(_("Using:\n"), synfig::get_version()); + extra_info += strprintf(_("Synfig %s\n"), synfig::get_version()); + extra_info += strprintf(_("GTK+ %d.%d.%d"),gtk_major_version,gtk_minor_version,gtk_micro_version); #ifdef _DEBUG - ver+="\nDEBUG BUILD"; + extra_info += "\n\nDEBUG BUILD"; #endif - VersionLabel->set_text(ver); - - /* Scale the text to fit */ - width = 0; - height = 0; - size=11; - l = VersionLabel->get_layout(); - fd = Pango::FontDescription("Sans, 11"); - l->set_font_description(fd); - l->set_justify(Pango::ALIGN_CENTER); - fd.set_size(int(size*Pango::SCALE)); - l->set_font_description(fd); - l->get_pixel_size(width,height); - while( width >= image_w-6 ){ - size-=0.5; - fd.set_size((int)(size*Pango::SCALE)); - l->set_font_description(fd); - l->get_pixel_size(width,height); - } - VersionLabel->modify_font(fd); - - // Create the image that will be used on the close button - Gtk::Image *image2 = manage(new class Gtk::Image(Gtk::StockID("gtk-close"), Gtk::IconSize(4))); - image2->set_alignment(0.5,0.5); - image2->set_padding(0,0); - - // Create the close button, and attach the image to it - CloseButton = manage(new class Gtk::Button()); - CloseButton->set_size_request(24,24); - CloseButton->set_flags(Gtk::CAN_FOCUS); - _tooltips.set_tip(*CloseButton, "Close", ""); - CloseButton->set_relief(Gtk::RELIEF_NONE); - CloseButton->add(*image2); - - // Create the progress bar - progressbar = manage(new class Gtk::ProgressBar()); - progressbar->set_size_request(image_w,24); - - // Create the current task label - tasklabel = manage(new class Gtk::Label()); - tasklabel->set_size_request(image_w,24); - tasklabel->set_use_underline(false); - - // Create the Gtk::Fixed container and put all of the widgets into it - Gtk::Fixed *fixed1 = manage(new class Gtk::Fixed()); - fixed1->put(*Logo, 0, 0); - fixed1->put(*CopyrightLabel, 0, image_h-25); - fixed1->put(*CloseButton, image_w-24, 0); - fixed1->put(*VersionLabel, 0, image_h-90); - fixed1->put(*progressbar, 0, image_h+24); - fixed1->put(*tasklabel, 0, image_h); - - // Set up the parameters for this pop-up window - set_title("Synfig Studio "VERSION); - set_modal(false); - property_window_position().set_value(Gtk::WIN_POS_CENTER); - set_resizable(false); - add(*fixed1); - - // show everything off - Logo->show(); - CopyrightLabel->show(); - image2->show(); - CloseButton->show(); - VersionLabel->show(); - fixed1->show(); - - // Connect relevant signals - CloseButton->signal_clicked().connect(sigc::mem_fun(*this, &About::close)); - - cb=new AboutProgress(*this); -} -About::~About() -{ - delete cb; -} + set_comments(extra_info); -void About::close() -{ - hide(); - if(can_self_destruct) - delete this; +#endif + + // Hide the dialog when you click close + signal_response().connect(sigc::mem_fun(*this, &About::close)); } -void -About::set_can_self_destruct(bool x) -{ - can_self_destruct=x; - if(x==true) - CloseButton->show(); - else - CloseButton->hide(); +void About::close(int){ + hide(); } -synfig::ProgressCallback * -About::get_callback() +void About::on_link_clicked(Gtk::AboutDialog&, const Glib::ustring &url) { - return cb; + App::open_url(url); }