Git-Url:
http://git.frugalware.org/gitweb/gitweb.cgi?p=gfpm.git;a=commitdiff;h=9aa69d3213fb7419215808f9f0c043971cd781a0
commit 9aa69d3213fb7419215808f9f0c043971cd781a0
Author: Priyank <[EMAIL PROTECTED]>
Date: Thu Sep 27 01:39:36 2007 +0530
gfpm: New feature: Gfpm can now display README.Frugalware for packages that
have it.
* gfpm-quickpane: Added a 'View Readme' button to the Quickpane
* gfpm.glade: Added a new dialog for displaying README for packages
* gfpm-interface: some cleanups and fixes
(Feature Idea by Crazy)
diff --git a/data/gfpm.glade b/data/gfpm.glade
index ea194af..a6ce45d 100644
--- a/data/gfpm.glade
+++ b/data/gfpm.glade
@@ -405,9 +405,6 @@
</widget>
</child>
</widget>
- <packing>
- <property
name="tab_expand">False</property>
- </packing>
</child>
<child>
<widget class="GtkLabel" id="lblblll">
@@ -416,7 +413,6 @@
</widget>
<packing>
<property name="type">tab</property>
- <property
name="tab_expand">False</property>
<property name="tab_fill">False</property>
</packing>
</child>
@@ -436,7 +432,6 @@
</widget>
<packing>
<property name="position">1</property>
- <property
name="tab_expand">False</property>
</packing>
</child>
<child>
@@ -447,7 +442,6 @@
<packing>
<property name="type">tab</property>
<property name="position">1</property>
- <property
name="tab_expand">False</property>
<property name="tab_fill">False</property>
</packing>
</child>
@@ -468,7 +462,6 @@
</widget>
<packing>
<property name="position">2</property>
- <property
name="tab_expand">False</property>
</packing>
</child>
<child>
@@ -480,7 +473,6 @@
<packing>
<property name="type">tab</property>
<property name="position">2</property>
- <property
name="tab_expand">False</property>
<property name="tab_fill">False</property>
</packing>
</child>
@@ -505,8 +497,35 @@
<property name="can_focus">True</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="label"
translatable="yes">Install</property>
<property name="response_id">0</property>
+ <child>
+ <widget class="GtkHBox" id="hbox6">
+ <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="image2">
+ <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">0</property>
+ <property
name="stock">gtk-add</property>
+ </widget>
+ <packing>
+ <property
name="expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel"
id="label13">
+ <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">Install</property>
+ </widget>
+ <packing>
+ <property
name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
</widget>
</child>
<child>
@@ -515,8 +534,35 @@
<property name="can_focus">True</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="label"
translatable="yes">Remove</property>
<property name="response_id">0</property>
+ <child>
+ <widget class="GtkHBox" id="hbox7">
+ <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="image5">
+ <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">0</property>
+ <property
name="stock">gtk-remove</property>
+ </widget>
+ <packing>
+ <property
name="expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel"
id="label15">
+ <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">Remove</property>
+ </widget>
+ <packing>
+ <property
name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
</widget>
<packing>
<property name="position">1</property>
@@ -528,13 +574,80 @@
<property name="can_focus">True</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="label"
translatable="yes">Upgrade</property>
<property name="response_id">0</property>
+ <child>
+ <widget class="GtkHBox" id="hbox8">
+ <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="image7">
+ <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">0</property>
+ <property
name="stock">gtk-redo</property>
+ </widget>
+ <packing>
+ <property
name="expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel"
id="label17">
+ <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">Upgrade</property>
+ </widget>
+ <packing>
+ <property
name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
</widget>
<packing>
<property name="position">2</property>
</packing>
</child>
+ <child>
+ <widget class="GtkButton" id="quick_readme">
+ <property name="visible">True</property>
+ <property name="can_focus">True</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="GtkHBox" id="hbox9">
+ <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="image9">
+ <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">0</property>
+ <property
name="stock">gtk-info</property>
+ </widget>
+ <packing>
+ <property
name="expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel"
id="label19">
+ <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">View Readme</property>
+ </widget>
+ <packing>
+ <property
name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">3</property>
+ </packing>
+ </child>
</widget>
</child>
</widget>
@@ -1397,4 +1510,94 @@
</widget>
</child>
</widget>
+ <widget class="GtkWindow" id="readme_dlg">
+ <property name="width_request">475</property>
+ <property name="height_request">400</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">6</property>
+ <child>
+ <widget class="GtkVBox" id="vbox12">
+ <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="GtkHBox" id="hbox10">
+ <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="image4">
+ <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="yalign">0</property>
+ <property name="stock">gtk-info</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="readme_dlg_label">
+ <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="xpad">6</property>
+ <property name="label" translatable="yes">sdsadsdad</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="padding">3</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow6">
+ <property name="visible">True</property>
+ <property name="can_focus">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="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="GtkTextView" id="readme_dlg_txtvw">
+ <property name="visible">True</property>
+ <property name="can_focus">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="editable">False</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHButtonBox" id="hbuttonbox2">
+ <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="layout_style">GTK_BUTTONBOX_END</property>
+ <child>
+ <widget class="GtkButton" id="button1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</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="label" translatable="yes">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">0</property>
+ <signal name="clicked" handler="gtk_widget_hide"
object="readme_dlg"/>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="padding">2</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
</glade-interface>
diff --git a/src/gfpm-interface.c b/src/gfpm-interface.c
index dd720e6..94b0142 100644
--- a/src/gfpm-interface.c
+++ b/src/gfpm-interface.c
@@ -276,7 +276,7 @@ gfpm_interface_init (void)
gtk_window_set_title (GTK_WINDOW(gfpm_mw), title);
g_free (title);
gtk_widget_show (gfpm_mw);
- gtk_window_present (gfpm_mw);
+ gtk_window_present (GTK_WINDOW(gfpm_mw));
/* unref the glade xml object */
g_object_unref (xml);
@@ -518,6 +518,8 @@ gfpm_load_pkgs_tvw (const char *group_name)
gtk_list_store_clear (GTK_LIST_STORE(model));
icon_yes = gfpm_get_icon (ICON_INSTALLED, 16);
icon_no = gfpm_get_icon (ICON_NINSTALLED, 16);
+ //icon_yes = gtk_widget_render_icon (gfpm_pkgs_tvw, GTK_STOCK_YES,
GTK_ICON_SIZE_MENU, NULL);
+ //icon_no = gtk_widget_render_icon (gfpm_pkgs_tvw, GTK_STOCK_NO,
GTK_ICON_SIZE_MENU, NULL);
icon_up = gfpm_get_icon (ICON_NEEDUPDATE, 16);
icon_ln = gfpm_get_icon (ICON_LOCALNEWER, 16);
while (gtk_events_pending()) gtk_main_iteration ();
@@ -1198,6 +1200,7 @@ cb_gfpm_pkgs_tvw_selected (GtkTreeSelection *selection,
gpointer data)
inst = TRUE;
gfpm_load_files_txtvw (pkgname, inst);
gfpm_load_changelog_txtvw (pkgname, inst);
+
if (v1!=NULL && v2!=NULL)
{
gint ret = pacman_pkg_vercmp (v1, v2);
@@ -1215,6 +1218,25 @@ cb_gfpm_pkgs_tvw_selected (GtkTreeSelection *selection,
gpointer data)
up = FALSE;
}
gfpm_quickpane_show (TRUE, inst, up);
+ /* show the 'View Readme' button for packages that have a
README.Frugalware */
+ if (inst == TRUE)
+ {
+ char *readme_path = NULL;
+ /* strip the pkgrel from version string */
+ char *ver = g_strdup (v1);
+ char *pkgver;
+ pkgver = strrchr (ver, '-');
+ *pkgver = 0;
+ /* generate the path for the README.Frugalware file */
+ readme_path = g_strdup_printf
("/usr/share/doc/%s-%s/README.Frugalware", pkgname, ver);
+ if (g_file_test (readme_path, G_FILE_TEST_EXISTS))
+ {
+ gfpm_quickpane_readme_btn_show ();
+ gfpm_quickpane_readme_dlg_populate
(readme_path);
+ }
+ g_free (readme_path);
+ g_free (ver);
+ }
}
else
{
diff --git a/src/gfpm-quickpane.c b/src/gfpm-quickpane.c
index 088b0bd..de50e78 100644
--- a/src/gfpm-quickpane.c
+++ b/src/gfpm-quickpane.c
@@ -29,15 +29,21 @@ extern GladeXML *xml;
extern GfpmList *install_list;
extern GfpmList *remove_list;
extern GtkWidget *gfpm_pkgs_tvw;
+extern GtkWidget *gfpm_mw;
static GtkWidget *quick_pane;
static GtkWidget *quick_pane_install_btn;
static GtkWidget *quick_pane_remove_btn;
static GtkWidget *quick_pane_upgrade_btn;
+static GtkWidget *quick_pane_readme_btn;
+static GtkWidget *quick_pane_readme_dlg;
+static GtkWidget *quick_pane_readme_dlg_txtvw;
+static GtkWidget *quick_pane_readme_dlg_label;
static void cb_gfpm_quickpane_install_clicked (GtkWidget *button, gpointer
data);
static void cb_gfpm_quickpane_remove_clicked (GtkWidget *button, gpointer data);
static void cb_gfpm_quickpane_upgrade_clicked (GtkWidget *button, gpointer
data);
+static void cb_gfpm_quickpane_readme_clicked (GtkWidget *button, gpointer
data);
void
gfpm_quickpane_init (void)
@@ -45,6 +51,10 @@ gfpm_quickpane_init (void)
quick_pane_install_btn = glade_xml_get_widget (xml, "quick_install");
quick_pane_remove_btn = glade_xml_get_widget (xml, "quick_remove");
quick_pane_upgrade_btn = glade_xml_get_widget (xml, "quick_upgrade");
+ quick_pane_readme_btn = glade_xml_get_widget (xml, "quick_readme");
+ quick_pane_readme_dlg = glade_xml_get_widget (xml, "readme_dlg");
+ quick_pane_readme_dlg_label = glade_xml_get_widget (xml,
"readme_dlg_label");
+ quick_pane_readme_dlg_txtvw = glade_xml_get_widget (xml,
"readme_dlg_txtvw");
quick_pane = glade_xml_get_widget (xml, "quick_pane");
gfpm_quickpane_show (FALSE, 0, 0);
g_signal_connect (G_OBJECT(quick_pane_install_btn),
@@ -59,6 +69,18 @@ gfpm_quickpane_init (void)
"clicked",
G_CALLBACK(cb_gfpm_quickpane_upgrade_clicked),
NULL);
+ g_signal_connect (G_OBJECT(quick_pane_readme_btn),
+ "clicked",
+
G_CALLBACK(cb_gfpm_quickpane_readme_clicked),
+ NULL);
+
+ return;
+}
+
+void
+gfpm_quickpane_readme_btn_show (void)
+{
+ gtk_widget_show (quick_pane_readme_btn);
return;
}
@@ -84,6 +106,7 @@ gfpm_quickpane_show (gboolean show, gboolean what, gboolean
upgrade)
gtk_widget_hide (quick_pane_upgrade_btn);
gtk_widget_show (quick_pane_install_btn);
}
+ gtk_widget_hide (quick_pane_readme_btn);
}
else
{
@@ -93,6 +116,51 @@ gfpm_quickpane_show (gboolean show, gboolean what, gboolean
upgrade)
return;
}
+void
+gfpm_quickpane_readme_dlg_populate (const char *pathname)
+{
+ GtkTextBuffer *buffer;
+ GtkTextIter iter;
+
+ buffer = gtk_text_view_get_buffer
(GTK_TEXT_VIEW(quick_pane_readme_dlg_txtvw));
+ gtk_text_buffer_set_text (buffer, "", 0);
+ gtk_text_buffer_get_iter_at_offset (buffer, &iter, 0);
+ gtk_label_set_text (GTK_LABEL(quick_pane_readme_dlg_label), pathname);
+ if (g_file_test (pathname, G_FILE_TEST_EXISTS))
+ {
+ FILE *fp = NULL;
+ gchar line[PATH_MAX+1];
+ if ((fp = fopen(pathname, "r")) == NULL)
+ {
+ gtk_text_buffer_insert (buffer, &iter, _("No Readme
available for this package"), -1);
+ }
+ else
+ {
+ while (!feof(fp))
+ {
+ fgets (line, PATH_MAX, fp);
+ gtk_text_buffer_insert (buffer, &iter, line,
-1);
+ line[0] = 0;
+ }
+ fclose (fp);
+ }
+ }
+ else
+ {
+ gtk_text_buffer_insert (buffer, &iter, _("Package is not
installed"), -1);
+ }
+
+ return;
+}
+
+void
+gfpm_quickpane_readme_dlg_show (void)
+{
+ gtk_window_set_transient_for (GTK_WINDOW(quick_pane_readme_dlg),
GTK_WINDOW(gfpm_mw));
+ gtk_widget_show (quick_pane_readme_dlg);
+
+ return;
+}
/* CALLBACKS */
@@ -132,3 +200,11 @@ cb_gfpm_quickpane_upgrade_clicked (GtkWidget *button,
gpointer data)
return;
}
+static void
+cb_gfpm_quickpane_readme_clicked (GtkWidget *button, gpointer data)
+{
+ gfpm_quickpane_readme_dlg_show ();
+
+ return;
+}
+
diff --git a/src/gfpm-quickpane.h b/src/gfpm-quickpane.h
index f487233..a7855ab 100644
--- a/src/gfpm-quickpane.h
+++ b/src/gfpm-quickpane.h
@@ -8,7 +8,13 @@
void gfpm_quickpane_init (void);
+void gfpm_quickpane_readme_btn_show (void);
+
void gfpm_quickpane_show (gboolean, gboolean, gboolean);
+void gfpm_quickpane_readme_dlg_populate (const char *);
+
+void gfpm_quickpane_readme_dlg_show (void);
+
#endif
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git