Fix 1776156: "region and outline position ducks aren't linked". They are now - there...
[synfig.git] / synfig-studio / trunk / src / gtkmm / widget_canvaschooser.cpp
index 8bf3001..883c9e3 100644 (file)
@@ -2,19 +2,20 @@
 /*!    \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 Robert B. Quattlebaum Jr.
+**     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
 **
-**     This software and associated documentation
-**     are CONFIDENTIAL and PROPRIETARY property of
-**     the above-mentioned copyright holder.
+**     This package is free software; you can redistribute it and/or
+**     modify it under the terms of the GNU General Public License as
+**     published by the Free Software Foundation; either version 2 of
+**     the License, or (at your option) any later version.
 **
-**     You may not copy, print, publish, or in any
-**     other way distribute this software without
-**     a prior written agreement with
-**     the copyright holder.
+**     This package is distributed in the hope that it will be useful,
+**     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
 */
 /* ========================================================================= */
@@ -82,13 +83,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)
                {
@@ -128,7 +129,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
        {
@@ -138,7 +153,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(...)
        {