From 3ed6bb87852bc1994166f999f2d7a164c473a232 Mon Sep 17 00:00:00 2001 From: fyodor Date: Sat, 21 Jan 2006 00:41:19 +0000 Subject: [PATCH] latest GTK2 fixes, remove deprecated api calls --- nmapfe/nmapfe.c | 261 ++++++++++++++++++++++++-------------------- nmapfe/nmapfe.h | 9 +- nmapfe/nmapfe_sig.c | 23 ++-- nmapfe/nmapfe_sig.h | 2 +- 4 files changed, 156 insertions(+), 139 deletions(-) diff --git a/nmapfe/nmapfe.c b/nmapfe/nmapfe.c index 17cdc5cdb..07a7d1784 100644 --- a/nmapfe/nmapfe.c +++ b/nmapfe/nmapfe.c @@ -243,14 +243,15 @@ static gchar *verboseEntries[] = { NULL }; -static GtkItemFactoryEntry outputFormatEntries[] = { - { "/Normal", NULL, outputFormatType_changed_fcb, NORMAL_OUTPUT, NULL }, - { "/grep-able", NULL, outputFormatType_changed_fcb, GREP_OUTPUT, NULL }, - { "/XML", NULL, outputFormatType_changed_fcb, XML_OUTPUT, NULL }, - { "/All", NULL, outputFormatType_changed_fcb, ALL_OUTPUT, NULL }, - { "/-", NULL, NULL, NO_OUTPUT, "" }, - { "/ScriptKiddie", NULL, outputFormatType_changed_fcb, SKIDS_OUTPUT, NULL }, - { NULL, NULL, NULL, NO_OUTPUT, NULL } +static gchar *outputFormatEntries[] = { + "Normal", + "grep-able", + "XML", + "All", +#if GTK_CHECK_VERSION(2,6,0) + "", +#endif + "ScriptKiddie" }; static void @@ -363,6 +364,28 @@ About_callback (void) { #endif } +#if GTK_CHECK_VERSION(2,6,0) +/* FIXME: This needs to be rewritten because it's an ugly hack :( + * See below for comment... + */ +static gboolean +is_separator (GtkTreeModel *model, + GtkTreeIter *iter, + gpointer data) +{ + GtkTreePath *path; + gboolean result; + + path = gtk_tree_model_get_path (model, iter); + /* FIXME: Here we should see whether the contents of the row + * equals ". But it works for now... :) + */ + result = gtk_tree_path_get_indices (path)[0] == SEPARATOR; + gtk_tree_path_free (path); + + return result; +} +#endif static GtkTreeModel * create_dropdown_store(Entry *data, gboolean is_root) { @@ -380,39 +403,7 @@ create_dropdown_store(Entry *data, gboolean is_root) } return GTK_TREE_MODEL (store); } -/* Returns a menubar widget made from the above menu */ -static GtkWidget *new_factory_menu(GtkWidget *window, GtkType menuType, - const gchar *name, GtkItemFactoryEntry *entries, - guint *variable) -{ -GtkItemFactory *item_factory; -GtkAccelGroup *accel_group = NULL; -GtkItemFactoryEntry *end = entries; - - while ((end != NULL) && (end->path != NULL)) - end++; - - /* Make an accelerator group (shortcut keys) */ - if (window) - accel_group = gtk_accel_group_new (); - - /* Make an ItemFactory (that makes a menubar) */ - item_factory = gtk_item_factory_new (menuType, name, accel_group); - - /* This function generates the menu items. Pass the item factory, - the number of items in the array, the array itself, and any - callback data for the the menu items. */ - gtk_item_factory_create_items(item_factory, end-entries, entries, variable); - - /* Attach the new accelerator group to the window. */ - if (window) - gtk_window_add_accel_group (GTK_WINDOW (window), accel_group); - - /* Finally, return the actual menu bar created by the item factory. */ - return(gtk_item_factory_get_widget(item_factory, name)); -} - - + GtkWidget* create_main_win() { GtkWidget *main_vbox; @@ -454,15 +445,13 @@ GtkAdjustment *adjust; opt.uid = getuid(); #endif - /* main (toplevel) window */ main_win = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(main_win), "Nmap Front End v" VERSION); - gtk_window_position (GTK_WINDOW (main_win), GTK_WIN_POS_CENTER); - gtk_signal_connect (GTK_OBJECT (main_win), "delete_event", + gtk_window_set_position (GTK_WINDOW (main_win), GTK_WIN_POS_CENTER); + g_signal_connect (GTK_OBJECT (main_win), "delete_event", GTK_SIGNAL_FUNC(Quit_callback), NULL); - /* vertical box for menu bar, input, output and status fields */ main_vbox = gtk_vbox_new(FALSE, 0); gtk_container_add (GTK_CONTAINER (main_win), main_vbox); @@ -511,9 +500,8 @@ GtkAdjustment *adjust; gtk_entry_set_max_length(GTK_ENTRY(opt.targetHost), 256); GTK_WIDGET_SET_FLAGS(opt.targetHost, GTK_CAN_DEFAULT); gtk_widget_grab_focus(opt.targetHost); - gtk_widget_grab_default(opt.targetHost); gtk_entry_set_text(GTK_ENTRY(opt.targetHost), "127.0.0.1"); - gtk_signal_connect(GTK_OBJECT(opt.targetHost), "changed", + g_signal_connect(GTK_OBJECT(opt.targetHost), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); gtk_box_pack_start(GTK_BOX(hbox), opt.targetHost, TRUE, TRUE, 0); gtk_widget_show(opt.targetHost); @@ -521,7 +509,7 @@ GtkAdjustment *adjust; /* Exit button (rightmost in hbox) */ button = gtk_button_new_with_label("Exit"); /*gtk_object_set(GTK_OBJECT(button), "width", 48, NULL);*/ - gtk_signal_connect(GTK_OBJECT(button), "clicked", + g_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(Quit_callback), NULL); gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); gtk_widget_show(button); @@ -529,7 +517,7 @@ GtkAdjustment *adjust; /* Scan button (2nd right in hbox) */ opt.scanButton = gtk_toggle_button_new_with_label("Scan"); /*gtk_object_set(GTK_OBJECT(opt.scanButton), "width", 72, NULL);*/ - gtk_signal_connect(GTK_OBJECT(opt.scanButton), "toggled", + g_signal_connect(GTK_OBJECT(opt.scanButton), "toggled", GTK_SIGNAL_FUNC(scanButton_toggled_cb), NULL); gtk_box_pack_end(GTK_BOX(hbox), opt.scanButton, FALSE, FALSE, 0); gtk_widget_show(opt.scanButton); @@ -597,7 +585,7 @@ GtkAdjustment *adjust; opt.scanRelay = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(opt.scanRelay), 256); /*gtk_object_set(GTK_OBJECT(opt.scanRelay), "width", 150, NULL);*/ - gtk_signal_connect(GTK_OBJECT(opt.scanRelay), "changed", + g_signal_connect(GTK_OBJECT(opt.scanRelay), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); if ((opt.scanValue != BOUNCE_SCAN) && (opt.scanValue != IDLE_SCAN)) gtk_widget_set_sensitive(GTK_WIDGET(opt.scanRelay), FALSE); @@ -641,7 +629,7 @@ GtkAdjustment *adjust; opt.protportRange = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(opt.protportRange), 256); /*gtk_object_set(GTK_OBJECT(opt.protportRange), "width", 100, NULL);*/ - gtk_signal_connect(GTK_OBJECT(opt.protportRange), "changed", + g_signal_connect(GTK_OBJECT(opt.protportRange), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); if (opt.protportValue != GIVEN_PROTPORT) gtk_widget_set_sensitive(GTK_WIDGET(opt.protportRange), FALSE); @@ -662,16 +650,16 @@ GtkAdjustment *adjust; gtk_container_add(GTK_CONTAINER(frame), table); opt.RPCInfo = gtk_check_button_new_with_label("RPC Scan"); - gtk_signal_connect(GTK_OBJECT(opt.RPCInfo), "released", + g_signal_connect(GTK_OBJECT(opt.RPCInfo), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); gtk_table_attach_defaults(GTK_TABLE(table), opt.RPCInfo, 0, 1, 0, 1); gtk_widget_show(opt.RPCInfo); opt.OSInfo = gtk_check_button_new_with_label("OS Detection"); - gtk_signal_connect(GTK_OBJECT(opt.OSInfo), "released", + g_signal_connect(GTK_OBJECT(opt.OSInfo), "released", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); if (opt.uid == 0) - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt.OSInfo), TRUE); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(opt.OSInfo), TRUE); else gtk_widget_set_sensitive(GTK_WIDGET(opt.OSInfo), FALSE); gtk_table_attach_defaults(GTK_TABLE(table), opt.OSInfo, 2, 3, 0, 1); @@ -679,9 +667,9 @@ GtkAdjustment *adjust; opt.VersionInfo = gtk_check_button_new_with_label("Version Probe"); - gtk_signal_connect(GTK_OBJECT(opt.VersionInfo), "released", + g_signal_connect(GTK_OBJECT(opt.VersionInfo), "released", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt.VersionInfo), FALSE); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(opt.VersionInfo), FALSE); gtk_table_attach_defaults(GTK_TABLE(table), opt.VersionInfo, 3, 4, 0, 1); gtk_widget_show(opt.VersionInfo); @@ -701,7 +689,7 @@ GtkAdjustment *adjust; gtk_container_set_border_width(GTK_CONTAINER(nbpage), 5); opt.dontPing = gtk_check_button_new_with_label("Don't Ping"); - gtk_signal_connect(GTK_OBJECT(opt.dontPing), "released", + g_signal_connect(GTK_OBJECT(opt.dontPing), "released", GTK_SIGNAL_FUNC(pingButton_toggled_cb), opt.dontPing); gtk_table_attach_defaults(GTK_TABLE(nbpage), opt.dontPing, 0, 1, 0, 1); // gtk_box_pack_start(GTK_BOX(nbpage), opt.dontPing, FALSE, FALSE, 0); @@ -719,18 +707,18 @@ GtkAdjustment *adjust; opt.icmpechoPing = gtk_check_button_new_with_label("ICMP Echo"); - gtk_signal_connect(GTK_OBJECT(opt.icmpechoPing), "released", + g_signal_connect(GTK_OBJECT(opt.icmpechoPing), "released", GTK_SIGNAL_FUNC(pingButton_toggled_cb), opt.icmpechoPing); gtk_table_attach_defaults(GTK_TABLE(table), opt.icmpechoPing, 0, 1, 0, 1); if (opt.uid == 0) - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt.icmpechoPing), TRUE); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(opt.icmpechoPing), TRUE); else gtk_widget_set_sensitive(GTK_WIDGET(opt.icmpechoPing), FALSE); gtk_widget_show(opt.icmpechoPing); opt.icmptimePing = gtk_check_button_new_with_label("ICMP Timestamp"); - gtk_signal_connect(GTK_OBJECT(opt.icmptimePing), "released", + g_signal_connect(GTK_OBJECT(opt.icmptimePing), "released", GTK_SIGNAL_FUNC(pingButton_toggled_cb), opt.icmptimePing); if (opt.uid != 0) gtk_widget_set_sensitive(GTK_WIDGET(opt.icmptimePing), FALSE); @@ -739,7 +727,7 @@ GtkAdjustment *adjust; opt.icmpmaskPing = gtk_check_button_new_with_label("ICMP Netmask"); - gtk_signal_connect(GTK_OBJECT(opt.icmpmaskPing), "released", + g_signal_connect(GTK_OBJECT(opt.icmpmaskPing), "released", GTK_SIGNAL_FUNC(pingButton_toggled_cb), opt.icmpmaskPing); if (opt.uid != 0) gtk_widget_set_sensitive(GTK_WIDGET(opt.icmpmaskPing), FALSE); @@ -748,10 +736,10 @@ GtkAdjustment *adjust; opt.tcpPing = gtk_check_button_new_with_label("TCP ACK Ping"); - gtk_signal_connect(GTK_OBJECT(opt.tcpPing), "released", + g_signal_connect(GTK_OBJECT(opt.tcpPing), "released", GTK_SIGNAL_FUNC(pingButton_toggled_cb), opt.tcpPing); gtk_table_attach_defaults(GTK_TABLE(table), opt.tcpPing, 1, 2, 0, 1); - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt.tcpPing), TRUE); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(opt.tcpPing), TRUE); gtk_widget_show(opt.tcpPing); opt.tcpPingLabel = gtk_label_new("Port(s):"); @@ -761,14 +749,14 @@ GtkAdjustment *adjust; opt.tcpPingPorts = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(opt.tcpPingPorts), 256); /*gtk_object_set(GTK_OBJECT(opt.tcpPingPorts), "width", 100, NULL);*/ - gtk_signal_connect(GTK_OBJECT(opt.tcpPingPorts), "changed", + g_signal_connect(GTK_OBJECT(opt.tcpPingPorts), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); gtk_table_attach_defaults(GTK_TABLE(table), opt.tcpPingPorts, 3, 4, 0, 1); gtk_widget_show(opt.tcpPingPorts); opt.synPing = gtk_check_button_new_with_label("TCP SYN Ping"); - gtk_signal_connect(GTK_OBJECT(opt.synPing), "released", + g_signal_connect(GTK_OBJECT(opt.synPing), "released", GTK_SIGNAL_FUNC(pingButton_toggled_cb), opt.synPing); if (opt.uid != 0) gtk_widget_set_sensitive(GTK_WIDGET(opt.synPing), FALSE); @@ -784,7 +772,7 @@ GtkAdjustment *adjust; opt.synPingPorts = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(opt.synPingPorts), 256); /*gtk_object_set(GTK_OBJECT(opt.synPingPorts), "width", 100, NULL);*/ - gtk_signal_connect(GTK_OBJECT(opt.synPingPorts), "changed", + g_signal_connect(GTK_OBJECT(opt.synPingPorts), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); if ((opt.uid != 0) || (! GTK_TOGGLE_BUTTON(opt.synPing)->active)) gtk_widget_set_sensitive(GTK_WIDGET(opt.synPingPorts), FALSE); @@ -793,7 +781,7 @@ GtkAdjustment *adjust; opt.udpPing = gtk_check_button_new_with_label("UDP Ping"); - gtk_signal_connect(GTK_OBJECT(opt.udpPing), "released", + g_signal_connect(GTK_OBJECT(opt.udpPing), "released", GTK_SIGNAL_FUNC(pingButton_toggled_cb), opt.udpPing); if (opt.uid != 0) gtk_widget_set_sensitive(GTK_WIDGET(opt.udpPing), FALSE); @@ -809,7 +797,7 @@ GtkAdjustment *adjust; opt.udpPingPorts = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(opt.udpPingPorts), 256); /*gtk_object_set(GTK_OBJECT(opt.udpPingPorts), "width", 100, NULL);*/ - gtk_signal_connect(GTK_OBJECT(opt.udpPingPorts), "changed", + g_signal_connect(GTK_OBJECT(opt.udpPingPorts), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); if ((opt.uid != 0) || (! GTK_TOGGLE_BUTTON(opt.udpPing)->active)) gtk_widget_set_sensitive(GTK_WIDGET(opt.udpPingPorts), FALSE); @@ -866,10 +854,10 @@ GtkAdjustment *adjust; adjust = (GtkAdjustment *) gtk_adjustment_new(127.0, 0.0, 255.0, 1.0, 10.0, 10.0); opt.ipv4TtlValue = gtk_spin_button_new(adjust, 1.0, 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(opt.ipv4TtlValue), TRUE); - gtk_signal_connect(GTK_OBJECT(opt.ipv4Ttl), "released", + g_signal_connect(GTK_OBJECT(opt.ipv4Ttl), "released", GTK_SIGNAL_FUNC(toggle_button_set_sensitive_cb), opt.ipv4TtlValue); /* gtk_object_set(GTK_OBJECT(opt.ipv4TtlValue), "width", 55, NULL);*/ - gtk_signal_connect(GTK_OBJECT(opt.ipv4TtlValue), "changed", + g_signal_connect(GTK_OBJECT(opt.ipv4TtlValue), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); if ((opt.uid != 0) || (! GTK_TOGGLE_BUTTON(opt.ipv4Ttl)->active)) gtk_widget_set_sensitive(GTK_WIDGET(opt.ipv4TtlValue), FALSE); @@ -887,9 +875,9 @@ GtkAdjustment *adjust; opt.minParSocks = gtk_spin_button_new(adjust, 1.0, 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(opt.minParSocks), TRUE); /*gtk_object_set(GTK_OBJECT(opt.minParSocks), "width", 55, NULL);*/ - gtk_signal_connect(GTK_OBJECT(opt.minPar), "released", + g_signal_connect(GTK_OBJECT(opt.minPar), "released", GTK_SIGNAL_FUNC(toggle_button_set_sensitive_cb), opt.minParSocks); - gtk_signal_connect(GTK_OBJECT(opt.minParSocks), "changed", + g_signal_connect(GTK_OBJECT(opt.minParSocks), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); if ((opt.uid != 0) || (! GTK_TOGGLE_BUTTON(opt.minPar)->active)) gtk_widget_set_sensitive(GTK_WIDGET(opt.minParSocks), FALSE); @@ -907,9 +895,9 @@ GtkAdjustment *adjust; opt.maxParSocks = gtk_spin_button_new(adjust, 1.0, 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(opt.maxParSocks), TRUE); /*gtk_object_set(GTK_OBJECT(opt.maxParSocks), "width", 55, NULL);*/ - gtk_signal_connect(GTK_OBJECT(opt.maxPar), "released", + g_signal_connect(GTK_OBJECT(opt.maxPar), "released", GTK_SIGNAL_FUNC(toggle_button_set_sensitive_cb), opt.maxParSocks); - gtk_signal_connect(GTK_OBJECT(opt.maxParSocks), "changed", + g_signal_connect(GTK_OBJECT(opt.maxParSocks), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); if ((opt.uid != 0) || (! GTK_TOGGLE_BUTTON(opt.maxPar)->active)) gtk_widget_set_sensitive(GTK_WIDGET(opt.maxParSocks), FALSE); @@ -927,9 +915,9 @@ GtkAdjustment *adjust; opt.startRttTime = gtk_spin_button_new(adjust, 10.0, 0); /* gtk_object_set(GTK_OBJECT(opt.startRttTime), "width", 75, NULL);*/ gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(opt.startRttTime), TRUE); - gtk_signal_connect(GTK_OBJECT(opt.startRtt), "released", + g_signal_connect(GTK_OBJECT(opt.startRtt), "released", GTK_SIGNAL_FUNC(toggle_button_set_sensitive_cb), opt.startRttTime); - gtk_signal_connect(GTK_OBJECT(opt.startRttTime), "changed", + g_signal_connect(GTK_OBJECT(opt.startRttTime), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); if ((opt.uid != 0) || (! GTK_TOGGLE_BUTTON(opt.startRtt)->active)) gtk_widget_set_sensitive(GTK_WIDGET(opt.startRttTime), FALSE); @@ -953,9 +941,9 @@ GtkAdjustment *adjust; opt.minRttTime = gtk_spin_button_new(adjust, 10.0, 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(opt.minRttTime), TRUE); /*gtk_object_set(GTK_OBJECT(opt.minRttTime), "width", 75, NULL);*/ - gtk_signal_connect(GTK_OBJECT(opt.minRtt), "released", + g_signal_connect(GTK_OBJECT(opt.minRtt), "released", GTK_SIGNAL_FUNC(toggle_button_set_sensitive_cb), opt.minRttTime); - gtk_signal_connect(GTK_OBJECT(opt.minRttTime), "changed", + g_signal_connect(GTK_OBJECT(opt.minRttTime), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); if ((opt.uid != 0) || (! GTK_TOGGLE_BUTTON(opt.minRtt)->active)) gtk_widget_set_sensitive(GTK_WIDGET(opt.minRttTime), FALSE); @@ -979,9 +967,9 @@ GtkAdjustment *adjust; opt.maxRttTime = gtk_spin_button_new(adjust, 10.0, 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(opt.maxRttTime), TRUE); /*gtk_object_set(GTK_OBJECT(opt.maxRttTime), "width", 75, NULL);*/ - gtk_signal_connect(GTK_OBJECT(opt.maxRtt), "released", + g_signal_connect(GTK_OBJECT(opt.maxRtt), "released", GTK_SIGNAL_FUNC(toggle_button_set_sensitive_cb), opt.maxRttTime); - gtk_signal_connect(GTK_OBJECT(opt.maxRttTime), "changed", + g_signal_connect(GTK_OBJECT(opt.maxRttTime), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); if ((opt.uid != 0) || (! GTK_TOGGLE_BUTTON(opt.maxRtt)->active)) gtk_widget_set_sensitive(GTK_WIDGET(opt.maxRttTime), FALSE); @@ -1005,9 +993,9 @@ GtkAdjustment *adjust; opt.hostTimeoutTime = gtk_spin_button_new(adjust, 10.0, 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(opt.hostTimeoutTime), TRUE); /*gtk_object_set(GTK_OBJECT(opt.hostTimeoutTime), "width", 75, NULL);*/ - gtk_signal_connect(GTK_OBJECT(opt.hostTimeout), "released", + g_signal_connect(GTK_OBJECT(opt.hostTimeout), "released", GTK_SIGNAL_FUNC(toggle_button_set_sensitive_cb), opt.hostTimeoutTime); - gtk_signal_connect(GTK_OBJECT(opt.hostTimeoutTime), "changed", + g_signal_connect(GTK_OBJECT(opt.hostTimeoutTime), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); if ((opt.uid != 0) || (! GTK_TOGGLE_BUTTON(opt.hostTimeout)->active)) gtk_widget_set_sensitive(GTK_WIDGET(opt.hostTimeoutTime), FALSE); @@ -1031,9 +1019,9 @@ GtkAdjustment *adjust; opt.scanDelayTime = gtk_spin_button_new(adjust, 10.0, 0); gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(opt.scanDelayTime), TRUE); /*gtk_object_set(GTK_OBJECT(opt.scanDelayTime), "width", 75, NULL);*/ - gtk_signal_connect(GTK_OBJECT(opt.scanDelay), "released", + g_signal_connect(GTK_OBJECT(opt.scanDelay), "released", GTK_SIGNAL_FUNC(toggle_button_set_sensitive_cb), opt.scanDelayTime); - gtk_signal_connect(GTK_OBJECT(opt.scanDelayTime), "changed", + g_signal_connect(GTK_OBJECT(opt.scanDelayTime), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); if ((opt.uid != 0) || (! GTK_TOGGLE_BUTTON(opt.scanDelay)->active)) gtk_widget_set_sensitive(GTK_WIDGET(opt.scanDelayTime), FALSE); @@ -1072,7 +1060,7 @@ GtkAdjustment *adjust; opt.useInputFile = gtk_check_button_new_with_label("Input File"); - gtk_signal_connect(GTK_OBJECT(opt.useInputFile), "released", + g_signal_connect(GTK_OBJECT(opt.useInputFile), "released", GTK_SIGNAL_FUNC(validate_file_change), NULL); gtk_table_attach_defaults(GTK_TABLE(table), opt.useInputFile, 0, 2, 0, 1); gtk_widget_show(opt.useInputFile); @@ -1080,7 +1068,7 @@ GtkAdjustment *adjust; opt.inputFilename = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(opt.inputFilename), 256); /* gtk_object_set(GTK_OBJECT(opt.inputFilename), "width", 110, NULL);*/ - gtk_signal_connect(GTK_OBJECT(opt.inputFilename), "changed", + g_signal_connect(GTK_OBJECT(opt.inputFilename), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); gtk_widget_set_sensitive(GTK_WIDGET(opt.inputFilename), GTK_TOGGLE_BUTTON(opt.useInputFile)->active); @@ -1088,7 +1076,7 @@ GtkAdjustment *adjust; gtk_widget_show(opt.inputFilename); opt.inputBrowse = gtk_button_new_with_label("Browse"); - gtk_signal_connect(GTK_OBJECT(opt.inputBrowse), "pressed", + g_signal_connect(GTK_OBJECT(opt.inputBrowse), "pressed", GTK_SIGNAL_FUNC(browseButton_pressed_cb), opt.inputFilename); gtk_widget_set_sensitive(GTK_WIDGET(opt.inputBrowse), GTK_TOGGLE_BUTTON(opt.useInputFile)->active); @@ -1109,7 +1097,7 @@ GtkAdjustment *adjust; opt.useOutputFile = gtk_check_button_new_with_label("Output File"); - gtk_signal_connect(GTK_OBJECT(opt.useOutputFile), "released", + g_signal_connect(GTK_OBJECT(opt.useOutputFile), "released", GTK_SIGNAL_FUNC(validate_file_change), NULL); gtk_table_attach_defaults(GTK_TABLE(table), opt.useOutputFile, 0, 2, 0, 1); gtk_widget_show(opt.useOutputFile); @@ -1117,7 +1105,7 @@ GtkAdjustment *adjust; opt.outputFilename = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(opt.outputFilename), 256); /*gtk_object_set(GTK_OBJECT(opt.outputFilename), "width", 110, NULL);*/ - gtk_signal_connect(GTK_OBJECT(opt.outputFilename), "changed", + g_signal_connect(GTK_OBJECT(opt.outputFilename), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); gtk_widget_set_sensitive(GTK_WIDGET(opt.outputFilename), GTK_TOGGLE_BUTTON(opt.useOutputFile)->active); @@ -1125,7 +1113,7 @@ GtkAdjustment *adjust; gtk_widget_show(opt.outputFilename); opt.outputBrowse = gtk_button_new_with_label("Browse"); - gtk_signal_connect(GTK_OBJECT(opt.outputBrowse), "pressed", + g_signal_connect(GTK_OBJECT(opt.outputBrowse), "pressed", GTK_SIGNAL_FUNC(browseButton_pressed_cb), opt.outputFilename); gtk_widget_set_sensitive(GTK_WIDGET(opt.outputBrowse), GTK_TOGGLE_BUTTON(opt.useOutputFile)->active); @@ -1133,21 +1121,51 @@ GtkAdjustment *adjust; gtk_widget_show(opt.outputBrowse); + { + GtkTreeIter iter; + GtkListStore *store; + GtkCellRenderer *renderer; + gint i; + opt.outputFormatLabel = gtk_label_new("Output Format:"); gtk_label_set_justify(GTK_LABEL(opt.outputFormatLabel), GTK_JUSTIFY_LEFT); gtk_table_attach_defaults(GTK_TABLE(table), opt.outputFormatLabel, 0, 2, 3, 4); gtk_widget_show(opt.outputFormatLabel); - opt.outputFormatType = new_factory_menu(NULL, GTK_TYPE_OPTION_MENU, "", - outputFormatEntries, &opt.outputFormatValue); - gtk_option_menu_set_history(GTK_OPTION_MENU(opt.outputFormatType), - opt.outputFormatValue - OUTPUT_OFFSET); - /* gtk_object_set(GTK_OBJECT(opt.outputFormatType), "height", 24, NULL);*/ + store = gtk_list_store_new (1, G_TYPE_STRING); + + for (i = 0; i < G_N_ELEMENTS(outputFormatEntries); i++ ) { + gtk_list_store_append(store, &iter); + gtk_list_store_set(store, &iter, + 0, outputFormatEntries[i], + -1); + } + + opt.outputFormatType = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store)); + + g_object_unref(store); + +#if GTK_CHECK_VERSION(2,6,0) + gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (opt.outputFormatType), + is_separator, NULL, NULL); +#endif + + renderer = gtk_cell_renderer_text_new (); + gtk_cell_layout_pack_start ( + GTK_CELL_LAYOUT (opt.outputFormatType), renderer, TRUE); + gtk_cell_layout_set_attributes ( + GTK_CELL_LAYOUT (opt.outputFormatType), renderer, + "text", 0, + NULL); + g_object_unref(renderer); + + g_signal_connect(G_OBJECT(opt.outputFormatType), "changed", + G_CALLBACK (outputFormatType_cb), NULL); gtk_widget_set_sensitive(GTK_WIDGET(opt.outputFormatType), GTK_TOGGLE_BUTTON(opt.useOutputFile)->active); gtk_table_attach_defaults(GTK_TABLE(table), opt.outputFormatType, 2, 4, 3, 4); gtk_widget_show(opt.outputFormatType); - + } opt.outputAppend = gtk_check_button_new_with_label("Append to File"); gtk_table_attach_defaults(GTK_TABLE(table), opt.outputAppend, 0, 3, 4, 5); @@ -1229,7 +1247,7 @@ GtkAdjustment *adjust; gtk_container_add(GTK_CONTAINER(frame), table); opt.useSourceDevice = gtk_check_button_new_with_label("Device"); - gtk_signal_connect(GTK_OBJECT(opt.useSourceDevice), "toggled", + g_signal_connect(GTK_OBJECT(opt.useSourceDevice), "toggled", GTK_SIGNAL_FUNC(validate_option_change), NULL); if (opt.uid != 0) gtk_widget_set_sensitive(GTK_WIDGET(opt.useSourceDevice), FALSE); @@ -1239,9 +1257,9 @@ GtkAdjustment *adjust; opt.SourceDevice = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(opt.SourceDevice), 64); /*gtk_object_set(GTK_OBJECT(opt.SourceDevice), "width", 110, NULL);*/ - gtk_signal_connect(GTK_OBJECT(opt.useSourceDevice), "toggled", + g_signal_connect(GTK_OBJECT(opt.useSourceDevice), "toggled", GTK_SIGNAL_FUNC(toggle_button_set_sensitive_cb), opt.SourceDevice); - gtk_signal_connect(GTK_OBJECT(opt.SourceDevice), "changed", + g_signal_connect(GTK_OBJECT(opt.SourceDevice), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); if (!GTK_TOGGLE_BUTTON(opt.useSourceDevice)->active) gtk_widget_set_sensitive(GTK_WIDGET(opt.SourceDevice), FALSE); @@ -1250,7 +1268,7 @@ GtkAdjustment *adjust; opt.useSourcePort = gtk_check_button_new_with_label("Port"); - gtk_signal_connect(GTK_OBJECT(opt.useSourcePort), "released", + g_signal_connect(GTK_OBJECT(opt.useSourcePort), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); if (opt.uid != 0) gtk_widget_set_sensitive(GTK_WIDGET(opt.useSourcePort), FALSE); @@ -1260,9 +1278,9 @@ GtkAdjustment *adjust; opt.SourcePort = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(opt.SourcePort), 64); /*gtk_object_set(GTK_OBJECT(opt.SourcePort), "width", 110, NULL);*/ - gtk_signal_connect(GTK_OBJECT(opt.useSourcePort), "toggled", + g_signal_connect(GTK_OBJECT(opt.useSourcePort), "toggled", GTK_SIGNAL_FUNC(toggle_button_set_sensitive_cb), opt.SourcePort); - gtk_signal_connect(GTK_OBJECT(opt.SourcePort), "changed", + g_signal_connect(GTK_OBJECT(opt.SourcePort), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); if (!GTK_TOGGLE_BUTTON(opt.useSourcePort)->active) gtk_widget_set_sensitive(GTK_WIDGET(opt.SourcePort), FALSE); @@ -1271,7 +1289,7 @@ GtkAdjustment *adjust; opt.useSourceIP = gtk_check_button_new_with_label("IP"); - gtk_signal_connect(GTK_OBJECT(opt.useSourceIP), "released", + g_signal_connect(GTK_OBJECT(opt.useSourceIP), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); if (opt.uid != 0) gtk_widget_set_sensitive(GTK_WIDGET(opt.useSourceIP), FALSE); @@ -1281,9 +1299,9 @@ GtkAdjustment *adjust; opt.SourceIP = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(opt.SourceIP), 64); /*gtk_object_set(GTK_OBJECT(opt.SourceIP), "width", 110, NULL);*/ - gtk_signal_connect(GTK_OBJECT(opt.useSourceIP), "toggled", + g_signal_connect(GTK_OBJECT(opt.useSourceIP), "toggled", GTK_SIGNAL_FUNC(toggle_button_set_sensitive_cb), opt.SourceIP); - gtk_signal_connect(GTK_OBJECT(opt.SourceIP), "changed", + g_signal_connect(GTK_OBJECT(opt.SourceIP), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); if (!GTK_TOGGLE_BUTTON(opt.useSourceIP)->active) gtk_widget_set_sensitive(GTK_WIDGET(opt.SourceIP), FALSE); @@ -1292,7 +1310,7 @@ GtkAdjustment *adjust; opt.useDecoy = gtk_check_button_new_with_label("Decoy"); - gtk_signal_connect(GTK_OBJECT(opt.useDecoy), "released", + g_signal_connect(GTK_OBJECT(opt.useDecoy), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); if (opt.uid != 0) gtk_widget_set_sensitive(GTK_WIDGET(opt.useDecoy), FALSE); @@ -1302,9 +1320,9 @@ GtkAdjustment *adjust; opt.Decoy = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(opt.Decoy), 256); /*gtk_object_set(GTK_OBJECT(opt.Decoy), "width", 110, NULL);*/ - gtk_signal_connect(GTK_OBJECT(opt.useDecoy), "toggled", + g_signal_connect(GTK_OBJECT(opt.useDecoy), "toggled", GTK_SIGNAL_FUNC(toggle_button_set_sensitive_cb), opt.Decoy); - gtk_signal_connect(GTK_OBJECT(opt.Decoy), "changed", + g_signal_connect(GTK_OBJECT(opt.Decoy), "changed", GTK_SIGNAL_FUNC(display_nmap_command_cb), NULL); if (!GTK_TOGGLE_BUTTON(opt.useDecoy)->active) gtk_widget_set_sensitive(GTK_WIDGET(opt.Decoy), FALSE); @@ -1324,7 +1342,7 @@ GtkAdjustment *adjust; gtk_container_add(GTK_CONTAINER(frame), vbox); opt.useFragments = gtk_check_button_new_with_label("Fragmentation"); - gtk_signal_connect(GTK_OBJECT(opt.useFragments), "released", + g_signal_connect(GTK_OBJECT(opt.useFragments), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); if (opt.uid != 0) gtk_widget_set_sensitive(GTK_WIDGET(opt.useFragments), FALSE); @@ -1333,7 +1351,7 @@ GtkAdjustment *adjust; opt.useIPv6 = gtk_check_button_new_with_label("IPv6"); - gtk_signal_connect(GTK_OBJECT(opt.useIPv6), "released", + g_signal_connect(GTK_OBJECT(opt.useIPv6), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); if (opt.uid != 0) gtk_widget_set_sensitive(GTK_WIDGET(opt.useIPv6), FALSE); @@ -1342,7 +1360,7 @@ GtkAdjustment *adjust; opt.useOrderedPorts = gtk_check_button_new_with_label("Ordered Ports"); - gtk_signal_connect(GTK_OBJECT(opt.useOrderedPorts), "released", + g_signal_connect(GTK_OBJECT(opt.useOrderedPorts), "released", GTK_SIGNAL_FUNC(validate_option_change), NULL); if (opt.uid != 0) gtk_widget_set_sensitive(GTK_WIDGET(opt.useOrderedPorts), FALSE); @@ -1398,7 +1416,7 @@ GtkAdjustment *adjust; gtk_container_add(GTK_CONTAINER(sw), view); gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(view), GTK_WRAP_WORD); - gtk_widget_set_usize(view, 500, 248); + gtk_widget_set_size_request(view, 500, 248); gtk_widget_show(view); gtk_widget_realize(view); @@ -1430,8 +1448,11 @@ GtkAdjustment *adjust; */ /* First Notebook - Scan */ gtk_combo_box_set_active(GTK_COMBO_BOX (opt.scanType), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX (opt.protportType), opt.protportValue); /* Third Notebook - Timing */ gtk_combo_box_set_active(GTK_COMBO_BOX (opt.throttleType), opt.throttleValue); + /* Fourth Notebook - Files */ + gtk_combo_box_set_active(GTK_COMBO_BOX (opt.outputFormatType), opt.outputFormatValue); /* Fifth Notebook - Options */ gtk_combo_box_set_active(GTK_COMBO_BOX (opt.resolveType), opt.resolveValue); gtk_combo_box_set_active(GTK_COMBO_BOX (opt.verboseType), opt.verboseValue); @@ -1448,22 +1469,22 @@ GtkWidget *selector = gtk_file_selection_new((title) ? title : "Select File"); if (filename) { if (*filename) gtk_file_selection_set_filename(GTK_FILE_SELECTION(selector), filename); - gtk_object_set_data(GTK_OBJECT(selector), "NmapFE_filename", filename); + g_object_set_data(G_OBJECT(selector), "NmapFE_filename", filename); } if (action) - gtk_object_set_data(GTK_OBJECT(selector), "NmapFE_action", action); + g_object_set_data(G_OBJECT(selector), "NmapFE_action", action); if (entry) - gtk_object_set_data(GTK_OBJECT(selector), "NmapFE_entry", entry); + g_object_set_data(G_OBJECT(selector), "NmapFE_entry", entry); - gtk_signal_connect_object(GTK_OBJECT(GTK_FILE_SELECTION(selector)->ok_button), + g_signal_connect_swapped(GTK_OBJECT(GTK_FILE_SELECTION(selector)->ok_button), "clicked", GTK_SIGNAL_FUNC(okButton_clicked_cb), (gpointer) selector); - gtk_signal_connect_object(GTK_OBJECT(GTK_FILE_SELECTION(selector)->ok_button), + g_signal_connect_swapped(GTK_OBJECT(GTK_FILE_SELECTION(selector)->ok_button), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), (gpointer) selector); - gtk_signal_connect_object(GTK_OBJECT(GTK_FILE_SELECTION(selector)->cancel_button), + g_signal_connect_swapped(GTK_OBJECT(GTK_FILE_SELECTION(selector)->cancel_button), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), (gpointer) selector); @@ -1492,8 +1513,8 @@ GtkWidget *label; G_CALLBACK (gtk_widget_destroy), helpDialog); - gtk_widget_set_usize(helpDialog, 400, 300); - gtk_window_position(GTK_WINDOW(helpDialog), GTK_WIN_POS_CENTER); + gtk_widget_set_size_request(helpDialog, 400, 300); + gtk_window_set_position(GTK_WINDOW(helpDialog), GTK_WIN_POS_CENTER); vbox = GTK_DIALOG(helpDialog)->vbox; diff --git a/nmapfe/nmapfe.h b/nmapfe/nmapfe.h index c7c51bca5..c6592edd7 100644 --- a/nmapfe/nmapfe.h +++ b/nmapfe/nmapfe.h @@ -209,16 +209,15 @@ enum { }; -/* define this > 0 to be able to use the comfortable callback */ -#define OUTPUT_OFFSET 1 - /* output format options */ enum { - NO_OUTPUT, - NORMAL_OUTPUT = OUTPUT_OFFSET, + NORMAL_OUTPUT, GREP_OUTPUT, XML_OUTPUT, ALL_OUTPUT, +#if GTK_CHECK_VERSION(2,6,0) + SEPARATOR, +#endif SKIDS_OUTPUT }; diff --git a/nmapfe/nmapfe_sig.c b/nmapfe/nmapfe_sig.c index d2870d466..4393a47c4 100644 --- a/nmapfe/nmapfe_sig.c +++ b/nmapfe/nmapfe_sig.c @@ -269,9 +269,9 @@ void openLog(char *filename) void okButton_clicked_cb(GtkWidget *window, GtkButton *button) { const char *selected = gtk_file_selection_get_filename(GTK_FILE_SELECTION(window)); -void (*action)() = gtk_object_get_data(GTK_OBJECT(window), "NmapFE_action"); -GtkEntry *entry = gtk_object_get_data(GTK_OBJECT(window), "NmapFE_entry"); -char *filename = gtk_object_get_data(GTK_OBJECT(window), "NmapFE_filename"); +void (*action)() = g_object_get_data(G_OBJECT(window), "NmapFE_action"); +GtkEntry *entry = g_object_get_data(G_OBJECT(window), "NmapFE_entry"); +char *filename = g_object_get_data(G_OBJECT(window), "NmapFE_filename"); if (filename && selected) { strncpy(filename, selected, FILENAME_MAX); @@ -387,7 +387,7 @@ int pid = execute_unix(command); #endif /* WIN32 */ /* timer for calling our read function to poll for new data 8 times per second */ - gtk_timeout_add(125, read_data, NULL); + g_timeout_add(125, read_data, NULL); return(pid); } @@ -784,7 +784,7 @@ void scanType_cb gtk_widget_set_sensitive(GTK_WIDGET(opt.scanRelay), FALSE); } - gtk_object_set(GTK_OBJECT(opt.protportFrame), "label", + g_object_set(G_OBJECT(opt.protportFrame), "label", (opt.scanValue == PROT_SCAN) ? "Scanned Protocols" : "Scanned Ports", NULL); display_nmap_command(); @@ -872,13 +872,10 @@ void verboseType_cb(GtkComboBox *w, gpointer d) /* callback for factory generated menu items: set variable to action */ -void outputFormatType_changed_fcb(int *variable, guint action, GtkWidget *w) +void outputFormatType_cb(GtkComboBox *w, gpointer d) { - if ((variable != NULL) && (w != NULL)) { - *variable = action; - - display_nmap_command(); - } + opt.outputFormatValue = gtk_combo_box_get_active(w); + display_nmap_command(); } @@ -1176,7 +1173,7 @@ int count; nmap_pid = 0; buflen = 0; buf[buflen] = '\0'; - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt.scanButton), 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(opt.scanButton), 0); return 0; } #else @@ -1189,7 +1186,7 @@ int count; } buflen = 0; buf[buflen] = '\0'; - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt.scanButton), 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(opt.scanButton), 0); return 0; } #endif /* waitpid unix/windoze selector */ diff --git a/nmapfe/nmapfe_sig.h b/nmapfe/nmapfe_sig.h index c8d8b5824..1a81c40e0 100644 --- a/nmapfe/nmapfe_sig.h +++ b/nmapfe/nmapfe_sig.h @@ -133,7 +133,7 @@ void throttleType_cb (GtkComboBox *, gpointer); void resolveType_cb (GtkComboBox *, gpointer); void protportType_cb (GtkComboBox *, gpointer); void verboseType_cb (GtkComboBox *, gpointer); -void outputFormatType_changed_fcb(int *variable, guint action, GtkWidget *w); +void outputFormatType_cb (GtkComboBox *, gpointer); void pingButton_toggled_cb(GtkWidget *ping_button, void *ignored); void toggle_button_set_sensitive_cb(GtkWidget *master, GtkWidget *slave);