** This is part of the CTSim program
** Copyright (C) 1983-2001 Kevin Rosenberg
**
-** $Id: backgroundmgr.h,v 1.6 2001/02/25 07:36:26 kevin Exp $
+** $Id$
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License (version 2) as
#include "views.h"
#include "threadrecon.h"
-#include <vector>
+#include <list>
-#if defined(HAVE_CONFIG_H)
-#include "config.h"
-#endif
+#ifdef HAVE_WXTHREADS
class BackgroundManagerCanvas;
+class BackgroundManagerTask;
+
-#if CTSIM_MDI
-//class BackgroundManager : public wxMDIChildFrame
-//#else
class BackgroundManager : public wxMiniFrame
-#endif
{
private:
+
DECLARE_DYNAMIC_CLASS(BackgroundManager)
wxCriticalSection m_criticalSection;
BackgroundManagerCanvas* m_pCanvas;
int m_iNumTasks;
- typedef std::vector<BackgroundSupervisor*> TaskContainer;
- typedef std::vector<wxGauge*> GaugeContainer;
- typedef std::vector<std::string*> StringContainer;
- typedef std::vector<int> PositionContainer;
- typedef std::vector<wxStaticText*> LabelContainer;
- typedef std::vector<wxButton*> ButtonContainer;
- TaskContainer m_vecpBackgroundTasks;
- GaugeContainer m_vecpGauges;
- StringContainer m_vecpNames;
- PositionContainer m_vecpPositions;
- LabelContainer m_vecpLabels;
- ButtonContainer m_vecpCancelButtons;
+ typedef std::list<BackgroundManagerTask*> TaskContainer;
+ TaskContainer m_vecpTasks;
+
+ void resizeWindow();
+ BackgroundManagerTask* lookupTask (BackgroundSupervisor* pSupervisor);
+ BackgroundManagerTask* lookupTask (int iButtonID);
+
+ static int s_iNextButtonID;
+
wxSize m_sizeGauge;
wxSize m_sizeLabel;
wxSize m_sizeCell;
wxSize m_sizeCellSpacing;
wxSize m_sizeButton;
- void resizeWindow();
- wxGauge* lookupGauge(BackgroundSupervisor* pTask);
-
public:
BackgroundManager ();
-
- TaskContainer& getTasks() { return m_vecpBackgroundTasks;}
- GaugeContainer& getGauges() { return m_vecpGauges;}
- StringContainer& getNames() { return m_vecpNames;}
- PositionContainer& getPositions() { return m_vecpPositions;}
- LabelContainer& getLabels() { return m_vecpLabels;}
- ButtonContainer& getCancelButtons() { return m_vecpCancelButtons;}
+ ~BackgroundManager();
void OnAddTask (wxCommandEvent& event);
void OnRemoveTask (wxCommandEvent& event);
};
+class BackgroundSupervisor;
+class BackgroundManagerTask {
+private:
+ BackgroundSupervisor* m_pSupervisor;
+ const std::string m_strName;
+ const int m_iPosition;
+ wxGauge* m_pGauge;
+ wxStaticText* m_pLabel;
+ wxButton* m_pButton;
+ const int m_iButtonID;
+
+public:
+ BackgroundManagerTask (BackgroundSupervisor* pSupervisor, const char* const pszName, int iPos,
+ wxGauge* pGauge, wxStaticText* pLabel, wxButton* pButton, int iButtonID)
+ : m_pSupervisor(pSupervisor), m_strName(pszName), m_iPosition(iPos), m_pGauge(pGauge),
+ m_pLabel(pLabel), m_pButton(pButton), m_iButtonID(iButtonID)
+ {}
+
+ int position() const {return m_iPosition;}
+ const std::string& name() const {return m_strName;}
+ BackgroundSupervisor* supervisor() {return m_pSupervisor;}
+
+ wxGauge* gauge() {return m_pGauge;}
+ wxStaticText* label() {return m_pLabel;}
+ wxButton* button() {return m_pButton;}
+ int buttonID() const {return m_iButtonID;}
+};
+
+
class BackgroundManagerCanvas : public wxPanel {
private:
DECLARE_DYNAMIC_CLASS(BackgroundManagerCanvas)
public:
BackgroundManagerCanvas (BackgroundManager* pBkgdMgr = NULL);
-#if 0
- void OnPaint (wxPaintEvent& event);
-#endif
+
DECLARE_EVENT_TABLE()
};
+#endif // HAVE_WXTHREADS
#endif // _BACKGROUNDMGR_H