|
trizer |
7e7cdf |
/* === S Y N F I G ========================================================= */
|
|
trizer |
7e7cdf |
/*! \file dialog_spritesheetparam.cpp
|
|
trizer |
7e7cdf |
** \brief Implementation for the SpriteSheetParam Dialog
|
|
trizer |
7e7cdf |
**
|
|
trizer |
7e7cdf |
** $Id$
|
|
trizer |
7e7cdf |
**
|
|
trizer |
7e7cdf |
** \legal
|
|
trizer |
7e7cdf |
** Copyright (c) 2015 Denis Zdorovtsov
|
|
trizer |
7e7cdf |
**
|
|
trizer |
7e7cdf |
** This package is free software; you can redistribute it and/or
|
|
trizer |
7e7cdf |
** modify it under the terms of the GNU General Public License as
|
|
trizer |
7e7cdf |
** published by the Free Software Foundation; either version 2 of
|
|
trizer |
7e7cdf |
** the License, or (at your option) any later version.
|
|
trizer |
7e7cdf |
**
|
|
trizer |
7e7cdf |
** This package is distributed in the hope that it will be useful,
|
|
trizer |
7e7cdf |
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
trizer |
7e7cdf |
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
trizer |
7e7cdf |
** General Public License for more details.
|
|
trizer |
7e7cdf |
** \endlegal
|
|
trizer |
7e7cdf |
*/
|
|
trizer |
7e7cdf |
/* ========================================================================= */
|
|
trizer |
7e7cdf |
|
|
trizer |
7e7cdf |
/* === H E A D E R S ======================================================= */
|
|
caryoscelus |
77c779 |
#include <cmath></cmath>
|
|
Denis Zdorovtsov |
76fe0c |
|
|
bw |
94d8a6 |
#include <synfig general.h=""></synfig>
|
|
Denis Zdorovtsov |
76fe0c |
|
|
bw |
94d8a6 |
#include <gtkmm grid.h=""></gtkmm>
|
|
bw |
94d8a6 |
#include <gui localization.h=""></gui>
|
|
trizer |
96a035 |
#include "dialogs/dialog_spritesheetparam.h"
|
|
trizer |
613172 |
|
|
trizer |
613172 |
namespace studio
|
|
trizer |
613172 |
{
|
|
trizer |
613172 |
|
|
trizer |
7e7cdf |
Dialog_SpriteSheetParam::Dialog_SpriteSheetParam(Gtk::Window &parent):
|
|
Denis Zdorovtsov |
76fe0c |
Dialog_TargetParam(parent, _("Sprite sheet parameters")),
|
|
Denis Zdorovtsov |
76fe0c |
frame_count(0)
|
|
Denis Zdorovtsov |
76fe0c |
{
|
|
Denis Zdorovtsov |
76fe0c |
//Checkbox
|
|
Denis Zdorovtsov |
76fe0c |
check_button = Gtk::manage(new Gtk::CheckButton(_("Add into an existing file."),true));
|
|
Denis Zdorovtsov |
76fe0c |
|
|
Denis Zdorovtsov |
76fe0c |
//Offset X
|
|
trizer |
96a035 |
Gtk::Label* offset_x_label(manage(new Gtk::Label(_("Offset X:"))));
|
|
trizer |
96a035 |
offset_x_label->set_alignment(Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
|
|
trizer |
96a035 |
offset_x_box = Gtk::manage(new Gtk::SpinButton(Gtk::Adjustment::create(0.0, 0.0,10000.0)));
|
|
Denis Zdorovtsov |
76fe0c |
|
|
Denis Zdorovtsov |
76fe0c |
//Offset Y
|
|
trizer |
96a035 |
Gtk::Label* offset_y_label(manage(new Gtk::Label(_("Offset Y:"))));
|
|
trizer |
96a035 |
offset_y_label->set_alignment(Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
|
|
trizer |
96a035 |
offset_y_box = Gtk::manage(new Gtk::SpinButton(Gtk::Adjustment::create(0.0, 0.0,10000.0)));
|
|
Denis Zdorovtsov |
76fe0c |
|
|
Denis Zdorovtsov |
76fe0c |
//Dirrection
|
|
Denis Zdorovtsov |
76fe0c |
Gtk::Label* direction_label(manage(new Gtk::Label(_("Direction:"))));
|
|
Denis Zdorovtsov |
76fe0c |
direction_label->set_alignment(Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
|
|
Denis Zdorovtsov |
76fe0c |
direction_box = Gtk::manage(new Gtk::ComboBoxText());
|
|
Pascal Schmid |
2891f7 |
direction_box->append("horizontal");
|
|
Denis Zdorovtsov |
76fe0c |
direction_box->append("vertical");
|
|
Denis Zdorovtsov |
76fe0c |
direction_box->set_active(0);
|
|
Denis Zdorovtsov |
76fe0c |
direction_box->signal_changed().connect(sigc::mem_fun(*this, &Dialog_SpriteSheetParam::on_dir_change));
|
|
Denis Zdorovtsov |
76fe0c |
|
|
Denis Zdorovtsov |
76fe0c |
//Row count
|
|
trizer |
d2fcc7 |
Gtk::Label* rows_label(manage(new Gtk::Label(_("Rows:"))));
|
|
trizer |
d2fcc7 |
rows_label->set_alignment(Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
|
|
Denis Zdorovtsov |
76fe0c |
rows_box = Gtk::manage(new Gtk::SpinButton(Gtk::Adjustment::create(0.0, 1.0,1000.0)));
|
|
Denis Zdorovtsov |
76fe0c |
rows_box->signal_value_changed().connect(sigc::mem_fun(*this, &Dialog_SpriteSheetParam::on_rows_change));
|
|
Denis Zdorovtsov |
76fe0c |
|
|
Denis Zdorovtsov |
76fe0c |
//Column count
|
|
trizer |
d2fcc7 |
Gtk::Label* columns_label(manage(new Gtk::Label(_("Columns:"))));
|
|
trizer |
d2fcc7 |
columns_label->set_alignment(Gtk::ALIGN_START, Gtk::ALIGN_CENTER);
|
|
Denis Zdorovtsov |
76fe0c |
columns_box = Gtk::manage(new Gtk::SpinButton(Gtk::Adjustment::create(0.0, 1.0,1000.0)));
|
|
Denis Zdorovtsov |
76fe0c |
columns_box->signal_value_changed().connect(sigc::mem_fun(*this, &Dialog_SpriteSheetParam::on_cols_change));
|
|
Denis Zdorovtsov |
76fe0c |
|
|
Denis Zdorovtsov |
76fe0c |
//Grid
|
|
Denis Zdorovtsov |
76fe0c |
Gtk::Grid* grid = Gtk::manage(new Gtk::Grid());
|
|
Denis Zdorovtsov |
76fe0c |
grid->attach(*check_button,0,0,2,1);
|
|
Denis Zdorovtsov |
76fe0c |
grid->attach(*offset_x_label,0,1,1,1);
|
|
Denis Zdorovtsov |
76fe0c |
grid->attach(*offset_x_box,1,1,1,1);
|
|
Denis Zdorovtsov |
76fe0c |
grid->attach(*offset_y_label,2,1,1,1);
|
|
Denis Zdorovtsov |
76fe0c |
grid->attach(*offset_y_box,3,1,1,1);
|
|
Denis Zdorovtsov |
76fe0c |
grid->attach(*direction_label,0,2,2,1);
|
|
Denis Zdorovtsov |
76fe0c |
grid->attach(*direction_box,1,2,3,1);
|
|
Denis Zdorovtsov |
76fe0c |
grid->attach(*rows_label,0,3,1,1);
|
|
Denis Zdorovtsov |
76fe0c |
grid->attach(*rows_box,1,3,1,1);
|
|
Denis Zdorovtsov |
76fe0c |
grid->attach(*columns_label,2,3,1,1);
|
|
Denis Zdorovtsov |
76fe0c |
grid->attach(*columns_box,3,3,1,1);
|
|
Denis Zdorovtsov |
76fe0c |
grid->set_row_spacing (4);
|
|
Denis Zdorovtsov |
76fe0c |
grid->set_column_spacing (2);
|
|
Denis Zdorovtsov |
76fe0c |
grid->set_border_width(8);
|
|
Denis Zdorovtsov |
76fe0c |
grid->show_all();
|
|
Denis Zdorovtsov |
76fe0c |
|
|
Denis Zdorovtsov |
76fe0c |
get_content_area()->pack_start(*grid, true, true, 3);
|
|
Denis Zdorovtsov |
76fe0c |
get_content_area()->show_all();
|
|
trizer |
7e7cdf |
}
|
|
trizer |
7e7cdf |
|
|
trizer |
7e7cdf |
Dialog_SpriteSheetParam::~Dialog_SpriteSheetParam()
|
|
trizer |
7e7cdf |
{
|
|
trizer |
7e7cdf |
}
|
|
trizer |
613172 |
|
|
trizer |
7e7cdf |
void
|
|
trizer |
7e7cdf |
Dialog_SpriteSheetParam::init()
|
|
trizer |
7e7cdf |
{
|
|
Denis Zdorovtsov |
76fe0c |
frame_count = get_desc().get_frame_end() - get_desc().get_frame_start() + 1;
|
|
Denis Zdorovtsov |
76fe0c |
|
|
trizer |
96a035 |
offset_x_box->set_value(get_tparam().offset_x);
|
|
trizer |
96a035 |
offset_y_box->set_value(get_tparam().offset_y);
|
|
trizer |
d2fcc7 |
rows_box->set_value(get_tparam().rows);
|
|
trizer |
d2fcc7 |
columns_box->set_value(get_tparam().columns);
|
|
Denis Zdorovtsov |
76fe0c |
direction_box->set_active(get_tparam().dir);
|
|
Denis Zdorovtsov |
76fe0c |
check_button->set_active(get_tparam().append);
|
|
Denis Zdorovtsov |
76fe0c |
on_dir_change(); //Update boxes
|
|
Denis Zdorovtsov |
76fe0c |
}
|
|
Denis Zdorovtsov |
76fe0c |
|
|
Denis Zdorovtsov |
76fe0c |
void
|
|
Denis Zdorovtsov |
76fe0c |
Dialog_SpriteSheetParam::on_dir_change()
|
|
Denis Zdorovtsov |
76fe0c |
{
|
|
Denis Zdorovtsov |
76fe0c |
rows_box->set_sensitive(direction_box->get_active_row_number() == 1);
|
|
Denis Zdorovtsov |
76fe0c |
rows_box->set_value(direction_box->get_active_row_number() == 1 ? frame_count : 1);
|
|
Denis Zdorovtsov |
76fe0c |
columns_box->set_sensitive(direction_box->get_active_row_number() == 0);
|
|
Denis Zdorovtsov |
76fe0c |
columns_box->set_value(direction_box->get_active_row_number() == 0 ? frame_count : 1);
|
|
Denis Zdorovtsov |
76fe0c |
}
|
|
Denis Zdorovtsov |
76fe0c |
|
|
Denis Zdorovtsov |
76fe0c |
void
|
|
Denis Zdorovtsov |
76fe0c |
Dialog_SpriteSheetParam::on_rows_change()
|
|
Denis Zdorovtsov |
76fe0c |
{
|
|
Denis Zdorovtsov |
76fe0c |
static bool flag = false;
|
|
Denis Zdorovtsov |
76fe0c |
if (direction_box->get_active_row_number() == 0)
|
|
Denis Zdorovtsov |
76fe0c |
return;
|
|
Denis Zdorovtsov |
76fe0c |
if ((flag = !flag))
|
|
Denis Zdorovtsov |
76fe0c |
columns_box->set_value(ceil((double)frame_count / rows_box->get_value()));
|
|
Denis Zdorovtsov |
76fe0c |
}
|
|
Denis Zdorovtsov |
76fe0c |
|
|
Denis Zdorovtsov |
76fe0c |
void
|
|
Denis Zdorovtsov |
76fe0c |
Dialog_SpriteSheetParam::on_cols_change()
|
|
Denis Zdorovtsov |
76fe0c |
{
|
|
Denis Zdorovtsov |
76fe0c |
static bool flag = false;
|
|
Denis Zdorovtsov |
76fe0c |
if (direction_box->get_active_row_number() == 1)
|
|
Denis Zdorovtsov |
76fe0c |
return;
|
|
Denis Zdorovtsov |
76fe0c |
if ((flag = !flag))
|
|
Denis Zdorovtsov |
76fe0c |
rows_box->set_value(ceil((double)frame_count / columns_box->get_value()));
|
|
trizer |
7e7cdf |
}
|
|
trizer |
7e7cdf |
|
|
trizer |
7e7cdf |
void
|
|
trizer |
7e7cdf |
Dialog_SpriteSheetParam::write_tparam(synfig::TargetParam & tparam_)
|
|
trizer |
7e7cdf |
{
|
|
trizer |
96a035 |
tparam_.offset_x = offset_x_box->get_value();
|
|
trizer |
96a035 |
tparam_.offset_y = offset_y_box->get_value();
|
|
trizer |
d2fcc7 |
tparam_.rows = rows_box->get_value();
|
|
trizer |
d2fcc7 |
tparam_.columns = columns_box->get_value();
|
|
Denis Zdorovtsov |
76fe0c |
tparam_.dir = (synfig::TargetParam::Direction)direction_box->get_active_row_number ();
|
|
Denis Zdorovtsov |
76fe0c |
tparam_.append = check_button->get_active();
|
|
trizer |
7e7cdf |
}
|
|
trizer |
613172 |
|
|
bw |
94d8a6 |
}
|