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"><b><span size="larger">Package
Search</span></b></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"><b>Search in :</b></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