1 /* === S I N F G =========================================================== */
2 /*! \file adjust_window.cpp
3 ** \brief Adjustment Window Implementation File
5 ** $Id: adjust_window.cpp,v 1.1.1.1 2005/01/07 03:34:35 darco Exp $
8 ** Copyright (c) 2004 Adrian Bentley
10 ** This software and associated documentation
11 ** are CONFIDENTIAL and PROPRIETARY property of
12 ** the above-mentioned copyright holder.
14 ** You may not copy, print, publish, or in any
15 ** other way distribute this software without
16 ** a prior written agreement with
17 ** the copyright holder.
20 /* ========================================================================= */
22 /* === H E A D E R S ======================================================= */
31 #include "adjust_window.h"
36 /* === U S I N G =========================================================== */
39 //using namespace etl;
40 //using namespace sinfg;
42 using studio::Adjust_Window;
44 /* === M A C R O S ========================================================= */
45 const double EPSILON = 1.0e-6;
47 /* === G L O B A L S ======================================================= */
49 /* === P R O C E D U R E S ================================================= */
51 /* === M E T H O D S ======================================================= */
53 /* === E N T R Y P O I N T ================================================= */
55 Adjust_Window::Adjust_Window(double value, double lower, double upper,
56 double stepinc, double pageinc, double pagesize,
58 : Adjustment(value,lower,upper,stepinc,pageinc,pagesize),
61 if(adj) set_child_adjustment(adj);
64 Adjust_Window::~Adjust_Window()
66 //connections should automatically be killed etc.
69 //child interface functions
70 Gtk::Adjustment *Adjust_Window::get_child_adjustment()
75 const Gtk::Adjustment *Adjust_Window::get_child_adjustment() const
80 void Adjust_Window::set_child_adjustment(Gtk::Adjustment *child)
82 childchanged.disconnect();
86 sinfg::info("Adjust: connecting to child signals");
89 childchanged = child->signal_changed().connect(sigc::mem_fun(*this,&Adjust_Window::update_fromchild));
95 void Adjust_Window::on_changed()
100 void Adjust_Window::on_value_changed()
106 double Adjust_Window::get_sub_lower() const
111 double Adjust_Window::get_sub_upper() const
113 return get_value() + get_page_size();
116 //---- REFRESH FUNCTIONS -----
117 void Adjust_Window::update_child()
121 bool childchanged = false;
123 double v = get_value();
124 double ve = v + get_page_size();
126 //reset child's values if they need to be...
127 if(abs(v - adj_child->get_lower()) > EPSILON)
129 adj_child->set_lower(v);
133 if(abs(ve - adj_child->get_upper()) > EPSILON)
135 adj_child->set_upper(ve);
141 adj_child->changed();
146 void Adjust_Window::update_fromchild()
150 double b = adj_child->get_lower();
151 double dist = adj_child->get_upper() - b;
153 //reset our values if they need to be...
154 if(abs(get_value() - b) > EPSILON)
160 if(abs(get_page_size() - dist) > EPSILON)