00001
00002
00003
00004
00005
00006
00007
00008
00009
00011
00012 #ifndef _PMBROWSEPANEL_H_
00013 #define _PMBROWSEPANEL_H_
00014
00019 #include "wx/notebook.h"
00020 #include "wx/listbox.h"
00021 #include "wx/htmllbox.h"
00022 #include "wx/statusbr.h"
00023
00024 #include "guipm/filterpanel.h"
00025 #include "wxp/package.h"
00026
00027
00032 class wxPackageManager;
00033 class wxPackageViewerPanel;
00034 class wxPackageListBox;
00035
00036
00041 #define SYMBOL_WXPACKAGEBROWSERPANEL_STYLE wxRESIZE_BORDER
00042 #define SYMBOL_WXPACKAGEBROWSERPANEL_TITLE _("Package Browser Panel")
00043 #define SYMBOL_WXPACKAGEBROWSERPANEL_IDNAME wxID_ANY
00044 #define SYMBOL_WXPACKAGEBROWSERPANEL_SIZE wxSize(400, 300)
00045 #define SYMBOL_WXPACKAGEBROWSERPANEL_POSITION wxDefaultPosition
00046 #define ID_BROWSER_NOTEBOOK 10019
00047 #define ID_BROWSER_INSTALLED_FILTER 10007
00048 #define ID_BROWSER_INSTALLED_PACKAGELIST 10005
00049 #define ID_BROWSER_INSTALLED_SELECTALL 10012
00050 #define ID_BROWSER_INSTALLED_DESELECTALL 10015
00051 #define ID_BROWSER_INSTALLED_REFRESH 10016
00052
00053 #define ID_BROWSER_DECOMPRESS 10100
00054 #define ID_BROWSER_REBUILD 10017
00055 #define ID_BROWSER_REINSTALL 10011
00056 #define ID_BROWSER_UNINSTALL 10013
00057 #define ID_BROWSER_UPDATECHECK 10023
00058 #define ID_BROWSER_SOURCELIST 10001
00059 #define ID_BROWSER_NEW_FILTER 10004
00060 #define ID_BROWSER_NEW_PACKAGELIST 10004
00061 #define ID_BROWSER_NEW_SELECTALL 10008
00062 #define ID_BROWSER_NEW_DESELECTALL 10009
00063 #define ID_BROWSER_NEW_REFRESH 10021
00064 #define ID_BROWSER_DOWNLOAD 10022
00065 #define ID_BROWSER_BUILD 10010
00066 #define ID_BROWSER_INSTALL 10014
00067
00068
00069
00070
00071
00072
00073 class wxPackageListBox : public wxHtmlListBox
00074 {
00075 public:
00076 wxPackageListBox(wxWindow* parent, wxWindowID id = wxID_ANY,
00077 const wxPoint& pos = wxDefaultPosition,
00078 const wxSize& size = wxDefaultSize, long style = 0,
00079 const wxString& name = wxT("commandlistbox"));
00080
00081 public:
00082
00083 void Append(const wxPackage &item)
00084 { m_items.Add(item); SetItemCount(m_items.GetCount()); }
00085
00086
00087 void SetPackage(unsigned int n, const wxPackage &item)
00088 { m_items[n] = item; }
00089
00090 unsigned int GetCount() const
00091 { return m_items.GetCount(); }
00092
00093 wxPackageArray &GetPackages()
00094 { return m_items; }
00095
00096 bool SetSelectedPackage(const wxPackageId &id)
00097 {
00098
00099
00100 int n = m_items.IndexById(id);
00101 SetSelection(n);
00102 return n != wxNOT_FOUND;
00103 }
00104
00105 bool IsEmpty() const
00106 { return GetCount()==0; }
00107
00108 wxPackage &GetSelectedPackage()
00109 {
00110 wxASSERT_MSG(!HasMultipleSelection(), wxT("Use GetSelectedPackages instead"));
00111 if (GetSelection() == wxNOT_FOUND)
00112 return wxEmptyPackage;
00113 return m_items[GetSelection()];
00114 }
00115
00116 wxPackageArray GetSelectedPackages() const
00117 {
00118 wxASSERT_MSG(HasMultipleSelection(), wxT("Use GetSelectedPackage instead"));
00119
00120 wxPackageArray ret;
00121 unsigned long cookie;
00122 int item = GetFirstSelected(cookie);
00123 while ( item != wxNOT_FOUND )
00124 {
00125 ret.Add(m_items[item]);
00126 item = GetNextSelected(cookie);
00127 }
00128
00129 return ret;
00130 }
00131
00132 wxPackage &GetFirstSelectedPackage() const
00133 {
00134 wxASSERT(HasMultipleSelection());
00135 unsigned long dummy;
00136 int item = GetFirstSelected(dummy);
00137 if (item == wxNOT_FOUND)
00138 return wxEmptyPackage;
00139 return m_items[item];
00140 }
00141
00142 wxPackage &GetPackage(size_t n)
00143 { return m_items[n]; }
00144
00145 void Clear()
00146 {
00147 wxHtmlListBox::Clear();
00148 m_items.Clear();
00149 }
00150
00151 void ShowStatus(bool show = true)
00152 { m_bShowStatus=show; }
00153
00154 public:
00155
00158 void SetPackages(const wxPackageArray &arr, wxPackageFilterPanel *filter);
00159
00160 protected:
00161 virtual wxString OnGetItem(size_t n) const;
00162
00163 protected:
00164 wxPackageArray m_items;
00165 bool m_bShowStatus;
00166
00167 private:
00168 DECLARE_NO_COPY_CLASS(wxPackageListBox)
00169 };
00170
00171
00172
00173
00174
00175
00176 class wxPackageBrowserPanel: public wxPanel
00177 {
00178 DECLARE_DYNAMIC_CLASS( wxPackageBrowserPanel )
00179 DECLARE_EVENT_TABLE()
00180
00181 public:
00183 wxPackageBrowserPanel( );
00184 wxPackageBrowserPanel( wxWindow* parent,
00185 wxWindowID id = SYMBOL_WXPACKAGEBROWSERPANEL_IDNAME,
00186 const wxPoint& pos = SYMBOL_WXPACKAGEBROWSERPANEL_POSITION,
00187 const wxSize& size = SYMBOL_WXPACKAGEBROWSERPANEL_SIZE,
00188 long style = SYMBOL_WXPACKAGEBROWSERPANEL_STYLE );
00189 ~wxPackageBrowserPanel();
00190
00192 bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WXPACKAGEBROWSERPANEL_IDNAME,
00193 const wxPoint& pos = SYMBOL_WXPACKAGEBROWSERPANEL_POSITION,
00194 const wxSize& size = SYMBOL_WXPACKAGEBROWSERPANEL_SIZE,
00195 long style = SYMBOL_WXPACKAGEBROWSERPANEL_STYLE );
00196
00198 void CreateControls();
00199
00200
00201 public:
00202
00203 void OnButtonClick(wxCommandEvent &ev);
00204 void OnUpdateUI(wxUpdateUIEvent &ev);
00205 void OnListBoxSelected(wxCommandEvent &ev);
00206 void OnFilterPackages(wxCommandEvent &ev);
00207 void OnNotebookPageChanged(wxCommandEvent &ev);
00208 void OnSourceListEnter(wxCommandEvent &ev);
00209 void OnSourceListSelected(wxCommandEvent &ev);
00210 void OnPageChanged(wxNotebookEvent &ev);
00211 void OnProgressPanelEnd(wxCommandEvent &ev);
00212 void OnIdle(wxIdleEvent& WXUNUSED(ev));
00213
00214 public:
00215
00216 void BrowseLocalPackages()
00217 { m_pNotebook->ChangeSelection(0); }
00218 void BrowseNewPackages()
00219 { m_pNotebook->ChangeSelection(1); }
00220
00221 bool IsBrowsingLocalPackages() const
00222 { return m_pNotebook->GetSelection() == 0; }
00223 bool IsBrowsingNewPackages() const
00224 { return m_pNotebook->GetSelection() == 1; }
00225
00226 public:
00227
00228 void FilterLocalPackages();
00229 void FilterNewPackages();
00230
00231 void FilterPackageList();
00232
00233 void ResetFilter()
00234 { m_pLocalFilter->Reset(); m_pNewFilter->Reset(); }
00235
00237 void Filter();
00238
00239 public:
00240
00241 void SelectNewPackage(const wxPackageId &);
00242 void SelectNewPackage(unsigned int n);
00243
00244 void SelectLocalPackage(const wxPackageId &);
00245 void SelectLocalPackage(unsigned int n);
00246
00247 void RefreshPackageList();
00248 void RefreshLocalPackages();
00249 void RefreshNewPackages();
00250
00251 public:
00252
00253 wxPackageViewerPanel *GetAuxiliaryViewerPanel()
00254 { return m_pViewerPanel; }
00255 wxStatusBar *GetAuxiliaryStatusBar()
00256 { return m_pStatusBar; }
00257 wxMenuBar *GetAuxiliaryMenuBar()
00258 { return m_pMenuBar; }
00259
00260 public:
00261
00262 void SetAuxiliaryViewerPanel(wxPackageViewerPanel *p);
00263 void SetAuxiliaryMenuBar(wxMenuBar *p)
00264 { m_pMenuBar=p; }
00265 void SetAuxiliaryStatusBar(wxStatusBar *p)
00266 { m_pStatusBar=p; }
00267
00268 public:
00269
00270 bool Load(wxConfigBase *, const wxString &path);
00271 void Save(wxConfigBase *, const wxString &path) const;
00272
00273 public:
00274
00282 bool BrowseTo(const wxString &path);
00283
00285 bool LoadCompressedPackage(const wxString &wxzpath);
00286
00289 bool IsPackageSourceLocal() const;
00290
00293 void Download(const wxPackageArray &arr, bool skipdepcheck = false);
00294 void Download(const wxPackage &pkg, bool skipdepcheck = false)
00295 {
00296 wxPackageArray temp;
00297 temp.Add(pkg);
00298 Download(temp, skipdepcheck);
00299 }
00300
00301
00302 public:
00303
00304 wxString GetDefaultDownloadPath() const
00305 { return m_strDefaultDownloadPath; }
00306 wxString GetDefaultDecompressionPath() const
00307 { return m_strDefaultDecompressionPath; }
00308 wxString GetDefaultInstallationPath() const
00309 { return m_strDefaultInstallationPath; }
00310
00311
00312
00313
00314 wxPackageArray &GetLocalPackages()
00315 { return m_arrLocal; }
00316 wxPackageArray &GetNewPackages()
00317 { return m_arrNew; }
00318
00320 wxPackageArray GetSelectedPackages() const;
00321
00322 bool IsAutoLoadLocalPackagesEnabled() const
00323 { return m_bAutoLoadLocalPackages; }
00324
00325 public:
00326
00327 void SetDefaultDownloadPath(const wxString &path)
00328 { m_strDefaultDownloadPath=path; }
00329 void SetDefaultDecompressionPath(const wxString &path)
00330 { m_strDefaultDecompressionPath=path; }
00331 void SetDefaultInstallationPath(const wxString &path)
00332 { m_strDefaultInstallationPath=path; }
00333
00334
00335
00336
00337
00338 void SetAutoLoadLocalPackages(bool load)
00339 { m_bAutoLoadLocalPackages=load; }
00340
00341 public:
00342
00343
00344
00345
00346
00347
00348
00349
00350 static wxString s_strDefaultWxlName;
00351
00352
00353 static wxString s_strDefaultWxlURL;
00354
00355 protected:
00356
00357
00358 bool SetRepositoryURL(const wxString &url);
00359
00360 void EnableCmd(long id, bool enable = true);
00361
00362 void SetStatusText(const wxString &str)
00363 {
00364 if (GetAuxiliaryStatusBar())
00365 GetAuxiliaryStatusBar()->SetStatusText(str);
00366 }
00367
00368 protected:
00369
00370 wxNotebook* m_pNotebook;
00371 wxComboBox* m_pSourceList;
00372
00374 wxPackageListBox* m_pNewList;
00375 wxPackageFilterPanel* m_pNewFilter;
00376
00378 wxPackageListBox* m_pLocalList;
00379 wxPackageFilterPanel* m_pLocalFilter;
00380
00381 protected:
00382
00384 wxString m_strDefaultDownloadPath;
00385
00387 wxString m_strDefaultDecompressionPath;
00388
00390 wxString m_strDefaultInstallationPath;
00391
00392 protected:
00393
00400 wxPackageArray m_arrLocal;
00401
00404 wxPackageArray m_arrNew;
00405
00407 bool m_bShowDupPackages;
00408
00410 bool m_bNeedLocalPackageRefresh;
00411
00413 bool m_bAutoLoadLocalPackages;
00414
00415 protected:
00416
00419 wxPackageViewerPanel *m_pViewerPanel;
00420
00421
00422 wxMenuBar *m_pMenuBar;
00423 wxStatusBar *m_pStatusBar;
00424 };
00425
00426
00427 #endif
00428