Blame synfig-studio/src/gui/dialogs/dialog_color.cpp

Carlos Lopez a09598
/* === S Y N F I G ========================================================= */
Carlos Lopez a09598
/*!	\file dialog_color.cpp
Carlos Lopez a09598
**	\brief Template File
Carlos Lopez a09598
**
Carlos Lopez a09598
**	$Id$
Carlos Lopez a09598
**
Carlos Lopez a09598
**	\legal
Carlos Lopez a09598
**	Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
Carlos Lopez a09598
**
Carlos Lopez a09598
**	This package is free software; you can redistribute it and/or
Carlos Lopez a09598
**	modify it under the terms of the GNU General Public License as
Carlos Lopez a09598
**	published by the Free Software Foundation; either version 2 of
Carlos Lopez a09598
**	the License, or (at your option) any later version.
Carlos Lopez a09598
**
Carlos Lopez a09598
**	This package is distributed in the hope that it will be useful,
Carlos Lopez a09598
**	but WITHOUT ANY WARRANTY; without even the implied warranty of
Carlos Lopez a09598
**	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Carlos Lopez a09598
**	General Public License for more details.
Carlos Lopez a09598
**	\endlegal
Carlos Lopez a09598
*/
Carlos Lopez a09598
/* ========================================================================= */
Carlos Lopez a09598
Carlos Lopez a09598
/* === H E A D E R S ======================================================= */
Carlos Lopez a09598
Carlos Lopez a09598
#ifdef USING_PCH
Carlos Lopez a09598
#	include "pch.h"
Carlos Lopez a09598
#else
Carlos Lopez a09598
#ifdef HAVE_CONFIG_H
Carlos Lopez a09598
#	include <config.h></config.h>
Carlos Lopez a09598
#endif
Carlos Lopez a09598
bw 94d8a6
#include <synfig general.h=""></synfig>
bw 94d8a6
Nikita Kitaev 76ba27
#include "dialogs/dialog_color.h"
Nikita Kitaev 3c2324
#include "widgets/widget_color.h"
Carlos Lopez a09598
#include <synfigapp main.h=""></synfigapp>
Carlos Lopez a09598
#include <gtkmm button.h=""></gtkmm>
Carlos Lopez a09598
#include "app.h"
Carlos Lopez a09598
abdbf2
#include <gui localization.h=""></gui>
Carlos Lopez a09598
Carlos Lopez a09598
#endif
Carlos Lopez a09598
Carlos Lopez a09598
/* === U S I N G =========================================================== */
Carlos Lopez a09598
Carlos Lopez a09598
using namespace std;
Carlos Lopez a09598
using namespace etl;
Carlos Lopez a09598
using namespace synfig;
Carlos Lopez a09598
using namespace studio;
Carlos Lopez a09598
Carlos Lopez a09598
/* === M A C R O S ========================================================= */
Carlos Lopez a09598
Carlos Lopez a09598
/* === G L O B A L S ======================================================= */
Carlos Lopez a09598
Carlos Lopez a09598
/* === P R O C E D U R E S ================================================= */
Carlos Lopez a09598
Carlos Lopez a09598
/* === M E T H O D S ======================================================= */
Carlos Lopez a09598
Carlos Lopez a09598
Dialog_Color::Dialog_Color():
8e80a2
	Dialog(_("Colors")),
Carlos Lopez a09598
	dialog_settings(this, "color"),
Carlos Lopez a09598
	busy_(false)
Carlos Lopez a09598
{
[d.j.a.y] Jerome Blanchi c83e0c
	set_transient_for((Gtk::Window&)(*App::main_window));
Carlos Lopez a09598
	set_type_hint(Gdk::WINDOW_TYPE_HINT_UTILITY);
Carlos Lopez a09598
Carlos Lopez a09598
	create_color_edit_widget();
Carlos Lopez a09598
	create_set_color_button("synfig-set_outline_color", _("Set as Outline"), 0,
Carlos Lopez a09598
			sigc::mem_fun(*this, &Dialog_Color::on_set_oc_pressed));
Carlos Lopez a09598
	create_set_color_button("synfig-set_fill_color", _("Set as Fill"), 1,
Carlos Lopez a09598
			sigc::mem_fun(*this, &Dialog_Color::on_set_fc_pressed));
Carlos Lopez a09598
	create_close_button();
Carlos Lopez a09598
Carlos Lopez a09598
	add_accel_group(App::ui_manager()->get_accel_group());
Carlos Lopez a09598
	show_all_children();
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
Dialog_Color::~Dialog_Color()
Carlos Lopez a09598
{
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
void
Carlos Lopez a09598
Dialog_Color::create_color_edit_widget()
Carlos Lopez a09598
{
Carlos Lopez a09598
	color_edit_widget = manage(new Widget_ColorEdit());
Carlos Lopez a09598
	color_edit_widget->signal_value_changed().connect(sigc::mem_fun(*this,
Carlos Lopez a09598
			&studio::Dialog_Color::on_color_changed));
Carlos Lopez a09598
	get_vbox()->pack_start(*color_edit_widget);
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
void
Carlos Lopez a09598
Dialog_Color::create_set_color_button(const char *stock_id,
Carlos Lopez a09598
		const Glib::ustring& tip_text, int index,
Carlos Lopez a09598
		const sigc::slot0<void>& callback)</void>
Carlos Lopez a09598
{
Carlos Lopez a09598
	Gtk::Button *set_color_button = manage(new Gtk::Button());
Carlos Lopez a09598
	Gtk::Image *set_color_icon = manage(new Gtk::Image(Gtk::StockID(stock_id),
Nikita Kitaev e66504
			Gtk::IconSize(Gtk::ICON_SIZE_BUTTON)));
Carlos Lopez a09598
	set_color_button->add(*set_color_icon);
Carlos Lopez a09598
	set_color_icon->show();
Carlos Lopez 0749ca
	set_color_button->set_tooltip_text(tip_text);
Carlos Lopez a09598
	set_color_button->show();
Carlos Lopez a09598
	add_action_widget(*set_color_button, index);
Carlos Lopez a09598
	set_color_button->signal_clicked().connect(callback);
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
void
Carlos Lopez a09598
Dialog_Color::create_close_button()
Carlos Lopez a09598
{
Carlos Lopez a09598
	Gtk::Button *close_button(manage(new Gtk::Button(Gtk::StockID("gtk-close"))));
Carlos Lopez a09598
	close_button->show();
Carlos Lopez a09598
	add_action_widget(*close_button, 2);
Carlos Lopez a09598
	close_button->signal_clicked().connect(sigc::hide_return(sigc::mem_fun(*this,
Carlos Lopez a09598
			&Dialog_Color::on_close_pressed)));
Carlos Lopez a09598
	signal_delete_event().connect(sigc::hide(sigc::mem_fun(*this,
Carlos Lopez a09598
			&Dialog_Color::on_close_pressed)));
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
void
Carlos Lopez a09598
Dialog_Color::on_color_changed()
Carlos Lopez a09598
{
Carlos Lopez a09598
	busy_ = true;
Carlos Lopez a09598
	signal_edited_(get_color());
Carlos Lopez a09598
	busy_ = false;
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
void
Carlos Lopez a09598
Dialog_Color::on_set_oc_pressed()
Carlos Lopez a09598
{
Carlos Lopez a09598
	busy_ = true;
Carlos Lopez a09598
	synfigapp::Main::set_outline_color(get_color());
Carlos Lopez a09598
	busy_ = false;
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
void
Carlos Lopez a09598
Dialog_Color::on_set_fc_pressed()
Carlos Lopez a09598
{
Carlos Lopez a09598
	busy_ = true;
Carlos Lopez a09598
	synfigapp::Main::set_fill_color(get_color());
Carlos Lopez a09598
	busy_ = false;
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
bool
Carlos Lopez a09598
Dialog_Color::on_close_pressed()
Carlos Lopez a09598
{
Carlos Lopez a09598
	busy_ = false;
Carlos Lopez a09598
	grab_focus();
Carlos Lopez a09598
	reset();
Carlos Lopez a09598
	hide();
Carlos Lopez a09598
	return true;
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
void
Carlos Lopez a09598
Dialog_Color::reset()
Carlos Lopez a09598
{
Carlos Lopez a09598
	signal_edited_.clear();
Carlos Lopez a09598
}