~s-cecilio/lenmus/v5.3

« back to all changes in this revision

Viewing changes to src/app/toolbox/ToolGroup.cpp

  • Committer: cecilios
  • Date: 2007-05-19 11:39:03 UTC
  • Revision ID: svn-v4:2587a929-2f0e-0410-ae78-fe6f687d5efe:trunk:236

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 program is free software; you can redistribute it and/or modify it under the
6
 
//    terms of the GNU General Public License as published by the Free Software Foundation,
7
 
//    either version 3 of the License, or (at your option) any later version.
8
 
//
9
 
//    This program is distributed in the hope that it will be useful, but WITHOUT ANY
10
 
//    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11
 
//    PARTICULAR PURPOSE.  See the GNU General Public License for more details.
12
 
//
13
 
//    You should have received a copy of the GNU General Public License along with this
14
 
//    program. If not, see <http://www.gnu.org/licenses/>.
15
 
 
16
 
//
17
 
//    For any comment, suggestion or feature request, please contact the manager of
18
 
//    the project at cecilios@users.sourceforge.net
19
 
//
20
 
//-------------------------------------------------------------------------------------
21
 
 
22
 
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
23
 
#pragma implementation "ToolGroup.h"
24
 
#endif
25
 
 
26
 
// For compilers that support precompilation, includes <wx/wx.h>.
27
 
#include <wx/wxprec.h>
28
 
 
29
 
#ifdef __BORLANDC__
30
 
#pragma hdrstop
31
 
#endif
32
 
 
33
 
#ifndef WX_PRECOMP
34
 
#include <wx/wx.h>
35
 
#endif
36
 
 
37
 
#include "ToolGroup.h"
38
 
#include "ToolPage.h"
39
 
#include "ColorScheme.h"
40
 
#include "ToolBoxEvents.h"
41
 
#include "../ArtProvider.h"        // to use ArtProvider for managing icons
42
 
#include "../../widgets/Button.h"
43
 
#include "../TheApp.h"              //to use GetMainFrame()
44
 
#include "../MainFrame.h"           //to use lmMainFrame
45
 
 
46
 
 
47
 
#define lmTOOLGROUP_SIZE wxSize(160, 90)
48
 
#define lmTOOLGROUP_STYLE wxCAPTION | wxRESIZE_BORDER
49
 
 
50
 
 
51
 
 
52
 
//-----------------------------------------------------------------------------------
53
 
// lmToolGroup implementation
54
 
//-----------------------------------------------------------------------------------
55
 
 
56
 
BEGIN_EVENT_TABLE(lmToolGroup, wxPanel)
57
 
    //EVT_MOTION(lmToolGroup::OnMouseMoved)
58
 
    EVT_LEFT_DOWN(lmToolGroup::OnMouseDown)
59
 
    EVT_LEFT_UP(lmToolGroup::OnMouseReleased)
60
 
    //EVT_RIGHT_DOWN(lmToolGroup::OnRightClick)
61
 
    EVT_LEAVE_WINDOW(lmToolGroup::OnMouseLeftWindow)
62
 
    //EVT_KEY_DOWN(lmToolGroup::OnKeyPressed)
63
 
    //EVT_KEY_UP(lmToolGroup::OnKeyReleased)
64
 
    //EVT_MOUSEWHEEL(lmToolGroup::OnMouseWheelMoved)
65
 
    EVT_PAINT(lmToolGroup::OnPaintEvent)
66
 
END_EVENT_TABLE()
67
 
 
68
 
lmToolGroup::lmToolGroup(wxPanel* pParent, lmEGroupType nGroupType, 
69
 
                         lmColorScheme* pColours, int nValidMouseModes)
70
 
        : wxPanel(pParent, wxID_ANY, wxDefaultPosition, lmTOOLGROUP_SIZE)
71
 
    , m_pParent(pParent)
72
 
    , m_nGroupType(nGroupType)
73
 
    , m_pColours(pColours)
74
 
    , m_nValidMouseModes(nValidMouseModes)
75
 
    , m_fMousePressedDown(false)
76
 
    , m_fSelected(true)
77
 
    , m_fAlwaysDisabled(false)
78
 
{
79
 
    //set font to draw group labels
80
 
    SetFont(wxFont(8, wxSWISS, wxNORMAL, wxBOLD, false, wxT("Tahoma")));
81
 
 
82
 
    //Any ToolGroup can be used as a control in properties dialogs. In them, 
83
 
    //the owner is not a lmToolPage and pointer pColors is NULL
84
 
    m_fGuiControl = (m_pParent->IsKindOf(CLASSINFO(lmToolPage)) ? false : true);
85
 
 
86
 
    if(pColours)
87
 
    {
88
 
        SetForegroundColour(pColours->PrettyDark());
89
 
            SetBackgroundColour(pColours->Normal());        //Bright()); 
90
 
    }
91
 
    else
92
 
    {
93
 
        //the group must be used as GUI control
94
 
        wxASSERT(m_fGuiControl);
95
 
    }
96
 
}
97
 
 
98
 
lmToolGroup::~lmToolGroup()
99
 
{
100
 
}
101
 
 
102
 
wxBoxSizer* lmToolGroup::CreateGroupSizer(wxBoxSizer* pMainSizer)
103
 
{    
104
 
        //create common controls for a lmToolGroup and returns the sizer in which
105
 
    //derived class must add its controls
106
 
 
107
 
        m_pCtrolsSizer = new wxBoxSizer( wxVERTICAL );
108
 
        
109
 
    //spacer for group title
110
 
    if (m_sTitle != _T(""))
111
 
            m_pCtrolsSizer->Add( 0, 0, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 10 );
112
 
        
113
 
        m_pGroupSizer = new wxBoxSizer( wxVERTICAL );
114
 
        m_pCtrolsSizer->Add( m_pGroupSizer, 1, wxEXPAND|wxALL, 5 );
115
 
        
116
 
        this->SetSizer( m_pCtrolsSizer );
117
 
        this->Layout();
118
 
        m_pCtrolsSizer->Fit( this );
119
 
        pMainSizer->Add( this, 0, wxLEFT|wxRIGHT|wxTOP|wxEXPAND, 2 );
120
 
 
121
 
    return m_pGroupSizer;
122
 
}
123
 
 
124
 
void lmToolGroup::SetSelected(bool fSelected)
125
 
{
126
 
    //set selected/deselected state for tool-selector groups
127
 
    //If group was disabled it is first enabled.
128
 
 
129
 
    wxASSERT(IsToolSelectorGroup());
130
 
 
131
 
    //check if anything to do
132
 
    if (m_fSelected == fSelected)
133
 
        return;
134
 
 
135
 
    //change selected/deselected state
136
 
    m_fSelected = fSelected;
137
 
 
138
 
    //if group is disabled, enable it
139
 
    if (!this->IsEnabled())
140
 
        EnableGroup(true);
141
 
    else
142
 
        DoPaintNow();
143
 
}
144
 
 
145
 
int lmToolGroup::GetGroupWitdh()
146
 
{       
147
 
        int width, height;
148
 
        m_pParent->GetClientSize(&width, &height);
149
 
        return width;
150
 
}
151
 
 
152
 
void lmToolGroup::EnableGroup(bool fEnable)
153
 
{
154
 
    //enable/disable the group and repaints group to display new state
155
 
    //if enable, for tool-selector groups the previous state (selected/deselected)
156
 
    //is restored
157
 
 
158
 
    //force disabled if gris marked as 'always disabled'
159
 
    fEnable &= !m_fAlwaysDisabled;
160
 
 
161
 
    //check if anything to do
162
 
    if (this->IsEnabled() == fEnable)
163
 
        return;
164
 
 
165
 
    //for tool-selector groups save/restore state before disabling/enabling the group
166
 
    if (IsToolSelectorGroup())
167
 
    {
168
 
        if (fEnable)
169
 
            m_fSelected = m_fSaveSelected;
170
 
        else
171
 
            m_fSaveSelected = m_fSelected;
172
 
    }
173
 
 
174
 
    Enable(fEnable);
175
 
    DoPaintNow();
176
 
}
177
 
 
178
 
void lmToolGroup::PostToolBoxEvent(lmEToolID nToolID, bool fSelected)
179
 
{
180
 
    //post tool box event to the active controller
181
 
    wxWindow* pWnd = GetMainFrame()->GetActiveController();
182
 
    if (pWnd)
183
 
    {
184
 
            lmToolBox* pToolBox = GetMainFrame()->GetActiveToolBox();
185
 
            wxASSERT(pToolBox);
186
 
        lmToolBoxToolSelectedEvent event(this->GetToolGroupID(), pToolBox->GetCurrentPageID(), nToolID,
187
 
                             fSelected);
188
 
        ::wxPostEvent( pWnd, event );
189
 
    }
190
 
}
191
 
 
192
 
void lmToolGroup::OnPaintEvent(wxPaintEvent & evt)
193
 
{
194
 
    //called by the system when the panel needs to be redrawn. You can also trigger
195
 
    //this call by calling Refresh()/Update().
196
 
 
197
 
    wxPaintDC dc(this);
198
 
    DoRender(dc);
199
 
}
200
 
 
201
 
void lmToolGroup::DoRender(wxDC& dc)
202
 
{
203
 
    //Here we do the actual rendering. It is a separate method so that it can work
204
 
    //no matter what type of DC is used (i.e. wxPaintDC or wxClientDC)
205
 
 
206
 
    //set colors
207
 
    //AWARE: ToolGroup is used as a control in properties dialogs. In them, 
208
 
    // the owner is not a lmToolPage and pointer pColors is NULL
209
 
 
210
 
    wxColour colorMaxHight = wxSystemSettings::GetColour( wxSYS_COLOUR_3DHIGHLIGHT);   //button highlight 
211
 
    wxColour colorHiLight = wxSystemSettings::GetColour( wxSYS_COLOUR_3DHILIGHT); 
212
 
    wxColour colorMoreLight = wxSystemSettings::GetColour( wxSYS_COLOUR_3DLIGHT );
213
 
    wxColour colorLight = wxSystemSettings::GetColour( wxSYS_COLOUR_3DFACE);    //button face
214
 
    wxColour colorLessLight = wxSystemSettings::GetColour( wxSYS_COLOUR_3DSHADOW);  //button shadow  
215
 
    wxColour colorDark = wxSystemSettings::GetColour( wxSYS_COLOUR_3DDKSHADOW );
216
 
 
217
 
    //background color
218
 
    wxColour colorBg = colorLight;
219
 
    if (m_pColours)
220
 
    {
221
 
        //if (m_fSelected)
222
 
        //    colorBg = m_pColours->GetColour(lmCOLOUR_GROUP_BACKGROUND_SELECTED);
223
 
        //else
224
 
            colorBg = m_pColours->GetColour(lmCOLOUR_GROUP_BACKGROUND_NORMAL);
225
 
    }
226
 
 
227
 
    //border color
228
 
    wxColour colorBorder = colorLessLight;
229
 
    if (m_pColours)
230
 
        colorBorder = m_pColours->GetColour(lmCOLOUR_GROUP_BORDER_ACTIVE);
231
 
 
232
 
    //title color
233
 
    wxColour colorTitle = colorLessLight;
234
 
    if (m_pColours)
235
 
    {
236
 
        if (IsEnabled())
237
 
            colorTitle = m_pColours->GetColour(lmCOLOUR_GROUP_TITLE_ACTIVE);
238
 
        else
239
 
            colorTitle = m_pColours->GetColour(lmCOLOUR_GROUP_TITLE_INACTIVE);
240
 
    }
241
 
 
242
 
 
243
 
        //Do the painting
244
 
 
245
 
    //background
246
 
    wxRect rect;
247
 
    GetClientSize(&rect.width, &rect.height);
248
 
 
249
 
    wxRect rectBg = rect;
250
 
    rectBg.Deflate(1, 1);
251
 
#if 1
252
 
    dc.SetPen( wxPen(colorBg));
253
 
    dc.SetBrush( wxBrush(colorBg));
254
 
    dc.DrawRectangle(rectBg);
255
 
    //title background
256
 
    if (m_sTitle != _T(""))
257
 
    {
258
 
        rectBg.SetHeight(13);
259
 
        //if (m_fSelected)
260
 
        //{
261
 
        //    wxColour cTop = wxColour(215,224,224);  //lmColorScheme::LightenColour(colorBg, 0.9f);
262
 
        //    wxColour cBottom = wxColour(182,202,202);  //lmColorScheme::DarkenColour(cTop, 0.2f);
263
 
        //    dc.GradientFillLinear(rectBg, cTop, cBottom, wxSOUTH );
264
 
        //}
265
 
        //else
266
 
        {
267
 
            wxColour cTop = lmColorScheme::LightenColour(colorBg, 0.6f);
268
 
            wxColour cBottom = colorBg; //lmColorScheme::DarkenColour(colorBg, 0.15f);
269
 
            dc.GradientFillLinear(rectBg, cTop, cBottom, wxSOUTH );
270
 
        }
271
 
    }
272
 
#else
273
 
    dc.GradientFillLinear(rectBg, colorMoreLight, colorLight, wxSOUTH );
274
 
#endif
275
 
 
276
 
    //group border
277
 
    dc.SetPen(colorBorder);
278
 
        //left line
279
 
    dc.DrawLine(rect.GetLeft(), rect.GetTop()+2,
280
 
                rect.GetLeft(), rect.GetBottom()-2);
281
 
        //top line
282
 
    dc.DrawLine(rect.GetLeft()+2, rect.GetTop(),
283
 
                rect.GetRight()-2, rect.GetTop());
284
 
        //right line
285
 
    dc.DrawLine(rect.GetRight()-1, rect.GetTop()+2,
286
 
                rect.GetRight()-1, rect.GetBottom()-2);
287
 
 
288
 
        //bottom line
289
 
    dc.DrawLine(rect.GetLeft()+2, rect.GetBottom()-1,
290
 
                rect.GetRight()-2, rect.GetBottom()-1);
291
 
 
292
 
        //top left corner
293
 
    dc.DrawPoint(rect.GetLeft()+1, rect.GetTop()+1);
294
 
    dc.DrawPoint(rect.GetLeft()+1, rect.GetTop()+2);
295
 
    dc.DrawPoint(rect.GetLeft()+2, rect.GetTop()+1);
296
 
    
297
 
        //top right corner
298
 
    dc.DrawPoint(rect.GetRight()-2, rect.GetTop()+1);
299
 
    dc.DrawPoint(rect.GetRight()-2, rect.GetTop()+2);
300
 
    dc.DrawPoint(rect.GetRight()-3, rect.GetTop()+1);
301
 
    
302
 
        //bottom right corner
303
 
    dc.DrawPoint(rect.GetRight()-2, rect.GetBottom()-2);
304
 
    dc.DrawPoint(rect.GetRight()-2, rect.GetBottom()-3);
305
 
    dc.DrawPoint(rect.GetRight()-3, rect.GetBottom()-2);
306
 
    
307
 
        //bottom left corner
308
 
    dc.DrawPoint(rect.GetLeft()+1, rect.GetBottom()-2);
309
 
    dc.DrawPoint(rect.GetLeft()+1, rect.GetBottom()-3);
310
 
    dc.DrawPoint(rect.GetLeft()+2, rect.GetBottom()-2);
311
 
 
312
 
        //white carving
313
 
    dc.SetPen( lmColorScheme::LightenColour(colorBg, 0.9f) );
314
 
        //left line
315
 
    dc.DrawLine(rect.GetLeft()+1, rect.GetTop()+3,
316
 
                rect.GetLeft()+1, rect.GetBottom()-3);
317
 
        //top line
318
 
    dc.DrawLine(rect.GetLeft()+3, rect.GetTop()+1,
319
 
                rect.GetRight()-3, rect.GetTop()+1);
320
 
        //right line
321
 
    dc.DrawLine(rect.GetRight(), rect.GetTop()+2,
322
 
                rect.GetRight(), rect.GetBottom()-2);
323
 
 
324
 
        //bottom line
325
 
    dc.DrawLine(rect.GetLeft()+3, rect.GetBottom(),
326
 
                rect.GetRight()-2, rect.GetBottom());
327
 
 
328
 
    
329
 
    
330
 
    //group title
331
 
    if (m_sTitle != _T(""))
332
 
    {
333
 
        dc.SetFont( wxFont( 8, 74, 90, 90, false, wxT("Tahoma") ) );
334
 
        if (!this->IsEnabled())
335
 
        {
336
 
            dc.SetTextForeground(*wxWHITE);
337
 
            dc.DrawText( m_sTitle, 5, 2 );
338
 
        }
339
 
        dc.SetTextForeground(colorTitle);
340
 
        dc.DrawText( m_sTitle, 4, 1 );
341
 
    }
342
 
}
343
 
 
344
 
void lmToolGroup::DoPaintNow()
345
 
{
346
 
    //you can use a clientDC to paint on the panel
347
 
    //at any time. Using this generally does not free you from
348
 
    //catching paint events, since it is possible that e.g. the window
349
 
    //manager throws away your drawing when the window comes to the
350
 
    //background, and expects you will redraw it when the window comes
351
 
    //back (by sending a paint event).
352
 
 
353
 
    // depending on your system you may need to look at double-buffered dcs
354
 
    wxClientDC dc(this);
355
 
    DoRender(dc);
356
 
}
357
 
 
358
 
void lmToolGroup::OnMouseDown(wxMouseEvent& event)
359
 
{
360
 
    //m_fMousePressedDown = true;
361
 
    //DoPaintNow();
362
 
}
363
 
 
364
 
void lmToolGroup::OnMouseReleased(wxMouseEvent& event)
365
 
{
366
 
    //m_fMousePressedDown = false;
367
 
    //DoPaintNow();
368
 
    //
369
 
    ////wxMessageBox( _T("Click on group") );
370
 
    //select tool group by clicking on it
371
 
    if (!m_fGuiControl && IsToolSelectorGroup() && this->IsEnabled())
372
 
        ((lmToolPage*)m_pParent)->SelectGroup(this);
373
 
}
374
 
 
375
 
void lmToolGroup::OnMouseLeftWindow(wxMouseEvent& event)
376
 
{
377
 
    //if (m_fMousePressedDown)
378
 
    //{
379
 
    //    m_fMousePressedDown = false;
380
 
    //    DoPaintNow();
381
 
    //}
382
 
}
383
 
 
384
 
void lmToolGroup::EnableForMouseMode(int nMode)
385
 
{
386
 
    //Enable/disable this group, depending on its usability for specified mouse mode
387
 
 
388
 
    EnableGroup((m_nValidMouseModes & nMode) != 0);
389
 
}
390
 
 
391
 
 
392
 
 
393
 
//-----------------------------------------------------------------------------------
394
 
// lmToolButtonsGroup implementation
395
 
//  A group of buttons, only one of them selected. If fAllowNone=true then the group
396
 
//  can have no button selected
397
 
//-----------------------------------------------------------------------------------
398
 
 
399
 
lmToolButtonsGroup::lmToolButtonsGroup(wxPanel* pParent, lmEGroupType nGroupType,
400
 
                                       int nNumButtons, bool fAllowNone,
401
 
                                       wxBoxSizer* pMainSizer, int nFirstButtonEventID,
402
 
                                       lmEToolID nFirstButtonToolID,
403
 
                                       lmColorScheme* pColours,
404
 
                                       int nValidMouseModes)
405
 
        : lmToolGroup(pParent, nGroupType, pColours, nValidMouseModes)
406
 
        , m_nSelButton(-1)                  //none selected
407
 
    , m_nSelButtonSave(-1)
408
 
    , m_nFirstButtonEventID(nFirstButtonEventID)
409
 
    , m_nFirstButtonToolID((int)nFirstButtonToolID)
410
 
    , m_fAllowNone(fAllowNone)
411
 
    , m_nNumButtons(nNumButtons)
412
 
{
413
 
    m_pButton.resize(nNumButtons);
414
 
    ConnectButtonEvents();
415
 
}
416
 
 
417
 
lmToolButtonsGroup::~lmToolButtonsGroup()
418
 
{
419
 
}
420
 
 
421
 
void lmToolButtonsGroup::ConnectButtonEvents()
422
 
{
423
 
    //connect OnButton events
424
 
    Connect( m_nFirstButtonEventID, m_nFirstButtonEventID + m_nNumButtons - 1,
425
 
             wxEVT_COMMAND_BUTTON_CLICKED,
426
 
             (wxObjectEventFunction)& lmToolButtonsGroup::OnButton );
427
 
}
428
 
 
429
 
void lmToolButtonsGroup::SelectButton(int iB)
430
 
{
431
 
    // Set selected button as 'pressed' and all others as 'released'
432
 
 
433
 
        m_nSelButton = iB;
434
 
    if (m_nSelButtonSave == -1)
435
 
        m_nSelButtonSave = iB;
436
 
        for(int i=0; i < m_nNumButtons; i++)
437
 
        {
438
 
                if (i != iB)
439
 
                        m_pButton[i]->Release();
440
 
                else
441
 
        {
442
 
                        m_pButton[i]->Press();
443
 
        }
444
 
        }
445
 
 
446
 
    //return focus to active view
447
 
    GetMainFrame()->SetFocusOnActiveView();
448
 
}
449
 
 
450
 
void lmToolButtonsGroup::SetSelected(bool fSelected)
451
 
{
452
 
    //check if something to do
453
 
    if (fSelected == m_fSelected)
454
 
        return;
455
 
 
456
 
    //change status
457
 
    m_fSelected = fSelected;
458
 
 
459
 
    //if not allowed 'no button selected' hide/restore selected button
460
 
    if (fSelected && !m_fAllowNone && m_nSelButtonSave != -1)
461
 
        SelectButton(m_nSelButtonSave);
462
 
    else if (!fSelected && !m_fAllowNone && m_nSelButton != -1)
463
 
    {
464
 
        m_pButton[m_nSelButton]->Release();
465
 
        m_nSelButtonSave = m_nSelButton;
466
 
    }
467
 
}
468
 
 
469
 
void lmToolButtonsGroup::SelectNextButton()
470
 
{
471
 
    if (++m_nSelButton == m_nNumButtons)
472
 
        m_nSelButton = (m_fAllowNone ? -1 : 0);
473
 
 
474
 
    SelectButton(m_nSelButton);
475
 
}
476
 
 
477
 
void lmToolButtonsGroup::SelectPrevButton()
478
 
{
479
 
    if (m_fAllowNone)
480
 
    {
481
 
        if (m_nSelButton == -1)
482
 
            m_nSelButton = m_nNumButtons;
483
 
    }
484
 
    else
485
 
    {
486
 
        if (m_nSelButton == 0)
487
 
            m_nSelButton = m_nNumButtons;
488
 
    }
489
 
    --m_nSelButton;
490
 
 
491
 
    SelectButton(m_nSelButton);
492
 
}
493
 
 
494
 
void lmToolButtonsGroup::OnButton(wxCommandEvent& event)
495
 
{
496
 
    int iB = event.GetId() - GetFirstButtonEventID();
497
 
    if (IsNoneAllowed() && GetSelectedButton() == iB)
498
 
            SelectButton(-1);       //no button selected
499
 
    else
500
 
    {
501
 
            SelectButton(iB);
502
 
        m_nSelButtonSave = iB;
503
 
    }
504
 
    
505
 
    //inform owner page
506
 
    OnButtonSelected( m_nSelButton );
507
 
}
508
 
 
509
 
void lmToolButtonsGroup::OnButtonSelected(int nSelButton)
510
 
{
511
 
    //Notify owner page about the tool change, unless it is the MouseGroup, In this
512
 
    //case post a tool change event directly to the active controller
513
 
 
514
 
    //AWARE: ToolGroup can be used as a control in properties dialogs. In them, 
515
 
    // the owner is not a lmToolPage but a wxPanel. Events will not be posted
516
 
    // to wxPanels
517
 
 
518
 
    if ( m_pParent->IsKindOf(CLASSINFO(lmToolPage)) )
519
 
    {
520
 
        //notify owner page about the tool change
521
 
        ((lmToolPage*)m_pParent)->OnToolChanged(this->GetToolGroupID(),
522
 
                                                (lmEToolID)(nSelButton+m_nFirstButtonToolID));
523
 
    }
524
 
    else if (this->GetToolGroupID() == lmGRP_MouseMode)
525
 
    {
526
 
        //post tool box event to the active controller
527
 
        wxWindow* pWnd = GetMainFrame()->GetActiveController();
528
 
        if (pWnd)
529
 
        {
530
 
                lmToolBox* pToolBox = GetMainFrame()->GetActiveToolBox();
531
 
                wxASSERT(pToolBox);
532
 
            lmToolBoxToolSelectedEvent event(this->GetToolGroupID(), pToolBox->GetCurrentPageID(),
533
 
                                nSelButton, true);
534
 
            ::wxPostEvent( pWnd, event );
535
 
        }
536
 
    }
537
 
    else
538
 
    {
539
 
        //this ToolGroup is used as a control in properties dialogs. Default
540
 
        //behaviour is to do nothing
541
 
    }
542
 
}