From e3deb7dd034f1bff2e02a5ec60f7ee7ac737087a Mon Sep 17 00:00:00 2001 From: Aubanel Monnier Date: Fri, 21 Mar 2008 10:00:42 +0000 Subject: Added dialog to name new calligraphic profiles (bzr r5142) --- src/dialogs/Makefile_insert | 5 +- src/dialogs/calligraphic-profile-rename.cpp | 99 +++++++++++++++++++++++++++++ src/dialogs/calligraphic-profile-rename.h | 56 ++++++++++++++++ 3 files changed, 158 insertions(+), 2 deletions(-) create mode 100755 src/dialogs/calligraphic-profile-rename.cpp create mode 100755 src/dialogs/calligraphic-profile-rename.h (limited to 'src/dialogs') diff --git a/src/dialogs/Makefile_insert b/src/dialogs/Makefile_insert index 05a077ab5..64e46b470 100644 --- a/src/dialogs/Makefile_insert +++ b/src/dialogs/Makefile_insert @@ -63,8 +63,9 @@ dialogs_libspdialogs_a_SOURCES = \ dialogs/unclump.cpp \ dialogs/unclump.h \ dialogs/iconpreview.cpp \ - dialogs/iconpreview.h - + dialogs/iconpreview.h \ + dialogs/calligraphic-profile-rename.cpp \ + dialogs/calligraphic-profile-rename.cpp # dialogs/sp-widget.c \ # dialogs/sp-widget.h \ diff --git a/src/dialogs/calligraphic-profile-rename.cpp b/src/dialogs/calligraphic-profile-rename.cpp new file mode 100755 index 000000000..ae9a31c0e --- /dev/null +++ b/src/dialogs/calligraphic-profile-rename.cpp @@ -0,0 +1,99 @@ +/** + * + * \brief Dialog for naming calligraphic profiles + * + * Author: + * Aubanel MONNIER + * + * Copyright (C) 2007 Aubanel MONNIER + * + * Released under GNU GPL. Read the file 'COPYING' for more information + */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#include "desktop.h" +#include "calligraphic-profile-rename.h" + + +namespace Inkscape { +namespace UI { +namespace Dialogs { +CalligraphicProfileDialog::CalligraphicProfileDialog(): _applied(false){ + Gtk::VBox *mainVBox = get_vbox(); + _layout_table.set_spacings(4); + _layout_table.resize (1, 2); + + _profile_name_entry.set_activates_default(true); + + _profile_name_label.set_label(_("Profile name:")); + _profile_name_label.set_alignment(1.0, 0.5); + + _layout_table.attach(_profile_name_label, + 0, 1, 0, 1, Gtk::FILL, Gtk::FILL); + _layout_table.attach(_profile_name_entry, + 1, 2, 0, 1, Gtk::FILL | Gtk::EXPAND, Gtk::FILL); + mainVBox->pack_start(_layout_table, false, false, 4); + // Buttons + _close_button.set_use_stock(true); + _close_button.set_label(Gtk::Stock::CANCEL.id); + _close_button.set_flags(Gtk::CAN_DEFAULT); + + _apply_button.set_use_underline(true); + _apply_button.set_label(_("Save")); + _apply_button.set_flags(Gtk::CAN_DEFAULT); + + _close_button.signal_clicked() + .connect(sigc::mem_fun(*this, &CalligraphicProfileDialog::_close)); + _apply_button.signal_clicked() + .connect(sigc::mem_fun(*this, &CalligraphicProfileDialog::_apply)); + + signal_delete_event().connect( + sigc::bind_return( + sigc::hide(sigc::mem_fun(*this, &CalligraphicProfileDialog::_close)), + true + ) + ); + + add_action_widget(_close_button, Gtk::RESPONSE_CLOSE); + add_action_widget(_apply_button, Gtk::RESPONSE_APPLY); + + _apply_button.grab_default(); + + show_all_children(); + +} + +void +CalligraphicProfileDialog::_apply() +{ + _profile_name = _profile_name_entry.get_text(); + _applied = true; + _close(); +} + +void +CalligraphicProfileDialog::_close() +{ + this->Gtk::Dialog::hide(); + +} + +void CalligraphicProfileDialog::show(SPDesktop *desktop){ + CalligraphicProfileDialog &dial = instance(); + dial._applied=false; + dial.set_modal(true); + desktop->setWindowTransient (dial.gobj()); + dial.property_destroy_with_parent() = true; + // dial.Gtk::Dialog::show(); + //dial.present(); + dial.run(); +} + + +}}} diff --git a/src/dialogs/calligraphic-profile-rename.h b/src/dialogs/calligraphic-profile-rename.h new file mode 100755 index 000000000..133d94a28 --- /dev/null +++ b/src/dialogs/calligraphic-profile-rename.h @@ -0,0 +1,56 @@ +/** + * + * \brief Dialog for naming calligraphic profiles + * + * Author: + * Aubanel MONNIER + * + * Copyright (C) 2007 Aubanel MONNIER + * + * Released under GNU GPL. Read the file 'COPYING' for more information + */ + +#ifndef INKSCAPE_DIALOG_CALLIGRAPHIC_PROFILE_H +#define INKSCAPE_DIALOG_CALLIGRAPHIC_PROFILE_H + +#include +#include +#include +#include + +namespace Inkscape { + namespace UI { + namespace Dialogs { + + class CalligraphicProfileDialog: public Gtk::Dialog { + public: + CalligraphicProfileDialog(); + virtual ~CalligraphicProfileDialog(){} ; + static void show(SPDesktop *desktop); + static bool applied(){return instance()._applied;} + static Glib::ustring getProfileName() { return instance()._profile_name;} + + Glib::ustring getName() const { return "CalligraphicProfileDialog"; } + + + protected: + void _close(); + void _apply(); + + Gtk::Label _profile_name_label; + Gtk::Entry _profile_name_entry; + Gtk::Table _layout_table; + Gtk::Button _close_button; + Gtk::Button _apply_button; + Glib::ustring _profile_name; + bool _applied; + private: + static CalligraphicProfileDialog &instance(){static CalligraphicProfileDialog instance; return instance;} + CalligraphicProfileDialog(CalligraphicProfileDialog const &); // no copy + CalligraphicProfileDialog &operator=(CalligraphicProfileDialog const &); // no assign + }; + } + } +} + +#endif INKSCAPE_DIALOG_CALLIGRAPHIC_PROFILE_H -- cgit v1.2.3