gui: more refactoring work.
[fail.git] / gui / gui.aidl
blobd52cb5df38c525b16e7a668fed8c6d9be30e28a2
1 // The gui module is a set of interfaces that provide a subset of GUI widgets
2 // that are implemented both in the ingame gui and the Qt gui, allowing to
3 // create gui components that can be used both in the editor and ingame
4 // (for instance to reuse properties edition panels as ingame debugging gui)
5 //
6 // An abstract factory allows users to use either transparently.
7 //
8 // The qt sub module contains wrappers for some qt controls that have no
9 // equivalent in the ingame gui so they can be used from lua.
11 // The game sub module contains, in addition to the ingame gui implementation, 
12 // additional widgets that have no equivalent in the qt gui.
13 // It's also possible to create game gui widgets without going through
14 // the abstract factory to use some more specific features that have
15 // no equivalent in the qt wrappers (for instance, accessors to obtain the
16 // scenegraph objects generated by the game gui widgets)
18 // Both implementations will be available from within the tools and be able to be used
19 // at the same time (for instance, to display the actual ingame gui when playing directly in the
20 // 3d view)
21 // Only the game implementation will be available from within the game application.
22 namespace awful { namespace gui
24         [ abstract=true ]
25         class Factory_i
26         {
27                 virtual Pointer< Window_i >             newWindow( Pointer< Container_i > pParent );
28                 virtual Pointer< HGroup_i >             newHGroup( Pointer< Container_i > pParent );
29                 virtual Pointer< VGroup_i >             newVGroup( Pointer< Container_i > pParent );
30                 virtual Pointer< Button_i >             newButton( Pointer< Container_i > pParent, string Label_ );
31                 virtual Pointer< Draggable_i >  newDraggable( Pointer< Container_i > pParent );
32         };
33         
34         class Widget_i
35         {
36         };
37         
38         class Container_i : Widget_i
39         {
40         };
41         
42         class Window_i : Container_i
43         {
44         };
45         
46         class HGroup_i : Container_i
47         {
48         };
49         
50         class VGroup_i : Container_i
51         {
52         };
53         
54         class Button_i : Widget_i
55         {
56                 Signal<> Depressed;
57                 string Label;
58         };
59         
60         class Draggable_i : Widget_i
61         {
62         };