Typo: 'carrage' -> 'carriage'.
[synfig.git] / synfig-studio / trunk / src / gtkmm / widget_canvaschooser.cpp
index 1d94418..c2ab9c0 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
@@ -83,13 +84,13 @@ Widget_CanvasChooser::set_value(etl::handle<synfig::Canvas> data)
        synfig::Canvas::Children::iterator iter;
        synfig::Canvas::Children &children(parent_canvas->children());
        String label;
-       
+
        if(canvas)
        {
                label=canvas->get_name().empty()?canvas->get_id():canvas->get_name();
                canvas_menu->items().push_back(Gtk::Menu_Helpers::MenuElem(label));
        }
-       
+
        for(iter=children.begin();iter!=children.end();iter++)
                if(*iter!=canvas)
                {
@@ -129,7 +130,21 @@ 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
        {
@@ -139,7 +154,7 @@ Widget_CanvasChooser::chooser_menu()
        catch(std::runtime_error x)
        {
                App::dialog_error_blocking(_("Error:Exception Thrown"),x.what());
-               set_value_(canvas);             
+               set_value_(canvas);
        }
        catch(...)
        {