Codebase list granule / HEAD src / TextAlignment.cpp
HEAD

Tree @HEAD (Download .tar.gz)

TextAlignment.cpp @HEADraw · history · blame

// -*- c++ -*-
//------------------------------------------------------------------------------
// $Id: TextAlignment.cpp,v 1.10 2008/08/16 03:13:09 vlg Exp $
//------------------------------------------------------------------------------
//                            TextAlignment.cpp
//------------------------------------------------------------------------------
//  Copyright (c) 2006 by Vladislav Grinchenko
//
//  This program is free software; you can redistribute it and/or 
//  modify it under the terms of the GNU General Public License   
//  as published by the Free Software Foundation; either version  
//  2 of the License, or (at your option) any later version.      
//------------------------------------------------------------------------------
//
// Date   : Wed Oct 25 20:49:21 EDT 2006
//
//------------------------------------------------------------------------------

#include "Granule-main.h"
#include "TextAlignment.h"

#include "Intern.h"             // i18n macros

using sigc::mem_fun;

/**-----------------------------------------------------------------------------
 *	TextAlignment
 **-----------------------------------------------------------------------------
 */
TextAlignment::
TextAlignment (PrefWindow& grandpa_) 
	: 
	Gtk::VBox (false, 0),
	m_pref_window (grandpa_)
{
	trace_with_mask("TextAlignment::TextAlignment",GUITRACE);

	m_vbox = this;

	TextAlignmentsUI::value_list_t align_x_list;
	TextAlignmentsUI::value_list_t align_y_list;
	TextAlignmentsUI::value_list_t paragraph_list;
	TextAlignmentsUI::value_list_t img_position_list;

	align_x_list      = TextAlignmentsUI::make_align_x_list      ();
	align_y_list      = TextAlignmentsUI::make_align_y_list      ();
	paragraph_list    = TextAlignmentsUI::make_paragraph_list    ();
	img_position_list = TextAlignmentsUI::make_img_position_list ();

	m_front_widget = new TextAlignmentsUI ("<b>Front Text Alignment</b>",
										   align_x_list,
										   align_y_list,
										   paragraph_list,
										   img_position_list);

	m_back_widget = new TextAlignmentsUI ("<b>Back Text Alignment</b>",
										  align_x_list,
										  align_y_list,
										  paragraph_list,
										  img_position_list, false);

	m_example_widget = new TextAlignmentsUI ("<b>Example Text Alignment</b>",
											 align_x_list,
											 align_y_list,
											 paragraph_list,
											 img_position_list);
	/** Pack all together
	 */
	m_vbox->pack_start (*(m_front_widget->frame   ()), Gtk::PACK_SHRINK, 4);
	m_vbox->pack_start (*(m_back_widget->frame    ()), Gtk::PACK_SHRINK, 4);
	m_vbox->pack_start (*(m_example_widget->frame ()), Gtk::PACK_SHRINK, 4);

	/** Setup callbacks
	 */
	/// Front
	m_front_widget->x_align_combo ()->signal_changed ().connect (
		mem_fun (m_pref_window, &PrefWindow::changed_cb));

	m_front_widget->y_align_combo ()->signal_changed ().connect (
		mem_fun (m_pref_window, &PrefWindow::changed_cb));

	m_front_widget->x_padding_entry ()->signal_changed ().connect (
		mem_fun (m_pref_window, &PrefWindow::changed_cb));

	m_front_widget->y_padding_entry ()->signal_changed ().connect (
		mem_fun (m_pref_window, &PrefWindow::changed_cb));

	m_front_widget->paragraph_combo ()->signal_changed ().connect (
		mem_fun (m_pref_window, &PrefWindow::changed_cb));

	m_front_widget->img_position_combo ()->signal_changed ().connect (
		mem_fun (m_pref_window, &PrefWindow::changed_cb));

	/// Back
	m_back_widget->x_align_combo ()->signal_changed ().connect (
		mem_fun (m_pref_window, &PrefWindow::changed_cb));

	m_back_widget->y_align_combo ()->signal_changed ().connect (
		mem_fun (m_pref_window, &PrefWindow::changed_cb));

	m_back_widget->x_padding_entry ()->signal_changed ().connect (
		mem_fun (m_pref_window, &PrefWindow::changed_cb));

	m_back_widget->y_padding_entry ()->signal_changed ().connect (
		mem_fun (m_pref_window, &PrefWindow::changed_cb));

	m_back_widget->paragraph_combo ()->signal_changed ().connect (
		mem_fun (m_pref_window, &PrefWindow::changed_cb));

	/// Example
	m_example_widget->x_align_combo ()->signal_changed ().connect (
		mem_fun (m_pref_window, &PrefWindow::changed_cb));

	m_example_widget->y_align_combo ()->signal_changed ().connect (
		mem_fun (m_pref_window, &PrefWindow::changed_cb));

	m_example_widget->x_padding_entry ()->signal_changed ().connect (
		mem_fun (m_pref_window, &PrefWindow::changed_cb));

	m_example_widget->y_padding_entry ()->signal_changed ().connect (
		mem_fun (m_pref_window, &PrefWindow::changed_cb));

	m_example_widget->paragraph_combo ()->signal_changed ().connect (
		mem_fun (m_pref_window, &PrefWindow::changed_cb));

	m_example_widget->img_position_combo ()->signal_changed ().connect (
		mem_fun (m_pref_window, &PrefWindow::changed_cb));

	show_all_children ();
}

void
TextAlignment::
load_appearance (AppearanceDB& app_db_)
{
	app_db_.update_view (FRONT,   m_front_widget  );
	app_db_.update_view (BACK,    m_back_widget   );
	app_db_.update_view (EXAMPLE, m_example_widget);
}

void
TextAlignment::
save_appearance (AppearanceDB& app_db_)
{
	app_db_.fetch_from_view (FRONT,   m_front_widget  );
	app_db_.fetch_from_view (BACK,    m_back_widget   );
	app_db_.fetch_from_view (EXAMPLE, m_example_widget);
}