Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=fw-control-center.git;a=commitdiff;h=4803ac59495a052af993c4e3467deed60fc2a261

commit 4803ac59495a052af993c4e3467deed60fc2a261
Author: Priyank <[EMAIL PROTECTED]>
Date:   Thu Mar 27 12:54:46 2008 +0530

gnetconfig-interface_detect: use libfwnetconfig's fwnet_iflist() for interface 
detection
* Now, a description of the interface is also displayed
* Some enhancements in the interface detection dialog

diff --git a/gnetconfig/src/gnetconfig-interface_detect.c 
b/gnetconfig/src/gnetconfig-interface_detect.c
index 0a11400..e000646 100644
--- a/gnetconfig/src/gnetconfig-interface_detect.c
+++ b/gnetconfig/src/gnetconfig-interface_detect.c
@@ -44,23 +44,27 @@ gnetconfig_if_detect_dlg_init (void)
GtkWidget               *button_box;
GtkWidget               *vbox;
GtkWidget               *label;
+       GtkWidget               *scrollw;
GtkListStore            *store;
GtkCellRenderer         *renderer;
GtkTreeViewColumn       *column;

if_detect_dlg = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+       gtk_window_set_default_size (GTK_WINDOW(if_detect_dlg), 450, 200);
+       scrollw = gtk_scrolled_window_new (NULL, NULL);
+       gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(scrollw), 
GTK_SHADOW_ETCHED_OUT);
+       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(scrollw), 
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_container_set_border_width (GTK_CONTAINER(if_detect_dlg), 8);
-       gtk_window_set_title (GTK_WINDOW(if_detect_dlg), _("Detected 
interfaces:"));
-       gtk_window_set_resizable (GTK_WINDOW(if_detect_dlg), FALSE);
+       gtk_window_set_title (GTK_WINDOW(if_detect_dlg), _("Detected 
Interfaces"));
gtk_window_set_transient_for (GTK_WINDOW(if_detect_dlg), 
GTK_WINDOW(gn_if_add_dialog));
vbox = gtk_vbox_new (FALSE, 4);
if_detect_treeview = gtk_tree_view_new ();
-       gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(if_detect_treeview), 
FALSE);
label = gtk_label_new (_("The following interfaces were detected"));
gtk_box_pack_start (GTK_BOX(vbox), label, FALSE, TRUE, 2);
-       gtk_box_pack_start (GTK_BOX(vbox), GTK_WIDGET(if_detect_treeview), 
TRUE, TRUE, 0);
+       gtk_container_add (GTK_CONTAINER(scrollw), 
GTK_WIDGET(if_detect_treeview));
+       gtk_box_pack_start (GTK_BOX(vbox), GTK_WIDGET(scrollw), TRUE, TRUE, 2);
gtk_container_add (GTK_CONTAINER(if_detect_dlg), GTK_WIDGET(vbox));
-       store = gtk_list_store_new (4, GDK_TYPE_PIXBUF, G_TYPE_STRING, 
G_TYPE_STRING, G_TYPE_BOOLEAN);
+       store = gtk_list_store_new (5, GDK_TYPE_PIXBUF, G_TYPE_STRING, 
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN);
gtk_tree_view_set_model (GTK_TREE_VIEW(if_detect_treeview), 
GTK_TREE_MODEL(store));

renderer = gtk_cell_renderer_pixbuf_new ();
@@ -77,16 +81,26 @@ gnetconfig_if_detect_dlg_init (void)
"text", 1,
NULL);
gtk_tree_view_column_set_resizable (column, FALSE);
-       gtk_tree_view_column_set_min_width (column, 80);
-       g_object_set (G_OBJECT(column), "expand", TRUE, "spacing", 4, NULL);
+       gtk_tree_view_column_set_min_width (column, 40);
+       g_object_set (G_OBJECT(column), "expand", FALSE, "spacing", 4, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW(if_detect_treeview), column);

renderer = gtk_cell_renderer_text_new ();
-       column = gtk_tree_view_column_new_with_attributes ("Status",
+       column = gtk_tree_view_column_new_with_attributes ("Description",
renderer,
"text", 2,
NULL);
gtk_tree_view_column_set_min_width (column, 60);
+       gtk_tree_view_column_set_resizable (column, TRUE);
+       g_object_set (G_OBJECT(column), "expand", TRUE, "spacing", 4, NULL);
+       gtk_tree_view_append_column (GTK_TREE_VIEW(if_detect_treeview), column);
+
+       renderer = gtk_cell_renderer_text_new ();
+       column = gtk_tree_view_column_new_with_attributes ("Status",
+                                                       renderer,
+                                                       "text", 3,
+                                                       NULL);
+       gtk_tree_view_column_set_min_width (column, 60);
gtk_tree_view_column_set_resizable (column, FALSE);
gtk_tree_view_append_column (GTK_TREE_VIEW(if_detect_treeview), column);

@@ -117,24 +131,18 @@ gnetconfig_if_detect_dlg_init (void)
int
gnetconfig_detect_interfaces (void)
{
-       FILE                    *fh = NULL;
-       char                    buf[512];
-       char                    name[512];
-       char                    *s;
-       gint                    n_if, i;
+       char                    *name = NULL;
+       char                    *desc = NULL;
+       gint                    n_if, i, l;
GtkTreeModel            *model;
GtkListStore            *store;
GtkTreeIter             iter;
GdkPixbuf               *yes_pixbuf;
GdkPixbuf               *no_pixbuf;
fwnet_interface_t       *interface;
+       GList                   *iflist = NULL;
+       GList                   *tlist = NULL;

-       fh = fopen ("/proc/net/dev", "r");
-       if (fh == NULL)
-       {
-               gn_error (_("Error opening /proc/net/dev"));
-               return 1;
-       }
n_if = g_list_length (active_profile->interfaces);
yes_pixbuf = gtk_widget_render_icon (GTK_WIDGET(if_detect_treeview),
GTK_STOCK_YES,
@@ -145,16 +153,22 @@ gnetconfig_detect_interfaces (void)
model = gtk_tree_view_get_model (GTK_TREE_VIEW(if_detect_treeview));
store = GTK_LIST_STORE (model);
gtk_list_store_clear (store);
-       fgets (buf, sizeof(buf), fh);
-       fgets (buf, sizeof(buf), fh);
+       iflist = fwnet_iflist ();
+       if (iflist == NULL)
+       {
+               gn_error (_("Cannot populate interface list"));
+               return 1;
+       }
+       tlist = iflist;

-       while ( fgets (buf, sizeof(buf), fh) )
+       for (l=0;l<(g_list_length(iflist)/2);l++)
{
+               name = (char*) tlist->data;
+               tlist = g_list_next (tlist);
+               desc = (char*) tlist->data;
+               tlist = g_list_next (tlist);
gboolean configured = FALSE;
-               s = gnetconfig_get_ifname (name, buf);
-               if (!strcmp(name, "lo")) /* skip lo */
-                       continue;
-
+
/* check if the interface is already present in our profile */
for (i=0;i<n_if;i++)
{
@@ -172,16 +186,18 @@ gnetconfig_detect_interfaces (void)
gtk_list_store_set (store, &iter,
0, yes_pixbuf,
1, name,
-                                       2, _("Configured"),
-                                       3, TRUE, -1);
+                                       2, desc,
+                                       3, _("Configured"),
+                                       4, TRUE, -1);
}
else
{
gtk_list_store_set (store, &iter,
0, no_pixbuf,
1, name,
-                                       2, _("Not Configured"),
-                                       3, FALSE, -1);
+                                       2, desc,
+                                       3, _("Not Configured"),
+                                       4, FALSE, -1);
}
}
gtk_window_set_position (GTK_WINDOW(if_detect_dlg), 
GTK_WIN_POS_CENTER_ON_PARENT);
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to