X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fwidget_canvaschooser.cpp;h=568c4b05c75ca8827c4e22131d08b8b9a317f83e;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=85bb392220ac380de73d7f0330e72f3840200de3;hpb=3a3c4bca3a17137bec5d7960560934b91ef4146e;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/widget_canvaschooser.cpp b/synfig-studio/trunk/src/gtkmm/widget_canvaschooser.cpp index 85bb392..568c4b0 100644 --- a/synfig-studio/trunk/src/gtkmm/widget_canvaschooser.cpp +++ b/synfig-studio/trunk/src/gtkmm/widget_canvaschooser.cpp @@ -1,20 +1,22 @@ -/* === S I N F G =========================================================== */ +/* === S Y N F I G ========================================================= */ /*! \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 +** Copyright (c) 2007 Chris Moore ** -** 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 */ /* ========================================================================= */ @@ -32,13 +34,15 @@ #include #include "app.h" +#include "general.h" + #endif /* === U S I N G =========================================================== */ using namespace std; using namespace etl; -using namespace sinfg; +using namespace synfig; using namespace studio; /* === M A C R O S ========================================================= */ @@ -58,37 +62,37 @@ Widget_CanvasChooser::~Widget_CanvasChooser() } void -Widget_CanvasChooser::set_parent_canvas(etl::handle x) +Widget_CanvasChooser::set_parent_canvas(synfig::Canvas::Handle x) { assert(x); parent_canvas=x; } void -Widget_CanvasChooser::set_value_(etl::handle data) +Widget_CanvasChooser::set_value_(synfig::Canvas::Handle data) { set_value(data); activate(); } void -Widget_CanvasChooser::set_value(etl::handle data) +Widget_CanvasChooser::set_value(synfig::Canvas::Handle data) { assert(parent_canvas); canvas=data; canvas_menu=manage(new class Gtk::Menu()); - sinfg::Canvas::Children::iterator iter; - sinfg::Canvas::Children &children(parent_canvas->children()); + 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) { @@ -118,7 +122,7 @@ Widget_CanvasChooser::set_value(etl::handle data) set_history(0); } -const etl::handle & +const etl::handle & Widget_CanvasChooser::get_value() { return canvas; @@ -128,17 +132,32 @@ 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()); - set_value_(canvas); + App::dialog_error_blocking(_("Error:Exception Thrown"),String(_("Error selecting canvas:\n\n")) + x.what()); + set_value_(canvas); } catch(...) {