extcmdprogresspanel.h

00001 
00002 // Name:        extcmdprogresspanel.h
00003 // Purpose:     wxExtCmdProgressPanel definition
00004 // Author:      Julian Smart, Francesco Montorsi
00005 // Modified by:
00006 // Created:     15/06/2006 21:21:31
00007 // RCS-ID:      $Id: extcmdprogresspanel.h,v 1.4 2007/01/28 15:56:10 frm Exp $
00008 // Copyright:   (c) 2004 Francesco Montorsi
00009 // Licence:     wxWidgets license
00011 
00012 #ifndef _PMEXTCMDPROGRESSPANEL_H_
00013 #define _PMEXTCMDPROGRESSPANEL_H_
00014 
00019 #include "wxp/package.h"
00020 #include "wx/process.h"
00021 #include "wx/timer.h"
00022 #include "wx/gauge.h"
00023 
00024 #include "guipm/progresspanel.h"
00025 
00026 
00031 
00032 #define SYMBOL_WXEXTCMDPROGRESSPANEL_STYLE 0
00033 #define SYMBOL_WXEXTCMDPROGRESSPANEL_TITLE _("Dialog")
00034 #define SYMBOL_WXEXTCMDPROGRESSPANEL_IDNAME wxID_ANY
00035 #define SYMBOL_WXEXTCMDPROGRESSPANEL_SIZE wxSize(400, 300)
00036 #define SYMBOL_WXEXTCMDPROGRESSPANEL_POSITION wxDefaultPosition
00037 #define ID_EXTCMD_COMMANDS 10000
00038 #define ID_EXTCMD_GAUGE 10001
00039 #define ID_EXTCMD_NOTEBOOK 10003
00040 #define ID_EXTCMD_OUTPUT 10006
00041 #define ID_EXTCMD_OUTPUTERR 10002
00043 
00044 #define SYMBOL_WXEXTCMDPROGRESSPANEL_NAME wxT("Build")
00045 #define ID_EXTCMD_PROCESS  10015
00046 #define ID_EXTCMD_CURRPROCESS_PREFIX  wxT("=> ")
00047 
00048 
00049 // ----------------------------------------------------------------------------
00050 // wxExtCmdProgressPanel
00051 // ----------------------------------------------------------------------------
00052 
00053 class wxExtCmdProgressPanel: public wxProgressPanel
00054 {
00055     DECLARE_DYNAMIC_CLASS( wxExtCmdProgressPanel )
00056     DECLARE_EVENT_TABLE()
00057 
00058 public:
00060     wxExtCmdProgressPanel( );
00061     wxExtCmdProgressPanel( wxWindow* parent,
00062                            wxWindowID id = SYMBOL_WXEXTCMDPROGRESSPANEL_IDNAME,
00063                            const wxPoint& pos = SYMBOL_WXEXTCMDPROGRESSPANEL_POSITION,
00064                            const wxSize& size = SYMBOL_WXEXTCMDPROGRESSPANEL_SIZE,
00065                            long style = SYMBOL_WXEXTCMDPROGRESSPANEL_STYLE,
00066                            const wxString &name = SYMBOL_WXEXTCMDPROGRESSPANEL_NAME);
00067 
00069     bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WXEXTCMDPROGRESSPANEL_IDNAME,
00070                  const wxPoint& pos = SYMBOL_WXEXTCMDPROGRESSPANEL_POSITION,
00071                  const wxSize& size = SYMBOL_WXEXTCMDPROGRESSPANEL_SIZE,
00072                  long style = SYMBOL_WXEXTCMDPROGRESSPANEL_STYLE,
00073                  const wxString &name = SYMBOL_WXEXTCMDPROGRESSPANEL_NAME);
00074 
00076     void CreateControls();
00077 
00078 
00079     virtual ~wxExtCmdProgressPanel()
00080     {
00081         // if not stopped, stop now
00082         Stop();
00083     }
00084 
00085 
00086 public:     // event handlers
00087 
00088     void OnIdle(wxIdleEvent &ev);
00089     void OnTimer(wxTimerEvent& event);
00090     void OnProcessTerminate(wxProcessEvent &ev);
00091     void OnUpdateUI(wxUpdateUIEvent &);
00092 
00093 public:
00094 
00095     void SetStage(wxPackageBuildSystemStage stage)
00096         { m_stage=stage; }
00097 
00098     void SetPackage(const wxPackage &pkg);
00099 
00100     void Start();
00101     void Stop();
00102 
00103     bool IsProcessing() const
00104         { return m_timerIdleWakeUp.IsRunning() || m_currProcess != NULL; }
00105 
00106     wxString GetLogData() const;
00107     wxString GetLogLabel() const;
00108 
00109     bool IsSuccessful() const
00110         { return m_nExitCode == 0; }
00111 
00112     void ClearControls();
00113 
00114 protected:      // internal utilities
00115 
00116     void SelectCurrProcess();
00117     void DeselectCurrProcess();
00118 
00119     void OnProcessStart();
00120 
00121     void UpdateCachedCommands();
00122 
00123     wxString GetCmdString(size_t n) const;
00124     wxString GetCmdPath(size_t n) const;
00125 
00126 protected:      // controls
00127 
00128     wxListBox* m_pCommandList;
00129     wxTextCtrl* m_pOutput;
00130     wxTextCtrl* m_pOutputErr;
00131     wxGauge *m_pGauge;
00132 
00133 protected:      // other variables
00134 
00135     wxPackage m_pkg;
00136     wxPackageBuildSystemStage m_stage;
00137 
00139     wxPackageCommandArray m_cmd;
00140 
00141     wxTimer m_timerIdleWakeUp;
00142     wxDateTime m_start;
00143 
00144 protected:      // running process
00145 
00146     wxProcess *m_currProcess;
00147     int m_nCurrProcess;
00148     int m_pid;
00149     int m_nExitCode;
00150 };
00151 
00152 #endif
00153     // _PMEXTCMDPROGRESSPANEL_H_

Generated on Thu Feb 1 22:14:31 2007 for wxWidgets Package Manager by  doxygen 1.5.1-p1