/[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 1533 by persson, Sat Dec 1 10:21:07 2007 UTC
# Line 28  Line 28 
28  #include <gtkmm/table.h>  #include <gtkmm/table.h>
29  #include <gtkmm/tooltips.h>  #include <gtkmm/tooltips.h>
30    
31    #include <set>
32    
33  #include "paramedit.h"  #include "paramedit.h"
34    
35  class DimRegionEdit : public Gtk::Notebook  class DimRegionEdit : public Gtk::Notebook
# Line 38  public: Line 40  public:
40      void set_dim_region(gig::DimensionRegion* d);      void set_dim_region(gig::DimensionRegion* d);
41      bool set_sample(gig::Sample* sample);      bool set_sample(gig::Sample* sample);
42      Gtk::Entry* wSample;      Gtk::Entry* wSample;
43      sigc::signal<void, gig::DimensionRegion*> signal_dimreg_to_be_changed();      sigc::signal<void, gig::DimensionRegion*>& signal_dimreg_to_be_changed();
44      sigc::signal<void, gig::DimensionRegion*> signal_dimreg_changed();      sigc::signal<void, gig::DimensionRegion*>& signal_dimreg_changed();
45      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();
46    
47        std::set<gig::DimensionRegion*> dimregs;
48    
49  protected:  protected:
50      sigc::signal<void, gig::DimensionRegion*> dimreg_to_be_changed_signal;      sigc::signal<void, gig::DimensionRegion*> dimreg_to_be_changed_signal;
# Line 173  protected: Line 177  protected:
177      void crossfade2_changed();      void crossfade2_changed();
178      void crossfade3_changed();      void crossfade3_changed();
179      void crossfade4_changed();      void crossfade4_changed();
180      void loop_enabled_toggled();      void update_loop_elements();
181        void loop_start_changed();
182        void loop_length_changed();
183      void loop_infinite_toggled();      void loop_infinite_toggled();
184    
185      void updateLoopElements();      int update_model;
186    
187        // connect a widget to a setter function in DimRegionEdit
188        template<typename C, typename T>
189        void connect(C& widget,
190                     void (DimRegionEdit::*setter)(gig::DimensionRegion*, T)) {
191            connect<C, T>(widget,
192                          sigc::mem_fun(setter));
193        }
194    
195        // connect a widget to a member variable in gig::DimensionRegion
196        template<typename C, typename T>
197        void connect(C& widget, T gig::DimensionRegion::* member) {
198            connect<C, T>(widget,
199                          sigc::bind(sigc::mem_fun(&DimRegionEdit::set_member<T>), member));
200        }
201    
202        // connect a widget to a setter function in gig::DimensionRegion
203        template<typename C, typename T>
204        void connect(C& widget,
205                     void (gig::DimensionRegion::*setter)(T)) {
206            connect<C, T>(widget,
207                          sigc::hide<0>(sigc::mem_fun(setter)));
208        }
209    
210        // helper function for the connect functions above
211        template<typename C, typename T>
212        void connect(C& widget,
213                     sigc::slot<void, DimRegionEdit*, gig::DimensionRegion*, T> setter) {
214            widget.signal_value_changed().connect(
215                sigc::compose(sigc::bind(sigc::mem_fun(*this, &DimRegionEdit::set_many<T>), setter),
216                              sigc::mem_fun(widget, &C::get_value)));
217        }
218    
219        // loop through all dimregions being edited ant set a value in
220        // each of them
221        template<typename T>
222        void set_many(T value,
223                      sigc::slot<void, DimRegionEdit*, gig::DimensionRegion*, T> setter) {
224            if (update_model == 0) {
225                for (std::set<gig::DimensionRegion*>::iterator i = dimregs.begin() ;
226                     i != dimregs.end() ; i++)
227                {
228                    dimreg_changed_signal(*i);
229                    setter(this, *i, value);
230                }
231            }
232        }
233    
234        // set a value of a member variable in the given dimregion
235        template<typename T>
236        void set_member(gig::DimensionRegion* d, T value,
237                        T gig::DimensionRegion::* member) {
238            d->*member = value;
239        }
240    
241        // setters for specific dimregion parameters
242    
243        void set_UnityNote(gig::DimensionRegion* d, uint8_t value);
244        void set_FineTune(gig::DimensionRegion* d, int16_t value);
245        void set_Crossfade_in_start(gig::DimensionRegion* d, uint8_t value);
246        void set_Crossfade_in_end(gig::DimensionRegion* d, uint8_t value);
247        void set_Crossfade_out_start(gig::DimensionRegion* d, uint8_t value);
248        void set_Crossfade_out_end(gig::DimensionRegion* d, uint8_t value);
249        void set_Gain(gig::DimensionRegion* d, int32_t value);
250        void set_LoopEnabled(gig::DimensionRegion* d, bool value);
251        void set_LoopType(gig::DimensionRegion* d, uint32_t value);
252        void set_LoopStart(gig::DimensionRegion* d, uint32_t value);
253        void set_LoopLength(gig::DimensionRegion* d, uint32_t value);
254        void set_LoopInfinite(gig::DimensionRegion* d, bool value);
255        void set_LoopPlayCount(gig::DimensionRegion* d, uint32_t value);
256  };  };
257    
258  #endif  #endif

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

  ViewVC Help
Powered by ViewVC