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

Carlos Lopez a09598
/* === S Y N F I G ========================================================= */
Carlos Lopez a09598
/*!	\file dialog_waypoint.cpp
Carlos Lopez a09598
**	\brief Template Header
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
Carlos Lopez a09598
#include <gtkmm label.h=""></gtkmm>
Nikita Kitaev 76ba27
#include "dialogs/dialog_waypoint.h"
Carlos Lopez a09598
#include <gtk gtk.h=""></gtk>
Carlos Lopez a09598
#include <gtkmm spinbutton.h=""></gtkmm>
80f1f7
#include <gtkmm combobox.h=""></gtkmm>
Carlos Lopez a09598
#include <etl stringf=""></etl>
Nikita Kitaev 3c2324
#include "widgets/widget_value.h"
Carlos Lopez a09598
#include "app.h"
Carlos Lopez a09598
#include <gtkmm menu.h=""></gtkmm>
Nikita Kitaev 3c2324
#include "widgets/widget_time.h"
Nikita Kitaev 3c2324
#include "widgets/widget_waypoint.h"
Carlos Lopez a09598
Rodolfo Ribeiro Gomes ad5dbf
#include <synfig timepointcollect.h=""></synfig>
Rodolfo Ribeiro Gomes ad5dbf
abdbf2
#include <gui localization.h=""></gui>
Carlos Lopez a09598
Carlos Lopez a09598
#endif
Carlos Lopez a09598
Carlos Lopez a09598
using namespace synfig;
Carlos Lopez a09598
using namespace std;
Carlos Lopez a09598
using namespace etl;
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_Waypoint::Dialog_Waypoint(Gtk::Window& parent,etl::handle<synfig::canvas> canvas):</synfig::canvas>
8e80a2
	Dialog(_("Waypoint Editor"),parent),
Carlos Lopez a09598
	canvas(canvas)
Carlos Lopez a09598
{
Carlos Lopez a09598
	assert(canvas);
Carlos Lopez a09598
    waypointwidget=manage(new class Widget_Waypoint(canvas));
Carlos Lopez a09598
	get_vbox()->pack_start(*waypointwidget);
Carlos Lopez a09598
Carlos Lopez a09598
	Gtk::Button *ok_button(manage(new class Gtk::Button(Gtk::StockID("gtk-ok"))));
Carlos Lopez a09598
	ok_button->show();
Carlos Lopez a09598
	add_action_widget(*ok_button,2);
Carlos Lopez a09598
	ok_button->signal_clicked().connect(sigc::mem_fun(*this, &Dialog_Waypoint::on_ok_pressed));
Carlos Lopez a09598
Carlos Lopez a09598
	Gtk::Button *apply_button(manage(new class Gtk::Button(Gtk::StockID("gtk-apply"))));
Carlos Lopez a09598
	apply_button->show();
Carlos Lopez a09598
	add_action_widget(*apply_button,1);
Carlos Lopez a09598
	apply_button->signal_clicked().connect(sigc::mem_fun(*this, &Dialog_Waypoint::on_apply_pressed));
Carlos Lopez a09598
Carlos Lopez a09598
	Gtk::Button *delete_button(manage(new class Gtk::Button(Gtk::StockID("gtk-delete"))));
Carlos Lopez a09598
	delete_button->show();
Carlos Lopez a09598
	add_action_widget(*delete_button,3);
Carlos Lopez a09598
	delete_button->signal_clicked().connect(sigc::mem_fun(*this, &Dialog_Waypoint::on_delete_pressed));
Carlos Lopez a09598
Carlos Lopez a09598
	Gtk::Button *cancel_button(manage(new class Gtk::Button(Gtk::StockID("gtk-close"))));
Carlos Lopez a09598
	cancel_button->show();
Carlos Lopez a09598
	add_action_widget(*cancel_button,0);
Carlos Lopez a09598
	cancel_button->signal_clicked().connect(sigc::mem_fun(*this, &Dialog_Waypoint::hide));
Carlos Lopez a09598
Carlos Lopez a09598
Carlos Lopez a09598
	waypointwidget->show_all();
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
Dialog_Waypoint::~Dialog_Waypoint()
Carlos Lopez a09598
{
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
void
Carlos Lopez a09598
Dialog_Waypoint::on_ok_pressed()
Carlos Lopez a09598
{
Carlos Lopez a09598
	hide();
Carlos Lopez a09598
    signal_changed_();
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
void
Carlos Lopez a09598
Dialog_Waypoint::on_apply_pressed()
Carlos Lopez a09598
{
Carlos Lopez a09598
    signal_changed_();
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
void
Carlos Lopez a09598
Dialog_Waypoint::on_delete_pressed()
Carlos Lopez a09598
{
Carlos Lopez a09598
	hide();
Rodolfo Ribeiro Gomes ad5dbf
	signal_delete_();
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
void
Carlos Lopez a09598
Dialog_Waypoint::set_waypoint(synfig::ValueNode_Animated::Waypoint x)
Carlos Lopez a09598
{
Carlos Lopez a09598
	waypointwidget->set_waypoint(x);
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
const synfig::ValueNode_Animated::Waypoint &
Carlos Lopez a09598
Dialog_Waypoint::get_waypoint()const
Carlos Lopez a09598
{
Carlos Lopez a09598
	return waypointwidget->get_waypoint();
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
void
Carlos Lopez a09598
Dialog_Waypoint::set_value_desc(synfigapp::ValueDesc value_desc)
Carlos Lopez a09598
{
Carlos Lopez a09598
	value_desc_=value_desc;
Carlos Lopez a09598
	if(value_desc.get_value_node() && value_desc.get_value_node()->get_parent_canvas())
Carlos Lopez a09598
		waypointwidget->set_canvas(value_desc.get_value_node()->get_parent_canvas());
Rodolfo Ribeiro Gomes ad5dbf
Rodolfo Ribeiro Gomes ad5dbf
	if (value_desc.is_value_node())
Rodolfo Ribeiro Gomes ad5dbf
		value_desc_changed = value_desc.get_value_node()->signal_changed().connect(
Rodolfo Ribeiro Gomes ad5dbf
					sigc::mem_fun(*this, &Dialog_Waypoint::refresh ));
Rodolfo Ribeiro Gomes ad5dbf
	if (value_desc.parent_is_value_node())
Rodolfo Ribeiro Gomes ad5dbf
		value_desc_changed = value_desc.get_parent_value_node()->signal_changed().connect(
Rodolfo Ribeiro Gomes ad5dbf
				sigc::mem_fun(*this, &Dialog_Waypoint::refresh ));
Rodolfo Ribeiro Gomes ad5dbf
	if (value_desc.parent_is_layer())
Rodolfo Ribeiro Gomes ad5dbf
		value_desc_changed = value_desc.get_layer()->signal_changed().connect(
Rodolfo Ribeiro Gomes ad5dbf
				sigc::mem_fun(*this, &Dialog_Waypoint::refresh ));
Rodolfo Ribeiro Gomes ad5dbf
Carlos Lopez a09598
}
Carlos Lopez a09598
Carlos Lopez a09598
void
Carlos Lopez a09598
Dialog_Waypoint::reset()
Carlos Lopez a09598
{
Carlos Lopez a09598
}
Rodolfo Ribeiro Gomes ad5dbf
Rodolfo Ribeiro Gomes ad5dbf
void
Rodolfo Ribeiro Gomes ad5dbf
Dialog_Waypoint::refresh()
Rodolfo Ribeiro Gomes ad5dbf
{
Rodolfo Ribeiro Gomes ad5dbf
	Waypoint refreshed_waypoint;
Rodolfo Ribeiro Gomes ad5dbf
	bool ok = synfig::waypoint_search(refreshed_waypoint, waypointwidget->get_waypoint(), value_desc_.get_value_node());
Rodolfo Ribeiro Gomes ad5dbf
	if (!ok)
Rodolfo Ribeiro Gomes ad5dbf
		hide();
Rodolfo Ribeiro Gomes ad5dbf
	else
Rodolfo Ribeiro Gomes ad5dbf
		set_waypoint(refreshed_waypoint);
Rodolfo Ribeiro Gomes ad5dbf
}
Rodolfo Ribeiro Gomes ad5dbf