~s-cecilio/lenmus/v5.3

« back to all changes in this revision

Viewing changes to src/widgets/Button.h

  • Committer: cecilios
  • Date: 2012-09-07 17:42:21 UTC
  • Revision ID: svn-v4:2587a929-2f0e-0410-ae78-fe6f687d5efe:branches/TRY-5.0:721
initial commit with all changes for 5.1. See changelog

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//--------------------------------------------------------------------------------------
 
2
//    LenMus Phonascus: The teacher of music
 
3
//    Copyright (c) 2002-2010 LenMus project
 
4
//
 
5
//    This file is based on file awx/button.h from AWX 0.2 (Additional wxWindow Classes),
 
6
//        downloaded from http://www.iftools.com/awx.en.html
 
7
//
 
8
//    Author:                           Joachim Buermann
 
9
//    Copyright:                        (c) 2003,2004 Joachim Buermann
 
10
//        Original licence:             wxWindows
 
11
//        More info                             $Id: button.h,v 1.3 2004/08/30 10:20:19 jb Exp $
 
12
//
 
13
//
 
14
//    Modified by:
 
15
//        Cecilio Salmeron
 
16
//
 
17
//    This program is free software; you can redistribute it and/or modify it under the
 
18
//    terms of the GNU General Public License as published by the Free Software Foundation,
 
19
//    either version 3 of the License, or (at your option) any later version.
 
20
//
 
21
//    This program is distributed in the hope that it will be useful, but WITHOUT ANY
 
22
//    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 
23
//    PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 
24
//
 
25
//    You should have received a copy of the GNU General Public License along with this
 
26
//    program. If not, see <http://www.gnu.org/licenses/>.
 
27
//
 
28
//    For any comment, suggestion or feature request, please contact the manager of
 
29
//    the project at cecilios@users.sourceforge.net
 
30
//
 
31
//-------------------------------------------------------------------------------------
 
32
#ifndef __LM_BUTTON_H__
 
33
#define __LM_BUTTON_H__
 
34
 
 
35
//#include <wx/dcmemory.h>
 
36
#include <wx/wx.h>
 
37
 
 
38
enum lmEButtonBorder {
 
39
        lm_eBorderSunken,
 
40
        lm_eBorderFlat,
 
41
        lm_eBorderHigh,
 
42
        lm_eBorderOver,
 
43
};
 
44
 
 
45
class wxBitmap;
 
46
 
 
47
class lmBitmapButton : public wxWindow
 
48
{
 
49
 
 
50
DECLARE_DYNAMIC_CLASS(lmBitmapButton)
 
51
 
 
52
public:
 
53
        lmBitmapButton(wxWindow* parent, wxWindowID id, const wxBitmap& bitmap, 
 
54
                        const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize); 
 
55
    lmBitmapButton() {};
 
56
    virtual ~ lmBitmapButton();
 
57
 
 
58
    virtual void Disable();
 
59
    virtual void Enable();
 
60
    virtual bool Enable(bool enable) {
 
61
           if(enable) Enable();
 
62
           else Disable();
 
63
           return true;
 
64
    };
 
65
    virtual bool IsPressed() {return m_state == lm_eButtonDown;};
 
66
    bool IsEnabled() {return m_enabled;};
 
67
    virtual void OnPaint(wxPaintEvent &event);
 
68
    virtual void OnEraseBackground(wxEraseEvent &event);
 
69
    virtual void OnMouseEvent(wxMouseEvent& event);
 
70
    virtual void OnSizeEvent(wxSizeEvent& event);
 
71
    virtual bool Press();
 
72
    virtual bool Release();
 
73
    virtual void SetText(const wxChar* text);
 
74
        virtual void SetBorderDown(lmEButtonBorder nBorderType) { m_nBorderDown = nBorderType; }
 
75
        virtual void SetBorderOver(lmEButtonBorder nBorderType) { m_nBorderOver = nBorderType; }
 
76
 
 
77
        virtual void SetBitmapDown(const wxBitmap& bitmap);
 
78
        virtual void SetBitmapOver(const wxBitmap& bitmap);
 
79
 
 
80
    virtual void SetBitmapUp(wxString sBmpName, wxString sBg, wxSize size);
 
81
    virtual void SetBitmapDown(wxString sBmpName, wxString sBg, wxSize size);
 
82
    virtual void SetBitmapOver(wxString sBmpName, wxString sBg, wxSize size);
 
83
    virtual void SetBitmapDisabled(wxString sBmpName, wxString sBg, wxSize size);
 
84
 
 
85
 
 
86
protected:
 
87
    enum lmEButtonState
 
88
    {
 
89
           lm_eButtonUp = 0,
 
90
           lm_eButtonOver,
 
91
           lm_eButtonDown,
 
92
           lm_eButtonDis,
 
93
           lm_eButtonNew
 
94
    };
 
95
 
 
96
    wxBitmap CreateBitmap(wxString sBmpName, wxString sBg, wxSize size);
 
97
 
 
98
        void Create(const wxPoint& pos, const wxSize& size);
 
99
    void Redraw();
 
100
 
 
101
    wxString    m_sNameUp;
 
102
    wxString    m_sNameDis;
 
103
    wxSize      m_btSize;
 
104
    int             m_dx;
 
105
    int             m_dy;
 
106
 
 
107
    bool        m_enabled;
 
108
 
 
109
    lmEButtonState              m_state;
 
110
    lmEButtonState              m_laststate;
 
111
    wxBitmap*               m_bitmap;
 
112
 
 
113
    wxString    m_text;
 
114
    wxFont*             m_font;
 
115
        wxBitmap        m_bitmaps[4];
 
116
 
 
117
        lmEButtonBorder         m_nBorderDown;
 
118
        lmEButtonBorder         m_nBorderOver;
 
119
 
 
120
 
 
121
    DECLARE_EVENT_TABLE()
 
122
};
 
123
 
 
124
class lmCheckButton : public lmBitmapButton
 
125
{
 
126
public:
 
127
        lmCheckButton(wxWindow* parent, wxWindowID id, const wxBitmap& bitmap, 
 
128
                                  const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
 
129
 
 
130
        virtual void OnMouseEvent(wxMouseEvent& event);
 
131
    virtual bool Press();
 
132
    virtual bool Release();
 
133
 
 
134
protected:
 
135
    bool m_fButtonDown;
 
136
 
 
137
        
 
138
        DECLARE_EVENT_TABLE()
 
139
};
 
140
 
 
141
 
 
142
#endif          // __LM_BUTTON_H__