Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=gfpm.git;a=commitdiff;h=1f12ce9a45da0057e90fbaf01d29113256134ffa

commit 1f12ce9a45da0057e90fbaf01d29113256134ffa
Author: Priyank <[EMAIL PROTECTED]>
Date:   Sat Jan 19 23:09:06 2008 +0530

gfpm-interface: new and re-designed package search
* It's now possible to search in any repository (previously, packages were 
searched only in the current active repo)

diff --git a/data/gfpm.glade b/data/gfpm.glade
index a1eddbe..0efb875 100644
--- a/data/gfpm.glade
+++ b/data/gfpm.glade
@@ -167,80 +167,6 @@
</packing>
</child>
<child>
-              <widget class="GtkToolItem" id="toolitem1">
-                <property name="visible">True</property>
-                <child>
-                  <widget class="GtkVSeparator" id="vseparator1">
-                    <property name="width_request">20</property>
-                    <property name="visible">True</property>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="homogeneous">False</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkToolItem" id="toolitem2">
-                <property name="visible">True</property>
-                <child>
-                  <widget class="GtkHBox" id="hbox3">
-                    <property name="visible">True</property>
-                    <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
-                    <property name="spacing">5</property>
-                    <child>
-                      <widget class="GtkLabel" id="label3">
-                        <property name="visible">True</property>
-                        <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
-                        <property name="label" translatable="yes">Search 
packages</property>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkEntry" id="search_entry1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                      </widget>
-                      <packing>
-                        <property name="position">1</property>
-                      </packing>
-                    </child>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="homogeneous">False</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkToolItem" id="toolitem3">
-                <property name="visible">True</property>
-                <child>
-                  <widget class="GtkImage" id="search_image">
-                    <property name="visible">True</property>
-                    <property name="xpad">10</property>
-                    <property name="icon_size">3</property>
-                    <property name="icon_name">gfpm-search</property>
-                  </widget>
-                </child>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="homogeneous">False</property>
-              </packing>
-            </child>
-            <child>
-              <widget class="GtkSeparatorToolItem" id="toolbutton1">
-                <property name="visible">True</property>
-                <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
-              </widget>
-              <packing>
-                <property name="expand">False</property>
-                <property name="homogeneous">False</property>
-              </packing>
-            </child>
-            <child>
<widget class="GtkToolButton" id="toolbutton2">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK 
| GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
@@ -272,46 +198,178 @@
<property name="label_xalign">0</property>
<property name="shadow_type">GTK_SHADOW_IN</property>
<child>
-                      <widget class="GtkAlignment" id="alignment1">
+                      <widget class="GtkVBox" id="vbox4">
<property name="visible">True</property>
-                        <property name="top_padding">5</property>
-                        <property name="bottom_padding">5</property>
-                        <property name="left_padding">5</property>
-                        <property name="right_padding">5</property>
+                        <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment1">
+                            <property name="visible">True</property>
+                            <property name="top_padding">5</property>
+                            <property name="bottom_padding">5</property>
+                            <property name="left_padding">5</property>
+                            <property name="right_padding">5</property>
+                            <child>
+                              <widget class="GtkVBox" id="vbox4">
+                                <property name="visible">True</property>
+                                <child>
+                                  <widget class="GtkComboBox" 
id="combobox_repos">
+                                    <property name="visible">True</property>
+                                    <property 
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkScrolledWindow" 
id="scrolledwindow4">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property 
name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                    <property 
name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+                                    <property 
name="shadow_type">GTK_SHADOW_IN</property>
+                                    <child>
+                                      <widget class="GtkTreeView" 
id="grouptreeview">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="border_width">2</property>
+                                        <property 
name="headers_visible">False</property>
+                                        <property 
name="rules_hint">True</property>
+                                      </widget>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="padding">2</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
<child>
-                          <widget class="GtkVBox" id="vbox4">
+                          <widget class="GtkVBox" id="vbox13">
<property name="visible">True</property>
+                            <property name="events">GDK_POINTER_MOTION_MASK | 
GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | 
GDK_BUTTON_RELEASE_MASK</property>
+                            <property name="border_width">5</property>
+                            <property name="spacing">4</property>
<child>
-                              <widget class="GtkComboBox" id="combobox_repos">
+                              <widget class="GtkHBox" id="hbox11">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK 
| GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <child>
+                                  <widget class="GtkImage" id="search_image">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="icon_size">3</property>
+                                    <property 
name="icon_name">gfpm-search</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkLabel" id="label14">
+                                    <property name="visible">True</property>
+                                    <property 
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <property 
name="xalign">0.20000000298023224</property>
+                                    <property name="yalign">1</property>
+                                    <property name="xpad">3</property>
+                                    <property name="label" 
translatable="yes">&lt;b&gt;&lt;span size="larger"&gt;Package 
Search&lt;/span&gt;&lt;/b&gt;</property>
+                                    <property name="use_markup">True</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
</widget>
<packing>
<property name="expand">False</property>
</packing>
</child>
<child>
-                              <widget class="GtkScrolledWindow" 
id="scrolledwindow4">
+                              <widget class="GtkEntry" id="search_entry1">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                              </widget>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label16">
+                                <property name="visible">True</property>
+                                <property 
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="xalign">0</property>
+                                <property name="label" 
translatable="yes">&lt;b&gt;Search in :&lt;/b&gt;</property>
+                                <property name="use_markup">True</property>
+                              </widget>
+                              <packing>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkComboBox" 
id="search_repocombo">
+                                <property name="visible">True</property>
+                                <property 
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                              </widget>
+                              <packing>
+                                <property name="position">3</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkButton" id="gfpm_searchbtn">
+                                <property name="height_request">32</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
-                                <property 
name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                <property 
name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
-                                <property 
name="shadow_type">GTK_SHADOW_IN</property>
+                                <property 
name="receives_default">True</property>
+                                <property 
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                <property name="response_id">0</property>
<child>
-                                  <widget class="GtkTreeView" 
id="grouptreeview">
+                                  <widget class="GtkHBox" id="hbox3">
<property name="visible">True</property>
-                                    <property name="border_width">2</property>
-                                    <property 
name="headers_visible">False</property>
-                                    <property name="rules_hint">True</property>
+                                    <property 
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                    <child>
+                                      <widget class="GtkImage" id="image6">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                        <property 
name="xalign">0.30000001192092896</property>
+                                        <property name="yalign">0</property>
+                                        <property name="xpad">6</property>
+                                        <property 
name="stock">gtk-find</property>
+                                        <property name="icon_size">1</property>
+                                      </widget>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkLabel" id="label3">
+                                        <property 
name="visible">True</property>
+                                        <property 
name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | 
GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">1</property>
+                                        <property name="xpad">4</property>
+                                        <property name="ypad">3</property>
+                                        <property name="label" 
translatable="yes">Search</property>
+                                      </widget>
+                                      <packing>
+                                        <property 
name="expand">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
</widget>
</child>
</widget>
<packing>
-                                <property name="padding">2</property>
-                                <property name="position">1</property>
+                                <property name="fill">False</property>
+                                <property name="position">4</property>
</packing>
</child>
</widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="position">1</property>
+                          </packing>
</child>
</widget>
</child>
diff --git a/src/gfpm-interface.c b/src/gfpm-interface.c
index 3b9a032..5f481e5 100644
--- a/src/gfpm-interface.c
+++ b/src/gfpm-interface.c
@@ -76,6 +76,7 @@ static GtkWidget *gfpm_inst_forcheck;
static GtkWidget *gfpm_apply_inst_depcheck;
static GtkWidget *gfpm_apply_inst_dwocheck;
static GtkWidget *gfpm_apply_rem_depcheck;
+static GtkWidget *gfpm_search_combo;

static void gfpm_populate_repos_combobox (GtkComboBox *combo);
static void cb_gfpm_repos_combo_changed (GtkComboBox *combo, gpointer data);
@@ -84,6 +85,7 @@ static void cb_gfpm_groups_tvw_right_click (GtkTreeView 
*treeview, GdkEventButto
static void cb_gfpm_pkgs_tvw_selected (GtkTreeSelection *selection, gpointer 
data);
static void cb_gfpm_pkgs_tvw_right_click (GtkTreeView *treeview, GdkEventButton 
*event);
static void cb_gfpm_search_keypress (GtkWidget *widget, GdkEventKey *event, 
gpointer data);
+static void cb_gfpm_search_buttonpress (GtkButton *button, gpointer data);
static void cb_gfpm_remove_group_clicked (GtkButton *button, gpointer data);
static void cb_gfpm_pkg_selection_toggled (GtkCellRendererToggle *toggle, gchar 
*path_str, gpointer data);
static void cb_gfpm_install_file_clicked (GtkButton *button, gpointer data);
@@ -161,6 +163,7 @@ gfpm_interface_init (void)
gfpm_apply_inst_depcheck = glade_xml_get_widget (xml, "applyinstdepcheck");
gfpm_apply_rem_depcheck = glade_xml_get_widget (xml, "applyremdepcheck");
gfpm_apply_inst_dwocheck = glade_xml_get_widget (xml, "applyinstdwcheck");
+       gfpm_search_combo = glade_xml_get_widget (xml, "search_repocombo");

/* Setup groups treeview */
store = gtk_list_store_new (1, G_TYPE_STRING);
@@ -246,10 +249,20 @@ gfpm_interface_init (void)
/* Setup repository combobox */
widget = glade_xml_get_widget (xml, "combobox_repos");
if (gfpm_db_populate_repolist() == 0)
+       {
gfpm_populate_repos_combobox (GTK_COMBO_BOX(widget));
+               g_signal_connect (G_OBJECT(widget), "changed", 
G_CALLBACK(cb_gfpm_repos_combo_changed), NULL);
+               gtk_combo_box_set_active (GTK_COMBO_BOX(widget), 1);
+               gfpm_populate_repos_combobox (GTK_COMBO_BOX(gfpm_search_combo));
+               gtk_combo_box_set_active (GTK_COMBO_BOX(gfpm_search_combo), 1);
+       }

/* search */
-       g_signal_connect (G_OBJECT(glade_xml_get_widget(xml, "search_entry1")), 
"key-release-event", G_CALLBACK(cb_gfpm_search_keypress), NULL);
+       g_signal_connect (G_OBJECT(glade_xml_get_widget(xml, "search_entry1")),
+                               "key-release-event",
+                               G_CALLBACK(cb_gfpm_search_keypress),
+                               (gpointer)glade_xml_get_widget(xml, 
"search_entry1"));
+       g_signal_connect (G_OBJECT(glade_xml_get_widget(xml, 
"gfpm_searchbtn")), "clicked", G_CALLBACK(cb_gfpm_search_buttonpress), NULL);

/* about */
g_signal_connect (G_OBJECT(glade_xml_get_widget(xml, "about_gfpm1")), 
"activate", G_CALLBACK(gfpm_about), NULL);
@@ -1522,6 +1535,14 @@ cb_gfpm_remove_group_clicked (GtkButton *button, 
gpointer data)
}

static void
+cb_gfpm_search_buttonpress (GtkButton *button, gpointer data)
+{
+       cb_gfpm_search_keypress (GTK_WIDGET(data), NULL, NULL);
+
+       return;
+}
+
+static void
cb_gfpm_search_keypress (GtkWidget *widget, GdkEventKey *event, gpointer data)
{
GtkListStore    *store;
@@ -1538,13 +1559,26 @@ cb_gfpm_search_keypress (GtkWidget *widget, GdkEventKey 
*event, gpointer data)
gint            r = 0;
char            *v1 = NULL;
char            *v2 = NULL;
+       gchar           *repo = NULL;
+       PM_DB           *search_db;

-       if (event->keyval != GDK_Return)
-               return;
+       if (event!=NULL)
+       {
+               if (event->keyval != GDK_Return)
+                       return;
+       }
search_str = (gchar*)gtk_entry_get_text (GTK_ENTRY(widget));
if (search_str == NULL)
return;

+       repo = gtk_combo_box_get_active_text (gfpm_search_combo);
+       if (repo == NULL) return;
+       if (!strcmp(repo, _("Installed Packages")))
+       {
+               g_free (repo);
+               repo = g_strdup ("local");
+       }
+
model = gtk_tree_view_get_model (GTK_TREE_VIEW(gfpm_pkgs_tvw));
gtk_list_store_clear (GTK_LIST_STORE(model));
store = (GtkListStore*) model;
@@ -1556,7 +1590,8 @@ cb_gfpm_search_keypress (GtkWidget *widget, GdkEventKey 
*event, gpointer data)
}
else
{
-               l = pacman_db_search (sync_db);
+               search_db = pacman_db_register (repo);
+               l = pacman_db_search (search_db);
r = 1;
}
if (l == NULL)
@@ -1623,7 +1658,7 @@ cb_gfpm_search_keypress (GtkWidget *widget, GdkEventKey 
*event, gpointer data)
for (i=l;i;i=pacman_list_next(i))
{
gboolean        ln = FALSE;
-                       pm_pkg = pacman_db_readpkg (sync_db, 
pacman_list_getdata(i));
+                       pm_pkg = pacman_db_readpkg (search_db, 
pacman_list_getdata(i));
pm_lpkg = pacman_db_readpkg (local_db, pacman_list_getdata(i));
if (pacman_pkg_getinfo (pm_lpkg, PM_PKG_VERSION)!=NULL)
{
@@ -1674,6 +1709,8 @@ cb_gfpm_search_keypress (GtkWidget *widget, GdkEventKey 
*event, gpointer data)
}
}
pacman_set_option (PM_OPT_NEEDLES, (long)NULL);
+       if (search_db!=NULL)
+               pacman_db_unregister (search_db);
gfpm_update_status (_("Searching for packages ...DONE"));

g_object_unref (icon_yes);
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to