-/*! ========================================================================
-** Synfig
-** Template File
-** $Id: about.cpp,v 1.2 2005/01/13 21:11:16 darco Exp $
+/* === S Y N F I G ========================================================= */
+/*! \file about.cpp
+** \brief writeme
**
+** $Id$
+**
+** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+** Copyright (c) 2007 Chris Moore
**
** This package is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** General Public License for more details.
+** \endlegal
**
** === N O T E S ===========================================================
**
class studio::AboutProgress : public synfig::ProgressCallback
{
About &about;
-
+
public:
AboutProgress(About &about):about(about) { }
-
+
virtual bool task(const std::string &task)
{
if(about.tasklabel)
/* === M E T H O D S ======================================================= */
About::About():
- Gtk::Window(Gtk::WINDOW_POPUP),
+ Gtk::Window(getenv("SYNFIG_DISABLE_POPUP_WINDOWS") ? Gtk::WINDOW_TOPLEVEL : Gtk::WINDOW_POPUP),
can_self_destruct(true)
{
int image_w=300,image_h=350;
std::string imagepath;
#ifdef WIN32
- imagepath=App::get_base_path()+ETL_DIRECTORY_SEPERATOR+IMAGE_DIR;
+ imagepath=App::get_base_path()+ETL_DIRECTORY_SEPARATOR+IMAGE_DIR;
#else
imagepath=IMAGE_DIR;
#endif
- imagepath+=ETL_DIRECTORY_SEPERATOR;
-
-
+ char* synfig_root=getenv("SYNFIG_ROOT");
+ if(synfig_root) {
+ imagepath=synfig_root;
+ imagepath+=ETL_DIRECTORY_SEPARATOR;
+
+ imagepath+="share/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_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<Pango::Layout> 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_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+="Using Synfig ";
ver+=synfig::get_version();
#ifdef __GNUC__
ver+=strprintf(" and GNU G++ %d.%d.%d",__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__);
#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);
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);
if(x==true)
CloseButton->show();
else
- CloseButton->hide();
+ CloseButton->hide();
}
synfig::ProgressCallback *