Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=fwife.git;a=commitdiff;h=6e85337822af89ae104bf6e4823e03af296984af
commit 6e85337822af89ae104bf6e4823e03af296984af Author: Elentir <elen...@mailoo.org> Date: Sat Jul 11 22:27:03 2009 +0200 improve netconf plugin * fix a bug with dsl configuration * rewrite plugin interface diff --git a/src/plugins/netconf.c b/src/plugins/netconf.c index 591ea1b..7858adc 100644 --- a/src/plugins/netconf.c +++ b/src/plugins/netconf.c @@ -40,7 +40,6 @@ #include "common.h" -static GtkWidget *intercombo=NULL; static GtkWidget *viewif=NULL; static GList *iflist=NULL; static GList *interfaceslist=NULL; @@ -51,10 +50,8 @@ enum { COLUMN_NET_IMAGE, COLUMN_NET_NAME, - COLUMN_NET_IP, - COLUMN_NET_NETMASK, - COLUMN_NET_GATEWAY, - COLUMN_NET_NAMESERV + COLUMN_NET_DESC, + COLUMN_NET_TYPE }; plugin_t plugin = @@ -81,19 +78,6 @@ plugin_t *info() return &plugin; } -void change_interface(GtkComboBox *combo, gpointer labelinfo) -{ - char *selected; - GtkTreeIter iter; - GtkTreeModel *model; - gtk_combo_box_get_active_iter(combo, &iter); - model = gtk_combo_box_get_model(combo); - gtk_tree_model_get (model, &iter, 0, &selected, -1); - GList * elem = g_list_find_custom(iflist, (gconstpointer) selected, cmp_str); - int i = g_list_position(iflist, elem); - gtk_label_set_label(GTK_LABEL(labelinfo), (char*)g_list_nth_data(iflist, i+1)); -} - GtkWidget *getNettypeCombo() { GtkWidget *combo; @@ -251,7 +235,7 @@ int configure_wireless(fwnet_interface_t *interface) return 0; } -int configure_static(fwnet_interface_t *interface, GtkTreeIter iter) +int configure_static(fwnet_interface_t *interface) { GtkWidget *phboxtemp, *labeltemp; char option[50]; @@ -302,11 +286,7 @@ int configure_static(fwnet_interface_t *interface, GtkTreeIter iter) gateway = (char*)gtk_entry_get_text(GTK_ENTRY(pEntryGateway)); if(strlen(gateway)) - snprintf(interface->gateway, FWNET_GW_MAX_SIZE, "default gw %s", gateway); - - GtkTreeView *treeview = (GtkTreeView *)viewif; - GtkTreeModel *model = gtk_tree_view_get_model (treeview); - gtk_list_store_set (GTK_LIST_STORE (model), &iter, COLUMN_NET_IP, ipaddr,COLUMN_NET_NETMASK, netmask, COLUMN_NET_GATEWAY, gateway, -1); + snprintf(interface->gateway, FWNET_GW_MAX_SIZE, "default gw %s", gateway); break; /* user cancel */ case GTK_RESPONSE_CANCEL: @@ -387,8 +367,8 @@ int dsl_config(fwnet_profile_t *profile) passwd = (char*)gtk_entry_get_text(GTK_ENTRY(pEntryPass)); passverify = (char*)gtk_entry_get_text(GTK_ENTRY(pEntryVerify)); - gtk_combo_box_get_active_iter(GTK_COMBO_BOX(intercombo), &iter); - model = gtk_combo_box_get_model(GTK_COMBO_BOX(intercombo)); + gtk_combo_box_get_active_iter(GTK_COMBO_BOX(intercombodsl), &iter); + model = gtk_combo_box_get_model(GTK_COMBO_BOX(intercombodsl)); gtk_tree_model_get (model, &iter, 0, &iface, -1); if(strcmp(passverify, passwd)) @@ -420,26 +400,40 @@ int dsl_config(fwnet_profile_t *profile) int add_interface(GtkWidget *button, gpointer data) { - fwnet_interface_t *newinterface = NULL; - GtkWidget *cellview; - GdkPixbuf *connectimg; + fwnet_interface_t *newinterface = NULL; char *ptr = NULL; char *nettype = NULL; char *iface = NULL; unsigned int i; + GtkTreeModel *model = NULL; GtkTreeIter iter; - GtkTreeModel *model; - gtk_combo_box_get_active_iter(GTK_COMBO_BOX(intercombo), &iter); - model = gtk_combo_box_get_model(GTK_COMBO_BOX(intercombo)); - gtk_tree_model_get (model, &iter, 0, &iface, -1); + GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(viewif)); + model = gtk_tree_view_get_model(GTK_TREE_VIEW(GTK_TREE_VIEW(viewif))); + + if(gtk_tree_selection_get_selected(selection, &model, &iter)) + { + gtk_tree_model_get (model, &iter, COLUMN_NET_NAME, &iface, -1); + } + else + { + return 0; + } for(i=0;i<g_list_length(interfaceslist); i+=2) { if(!strcmp((char*)g_list_nth_data(interfaceslist, i), iface)) { - fwife_error(_("This interface has been already configured!")); - return -1; + int retquest = fwife_question(_("This interface has been already configured! Do you want to configure it again?")); + if(retquest == GTK_RESPONSE_YES) { + free(g_list_nth_data(interfaceslist, i)); + free(g_list_nth_data(interfaceslist, i+1)); + interfaceslist = g_list_delete_link (interfaceslist, g_list_nth(interfaceslist, i)); + interfaceslist = g_list_delete_link (interfaceslist, g_list_nth(interfaceslist, i)); + break; + } else { + return -1; + } } } @@ -456,18 +450,7 @@ int add_interface(GtkWidget *button, gpointer data) if(strcmp(nettype, "lo")) { interfaceslist = g_list_append(interfaceslist, strdup(iface)); - interfaceslist = g_list_append(interfaceslist, newinterface); - - GtkTreeView *treeview = (GtkTreeView *)data; - model = gtk_tree_view_get_model (treeview); - - cellview = gtk_cell_view_new (); - connectimg = gtk_widget_render_icon (cellview, GTK_STOCK_NETWORK, - GTK_ICON_SIZE_BUTTON, NULL); - gtk_widget_destroy (cellview); - - gtk_list_store_append (GTK_LIST_STORE (model), &iter); - gtk_list_store_set (GTK_LIST_STORE (model), &iter, COLUMN_NET_IMAGE, connectimg, COLUMN_NET_NAME, iface, -1); + interfaceslist = g_list_append(interfaceslist, newinterface); } if(strcmp(nettype, "lo") && fwnet_is_wireless_device(iface)) @@ -488,46 +471,55 @@ int add_interface(GtkWidget *button, gpointer data) "set in order to connect.\n If so, they'll have assigned a hostname to your machine.\n If you were" "assigned a DHCP hostname, please enter it below.\n If you do not have a DHCP hostname, just" "hit enter."), NULL); - if(strlen(ptr)) + + if(ptr != NULL && strlen(ptr)) snprintf(newinterface->dhcp_opts, PATH_MAX, "-t 10 -h %s\n", ptr); else newinterface->dhcp_opts[0]='\0'; + newinterface->options = g_list_append(newinterface->options, strdup("dhcp")); - gtk_list_store_set (GTK_LIST_STORE (model), &iter, COLUMN_NET_IP, "dhcp", COLUMN_NET_NAMESERV, ptr, -1); - FREE(ptr); + gtk_list_store_set (GTK_LIST_STORE (model), &iter, COLUMN_NET_TYPE, "dhcp", -1); + free(ptr); } else if(!strcmp(nettype, "static")) { - configure_static(newinterface, iter); + if(configure_static(newinterface) != -1) + gtk_list_store_set (GTK_LIST_STORE (model), &iter, COLUMN_NET_TYPE, "static", -1); } return 0; } -void del_interface(GtkWidget *button, gpointer data) +int del_interface(GtkWidget *button, gpointer data) { + GtkTreeModel *model = NULL; GtkTreeIter iter; - GtkTreeView *treeview = (GtkTreeView *)data; - GtkTreeModel *model = gtk_tree_view_get_model (treeview); - GtkTreeSelection *selection = gtk_tree_view_get_selection (treeview); char *nameif; - - if (gtk_tree_selection_get_selected (selection, NULL, &iter)) + + GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(viewif)); + model = gtk_tree_view_get_model(GTK_TREE_VIEW(GTK_TREE_VIEW(viewif))); + + if(gtk_tree_selection_get_selected(selection, &model, &iter)) { - gtk_tree_model_get (model, &iter, 1, &nameif, -1); + gtk_tree_model_get (model, &iter, COLUMN_NET_NAME, &nameif, -1); GList * elem = g_list_find_custom(interfaceslist, (gconstpointer) nameif, cmp_str); gint i = g_list_position(interfaceslist, elem); interfaceslist = g_list_delete_link (interfaceslist, g_list_nth(interfaceslist, i)); interfaceslist = g_list_delete_link (interfaceslist, g_list_nth(interfaceslist, i)); - gtk_list_store_remove (GTK_LIST_STORE (model), &iter); - } + gtk_list_store_set (GTK_LIST_STORE (model), &iter, COLUMN_NET_TYPE, "", -1); + return 0; + } + else + { + return 0; + } } + GtkWidget *load_gtk_widget() { - GtkWidget *pVBox, *pFrame, *pHBoxFrame, *pVBoxFrame, *phboxtemp, *labeltemp; + GtkWidget *pVBox, *pvboxbut; GtkWidget *hboxview; - GtkWidget *labelinfo, *labeldesc; GtkWidget *info; GtkListStore *store; @@ -535,9 +527,8 @@ GtkWidget *load_gtk_widget() GtkTreeViewColumn *col; GtkCellRenderer *renderer; - pVBoxFrame = gtk_vbox_new(FALSE, 0); - pHBoxFrame = gtk_hbox_new(FALSE, 0); pVBox = gtk_vbox_new(FALSE, 0); + pvboxbut = gtk_vbox_new(FALSE, 0); hboxview = gtk_hbox_new(FALSE, 0); info = gtk_label_new(NULL); @@ -546,7 +537,7 @@ GtkWidget *load_gtk_widget() gtk_box_pack_start (GTK_BOX (pVBox), info, FALSE, FALSE, 5); - store = gtk_list_store_new(6, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); + store = gtk_list_store_new(5, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); model = GTK_TREE_MODEL(store); viewif = gtk_tree_view_new_with_model(model); @@ -562,52 +553,29 @@ GtkWidget *load_gtk_widget() gtk_tree_view_append_column(GTK_TREE_VIEW(viewif), col); renderer = gtk_cell_renderer_text_new(); - col = gtk_tree_view_column_new_with_attributes (_("Ip Address"), renderer, "text", COLUMN_NET_IP, NULL); - gtk_tree_view_append_column(GTK_TREE_VIEW(viewif), col); - - renderer = gtk_cell_renderer_text_new(); - col = gtk_tree_view_column_new_with_attributes (_("Netmask"), renderer, "text", COLUMN_NET_NETMASK, NULL); + col = gtk_tree_view_column_new_with_attributes (_("Description"), renderer, "text", COLUMN_NET_DESC, NULL); + gtk_tree_view_column_set_expand (col, TRUE); gtk_tree_view_append_column(GTK_TREE_VIEW(viewif), col); - + renderer = gtk_cell_renderer_text_new(); - col = gtk_tree_view_column_new_with_attributes (_("Gateway"), renderer, "text", COLUMN_NET_GATEWAY, NULL); - gtk_tree_view_append_column(GTK_TREE_VIEW(viewif), col); + col = gtk_tree_view_column_new_with_attributes (_("Configuration"), renderer, "text", COLUMN_NET_TYPE, NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(viewif), col); - renderer = gtk_cell_renderer_text_new(); - col = gtk_tree_view_column_new_with_attributes (_("DHCP Nameserver"), renderer, "text", COLUMN_NET_NAMESERV, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(viewif), col); - gtk_box_pack_start(GTK_BOX(hboxview), viewif, TRUE, TRUE, 10); - gtk_box_pack_start(GTK_BOX(pVBox), hboxview, TRUE, TRUE, 5); - - pFrame = gtk_frame_new(_("Network configuration")); - gtk_container_add(GTK_CONTAINER(pFrame), pVBoxFrame); - gtk_box_pack_start(GTK_BOX(pVBox), pFrame, FALSE, FALSE, 5); - gtk_box_pack_start(GTK_BOX(pVBoxFrame), pHBoxFrame, FALSE, FALSE, 12); - - labeldesc = gtk_label_new(_("Interface :")); - gtk_box_pack_start(GTK_BOX(pHBoxFrame), labeldesc, FALSE, FALSE, 5); + gtk_box_pack_start(GTK_BOX(hboxview), viewif, TRUE, TRUE, 10); + GtkWidget *image = gtk_image_new_from_file(g_strdup_printf("%s/configure24.png", IMAGEDIR)); + GtkWidget *btnsave = gtk_button_new_with_label(_("Configure")); + gtk_button_set_image(GTK_BUTTON(btnsave), image); + gtk_box_pack_start(GTK_BOX(pvboxbut), btnsave, FALSE, FALSE, 10); + GtkWidget *btndel = gtk_button_new_from_stock (GTK_STOCK_REMOVE); + gtk_box_pack_start(GTK_BOX(pvboxbut), btndel, FALSE, FALSE, 10); + gtk_box_pack_start(GTK_BOX(hboxview), pvboxbut, FALSE, FALSE, 10); - intercombo = gtk_combo_box_new_text(); - gtk_box_pack_start(GTK_BOX(pHBoxFrame), intercombo, TRUE, TRUE, 5); + gtk_box_pack_start(GTK_BOX(pVBox), hboxview, TRUE, TRUE, 5); - labelinfo = gtk_label_new(""); - gtk_box_pack_start(GTK_BOX(pHBoxFrame), labelinfo, TRUE, TRUE, 0); - - phboxtemp = gtk_hbox_new(FALSE, 0); - labeltemp = gtk_label_new(_("Network configuration : ")); - gtk_box_pack_start(GTK_BOX(phboxtemp), labeltemp, FALSE, FALSE, 5); - GtkWidget *btnsave = gtk_button_new_from_stock (GTK_STOCK_ADD); - gtk_box_pack_start(GTK_BOX(phboxtemp), btnsave, FALSE, FALSE, 10); - GtkWidget *btndel = gtk_button_new_from_stock (GTK_STOCK_REMOVE); - gtk_box_pack_start(GTK_BOX(phboxtemp), btndel, FALSE, FALSE, 10); - - gtk_frame_set_label_widget(GTK_FRAME(pFrame), phboxtemp); - - g_signal_connect(G_OBJECT(intercombo), "changed", G_CALLBACK(change_interface), labelinfo); - g_signal_connect(G_OBJECT(btnsave), "clicked", G_CALLBACK(add_interface), viewif); - g_signal_connect(G_OBJECT(btndel), "clicked", G_CALLBACK(del_interface), viewif); - + g_signal_connect(G_OBJECT(btnsave), "clicked", G_CALLBACK(add_interface), NULL); + g_signal_connect(G_OBJECT(btndel), "clicked", G_CALLBACK(del_interface), NULL); return pVBox; } @@ -615,6 +583,13 @@ GtkWidget *load_gtk_widget() int prerun(GList **config) { int i; + GdkPixbuf *connectimg; + GtkWidget *cellview; + GtkTreeIter iter; + + cellview = gtk_cell_view_new (); + connectimg = gtk_widget_render_icon (cellview, GTK_STOCK_NETWORK, + GTK_ICON_SIZE_BUTTON, NULL); if(iflist == NULL) { @@ -622,11 +597,14 @@ int prerun(GList **config) for(i=0; i<g_list_length(iflist); i+=2) { - gtk_combo_box_append_text(GTK_COMBO_BOX(intercombo), (char*)g_list_nth_data(iflist, i)); + gtk_list_store_append(GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(viewif))), &iter); + gtk_list_store_set(GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(viewif))), &iter, COLUMN_NET_IMAGE, connectimg, + COLUMN_NET_NAME, (char*)g_list_nth_data(iflist, i), + COLUMN_NET_DESC, (char*)g_list_nth_data(iflist, i+1), + COLUMN_NET_TYPE, "", + -1); } } - - gtk_combo_box_set_active (GTK_COMBO_BOX (intercombo), 0); return 0; } _______________________________________________ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git