1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
/* This file is part of the KDE project
Copyright (C) 2002 Matthias Kretz <kretz@kde.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
// $Id$
#include "artsmodulescommon.h"
#include <artsgui.h>
#include <debug.h>
namespace Arts {
class EffectRackSlot_impl : virtual public EffectRackSlot_skel
{
private:
HBox _hbox;
VBox _buttonbox; // Buttons
Button _removeButton;
Button _masterButton;
HBox _frame;
Widget _effect;
Frame _spacer;
EffectRackItemGui _effectrackgui; //XXX: need a WeakReference here?
EffectRackSlot self() { return EffectRackSlot::_from_base( _copy() ); }
public:
EffectRackSlot_impl()
{
}
void constructor( Widget parent, Widget effect, EffectRackItemGui effectrackgui )
{
_effectrackgui = effectrackgui;
_hbox.parent( parent );
_hbox.margin( 0 );
_hbox.spacing( 0 );
_hbox.framestyle( Sunken | Panel );
_hbox.linewidth( 1 );
_hbox.show();
_buttonbox.parent( _hbox );
_buttonbox.margin( 0 );
_buttonbox.spacing( 0 );
_buttonbox.show();
_removeButton.parent( _buttonbox );
_removeButton.text( "x" );
_removeButton.hSizePolicy( spFixed );
_removeButton.width( 20 );
_removeButton.height( 20 );
connect( _removeButton, "clicked_changed", self(), "removeslot" );
_removeButton.show();
_masterButton.parent( _buttonbox );
_masterButton.text( "MM" );
_masterButton.toggle( true );
_masterButton.hSizePolicy( spFixed );
_masterButton.width( 20 );
_masterButton.height( 20 );
connect( _masterButton, "pressed_changed", self(), "tomaster" );
_masterButton.show();
_frame.parent( _hbox );
_frame.margin( 5 );
_frame.spacing( 0 );
_frame.framestyle( Raised | Panel );
_frame.linewidth( 2 );
_frame.midlinewidth( 2 );
_frame.hSizePolicy( spExpanding );
_frame.show();
_effect = effect;
_effect.parent( _frame );
_effect.show();
_spacer.parent( _frame );
_spacer.hSizePolicy( spExpanding );
_spacer.show();
}
bool removeslot() { return false; } //unused
void removeslot( bool clicked )
{
if( ! _removeButton.clicked() || ! clicked )
return;
// I need to be removed...
_effectrackgui.removeSlot( self() );
// I should be deleted by now
}
bool tomaster() { return false; } //unused
void tomaster( bool toggled )
{
_effectrackgui.routeToMaster( self(), toggled );
}
};
REGISTER_IMPLEMENTATION( EffectRackSlot_impl );
}
|