source: projects/synaptic/trunk/gtk/rgmainwindow.h @ 280

Revision 280, 9.3 KB checked in by yasumichi, 15 years ago (diff)

first import

Line 
1/* rgmainwindow.h - main window of application
2 *
3 * Copyright (c) 2001 Alfredo K. Kojima
4 *               2002 Michael Vogt <mvo@debian.org>
5 *
6 * Author: Alfredo K. Kojima <kojima@conectiva.com.br>
7 *         Michael Vogt <mvo@debian.org>
8 *         Gustavo Niemeyer <niemeyer@conectiva.com>
9 *
10 * This program is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU General Public License as
12 * published by the Free Software Foundation; either version 2 of the
13 * License, or (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
23 * USA
24 */
25
26
27#ifndef _RGMAINWINDOW_H_
28#define _RGMAINWINDOW_H_
29
30using namespace std;
31
32#include "rpackagelister.h"
33
34#include <gtk/gtk.h>
35#include <vector>
36#include <set>
37
38#include "rgtaskswin.h"
39#include "rgfetchprogress.h"
40#include "rinstallprogress.h"
41#include "rggladewindow.h"
42#include "rgiconlegend.h"
43#include "gtkpkglist.h"
44#include "rgpkgdetails.h"
45#include "rglogview.h"
46
47#define TOOLBAR_HIDE -1
48
49class RGSourcesWindow;
50class RGPreferencesWindow;
51class RGFilterManagerWindow;
52class RGFilterWindow;
53class RGFindWindow;
54class RGSetOptWindow;
55class RGAboutPanel;
56
57class RGUserDialog;
58class RGCacheProgress;
59
60typedef enum {
61   PKG_KEEP,
62   PKG_INSTALL,
63   PKG_INSTALL_FROM_VERSION,
64   PKG_DELETE,
65   PKG_PURGE,
66   PKG_DELETE_WITH_DEPS,
67   PKG_REINSTALL
68} RGPkgAction;
69
70class RGMainWindow : public RGGladeWindow, public RPackageObserver {
71   typedef enum {
72      UPGRADE_ASK = -1,
73      UPGRADE_NORMAL = 0,
74      UPGRADE_DIST = 1
75   } UpgradeType;
76
77   RPackageLister *_lister;
78
79   bool _unsavedChanges;
80
81   bool _blockActions;          // block signals from the action and hold buttons
82   GtkToolbarStyle _toolbarStyle;
83   int _interfaceLocked;
84
85   GtkTooltips *_tooltips;
86
87   GtkWidget *_sview;           // scrolled window for table
88
89   GtkTreeModel *_pkgList;
90   GtkWidget *_treeView;
91
92   // the left-side view
93   GtkWidget *_subViewList;
94
95   GtkWidget *_statusL;
96   GtkWidget *_progressBar;
97
98   // menu items
99   GtkWidget *_keepM, *_installM, *_reinstallM, *_pkgupgradeM, *_removeM;
100   GtkWidget *_remove_w_depsM, *_purgeM;
101   GtkWidget *_dl_changelogM, *_detailsM;
102
103   // popup-menu
104   GtkWidget *_popupMenu;
105
106   GtkWidget *_actionBInstallLabel;
107   GtkWidget *_pinM;
108   GtkWidget *_overrideVersionM;
109   GtkWidget *_pkgHelpM;
110   GtkWidget *_pkgReconfigureM;
111
112   GtkWidget *_proceedB;
113   GtkWidget *_proceedM;
114   GtkWidget *_upgradeB;
115   GtkWidget *_upgradeM;
116   GtkWidget *_propertiesB;
117   GtkWidget *_fixBrokenM;
118
119   // filter/find panel   
120   GtkWidget *_cmdPanel;
121
122   GtkWidget *_findText;
123   GtkWidget *_findSearchB;
124
125   // package info tabs   
126   GtkWidget *_pkginfo;
127   GtkWidget *_vpaned;
128   GtkWidget *_hpaned;
129
130   GtkWidget *_pkgCommonTextView;
131   GtkTextBuffer *_pkgCommonTextBuffer;
132   GtkTextTag *_pkgCommonBoldTag;
133
134   GtkWidget *_importP;
135
136   GtkWidget *_filesView;
137   GtkTextBuffer *_filesBuffer;
138
139   RGFilterManagerWindow *_fmanagerWin;
140   RGSourcesWindow *_sourcesWin;
141   RGPreferencesWindow *_configWin;
142   RGFindWindow *_findWin;
143   RGSetOptWindow *_setOptWin;
144   RGAboutPanel *_aboutPanel;
145   RGTasksWin *_tasksWin;
146   RGIconLegendPanel *_iconLegendPanel;
147   RGPkgDetailsWindow *_pkgDetails;
148   RGLogView *_logView;
149
150   RGCacheProgress *_cacheProgress;
151   RGUserDialog *_userDialog;
152   GtkWidget *_viewButtons[N_PACKAGE_VIEWS];
153
154   RGFetchProgress *_fetchProgress;
155   RGWindow *_installProgress;
156
157   // init stuff
158   void buildInterface();
159   void buildTreeView();
160
161 private:
162   // display/table releated
163   void refreshSubViewList();
164
165   virtual bool close();
166   static bool closeWin(GtkWidget *self, void *me) {
167      return ((RGMainWindow *) me)->close();
168   };
169
170   // misc
171   void forgetNewPackages();
172
173   // package info
174   void updatePackageInfo(RPackage *pkg);
175   RPackage *selectedPackage();
176   string selectedSubView();
177
178#if INTERACTIVE_SEARCH_ON_KEYPRESS
179   // interactive search by pressing a key in treeview.
180   // sebastian thinks it's too confusing (but it works)
181   static gboolean cbKeyPressedInTreeView(GtkWidget *widget, GdkEventKey *event, gpointer data);
182#endif
183
184   // helpers
185   void pkgAction(RGPkgAction action);
186   bool askStateChange(RPackageLister::pkgState, vector<RPackage *> exclude);
187   bool checkForFailedInst(vector<RPackage *> instPkgs);
188   void pkgInstallHelper(RPackage *pkg, bool fixBroken = true, 
189                         bool reInstall = false);
190   void pkgRemoveHelper(RPackage *pkg, bool purge = false,
191                        bool withDeps = false);
192   void pkgKeepHelper(RPackage *pkg);
193
194   // helper for recommends/suggests
195   // (data is the name of the pkg, self needs to have a pointer to "me" )
196   static void pkgInstallByNameHelper(GtkWidget *self, void *data);
197#if 0
198   void installAllWeakDepends(RPackage *pkg, pkgCache::Dep::DepType type);
199#endif
200   // install a non-standard version (data is a char* of the version)
201   static void cbInstallFromVersion(GtkWidget *self, void *data);
202
203   // RPackageObserver
204   virtual void notifyChange(RPackage *pkg);
205   virtual void notifyPreFilteredChange() {
206   };
207   virtual void notifyPostFilteredChange() {
208   };
209
210 public:
211   RGMainWindow(RPackageLister *packLister, string name);
212   virtual ~RGMainWindow() {};
213
214   void refreshTable(RPackage *selectedPkg = NULL);
215
216   void changeView(int view, string subView="");
217
218   // install the list of packagenames and display a changes window
219   void selectToInstall(vector<string> packagenames);
220   
221
222   void setInterfaceLocked(bool flag);
223   void setTreeLocked(bool flag);
224   void rebuildTreeView() {
225      buildTreeView();
226   };
227
228   void setStatusText(char *text = NULL);
229
230   // this helper will bring the current active window to the foreground
231   void activeWindowToForeground();
232
233   void saveState();
234   bool restoreState();
235
236   bool showErrors();
237
238   GtkWidget* buildWeakDependsMenu(RPackage *pkg, pkgCache::Dep::DepType);
239
240
241   // --------------------------------------------------------------------
242   // Callbacks
243   //
244
245   static void cbPkgAction(GtkWidget *self, void *data);
246
247   static gboolean cbPackageListClicked(GtkWidget *treeview,
248                                        GdkEventButton *event,
249                                        gpointer data);
250
251   static void cbTreeviewPopupMenu(GtkWidget *treeview,
252                                   GdkEventButton *event,
253                                   RGMainWindow *me,
254                                   vector<RPackage *> selected_pkgs);
255
256   static void cbChangelogDialog(GtkWidget *self, void *data);
257
258   static void cbSelectedRow(GtkTreeSelection *selection, gpointer data);
259   static void cbPackageListRowActivated(GtkTreeView *treeview,
260                                         GtkTreePath *arg1,
261                                         GtkTreeViewColumn *arg2,
262                                         gpointer user_data);
263
264   static void cbChangedView(GtkWidget *self, void *);
265   static void cbChangedSubView(GtkTreeSelection *selection, gpointer data);
266
267   static void cbDetailsWindow(GtkWidget *self, void *data);
268
269   // file menu
270   static void cbTasksClicked(GtkWidget *self, void *data);
271   static void cbOpenClicked(GtkWidget *self, void *data);
272   static void cbSaveClicked(GtkWidget *self, void *data);
273   static void cbSaveAsClicked(GtkWidget *self, void *data);
274   string selectionsFilename;
275   bool saveFullState;
276   static void cbViewLogClicked(GtkWidget *self, void *data);
277
278   // actions menu
279   static void cbUndoClicked(GtkWidget *self, void *data);
280   static void cbRedoClicked(GtkWidget *self, void *data);
281   static void cbClearAllChangesClicked(GtkWidget *self, void *data);
282   static void cbUpdateClicked(GtkWidget *self, void *data);
283   static void cbAddCDROM(GtkWidget *self, void *data);
284   static void cbFixBrokenClicked(GtkWidget *self, void *data);
285   static void cbUpgradeClicked(GtkWidget *self, void *data);
286   static void cbProceedClicked(GtkWidget *self, void *data);
287
288   // packages menu
289   static void cbMenuPinClicked(GtkWidget *self, void *data);
290
291   // filter menu
292   static void cbShowFilterManagerWindow(GtkWidget *self, void *data);
293   static void cbSaveFilterAction(void *self, RGFilterWindow * rwin);
294   static void cbCloseFilterAction(void *self, RGFilterWindow * rwin);
295   static void cbCloseFilterManagerAction(void *self, bool okcancel);
296
297   // search menu
298   static void cbFindToolClicked(GtkWidget *self, void *data);
299
300   // preferences menu
301   static void cbShowConfigWindow(GtkWidget *self, void *data);
302   static void cbShowSetOptWindow(GtkWidget *self, void *data);
303   static void cbShowSourcesWindow(GtkWidget *self, void *data);
304   static void cbMenuToolbarClicked(GtkWidget *self, void *data);
305
306   // help menu
307   static void cbHelpAction(GtkWidget *self, void *data);
308   static void cbShowIconLegendPanel(GtkWidget *self, void *data);
309   static void cbShowAboutPanel(GtkWidget *self, void *data);
310   static void cbShowWelcomeDialog(GtkWidget *self, void *data);
311
312   // the buttons
313   static void cbPkgHelpClicked(GtkWidget *self, void *data);
314   static void cbPkgReconfigureClicked(GtkWidget *self, void *data);
315
316};
317
318
319#endif
Note: See TracBrowser for help on using the repository browser.