Git-Url:
http://git.frugalware.org/gitweb/gitweb.cgi?p=gfpm.git;a=commitdiff;h=f2dbc5ec5b9d99d3803a320a135ad0c06752a10f
commit f2dbc5ec5b9d99d3803a320a135ad0c06752a10f
Author: Priyank Gosalia <[EMAIL PROTECTED]>
Date: Tue Feb 26 01:07:32 2008 +0530
gfpm-repomanager: gfpm-servermanager: users can now add their own servers.
diff --git a/data/gfpm.glade b/data/gfpm.glade
index 8e6850a..c824192 100644
--- a/data/gfpm.glade
+++ b/data/gfpm.glade
@@ -2310,4 +2310,132 @@
</widget>
</child>
</widget>
+ <widget class="GtkDialog" id="gfpm_servmgr_input_dlg">
+ <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="window_position">GTK_WIN_POS_CENTER_ON_PARENT</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="has_separator">False</property>
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox5">
+ <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">2</property>
+ <child>
+ <widget class="GtkLabel" id="label25">
+ <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"><span
size="larger"><b>Add a new server</b></span></property>
+ <property name="use_markup">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHSeparator" id="hseparator3">
+ <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="padding">3</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label26">
+ <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">Repository URL</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkEntry" id="entry1">
+ <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>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label27">
+ <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">Comment
(Optional)</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow11">
+ <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_OUT</property>
+ <child>
+ <widget class="GtkTextView" id="commentview">
+ <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>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="position">6</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area5">
+ <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="GtkButton" id="button7">
+ <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-ok</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">32</property>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkButton" id="button8">
+ <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-cancel</property>
+ <property name="use_stock">True</property>
+ <property name="response_id">64</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
</glade-interface>
diff --git a/src/gfpm-repomanager.c b/src/gfpm-repomanager.c
index 4c2f86a..7cad0c9 100644
--- a/src/gfpm-repomanager.c
+++ b/src/gfpm-repomanager.c
@@ -30,6 +30,8 @@
#define MOVE_UP 1
#define MOVE_DN 0
+extern GtkWidget *gfpm_mw;
+
static gfpm_repolist_t *repolist = NULL;
static gchar *curr_repo = NULL;
@@ -44,6 +46,9 @@ static GtkWidget *gfpm_repomgr_btnedit;
/* Server manager widgets */
static GtkWidget *gfpm_servmgr_dlg;
+static GtkWidget *gfpm_servmgr_server_input_dlg;
+static GtkWidget *gfpm_servmgr_server_input_dlg_entry1;
+static GtkWidget *gfpm_servmgr_server_input_dlg_entry2;
static GtkWidget *gfpm_servmgr_treeview;
static GtkWidget *gfpm_servmgr_btnadd;
static GtkWidget *gfpm_servmgr_btndel;
@@ -53,6 +58,8 @@ static GtkWidget *gfpm_servmgr_btnedit;
static void gfpm_write_servers_to_file (const gchar *reponame);
+static gfpm_server_entry_t * gfpm_servmgr_get_server_input (void);
+
/* signal callbacks */
static void cb_gfpm_repomgr_btnedit_clicked (GtkButton *button, gpointer data);
static void cb_gfpm_servmgr_btndel_clicked (GtkButton *button, gpointer data);
@@ -81,6 +88,9 @@ gfpm_repomanager_init (void)
gfpm_servmgr_btnedit = gfpm_get_widget ("servman_edit");
gfpm_servmgr_btnmup = gfpm_get_widget ("servman_mup");
gfpm_servmgr_btnmdn = gfpm_get_widget ("servman_mdn");
+ gfpm_servmgr_server_input_dlg = gfpm_get_widget
("gfpm_servmgr_input_dlg");
+ gfpm_servmgr_server_input_dlg_entry1 = gfpm_get_widget ("entry1");
+ gfpm_servmgr_server_input_dlg_entry2 = gfpm_get_widget ("commentview");
/* setup repo store */
store = gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
@@ -111,7 +121,7 @@ gfpm_repomanager_init (void)
NULL);
gtk_tree_view_column_set_resizable (column, FALSE);
gtk_tree_view_append_column (GTK_TREE_VIEW(gfpm_servmgr_treeview), column);
-
+
renderer = gtk_cell_renderer_text_new ();
column = gtk_tree_view_column_new_with_attributes (_("Server"),
renderer,
@@ -135,6 +145,71 @@ gfpm_repomanager_init (void)
return;
}
+static gfpm_server_entry_t *
+gfpm_servmgr_get_server_input (void)
+{
+ gint response;
+ gchar *url = NULL;
+ GtkTextBuffer *buffer = NULL;
+ gfpm_server_entry_t *ret = NULL;
+
+ ret = (gfpm_server_entry_t *) malloc (sizeof(gfpm_server_entry_t));
+ memset (ret, 0, sizeof(gfpm_server_entry_t));
+ run: response = gtk_dialog_run
(GTK_DIALOG(gfpm_servmgr_server_input_dlg));
+ url = gtk_entry_get_text
(GTK_ENTRY(gfpm_servmgr_server_input_dlg_entry1));
+ buffer = gtk_text_view_get_buffer
(GTK_TEXT_VIEW(gfpm_servmgr_server_input_dlg_entry2));
+
+ switch (response)
+ {
+ gchar *comments = NULL;
+ GtkTextIter siter;
+ GtkTextIter eiter;
+
+ case 32: /* OK Button */
+ {
+ if (url == NULL || !strlen (url))
+ {
+ gfpm_error (_("Error"), _("The Repository URL
field cannot be left blank"));
+ gtk_widget_hide (gfpm_servmgr_server_input_dlg);
+ goto run;
+ }
+ strncpy (ret->url, url, strlen(url));
+ gtk_text_buffer_get_start_iter (buffer, &siter);
+ gtk_text_buffer_get_end_iter (buffer, &eiter);
+ comments = gtk_text_buffer_get_text (buffer, &siter,
&eiter, FALSE);
+ if (comments != NULL)
+ {
+ gchar *cslice = NULL;
+ cslice = strtok (comments, "\n");
+ if (cslice != NULL)
+ {
+ do {
+ gchar *text = g_strdup_printf
("# %s", cslice);
+ ret->comments = g_list_append
(ret->comments, (gpointer) text);
+ } while
((cslice=strtok(NULL,"\n"))!=NULL);
+ }
+ }
+ gtk_entry_set_text
(GTK_ENTRY(gfpm_servmgr_server_input_dlg_entry1), "");
+ gtk_text_buffer_set_text (buffer, "", 0);
+ gtk_text_view_set_buffer
(GTK_TEXT_VIEW(gfpm_servmgr_server_input_dlg_entry2), buffer);
+ gtk_widget_hide (gfpm_servmgr_server_input_dlg);
+ break;
+ }
+
+ case 64: /* CANCEL Button */
+ gtk_entry_set_text
(GTK_ENTRY(gfpm_servmgr_server_input_dlg_entry1), "");
+ gtk_text_buffer_set_text (buffer, "", 0);
+ gtk_text_view_set_buffer
(GTK_TEXT_VIEW(gfpm_servmgr_server_input_dlg_entry2), buffer);
+ gtk_widget_hide (gfpm_servmgr_server_input_dlg);
+ g_free (ret);
+ return NULL;
+
+ break;
+ }
+
+ return ret;
+}
+
static GList *
gfpm_repomgr_get_servers_from_repofile (const char *conf_file)
{
@@ -587,20 +662,14 @@ cb_gfpm_repomgr_btnedit_clicked (GtkButton *button,
gpointer data)
static void
cb_gfpm_servmgr_btnadd_clicked (GtkButton *button, gpointer data)
{
- gint msgres = 0;
- gchar *path = NULL;
- gchar *server = NULL;
+ gfpm_server_entry_t *s = NULL;
GList *rlist = NULL;
- GList *slist = NULL;
gfpm_repo_t *rp = NULL;
- gfpm_server_entry_t *s = NULL;
+ GList *slist = NULL;
- server = gfpm_input (_("Add new server"), _("Enter the URL of the
server: "), &msgres);
- if (msgres != GTK_RESPONSE_ACCEPT)
- return;
- if (!strlen(server))
+ s = gfpm_servmgr_get_server_input ();
+ if (s == NULL)
return;
- /* check if the server already exists */
rlist = repolist->list;
while (rlist != NULL)
{
@@ -613,22 +682,21 @@ cb_gfpm_servmgr_btnadd_clicked (GtkButton *button,
gpointer data)
}
while (slist != NULL)
{
- if (!strcmp(slist->data,server))
+ if (!strcmp(slist->data,s->url))
{
gfpm_error (_("Server already exists"), _("The server you're trying to add
already exists"));
+ g_free (s);
return;
}
slist = g_list_next (slist);
}
- s = (gfpm_server_entry_t*) malloc (sizeof(gfpm_server_entry_t));
- memset (s, 0, sizeof(gfpm_server_entry_t));
- sprintf (s->url, "%s", server);
rp->servers = g_list_append (rp->servers, s);
-
+
+ /* update repository file */
gfpm_write_servers_to_file (curr_repo);
- gfpm_repomgr_populate_servtvw (curr_repo);
- g_free (path);
+ /* repopulate the server list and display */
+ gfpm_repomgr_populate_servtvw (curr_repo);
return;
}
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git