X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fdialog_color.cpp;h=bc7d5e1dbf12a42f10f8717cd8ffb1c0b67832fa;hb=84ffcf5a644085f79ad86f0d23421c97c1b3f063;hp=02b85e271786df6b5c8b49ede0bbddccdd64c8a9;hpb=837b63e9fb829d66d43f4f169861f8979f76820d;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/dialog_color.cpp b/synfig-studio/trunk/src/gtkmm/dialog_color.cpp index 02b85e2..bc7d5e1 100644 --- a/synfig-studio/trunk/src/gtkmm/dialog_color.cpp +++ b/synfig-studio/trunk/src/gtkmm/dialog_color.cpp @@ -31,20 +31,13 @@ #include "dialog_color.h" #include "widget_color.h" -#include -#include -#include #include -#include -#include -#include "widget_color.h" -#include #include -#include -#include -#include +#include #include "app.h" +#include "general.h" + #endif /* === U S I N G =========================================================== */ @@ -63,39 +56,20 @@ using namespace studio; /* === M E T H O D S ======================================================= */ Dialog_Color::Dialog_Color(): - Dialog(_("Colors"),false,true), - dialog_settings(this,"color"), + Dialog(_("Colors"), false, true), + dialog_settings(this, "color"), busy_(false) -// adjustment_pos(0,0.0,1.0,0.001,0.001,0.001) { set_type_hint(Gdk::WINDOW_TYPE_HINT_UTILITY); - // Setup the buttons - //Gtk::Button *ok_button(manage(new class Gtk::Button(Gtk::StockID("gtk-ok")))); - //ok_button->show(); - //add_action_widget(*ok_button,2); - //ok_button->signal_clicked().connect(sigc::mem_fun(*this, &Dialog_Color::on_ok_pressed)); - - //Gtk::Button *apply_button(manage(new class Gtk::Button(Gtk::StockID("gtk-apply")))); - //apply_button->show(); - //add_action_widget(*apply_button,1); - //apply_button->signal_clicked().connect(sigc::mem_fun(*this, &Dialog_Color::on_apply_pressed)); - - Gtk::Button *cancel_button(manage(new class Gtk::Button(Gtk::StockID("gtk-close")))); - cancel_button->show(); - add_action_widget(*cancel_button,0); - cancel_button->signal_clicked().connect(sigc::hide_return(sigc::mem_fun(*this, &Dialog_Color::on_close_pressed))); - signal_delete_event().connect(sigc::hide(sigc::mem_fun(*this, &Dialog_Color::on_close_pressed))); - - Gtk::Table* table(manage(new Gtk::Table(2,2,false))); - get_vbox()->pack_start(*table); - - widget_color=manage(new Widget_ColorEdit()); - widget_color->signal_value_changed().connect(sigc::mem_fun(*this,&studio::Dialog_Color::on_color_changed)); - //widget_color->signal_activate().connect(sigc::mem_fun(*this,&studio::Dialog_Color::on_color_changed)); - table->attach(*widget_color, 0, 1, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0); - add_accel_group(App::ui_manager()->get_accel_group()); + create_color_edit_widget(); + create_set_color_button("synfig-set_fg_color", _("Set as Foreground"), 0, + sigc::mem_fun(*this, &Dialog_Color::on_set_fg_pressed)); + create_set_color_button("synfig-set_bg_color", _("Set as Background"), 1, + sigc::mem_fun(*this, &Dialog_Color::on_set_bg_pressed)); + create_close_button(); + add_accel_group(App::ui_manager()->get_accel_group()); show_all_children(); } @@ -104,34 +78,78 @@ Dialog_Color::~Dialog_Color() } void -Dialog_Color::reset() +Dialog_Color::create_color_edit_widget() { - signal_edited_.clear(); + color_edit_widget = manage(new Widget_ColorEdit()); + color_edit_widget->signal_value_changed().connect(sigc::mem_fun(*this, + &studio::Dialog_Color::on_color_changed)); + get_vbox()->pack_start(*color_edit_widget); } -bool -Dialog_Color::on_close_pressed() +void +Dialog_Color::create_set_color_button(const char *stock_id, + const Glib::ustring& tip_text, int index, + const sigc::slot0& callback) { -// signal_edited_(get_color()); - busy_=false; - grab_focus(); - reset(); - hide(); - return true; + Gtk::Button *set_color_button = manage(new Gtk::Button()); + Gtk::Image *set_color_icon = manage(new Gtk::Image(Gtk::StockID(stock_id), + Gtk::IconSize::IconSize(Gtk::ICON_SIZE_BUTTON))); + set_color_button->add(*set_color_icon); + set_color_icon->show(); + tooltips.set_tip(*set_color_button, tip_text); + set_color_button->show(); + add_action_widget(*set_color_button, index); + set_color_button->signal_clicked().connect(callback); } void -Dialog_Color::on_apply_pressed() +Dialog_Color::create_close_button() { - busy_=true; - signal_edited_(get_color()); - busy_=false; + Gtk::Button *close_button(manage(new Gtk::Button(Gtk::StockID("gtk-close")))); + close_button->show(); + add_action_widget(*close_button, 2); + close_button->signal_clicked().connect(sigc::hide_return(sigc::mem_fun(*this, + &Dialog_Color::on_close_pressed))); + signal_delete_event().connect(sigc::hide(sigc::mem_fun(*this, + &Dialog_Color::on_close_pressed))); } void Dialog_Color::on_color_changed() { - busy_=true; + busy_ = true; signal_edited_(get_color()); - busy_=false; + busy_ = false; +} + +void +Dialog_Color::on_set_fg_pressed() +{ + busy_ = true; + synfigapp::Main::set_foreground_color(get_color()); + busy_ = false; +} + +void +Dialog_Color::on_set_bg_pressed() +{ + busy_ = true; + synfigapp::Main::set_background_color(get_color()); + busy_ = false; +} + +bool +Dialog_Color::on_close_pressed() +{ + busy_ = false; + grab_focus(); + reset(); + hide(); + return true; +} + +void +Dialog_Color::reset() +{ + signal_edited_.clear(); }