Remove spaces and tabs at end of lines.
[synfig.git] / synfig-studio / trunk / src / gtkmm / widget_canvaschooser.cpp
index 67942b4..568c4b0 100644 (file)
@@ -2,10 +2,11 @@
 /*!    \file widget_canvaschooser.cpp
 **     \brief Template File
 **
-**     $Id: widget_canvaschooser.cpp,v 1.1.1.1 2005/01/07 03:34:37 darco Exp $
+**     $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
@@ -33,6 +34,8 @@
 #include <gtkmm/menu.h>
 #include "app.h"
 
+#include "general.h"
+
 #endif
 
 /* === U S I N G =========================================================== */
@@ -59,21 +62,21 @@ Widget_CanvasChooser::~Widget_CanvasChooser()
 }
 
 void
-Widget_CanvasChooser::set_parent_canvas(etl::handle<synfig::Canvas> x)
+Widget_CanvasChooser::set_parent_canvas(synfig::Canvas::Handle x)
 {
        assert(x);
        parent_canvas=x;
 }
 
 void
-Widget_CanvasChooser::set_value_(etl::handle<synfig::Canvas> data)
+Widget_CanvasChooser::set_value_(synfig::Canvas::Handle data)
 {
        set_value(data);
        activate();
 }
 
 void
-Widget_CanvasChooser::set_value(etl::handle<synfig::Canvas> data)
+Widget_CanvasChooser::set_value(synfig::Canvas::Handle data)
 {
        assert(parent_canvas);
        canvas=data;
@@ -129,16 +132,31 @@ void
 Widget_CanvasChooser::chooser_menu()
 {
        String canvas_name;
-       App::dialog_entry(_("Choose Canvas"),_("Enter the relative name of the canvas that you want"),canvas_name);
+
+       if (!App::dialog_entry(_("Choose Canvas"),_("Enter the relative name of the canvas that you want"),canvas_name))
+       {
+               // the user hit 'cancel', so set the parameter back to its previous value
+               set_value_(canvas);
+               return;
+       }
+
+       if (canvas_name == "")
+       {
+               App::dialog_error_blocking(_("Error"),_("No canvas name was specified"));
+               set_value_(canvas);
+               return;
+       }
+
        Canvas::Handle new_canvas;
        try
        {
-               new_canvas=parent_canvas->find_canvas(canvas_name);
+               String warnings;
+               new_canvas=parent_canvas->find_canvas(canvas_name, warnings);
                set_value_(new_canvas);
        }
        catch(std::runtime_error x)
        {
-               App::dialog_error_blocking(_("Error:Exception Thrown"),x.what());
+               App::dialog_error_blocking(_("Error:Exception Thrown"),String(_("Error selecting canvas:\n\n")) + x.what());
                set_value_(canvas);
        }
        catch(...)