summaryrefslogtreecommitdiffhomepage
path: root/StarsEx/FormWindow.h
blob: 23681ca9eead8d0f3161c52976d9e293b5d0c6fd (plain)
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
/*  Starshatter: The Open Source Project
    Copyright (c) 2021-2022, Starshatter: The Open Source Project Contributors
    Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors
    Copyright (c) 1997-2006, Destroyer Studios LLC.

    AUTHOR:       John DiCamillo


    OVERVIEW
    ========
    Form Window class (a window that manages controls)
*/

#ifndef FormWindow_h
#define FormWindow_h

#include "Types.h"
#include "ActiveWindow.h"
#include "FormDef.h"
#include "List.h"

// +--------------------------------------------------------------------+

class Button;
class ComboBox;
class EditBox;
class ImageBox;
class ListBox;
class RichTextBox;
class Slider;

// +--------------------------------------------------------------------+

class FormWindow : public ActiveWindow
{
public:
    FormWindow(Screen* s, int ax, int ay, int aw, int ah,
    DWORD aid=0, DWORD style=0, ActiveWindow* parent=0);
    virtual ~FormWindow();

    // operations:
    virtual void            Init();
    virtual void            Init(const FormDef& def);
    virtual void            Destroy();
    virtual ActiveWindow*   FindControl(DWORD id);
    virtual ActiveWindow*   FindControl(int x, int y);
    virtual void            RegisterControls()      { }

    virtual void            AdoptFormDef(const FormDef& def);
    virtual void            AddControl(ActiveWindow* ctrl);

    virtual ActiveWindow*   CreateLabel(      const char* text, int x, int y, int w, int h, DWORD id=0, DWORD pid=0, DWORD style=0);
    virtual Button*         CreateButton(     const char* text, int x, int y, int w, int h, DWORD id=0, DWORD pid=0);
    virtual ImageBox*       CreateImageBox(   const char* text, int x, int y, int w, int h, DWORD id=0, DWORD pid=0);
    virtual ListBox*        CreateListBox(    const char* text, int x, int y, int w, int h, DWORD id=0, DWORD pid=0);
    virtual ComboBox*       CreateComboBox(   const char* text, int x, int y, int w, int h, DWORD id=0, DWORD pid=0);
    virtual EditBox*        CreateEditBox(    const char* text, int x, int y, int w, int h, DWORD id=0, DWORD pid=0);
    virtual RichTextBox*    CreateRichTextBox(const char* text, int x, int y, int w, int h, DWORD id=0, DWORD pid=0, DWORD style=0);
    virtual Slider*         CreateSlider(     const char* text, int x, int y, int w, int h, DWORD id=0, DWORD pid=0, DWORD style=0);

    // property accessors:
    ListIter<ActiveWindow>  Controls() { return children; }

protected:
    virtual void            CreateDefLabel(CtrlDef& def);
    virtual void            CreateDefButton(CtrlDef& def);
    virtual void            CreateDefImage(CtrlDef& def);
    virtual void            CreateDefList(CtrlDef& def);
    virtual void            CreateDefCombo(CtrlDef& def);
    virtual void            CreateDefEdit(CtrlDef& def);
    virtual void            CreateDefSlider(CtrlDef& def);
    virtual void            CreateDefRichText(CtrlDef& def);
};

#endif  // FormWindow_h