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

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

first import

Line 
1/* rgfiltermanager.h
2 *
3 * Copyright (c) 2000, 2001 Conectiva S/A
4 *               2002,2003 Michael Vogt <mvo@debian.org>
5 *
6 * Author: Alfredo K. Kojima <kojima@conectiva.com.br>
7 *         Michael Vogt <mvo@debian.org>
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License as
11 * published by the Free Software Foundation; either version 2 of the
12 * License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
22 * USA
23 */
24
25#ifndef _RGFILTERMANAGER_H_
26#define _RGFILTERMANAGER_H_
27
28#include <gtk/gtk.h>
29#include "rggladewindow.h"
30#include "rpackagefilter.h"
31#include "rgmisc.h"
32
33#include "i18n.h"
34
35class RPackageViewFilter;
36class RGFilterManagerWindow;
37
38// must be in the same order as of the check buttons
39static const RStatusPackageFilter::Types StatusMasks[] = {
40   RStatusPackageFilter::NotInstalled,
41   RStatusPackageFilter::Upgradable,
42   RStatusPackageFilter::Installed,
43   RStatusPackageFilter::MarkKeep,
44   RStatusPackageFilter::MarkInstall,
45   RStatusPackageFilter::MarkRemove,
46   RStatusPackageFilter::Broken,
47   RStatusPackageFilter::NewPackage,
48   RStatusPackageFilter::PinnedPackage,
49   RStatusPackageFilter::OrphanedPackage,       // debian only
50   RStatusPackageFilter::ResidualConfig,        // debian only
51   RStatusPackageFilter::NotInstallable,
52   RStatusPackageFilter::UpstreamUpgradable
53};
54
55// FIXME: if you add a new status change this const! (calc automaticlly)
56static const int NrOfStatusBits = 13;
57
58static char *ActOptions[] = {
59   _("Includes"),
60   _("Excludes"),
61   NULL
62};
63
64
65static char *DepOptions[] = {
66   _("Package name"),
67   _("Description"),
68   _("Maintainer"),
69   _("Version number"),
70   _("Dependencies"),           // depends, predepends etc
71   _("Provided packages"),      // provides and name
72   _("Conflicting packages"),   // conflicts
73   _("Replaced packages"),      // replaces/obsoletes
74   _("Recommendations"), ///recommends
75   _("Suggestions"),   // suggests
76   _("Dependent packages"),   // Reverse Depends
77   _("Origin"),                 // Origin (e.g. security.debian.org)
78   NULL
79};
80
81
82
83typedef void RGFilterEditorCloseAction(void *self, bool okcancel);
84
85class RGFilterManagerWindow:public RGGladeWindow {
86   static void addFilterAction(GtkWidget *self, void *data);
87   static void removeFilterAction(GtkWidget *self, void *data);
88
89   static void applyFilterAction(GtkWidget *self, void *data);
90
91   static void cancelAction(GtkWidget *self, void *data);
92   static void okAction(GtkWidget *self, void *data);
93
94   static void includeTagAction(GtkWidget *self, void *data);
95   static void excludeTagAction(GtkWidget *self, void *data);
96
97   static gint deleteEventAction(GtkWidget *widget, GdkEvent * event,
98                                 gpointer data);
99
100   static void selectAction(GtkTreeSelection *selection, gpointer data);
101
102   // load a given filter
103   void editFilter(RFilter *filter);
104   // no argument -> load selected filter
105   void editFilter();
106
107   // helpers
108   void setSectionFilter(RSectionPackageFilter & f);
109   void getSectionFilter(RSectionPackageFilter & f);
110
111   void setStatusFilter(RStatusPackageFilter & f);
112   void getStatusFilter(RStatusPackageFilter & f);
113
114   void setPatternFilter(RPatternPackageFilter &f);
115   void getPatternFilter(RPatternPackageFilter &f);
116
117   GtkTreePath *treeview_find_path_from_text(GtkTreeModel *model, char *text);
118
119
120   GtkWidget *_filterEntry;     /* GtkEntry */
121   GdkCursor *_busyCursor;
122
123   GtkWidget *_filterDetailsBox;        // detail box
124
125   // the filter list
126   GtkWidget *_filterList;      /* GtkTreeView */
127   GtkListStore *_filterListStore;
128   GtkTreePath *_selectedPath;
129   RFilter *_selectedFilter;
130   enum {
131      NAME_COLUMN,
132      FILTER_COLUMN,
133      N_COLUMNS
134   };
135
136   // the section list
137   GtkWidget *_sectionList;     /* GtkTreeView */
138   GtkListStore *_sectionListStore;
139   enum {
140      SECTION_COLUMN,
141      SECTION_N_COLUMNS
142   };
143
144   // status filter buttons
145   GtkWidget *_statusB[NrOfStatusBits];
146
147   // the pattern list
148   enum {
149      PATTERN_DO_COLUMN,
150      PATTERN_WHAT_COLUMN,
151      PATTERN_TEXT_COLUMN,
152      PATTERN_N_COLUMNS
153   };
154   GtkWidget *_patternList;     /* GtkTreeView */
155   GtkListStore *_patternListStore;
156   bool setPatternRow(int row, bool exclude,
157                      RPatternPackageFilter::DepType type, string pattern);
158   static void patternSelectionChanged(GtkTreeSelection *selection,
159                                       gpointer data);
160   static void patternChanged(GObject *o, gpointer data);
161   static void patternNew(GObject *o, gpointer data);
162   static void patternDelete(GObject *o, gpointer data);
163   static void statusAllClicked(GObject *o, gpointer data);
164   static void statusInvertClicked(GObject *o, gpointer data);
165   static void statusNoneClicked(GObject *o, gpointer data);
166   void applyChanges(RFilter *filter);
167   static void filterNameChanged(GObject *o, gpointer data);
168   void filterAvailableTags();
169
170   // the view menu
171   GtkWidget *_optionmenu_view_mode;
172   GtkWidget *_optionmenu_expand_mode;
173
174   // the lister is always needed
175   RPackageViewFilter *_filterview;
176   vector<RFilter *> _saveFilters;
177
178#ifdef HAVE_DEBTAGS
179   // the tags stuff
180   GtkTreeView *_availableTagsView;
181   GtkListStore *_availableTagsList;
182
183   GtkTreeView *_includedTagsView;
184   GtkListStore *_includedTagsList;
185
186   GtkTreeView *_excludedTagsView;
187   GtkListStore *_excludedTagsList;
188
189   static void treeViewExcludeClicked(GtkTreeView *treeview,
190                                      GtkTreePath *arg1,
191                                      GtkTreeViewColumn *arg2,
192                                      gpointer user_data);
193   static void treeViewIncludeClicked(GtkTreeView *treeview,
194                                      GtkTreePath *arg1,
195                                      GtkTreeViewColumn *arg2,
196                                      gpointer user_data);
197#endif
198
199 public:
200   RGFilterManagerWindow(RGWindow *win, RPackageViewFilter *filterview);
201
202   // need to be called before show or run_dialog
203   void readFilters();
204
205};
206
207
208#endif
Note: See TracBrowser for help on using the repository browser.