/[svn]/gigedit/trunk/src/paramedit.h
ViewVC logotype

Diff of /gigedit/trunk/src/paramedit.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1116 by persson, Sat Mar 17 09:20:19 2007 UTC revision 1117 by persson, Sat Mar 24 13:05:58 2007 UTC
# Line 82  private: Line 82  private:
82      void value_changed();      void value_changed();
83  public:  public:
84      NumEntryGain(char* labelText,      NumEntryGain(char* labelText,
85                   double lower, double upper, int decimals);                   double lower, double upper, int decimals);
86      void set_dimreg(gig::DimensionRegion* dimreg);      void set_dimreg(gig::DimensionRegion* dimreg);
87  };  };
88    
89  template<typename T>  template<typename T, typename T2 = gig::DimensionRegion>
90  class NumEntryX : public NumEntry<gig::DimensionRegion> {  class NumEntryX : public NumEntry<T2> {
91        using NumEntry<T2>::spinbutton;
92        using NumEntry<T2>::dimreg;
93  private:  private:
94      T& (*access)(gig::DimensionRegion*);      T& (*access)(T2*);
95      void value_changed();      void value_changed();
96  public:  public:
97      NumEntryX(char* labelText, T& (*access)(gig::DimensionRegion*),      NumEntryX(char* labelText, T& (*access)(T2*),
98                double lower = 0, double upper = 127, int decimals = 0);                double lower = 0, double upper = 127, int decimals = 0);
99      void set_dimreg(gig::DimensionRegion* dimreg);      void set_dimreg(T2* dimreg);
100  };  };
101    
102  template<typename T>  template<typename T, typename T2>
103  NumEntryX<T>::NumEntryX(char* labelText, T& (*access)(gig::DimensionRegion*),  NumEntryX<T, T2>::NumEntryX(char* labelText, T& (*access)(T2*),
104                          double lower, double upper, int decimals) :                              double lower, double upper, int decimals) :
105      NumEntry<gig::DimensionRegion>(labelText, lower, upper, decimals),      NumEntry<T2>(labelText, lower, upper, decimals),
106      access(access)      access(access)
107  {  {
108      spinbutton.signal_value_changed().connect(      spinbutton.signal_value_changed().connect(
109          sigc::mem_fun(*this, &NumEntryX::value_changed));          sigc::mem_fun(*this, &NumEntryX::value_changed));
110  }  }
111    
112  template<typename T>  template<typename T, typename T2>
113  void NumEntryX<T>::value_changed()  void NumEntryX<T, T2>::value_changed()
114  {  {
115      if (dimreg && update_gui) {      if (dimreg && update_gui) {
116          access(dimreg) = T(spinbutton.get_value());          access(dimreg) = T(spinbutton.get_value());
117      }      }
118  }  }
119    
120  template<typename T>  template<typename T, typename T2>
121  void NumEntryX<T>::set_dimreg(gig::DimensionRegion* dimreg)  void NumEntryX<T, T2>::set_dimreg(T2* dimreg)
122  {  {
123      this->dimreg = 0;      this->dimreg = 0;
124      set_value(access(dimreg));      set_value(access(dimreg));
# Line 143  private: Line 145  private:
145  public:  public:
146      NumEntryTemp(char* labelText, T T2::* param,      NumEntryTemp(char* labelText, T T2::* param,
147                   double lower = 0, double upper = 127, int decimals = 0);                   double lower = 0, double upper = 127, int decimals = 0);
148      void set_dimreg(gig::DimensionRegion* dimreg);      void set_dimreg(T2* dimreg);
149  };  };
150    
151  template<typename T, typename T2>  template<typename T, typename T2>
# Line 153  NumEntryTemp<T, T2>::NumEntryTemp(char* Line 155  NumEntryTemp<T, T2>::NumEntryTemp(char*
155      param(param)      param(param)
156  {  {
157      spinbutton.signal_value_changed().connect(      spinbutton.signal_value_changed().connect(
158          sigc::mem_fun(*this, &NumEntryTemp<T, T2>::value_changed));          sigc::mem_fun(*this, &NumEntryTemp::value_changed));
159  }  }
160    
161  template<typename T, typename T2>  template<typename T, typename T2>
# Line 165  void NumEntryTemp<T, T2>::value_changed( Line 167  void NumEntryTemp<T, T2>::value_changed(
167  }  }
168    
169  template<typename T, typename T2>  template<typename T, typename T2>
170  void NumEntryTemp<T, T2>::set_dimreg(gig::DimensionRegion* dimreg)  void NumEntryTemp<T, T2>::set_dimreg(T2* dimreg)
171  {  {
172      this->dimreg = 0;      this->dimreg = 0;
173      set_value(dimreg->*param);      set_value(dimreg->*param);
# Line 268  public: Line 270  public:
270  };  };
271    
272    
273    template<typename T2>
274  class BoolEntry : public LabelWidget {  class BoolEntry : public LabelWidget {
275  private:  private:
276      Gtk::CheckButton checkbutton;      Gtk::CheckButton checkbutton;
277      bool gig::DimensionRegion::* param;      bool T2::* param;
278        T2* dimreg;
279        void value_changed();
280    public:
281        BoolEntry(char* labelText, bool T2::* param);
282        void set_dimreg(T2* dimreg);
283        bool get_active() { return checkbutton.get_active(); }
284        Glib::SignalProxy0<void> signal_toggled() {
285            return checkbutton.signal_toggled();
286        }
287    };
288    
289    template<typename T2>
290    BoolEntry<T2>::BoolEntry(char* labelText, bool T2::* param) :
291        LabelWidget(labelText, checkbutton),
292        param(param)
293    {
294        checkbutton.signal_toggled().connect(
295            sigc::mem_fun(*this, &BoolEntry::value_changed));
296    }
297    
298    template<typename T2>
299    void BoolEntry<T2>::value_changed()
300    {
301        if (dimreg && update_gui) {
302            dimreg->*param = checkbutton.get_active();
303        }
304    }
305    
306    template<typename T2>
307    void BoolEntry<T2>::set_dimreg(T2* dimreg)
308    {
309        this->dimreg = 0;
310        checkbutton.set_active(dimreg->*param);
311        this->dimreg = dimreg;
312    }
313    
314    class BoolEntryPlus6 : public LabelWidget {
315    private:
316        Gtk::CheckButton checkbutton;
317      gig::DimensionRegion* dimreg;      gig::DimensionRegion* dimreg;
318      void value_changed();      void value_changed();
319        NumEntryGain& eGain;
320  public:  public:
321      BoolEntry(char* labelText, bool gig::DimensionRegion::* param);      BoolEntryPlus6(char* labelText, NumEntryGain& eGain);
322      void set_dimreg(gig::DimensionRegion* dimreg);      void set_dimreg(gig::DimensionRegion* dimreg);
323      bool get_active() { return checkbutton.get_active(); }      bool get_active() { return checkbutton.get_active(); }
324      Glib::SignalProxy0<void> signal_toggled() {      Glib::SignalProxy0<void> signal_toggled() {

Legend:
Removed from v.1116  
changed lines
  Added in v.1117

  ViewVC Help
Powered by ViewVC