// -*- C++ -*-
/*
* Gnome Crystal
* sizedlg.cc
*
* Copyright (C) 2002-2007 Jean Bréfort <jean.brefort@normalesup.org>
*
* 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*/
#include "config.h"
#include "sizedlg.h"
#include "document.h"
#include "application.h"
gcSizeDlg::gcSizeDlg (gcApplication *App, gcDocument* pDoc): Dialog (App, GLADEDIR"/size.glade", "size", pDoc)
{
if (!xml) {
delete this;
return;
}
m_pDoc = pDoc;
MinX = (GtkEntry*) glade_xml_get_widget(xml, "xmin");
MaxX = (GtkEntry*) glade_xml_get_widget(xml, "xmax");
MinY = (GtkEntry*) glade_xml_get_widget(xml, "ymin");
MaxY = (GtkEntry*) glade_xml_get_widget(xml, "ymax");
MinZ = (GtkEntry*) glade_xml_get_widget(xml, "zmin");
MaxZ = (GtkEntry*) glade_xml_get_widget(xml, "zmax");
double xmin, xmax, ymin, ymax, zmin, zmax;
pDoc->GetSize(&xmin, &xmax, &ymin, &ymax, &zmin, &zmax);
snprintf(m_buf, sizeof(m_buf), "%g", xmin);
gtk_entry_set_text(MinX, m_buf);
snprintf(m_buf, sizeof(m_buf), "%g", xmax);
gtk_entry_set_text(MaxX, m_buf);
snprintf(m_buf, sizeof(m_buf), "%g", ymin);
gtk_entry_set_text(MinY, m_buf);
snprintf(m_buf, sizeof(m_buf), "%g", ymax);
gtk_entry_set_text(MaxY, m_buf);
snprintf(m_buf, sizeof(m_buf), "%g", zmin);
gtk_entry_set_text(MinZ, m_buf);
snprintf(m_buf, sizeof(m_buf), "%g", zmax);
gtk_entry_set_text(MaxZ, m_buf);
}
gcSizeDlg::~gcSizeDlg()
{
}
bool gcSizeDlg::Apply ()
{
double xmin, xmax, ymin, ymax, zmin, zmax, x;
if ((!GetNumber (MinX, &xmin)) ||
(!GetNumber (MaxX, &xmax)) ||
(!GetNumber (MinY, &ymin)) ||
(!GetNumber (MaxY, &ymax)) ||
(!GetNumber (MinZ, &zmin)) ||
(!GetNumber (MaxZ, &zmax))) {
return false;
}
if (xmin > xmax) {
x = xmin;
xmin = xmax;
xmax = x;
}
if (ymin > ymax) {
x = ymin;
ymin = ymax;
ymax = x;
}
if (zmin > zmax) {
x = zmin;
zmin = zmax;
zmax = x;
}
m_pDoc->SetSize (xmin, xmax, ymin, ymax, zmin, zmax);
m_pDoc->Update ();
m_pDoc->SetDirty (true);
return true;
}
syntax highlighted by Code2HTML, v. 0.9.1