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

commit 67a21d9d4a25b9cd8e6ceaf4b24bc11af5bb86ee
Author: Priyank <[EMAIL PROTECTED]>
Date:   Tue Feb 26 11:29:10 2008 +0530

gfpm-repomanager: users can now edit a server's url and comments.

diff --git a/src/gfpm-repomanager.c b/src/gfpm-repomanager.c
index 98a8068..0b3a7c7 100644
--- a/src/gfpm-repomanager.c
+++ b/src/gfpm-repomanager.c
@@ -582,8 +582,86 @@ gfpm_servmgr_move_server (const char *server, const int 
move_direction)
static void
gfpm_servmgr_edit_server (gfpm_server_entry_t *s)
{
+       gint                    response;
+       GtkTextBuffer   *buffer = NULL;
+       GtkTextIter             iter;
+       GList                   *list = NULL;
+       gchar                   *line = NULL;
+
+       buffer = gtk_text_view_get_buffer 
(GTK_TEXT_VIEW(gfpm_servmgr_server_input_dlg_entry2));
+       gtk_text_buffer_set_text (buffer, "", 0);
+       gtk_text_buffer_get_iter_at_offset (buffer, &iter, 0);
+       list = s->comments;
+       while (list != NULL)
+       {
+               line = g_strdup(list->data);
+               if (line[0]=='#') line[0] = ' ';
+               fwutil_trim (line);
+               gtk_text_buffer_insert (buffer, &iter, (char*)line, -1);
+               gtk_text_buffer_insert (buffer, &iter, "\n", -1);
+               g_free (line);
+               list = g_list_next (list);
+       }
+
gtk_entry_set_text (GTK_ENTRY(gfpm_servmgr_server_input_dlg_entry1), s->url);
-       gtk_dialog_run (gfpm_servmgr_server_input_dlg);
+       gtk_window_set_title (GTK_WINDOW(gfpm_servmgr_server_input_dlg), 
_("Edit Server"));
+       run:response = gtk_dialog_run 
(GTK_DIALOG(gfpm_servmgr_server_input_dlg));
+
+       switch (response)
+       {
+               gchar           *comments = NULL;
+               gchar           *url = NULL;
+               GtkTextIter siter;
+               GtkTextIter eiter;
+
+               case 32: /* OK Button */
+               {
+                       url = gtk_entry_get_text 
(GTK_ENTRY(gfpm_servmgr_server_input_dlg_entry1));
+                       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 (s->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;
+                               g_list_free (s->comments);
+                               s->comments = NULL;
+                               cslice = strtok (comments, "\n");
+                               if (cslice != NULL)
+                               {
+                                       do {
+                                               gchar *text = g_strdup_printf 
("# %s", cslice);
+                                               s->comments = g_list_append 
(s->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);
+                       /* update repository file */
+                       gfpm_write_servers_to_file (curr_repo);
+                       /* repopulate the server list and display */
+                       gfpm_repomgr_populate_servtvw (curr_repo);
+                       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);
+                       break;
+       }
+       /* set the original title back */
+       gtk_window_set_title (GTK_WINDOW(gfpm_servmgr_server_input_dlg), _("New 
Server"));
+
return;
}

@@ -744,10 +822,10 @@ cb_gfpm_servmgr_btnedit_clicked (GtkButton *button, 
gpointer data)
break;
slist = g_list_next (slist);
}
-
-               g_list_free (sp->comments);
gfpm_servmgr_edit_server (sp);
}
+
+       return;
}

static void
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to