/[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 1460 by persson, Sat Oct 27 12:28:33 2007 UTC revision 3068 by schoenebeck, Mon Jan 2 22:13:01 2017 UTC
# Line 1  Line 1 
1  /*                                                         -*- c++ -*-  /*                                                         -*- c++ -*-
2   * Copyright (C) 2006, 2007 Andreas Persson   * Copyright (C) 2006-2017 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 20  Line 20 
20  #ifndef GIGEDIT_DIMREGIONEDIT_H  #ifndef GIGEDIT_DIMREGIONEDIT_H
21  #define GIGEDIT_DIMREGIONEDIT_H  #define GIGEDIT_DIMREGIONEDIT_H
22    
23  #include <gig.h>  #ifdef LIBGIG_HEADER_FILE
24    # include LIBGIG_HEADER_FILE(gig.h)
25    #else
26    # include <gig.h>
27    #endif
28    
29    #include <cairomm/context.h>
30    #include <gtkmm/box.h>
31    #include <gtkmm/drawingarea.h>
32  #include <gtkmm/entry.h>  #include <gtkmm/entry.h>
33  #include <gtkmm/label.h>  #include <gtkmm/label.h>
34  #include <gtkmm/notebook.h>  #include <gtkmm/notebook.h>
35  #include <gtkmm/table.h>  #include <gtkmm/table.h>
 #include <gtkmm/tooltips.h>  
36    
37  #include <set>  #include <set>
38    
39  #include "paramedit.h"  #include "paramedit.h"
40    
41    class VelocityCurve : public Gtk::DrawingArea {
42    public:
43        VelocityCurve(double (gig::DimensionRegion::*getter)(uint8_t));
44        void set_dim_region(gig::DimensionRegion* d) { dimreg = d; }
45    
46    protected:
47    #if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION < 90) || GTKMM_MAJOR_VERSION < 2
48        bool on_expose_event(GdkEventExpose* e);
49    #else
50        bool on_draw(const Cairo::RefPtr<Cairo::Context>& cr);
51    #endif
52    
53    private:
54        double (gig::DimensionRegion::* const getter)(uint8_t);
55        gig::DimensionRegion* dimreg;
56    };
57    
58    class CrossfadeCurve : public Gtk::DrawingArea {
59    public:
60        CrossfadeCurve();
61        void set_dim_region(gig::DimensionRegion* d) { dimreg = d; }
62    
63    protected:
64    #if (GTKMM_MAJOR_VERSION == 2 && GTKMM_MINOR_VERSION < 90) || GTKMM_MAJOR_VERSION < 2
65        bool on_expose_event(GdkEventExpose* e);
66    #else
67        bool on_draw(const Cairo::RefPtr<Cairo::Context>& cr);
68    #endif
69    
70    private:
71        gig::DimensionRegion* dimreg;
72        void draw_one_curve(const Cairo::RefPtr<Cairo::Context>& cr,
73                            const gig::DimensionRegion* d,
74                            bool sensitive);
75    };
76    
77  class DimRegionEdit : public Gtk::Notebook  class DimRegionEdit : public Gtk::Notebook
78  {  {
79  public:  public:
80      DimRegionEdit();      DimRegionEdit();
81      virtual ~DimRegionEdit();      virtual ~DimRegionEdit();
82      void set_dim_region(gig::DimensionRegion* d);      void set_dim_region(gig::DimensionRegion* d);
83      bool set_sample(gig::Sample* sample);      bool set_sample(gig::Sample* sample, bool copy_sample_unity, bool copy_sample_tune, bool copy_sample_loop);
84        bool set_sample(gig::DimensionRegion* dimreg, gig::Sample* sample, bool copy_sample_unity, bool copy_sample_tune, bool copy_sample_loop);
85      Gtk::Entry* wSample;      Gtk::Entry* wSample;
86        Gtk::Button* buttonNullSampleReference;
87      sigc::signal<void, gig::DimensionRegion*>& signal_dimreg_to_be_changed();      sigc::signal<void, gig::DimensionRegion*>& signal_dimreg_to_be_changed();
88      sigc::signal<void, gig::DimensionRegion*>& signal_dimreg_changed();      sigc::signal<void, gig::DimensionRegion*>& signal_dimreg_changed();
89      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();
90        sigc::signal<void, gig::Sample*>& signal_select_sample();
91    
92        std::set<gig::DimensionRegion*> dimregs;
93    
94  protected:  protected:
95      sigc::signal<void, gig::DimensionRegion*> dimreg_to_be_changed_signal;      sigc::signal<void, gig::DimensionRegion*> dimreg_to_be_changed_signal;
96      sigc::signal<void, gig::DimensionRegion*> dimreg_changed_signal;      sigc::signal<void, gig::DimensionRegion*> dimreg_changed_signal;
97      sigc::signal<void, gig::Sample*/*old*/, gig::Sample*/*new*/> sample_ref_changed_signal;      sigc::signal<void, gig::Sample*/*old*/, gig::Sample*/*new*/> sample_ref_changed_signal;
98      sigc::signal<void> instrument_changed;      sigc::signal<void> instrument_changed;
99        sigc::signal<void, gig::Sample*> select_sample_signal;
100    
101      gig::DimensionRegion* dimregion;      gig::DimensionRegion* dimregion;
102    
103    #ifdef OLD_TOOLTIPS
104      Gtk::Tooltips tooltips;      Gtk::Tooltips tooltips;
105    #endif
106    
107      Gtk::Table* table[7];      Gtk::Table* table[7];
108    
109      Gtk::Label* lSample;      Gtk::Label* lSample;
110    
111        VelocityCurve velocity_curve;
112        VelocityCurve release_curve;
113        VelocityCurve cutoff_curve;
114        CrossfadeCurve crossfade_curve;
115    
116      NumEntryPermille eEG1PreAttack;      NumEntryPermille eEG1PreAttack;
117      NumEntryTemp<double> eEG1Attack;      NumEntryTemp<double> eEG1Attack;
118      NumEntryTemp<double> eEG1Decay1;      NumEntryTemp<double> eEG1Decay1;
# Line 137  protected: Line 192  protected:
192      BoolEntry eMSDecode;      BoolEntry eMSDecode;
193      NumEntryTemp<uint16_t> eSampleStartOffset;      NumEntryTemp<uint16_t> eSampleStartOffset;
194      NoteEntry eUnityNote;      NoteEntry eUnityNote;
195        ReadOnlyLabelWidget eSampleGroup;
196        ReadOnlyLabelWidget eSampleFormatInfo;
197        ReadOnlyLabelWidget eSampleID;
198        ReadOnlyLabelWidget eChecksum;
199      NumEntryTemp<int16_t> eFineTune;      NumEntryTemp<int16_t> eFineTune;
200      NumEntryGain eGain;      NumEntryGain eGain;
201      BoolEntryPlus6 eGainPlus6;      BoolEntryPlus6 eGainPlus6;
# Line 146  protected: Line 205  protected:
205      ChoiceEntry<uint32_t> eSampleLoopType;      ChoiceEntry<uint32_t> eSampleLoopType;
206      BoolEntry eSampleLoopInfinite;      BoolEntry eSampleLoopInfinite;
207      NumEntryTemp<uint32_t> eSampleLoopPlayCount;      NumEntryTemp<uint32_t> eSampleLoopPlayCount;
208        Gtk::Label* lEG2;
209        Gtk::Label* lLFO2;
210    
211        Gtk::Button buttonSelectSample;
212    
213      int rowno;      int rowno;
214      int pageno;      int pageno;
# Line 157  protected: Line 220  protected:
220      void addProp(LabelWidget& labelwidget);      void addProp(LabelWidget& labelwidget);
221      void addString(const char* labelText, Gtk::Label*& label,      void addString(const char* labelText, Gtk::Label*& label,
222                     Gtk::Entry*& widget);                     Gtk::Entry*& widget);
223      void addHeader(const char* text);      void addString(const char* labelText, Gtk::Label*& label,
224                       Gtk::Entry*& widget, Gtk::Button*& button);
225        Gtk::Label* addHeader(const char* text);
226        void addRightHandSide(Gtk::Widget& widget);
227      void nextPage();      void nextPage();
228    
229      void VCFEnabled_toggled();      void VCFEnabled_toggled();
# Line 179  protected: Line 245  protected:
245      void loop_start_changed();      void loop_start_changed();
246      void loop_length_changed();      void loop_length_changed();
247      void loop_infinite_toggled();      void loop_infinite_toggled();
248        void nullOutSampleReference();
     std::set<gig::DimensionRegion*> dimregs;  
249    
250      int update_model;      int update_model;
251    
# Line 216  protected: Line 281  protected:
281                            sigc::mem_fun(widget, &C::get_value)));                            sigc::mem_fun(widget, &C::get_value)));
282      }      }
283    
284      // loop through all dimregions being edited ant set a value in      // loop through all dimregions being edited and set a value in
285      // each of them      // each of them
286      template<typename T>      template<typename T>
287      void set_many(T value,      void set_many(T value,
288                    sigc::slot<void, DimRegionEdit*, gig::DimensionRegion*, T> setter) {                    sigc::slot<void, DimRegionEdit*, gig::DimensionRegion*, T> setter) {
289          if (update_model == 0) {          if (update_model == 0) {
290              for (std::set<gig::DimensionRegion*>::iterator i = dimregs.begin() ;              for (std::set<gig::DimensionRegion*>::iterator i = dimregs.begin() ;
291                   i != dimregs.end() ; i++)                   i != dimregs.end() ; ++i)
292              {              {
293                  dimreg_changed_signal(*i);                  dimreg_changed_signal(*i);
294                  setter(this, *i, value);                  setter(this, *i, value);
# Line 253  protected: Line 318  protected:
318      void set_LoopLength(gig::DimensionRegion* d, uint32_t value);      void set_LoopLength(gig::DimensionRegion* d, uint32_t value);
319      void set_LoopInfinite(gig::DimensionRegion* d, bool value);      void set_LoopInfinite(gig::DimensionRegion* d, bool value);
320      void set_LoopPlayCount(gig::DimensionRegion* d, uint32_t value);      void set_LoopPlayCount(gig::DimensionRegion* d, uint32_t value);
321    
322        void onButtonSelectSamplePressed();
323  };  };
324    
325  #endif  #endif

Legend:
Removed from v.1460  
changed lines
  Added in v.3068

  ViewVC Help
Powered by ViewVC