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

Diff of /gigedit/trunk/src/gigedit/regionchooser.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 20  Line 20 
20  #ifndef GIGEDIT_REGIONCHOOSER_H  #ifndef GIGEDIT_REGIONCHOOSER_H
21  #define GIGEDIT_REGIONCHOOSER_H  #define GIGEDIT_REGIONCHOOSER_H
22    
23    #include <vector>
24    
25  #include <gtkmm/drawingarea.h>  #include <gtkmm/drawingarea.h>
 #include <gdkmm/colormap.h>  
26  #include <gtkmm/uimanager.h>  #include <gtkmm/uimanager.h>
27  #include <gdkmm/window.h>  #include <gdkmm/window.h>
28  #include <gtkmm/menu.h>  #include <gtkmm/menu.h>
29    
30  #include "dimensionmanager.h"  #include "dimensionmanager.h"
31    #include "paramedit.h"
32    
33  #include <gig.h>  #include <gig.h>
34    
35    enum virt_keyboard_mode_t {
36        VIRT_KEYBOARD_MODE_NORMAL,
37        VIRT_KEYBOARD_MODE_CHORD
38    };
39    
40    class SortedRegions {
41    private:
42        std::vector<gig::Region*> regions;
43        std::vector<gig::Region*>::iterator region_iterator;
44    
45    public:
46        void update(gig::Instrument* instrument);
47        gig::Region* first();
48        gig::Region* next();
49        bool operator() (gig::Region* x, gig::Region* y) {
50            return x->KeyRange.low < y->KeyRange.low;
51        }
52    };
53    
54  class RegionChooser : public Gtk::DrawingArea  class RegionChooser : public Gtk::DrawingArea
55  {  {
56  public:  public:
# Line 38  public: Line 59  public:
59    
60      void set_instrument(gig::Instrument* instrument);      void set_instrument(gig::Instrument* instrument);
61    
62      sigc::signal<void> signal_region_selected();      sigc::signal<void>& signal_region_selected();
63      sigc::signal<void> signal_instrument_changed();      sigc::signal<void>& signal_instrument_changed();
64    
65      sigc::signal<void, gig::Instrument*> signal_instrument_struct_to_be_changed();      sigc::signal<void, gig::Instrument*>& signal_instrument_struct_to_be_changed();
66      sigc::signal<void, gig::Instrument*> signal_instrument_struct_changed();      sigc::signal<void, gig::Instrument*>& signal_instrument_struct_changed();
67    
68      sigc::signal<void, gig::Region*> signal_region_to_be_changed();      sigc::signal<void, gig::Region*>& signal_region_to_be_changed();
69      sigc::signal<void, gig::Region*> signal_region_changed_signal();      sigc::signal<void, gig::Region*>& signal_region_changed_signal();
70    
71        sigc::signal<void, int/*key*/, int/*velocity*/>& signal_keyboard_key_hit();
72        sigc::signal<void, int/*key*/, int/*velocity*/>& signal_keyboard_key_released();
73    
74      gig::Region* get_region() { return region; }      gig::Region* get_region() { return region; }
75    
76        void on_note_on_event(int key, int velocity);
77        void on_note_off_event(int key, int velocity);
78    
79        Gtk::HBox m_VirtKeybPropsBox;
80    
81  protected:  protected:
     virtual void on_realize();  
82      virtual bool on_expose_event(GdkEventExpose* e);      virtual bool on_expose_event(GdkEventExpose* e);
83      virtual void on_size_request(GtkRequisition* requisition);      virtual void on_size_request(GtkRequisition* requisition);
84      virtual bool on_button_press_event(GdkEventButton* event);      virtual bool on_button_press_event(GdkEventButton* event);
# Line 59  protected: Line 87  protected:
87    
88      gig::Region* get_region(int key);      gig::Region* get_region(int key);
89    
90      Glib::RefPtr<Gdk::GC> gc;      Gdk::Color activeKeyColor, red, grey1, white, black;
     Gdk::Color blue, red, grey1;  
   
     void draw_region(int from, int to, const Gdk::Color& color);  
91    
92      sigc::signal<void> region_selected;      sigc::signal<void> region_selected;
93      sigc::signal<void> instrument_changed;      sigc::signal<void> instrument_changed;
# Line 73  protected: Line 98  protected:
98      sigc::signal<void, gig::Region*> region_to_be_changed_signal;      sigc::signal<void, gig::Region*> region_to_be_changed_signal;
99      sigc::signal<void, gig::Region*> region_changed_signal;      sigc::signal<void, gig::Region*> region_changed_signal;
100    
101        sigc::signal<void, int/*key*/, int/*velocity*/> keyboard_key_hit_signal;
102        sigc::signal<void, int/*key*/, int/*velocity*/> keyboard_key_released_signal;
103    
104      gig::Instrument* instrument;      gig::Instrument* instrument;
105      gig::Region* region;      gig::Region* region;
106        SortedRegions regions;
107    
108        bool is_black_key(int key);
109        void draw_key(int key, const Gdk::Color& color);
110        void draw_digit(int key);
111      void motion_resize_region(int x, int y);      void motion_resize_region(int x, int y);
112      void motion_move_region(int x, int y);      void motion_move_region(int x, int y);
113    
# Line 107  protected: Line 139  protected:
139      bool is_in_resize_zone(double x, double y);      bool is_in_resize_zone(double x, double y);
140    
141      int h1;      int h1;
     int width;  
142    
143      Gtk::Menu* popup_menu_inside_region;      Gtk::Menu* popup_menu_inside_region;
144      Gtk::Menu* popup_menu_outside_region;      Gtk::Menu* popup_menu_outside_region;
# Line 121  protected: Line 152  protected:
152      Glib::RefPtr<Gtk::ActionGroup> actionGroup;      Glib::RefPtr<Gtk::ActionGroup> actionGroup;
153      Glib::RefPtr<Gtk::UIManager> uiManager;      Glib::RefPtr<Gtk::UIManager> uiManager;
154    
155        // properties of the virtaul keyboard
156        ChoiceEntry<virt_keyboard_mode_t> m_VirtKeybModeChoice;
157        Gtk::Label m_VirtKeybVelocityLabelDescr;
158        Gtk::Label m_VirtKeybVelocityLabel;
159        Gtk::Label m_VirtKeybOffVelocityLabelDescr;
160        Gtk::Label m_VirtKeybOffVelocityLabel;
161        int currentActiveKey;
162    
163      DimensionManager dimensionManager;      DimensionManager dimensionManager;
164  };  };
165    

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

  ViewVC Help
Powered by ViewVC