r582: no message
[ctsim.git] / src / backgroundmgr.h
1 /*****************************************************************************
2 ** FILE IDENTIFICATION
3 **
4 **   Name:          backgroundmgr.h
5 **   Purpose:       Header file for background manager
6 **   Programmer:    Kevin Rosenberg
7 **   Date Started:  February 2001
8 **
9 **  This is part of the CTSim program
10 **  Copyright (C) 1983-2001 Kevin Rosenberg
11 **
12 **  $Id: backgroundmgr.h,v 1.7 2001/02/25 10:52:55 kevin Exp $
13 **
14 **  This program is free software; you can redistribute it and/or modify
15 **  it under the terms of the GNU General Public License (version 2) as
16 **  published by the Free Software Foundation.
17 **
18 **  This program is distributed in the hope that it will be useful,
19 **  but WITHOUT ANY WARRANTY; without even the implied warranty of
20 **  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 **  GNU General Public License for more details.
22 **
23 **  You should have received a copy of the GNU General Public License
24 **  along with this program; if not, write to the Free Software
25 **  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
26 ******************************************************************************/
27
28 #ifndef _BACKGROUND_MGR_H
29
30
31 #include "wx/wxprec.h"
32
33 #ifndef WX_PRECOMP
34 #include "wx/wx.h"
35 #endif
36 #include "wx/minifram.h"
37 #include "wx/gauge.h"
38
39 #include "ct.h"
40 #include "ctsim.h"
41 #include "docs.h"
42 #include "views.h"
43 #include "threadrecon.h"
44
45 #include <vector>
46
47 #if defined(HAVE_CONFIG_H)
48 #include "config.h"
49 #endif
50
51 class BackgroundManagerCanvas;
52
53 #if CTSIM_MDI
54 //class BackgroundManager : public wxMDIChildFrame
55 #endif
56 class BackgroundManager : public wxMiniFrame
57 {
58 private:
59   DECLARE_DYNAMIC_CLASS(BackgroundManager)
60
61   wxCriticalSection m_criticalSection;
62   BackgroundManagerCanvas* m_pCanvas;
63   int m_iNumTasks;
64
65   typedef std::vector<BackgroundSupervisor*> TaskContainer;
66   typedef std::vector<wxGauge*>  GaugeContainer;
67   typedef std::vector<std::string*> StringContainer;
68   typedef std::vector<int> PositionContainer;
69   typedef std::vector<wxStaticText*>  LabelContainer;
70   typedef std::vector<wxButton*> ButtonContainer;
71   TaskContainer m_vecpBackgroundTasks;
72   GaugeContainer m_vecpGauges;
73   StringContainer m_vecpNames;
74   PositionContainer m_vecpPositions;
75   LabelContainer m_vecpLabels;
76   ButtonContainer m_vecpCancelButtons;
77   wxSize m_sizeGauge;
78   wxSize m_sizeLabel;
79   wxSize m_sizeCell;
80   wxSize m_sizeBorder;
81   wxSize m_sizeCellSpacing;
82   wxSize m_sizeButton;
83
84   void resizeWindow();
85   wxGauge* lookupGauge(BackgroundSupervisor* pTask);
86
87 public:
88   BackgroundManager ();
89
90   TaskContainer& getTasks() { return m_vecpBackgroundTasks;}
91   GaugeContainer& getGauges() { return m_vecpGauges;}
92   StringContainer& getNames() { return m_vecpNames;}
93   PositionContainer& getPositions() { return m_vecpPositions;}
94   LabelContainer& getLabels() { return m_vecpLabels;}
95   ButtonContainer& getCancelButtons() { return m_vecpCancelButtons;}
96
97   void OnAddTask (wxCommandEvent& event);
98   void OnRemoveTask (wxCommandEvent& event);
99   void OnUnitTick (wxCommandEvent& event);
100   void OnCloseWindow(wxCloseEvent& event);
101   void OnCancelButton(wxCommandEvent& event);
102
103   DECLARE_EVENT_TABLE()
104 };
105
106
107 class BackgroundManagerCanvas : public wxPanel {
108 private:
109   DECLARE_DYNAMIC_CLASS(BackgroundManagerCanvas)
110   BackgroundManager* m_pBackgroundManager;
111
112 public:
113   BackgroundManagerCanvas (BackgroundManager* pBkgdMgr = NULL);
114 #if 0
115   void OnPaint (wxPaintEvent& event);
116 #endif
117   DECLARE_EVENT_TABLE()
118 };
119
120
121 #endif // _BACKGROUNDMGR_H
122