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

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

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

revision 1322 by schoenebeck, Tue Sep 4 11:04:56 2007 UTC revision 2151 by persson, Sun Nov 21 12:38:41 2010 UTC
# Line 1  Line 1 
1  /*                                                         -*- c++ -*-  /*                                                         -*- c++ -*-
2   * Copyright (C) 2006, 2007 Andreas Persson   * Copyright (C) 2006-2010 Andreas Persson
3   *   *
4   * This program is free software; you can redistribute it and/or   * This program is free software; you can redistribute it and/or
5   * modify it under the terms of the GNU General Public License as   * modify it under the terms of the GNU General Public License as
# Line 26  Line 26 
26  #include <gtkmm/label.h>  #include <gtkmm/label.h>
27  #include <gtkmm/notebook.h>  #include <gtkmm/notebook.h>
28  #include <gtkmm/table.h>  #include <gtkmm/table.h>
29  #include <gtkmm/tooltips.h>  
30    #include <set>
31    
32  #include "paramedit.h"  #include "paramedit.h"
33    
# Line 38  public: Line 39  public:
39      void set_dim_region(gig::DimensionRegion* d);      void set_dim_region(gig::DimensionRegion* d);
40      bool set_sample(gig::Sample* sample);      bool set_sample(gig::Sample* sample);
41      Gtk::Entry* wSample;      Gtk::Entry* wSample;
42      sigc::signal<void, gig::DimensionRegion*> signal_dimreg_to_be_changed();      sigc::signal<void, gig::DimensionRegion*>& signal_dimreg_to_be_changed();
43      sigc::signal<void, gig::DimensionRegion*> signal_dimreg_changed();      sigc::signal<void, gig::DimensionRegion*>& signal_dimreg_changed();
44      sigc::signal<void, gig::Sample*/*old*/, gig::Sample*/*new*/> signal_sample_ref_changed();      sigc::signal<void, gig::Sample*/*old*/, gig::Sample*/*new*/>& signal_sample_ref_changed();
45    
46        std::set<gig::DimensionRegion*> dimregs;
47    
48  protected:  protected:
49      sigc::signal<void, gig::DimensionRegion*> dimreg_to_be_changed_signal;      sigc::signal<void, gig::DimensionRegion*> dimreg_to_be_changed_signal;
# Line 50  protected: Line 53  protected:
53    
54      gig::DimensionRegion* dimregion;      gig::DimensionRegion* dimregion;
55    
56    #ifdef OLD_TOOLTIPS
57      Gtk::Tooltips tooltips;      Gtk::Tooltips tooltips;
58    #endif
59    
60      Gtk::Table* table[7];      Gtk::Table* table[7];
61    
# Line 144  protected: Line 149  protected:
149      ChoiceEntry<uint32_t> eSampleLoopType;      ChoiceEntry<uint32_t> eSampleLoopType;
150      BoolEntry eSampleLoopInfinite;      BoolEntry eSampleLoopInfinite;
151      NumEntryTemp<uint32_t> eSampleLoopPlayCount;      NumEntryTemp<uint32_t> eSampleLoopPlayCount;
152        Gtk::Label* lEG2;
153        Gtk::Label* lLFO2;
154    
155      int rowno;      int rowno;
156      int pageno;      int pageno;
# Line 155  protected: Line 162  protected:
162      void addProp(LabelWidget& labelwidget);      void addProp(LabelWidget& labelwidget);
163      void addString(const char* labelText, Gtk::Label*& label,      void addString(const char* labelText, Gtk::Label*& label,
164                     Gtk::Entry*& widget);                     Gtk::Entry*& widget);
165      void addHeader(const char* text);      Gtk::Label* addHeader(const char* text);
166      void nextPage();      void nextPage();
167    
168      void VCFEnabled_toggled();      void VCFEnabled_toggled();
# Line 173  protected: Line 180  protected:
180      void crossfade2_changed();      void crossfade2_changed();
181      void crossfade3_changed();      void crossfade3_changed();
182      void crossfade4_changed();      void crossfade4_changed();
183      void loop_enabled_toggled();      void update_loop_elements();
184        void loop_start_changed();
185        void loop_length_changed();
186      void loop_infinite_toggled();      void loop_infinite_toggled();
187    
188      void updateLoopElements();      int update_model;
189    
190        // connect a widget to a setter function in DimRegionEdit
191        template<typename C, typename T>
192        void connect(C& widget,
193                     void (DimRegionEdit::*setter)(gig::DimensionRegion*, T)) {
194            connect<C, T>(widget,
195                          sigc::mem_fun(setter));
196        }
197    
198        // connect a widget to a member variable in gig::DimensionRegion
199        template<typename C, typename T>
200        void connect(C& widget, T gig::DimensionRegion::* member) {
201            connect<C, T>(widget,
202                          sigc::bind(sigc::mem_fun(&DimRegionEdit::set_member<T>), member));
203        }
204    
205        // connect a widget to a setter function in gig::DimensionRegion
206        template<typename C, typename T>
207        void connect(C& widget,
208                     void (gig::DimensionRegion::*setter)(T)) {
209            connect<C, T>(widget,
210                          sigc::hide<0>(sigc::mem_fun(setter)));
211        }
212    
213        // helper function for the connect functions above
214        template<typename C, typename T>
215        void connect(C& widget,
216                     sigc::slot<void, DimRegionEdit*, gig::DimensionRegion*, T> setter) {
217            widget.signal_value_changed().connect(
218                sigc::compose(sigc::bind(sigc::mem_fun(*this, &DimRegionEdit::set_many<T>), setter),
219                              sigc::mem_fun(widget, &C::get_value)));
220        }
221    
222        // loop through all dimregions being edited ant set a value in
223        // each of them
224        template<typename T>
225        void set_many(T value,
226                      sigc::slot<void, DimRegionEdit*, gig::DimensionRegion*, T> setter) {
227            if (update_model == 0) {
228                for (std::set<gig::DimensionRegion*>::iterator i = dimregs.begin() ;
229                     i != dimregs.end() ; i++)
230                {
231                    dimreg_changed_signal(*i);
232                    setter(this, *i, value);
233                }
234            }
235        }
236    
237        // set a value of a member variable in the given dimregion
238        template<typename T>
239        void set_member(gig::DimensionRegion* d, T value,
240                        T gig::DimensionRegion::* member) {
241            d->*member = value;
242        }
243    
244        // setters for specific dimregion parameters
245    
246        void set_UnityNote(gig::DimensionRegion* d, uint8_t value);
247        void set_FineTune(gig::DimensionRegion* d, int16_t value);
248        void set_Crossfade_in_start(gig::DimensionRegion* d, uint8_t value);
249        void set_Crossfade_in_end(gig::DimensionRegion* d, uint8_t value);
250        void set_Crossfade_out_start(gig::DimensionRegion* d, uint8_t value);
251        void set_Crossfade_out_end(gig::DimensionRegion* d, uint8_t value);
252        void set_Gain(gig::DimensionRegion* d, int32_t value);
253        void set_LoopEnabled(gig::DimensionRegion* d, bool value);
254        void set_LoopType(gig::DimensionRegion* d, uint32_t value);
255        void set_LoopStart(gig::DimensionRegion* d, uint32_t value);
256        void set_LoopLength(gig::DimensionRegion* d, uint32_t value);
257        void set_LoopInfinite(gig::DimensionRegion* d, bool value);
258        void set_LoopPlayCount(gig::DimensionRegion* d, uint32_t value);
259  };  };
260    
261  #endif  #endif

Legend:
Removed from v.1322  
changed lines
  Added in v.2151

  ViewVC Help
Powered by ViewVC