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

Reply via email to