Remove .gitignore do nothing is ignored.
[synfig.git] / synfig-studio / trunk / src / gtkmm / preview.cpp
index ce8424f..d681d3e 100644 (file)
@@ -6,6 +6,7 @@
 **
 **     \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
@@ -40,6 +41,9 @@
 
 #include <algorithm>
 #include "asyncrenderer.h"
+
+#include "general.h"
+
 #endif
 
 /* === U S I N G =========================================================== */
@@ -255,7 +259,7 @@ void studio::Preview::frame_finish(const Preview_Target *targ)
        if(!buffer)
                return;
 
-       //convert all the pixles to the pixbuf... buffer... thing...
+       //convert all the pixels to the pixbuf... buffer... thing...
        //synfig::warning("Converting...");
        convert_color_format(buffer, surf[0], surf.get_w()*surf.get_h(), pf, App::gamma);
 
@@ -345,19 +349,19 @@ playing(false)
        hbox = manage(new Gtk::HBox);
 
        button = &b_loop;
-       IMAGIFY_BUTTON(button,Gtk::Stock::REFRESH,"Toggle Looping");
+       IMAGIFY_BUTTON(button,Gtk::Stock::REFRESH,_("Toggle Looping"));
        hbox->pack_start(b_loop,Gtk::PACK_SHRINK,0);
        //attach(b_loop,0,1,2,3,Gtk::EXPAND|Gtk::FILL,Gtk::SHRINK);
 
        button = manage(new Gtk::Button(/*_("Play")*/));
        button->signal_clicked().connect(sigc::mem_fun(*this,&Widget_Preview::play));
-       IMAGIFY_BUTTON(button,Gtk::Stock::GO_FORWARD,"Play");
+       IMAGIFY_BUTTON(button,Gtk::Stock::GO_FORWARD,_("Play"));
        hbox->pack_start(*button,Gtk::PACK_SHRINK,0);
        //attach(*button,1,2,2,3,Gtk::EXPAND|Gtk::FILL,Gtk::SHRINK);
 
        button = manage(new Gtk::Button(/*_("Stop")*/));
        button->signal_clicked().connect(sigc::mem_fun(*this,&Widget_Preview::stop));
-       IMAGIFY_BUTTON(button,Gtk::Stock::NO,"Stop");
+       IMAGIFY_BUTTON(button,Gtk::Stock::NO,_("Stop"));
        hbox->pack_start(*button,Gtk::PACK_SHRINK,0);
        //attach(*button,2,3,2,3,Gtk::EXPAND|Gtk::FILL,Gtk::SHRINK);
 
@@ -369,19 +373,19 @@ playing(false)
 
        button = manage(new Gtk::Button(/*_("Halt Render")*/));
        button->signal_clicked().connect(sigc::mem_fun(*this,&Widget_Preview::stoprender));
-       IMAGIFY_BUTTON(button,Gtk::Stock::STOP,"Halt Render");
+       IMAGIFY_BUTTON(button,Gtk::Stock::STOP,_("Halt Render"));
        hbox->pack_start(*button,Gtk::PACK_SHRINK,0);
        //attach(*button,2,3,3,4,Gtk::EXPAND|Gtk::FILL,Gtk::SHRINK);
 
        button = manage(new Gtk::Button(/*_("Re-Preview")*/));
        button->signal_clicked().connect(sigc::mem_fun(*this,&Widget_Preview::repreview));
-       IMAGIFY_BUTTON(button,Gtk::Stock::CONVERT,"Re-Preview");
+       IMAGIFY_BUTTON(button,Gtk::Stock::CONVERT,_("Re-Preview"));
        hbox->pack_start(*button,Gtk::PACK_SHRINK,0);
        //attach(*button,0,2,4,5,Gtk::EXPAND|Gtk::FILL,Gtk::SHRINK);
 
        button = manage(new Gtk::Button(/*_("Erase All")*/));
        button->signal_clicked().connect(sigc::mem_fun(*this,&Widget_Preview::eraseall));
-       IMAGIFY_BUTTON(button,Gtk::Stock::DELETE,"Erase All");
+       IMAGIFY_BUTTON(button,Gtk::Stock::DELETE,_("Erase All"));
        hbox->pack_start(*button,Gtk::PACK_SHRINK,0);
        //attach(*button,2,3,4,5,Gtk::EXPAND|Gtk::FILL,Gtk::SHRINK);
 
@@ -391,10 +395,10 @@ playing(false)
        //3rd row
        hbox = manage(new Gtk::HBox);
        {
-               Gtk::Label *label = manage(new Gtk::Label("Last Rendered: "));
+               Gtk::Label *label = manage(new Gtk::Label(_("Last Rendered: ")));
                //label->show();
                hbox->pack_start(*label,Gtk::PACK_SHRINK,10);
-               //attach(*manage(new Gtk::Label("Last Rendered: ")),0,1,3,4,Gtk::SHRINK,Gtk::SHRINK);
+               //attach(*manage(new Gtk::Label(_("Last Rendered: "))),0,1,3,4,Gtk::SHRINK,Gtk::SHRINK);
        }
        //l_lasttime.show();
        hbox->pack_start(l_lasttime,Gtk::PACK_SHRINK,0);
@@ -697,7 +701,7 @@ void studio::Widget_Preview::disconnect_preview(Preview *prev)
        }
 }
 
-void studio::Widget_Preview::set_preview(handle<Preview>       prev)
+void studio::Widget_Preview::set_preview(etl::handle<Preview>  prev)
 {
        preview = prev;
 
@@ -859,7 +863,16 @@ void studio::Widget_Preview::stoprender()
 {
        if(preview)
        {
-               preview->renderer.detach();
+               // don't crash if the render has already been stopped
+               if (!preview->renderer)
+                       return;
+
+#ifdef SINGLE_THREADED
+               if (preview->renderer->updating)
+                       preview->renderer->stop();
+               else
+#endif
+                       preview->renderer.detach();
        }
 }