|
|
| version 1.1, 2019/10/21 14:25:31 | version 1.1.1.2, 2021/03/17 00:07:30 |
|---|---|
| Line 12 | Line 12 |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. | GNU General Public License for more details. |
| You should have received a copy of the GNU General Public License | You should have received a copy of the GNU General Public License along |
| along with this program; if not, write to the Free Software | with this program; if not, write to the Free Software Foundation, Inc., |
| Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
| */ | */ |
| #include "config.h" | #include "config.h" |
| Line 198 static gint About_clicked( | Line 198 static gint About_clicked( |
| gtk_show_about_dialog(GTK_WINDOW(main_window) | gtk_show_about_dialog(GTK_WINDOW(main_window) |
| , "version", PACKAGE_VERSION, "copyright", | , "version", PACKAGE_VERSION, "copyright", |
| "Copyright \xc2\xa9 1997,1998 Matt Kimball", | "Copyright \xc2\xa9 1997,1998 Matt Kimball", |
| "website", "http://www.bitwizard.nl/mtr/", | "website", "https://www.bitwizard.nl/mtr/", |
| "authors", authors, "comments", | "authors", authors, "comments", |
| "The 'traceroute' and 'ping' programs in a single network diagnostic tool.", | "The 'traceroute' and 'ping' programs in a single network diagnostic tool.", |
| "license", | "license", |
| Line 272 static void Toolbar_fill( | Line 272 static void Toolbar_fill( |
| GtkWidget *Label; | GtkWidget *Label; |
| GtkAdjustment *Adjustment; | GtkAdjustment *Adjustment; |
| Button = gtk_button_new_from_stock(GTK_STOCK_QUIT); | Button = gtk_button_new_with_label("Quit"); |
| gtk_box_pack_end(GTK_BOX(Toolbar), Button, FALSE, FALSE, 0); | gtk_box_pack_end(GTK_BOX(Toolbar), Button, FALSE, FALSE, 0); |
| g_signal_connect(GTK_OBJECT(Button), "clicked", | g_signal_connect(G_OBJECT(Button), "clicked", |
| GTK_SIGNAL_FUNC(Window_destroy), NULL); | G_CALLBACK(Window_destroy), NULL); |
| Button = gtk_button_new_from_stock(GTK_STOCK_ABOUT); | Button = gtk_button_new_with_label("About"); |
| gtk_box_pack_end(GTK_BOX(Toolbar), Button, FALSE, FALSE, 0); | gtk_box_pack_end(GTK_BOX(Toolbar), Button, FALSE, FALSE, 0); |
| g_signal_connect(GTK_OBJECT(Button), "clicked", | g_signal_connect(G_OBJECT(Button), "clicked", |
| GTK_SIGNAL_FUNC(About_clicked), NULL); | G_CALLBACK(About_clicked), NULL); |
| Button = gtk_button_new_with_mnemonic("_Restart"); | Button = gtk_button_new_with_mnemonic("_Restart"); |
| gtk_box_pack_end(GTK_BOX(Toolbar), Button, FALSE, FALSE, 0); | gtk_box_pack_end(GTK_BOX(Toolbar), Button, FALSE, FALSE, 0); |
| g_signal_connect(GTK_OBJECT(Button), "clicked", | g_signal_connect(G_OBJECT(Button), "clicked", |
| GTK_SIGNAL_FUNC(Restart_clicked), ctl); | G_CALLBACK(Restart_clicked), ctl); |
| Pause_Button = gtk_toggle_button_new_with_mnemonic("_Pause"); | Pause_Button = gtk_toggle_button_new_with_mnemonic("_Pause"); |
| gtk_box_pack_end(GTK_BOX(Toolbar), Pause_Button, FALSE, FALSE, 0); | gtk_box_pack_end(GTK_BOX(Toolbar), Pause_Button, FALSE, FALSE, 0); |
| g_signal_connect(GTK_OBJECT(Pause_Button), "clicked", | g_signal_connect(G_OBJECT(Pause_Button), "clicked", |
| GTK_SIGNAL_FUNC(Pause_clicked), ctl); | G_CALLBACK(Pause_clicked), ctl); |
| /* allow root only to set zero delay */ | /* allow root only to set zero delay */ |
| Adjustment = (GtkAdjustment *) gtk_adjustment_new(ctl->WaitTime, | Adjustment = (GtkAdjustment *) gtk_adjustment_new(ctl->WaitTime, |
| getuid() == | running_as_root() ? 0.01 : 1.00, |
| 0 ? 0.01 : 1.00, | |
| 999.99, 1.0, 10.0, | 999.99, 1.0, 10.0, |
| 0.0); | 0.0); |
| Button = gtk_spin_button_new(Adjustment, 0.5, 2); | Button = gtk_spin_button_new(Adjustment, 0.5, 2); |
| gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(Button), TRUE); | gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(Button), TRUE); |
| gtk_box_pack_end(GTK_BOX(Toolbar), Button, FALSE, FALSE, 0); | gtk_box_pack_end(GTK_BOX(Toolbar), Button, FALSE, FALSE, 0); |
| ctl->gtk_data = Button; | ctl->gtk_data = Button; |
| g_signal_connect(GTK_OBJECT(Adjustment), "value_changed", | g_signal_connect(G_OBJECT(Adjustment), "value_changed", |
| GTK_SIGNAL_FUNC(WaitTime_changed), ctl); | G_CALLBACK(WaitTime_changed), ctl); |
| Label = gtk_label_new_with_mnemonic("_Hostname:"); | Label = gtk_label_new_with_mnemonic("_Hostname:"); |
| gtk_box_pack_start(GTK_BOX(Toolbar), Label, FALSE, FALSE, 0); | gtk_box_pack_start(GTK_BOX(Toolbar), Label, FALSE, FALSE, 0); |
| Entry = gtk_entry_new(); | Entry = gtk_entry_new(); |
| gtk_entry_set_text(GTK_ENTRY(Entry), ctl->Hostname); | gtk_entry_set_text(GTK_ENTRY(Entry), ctl->Hostname); |
| g_signal_connect(GTK_OBJECT(Entry), "activate", | g_signal_connect(G_OBJECT(Entry), "activate", |
| GTK_SIGNAL_FUNC(Host_activate), ctl); | G_CALLBACK(Host_activate), ctl); |
| gtk_box_pack_start(GTK_BOX(Toolbar), Entry, TRUE, TRUE, 0); | gtk_box_pack_start(GTK_BOX(Toolbar), Entry, TRUE, TRUE, 0); |
| gtk_label_set_mnemonic_widget(GTK_LABEL(Label), Entry); | gtk_label_set_mnemonic_widget(GTK_LABEL(Label), Entry); |
| Line 395 static void TreeViewCreate( | Line 394 static void TreeViewCreate( |
| ReportTreeView = | ReportTreeView = |
| gtk_tree_view_new_with_model(GTK_TREE_MODEL(ReportStore)); | gtk_tree_view_new_with_model(GTK_TREE_MODEL(ReportStore)); |
| g_signal_connect(GTK_OBJECT(ReportTreeView), "button_press_event", | g_signal_connect(G_OBJECT(ReportTreeView), "button_press_event", |
| G_CALLBACK(ReportTreeView_clicked), ctl); | G_CALLBACK(ReportTreeView_clicked), ctl); |
| #ifdef HAVE_IPINFO | #ifdef HAVE_IPINFO |
| Line 508 static void update_tree_row( | Line 507 static void update_tree_row( |
| char str[256] = "???", *name = str; | char str[256] = "???", *name = str; |
| addr = net_addr(row); | addr = net_addr(row); |
| if (addrcmp((void *) addr, (void *) &ctl->unspec_addr, ctl->af)) { | if (addrcmp(addr, &ctl->unspec_addr, ctl->af)) { |
| if ((name = dns_lookup(ctl, addr))) { | if ((name = dns_lookup(ctl, addr))) { |
| if (ctl->show_ips) { | if (ctl->show_ips) { |
| snprintf(str, sizeof(str), "%s (%s)", name, | snprintf(str, sizeof(str), "%s (%s)", name, |
| Line 565 void gtk_redraw( | Line 564 void gtk_redraw( |
| } | } |
| } | } |
| // GTK 3 has changed the interface a bit. Here a few defines so that we can | |
| // work with GTK2 or GTK3 as required. | |
| #ifdef HAVE_GTK3 | |
| #define gtk_vbox_new_(orientation,sz) gtk_box_new(orientation, sz) | |
| #define gtk_hbox_new_(orientation,sz) gtk_box_new(orientation, sz) | |
| #else | |
| #define gtk_vbox_new_(orientation,sz) gtk_vbox_new(FALSE, sz) | |
| #define gtk_hbox_new_(orientation,sz) gtk_hbox_new(FALSE, sz) | |
| #endif | |
| static void Window_fill( | static void Window_fill( |
| struct mtr_ctl *ctl, | struct mtr_ctl *ctl, |
| Line 577 static void Window_fill( | Line 585 static void Window_fill( |
| gtk_window_set_title(GTK_WINDOW(Window), "My traceroute"); | gtk_window_set_title(GTK_WINDOW(Window), "My traceroute"); |
| gtk_window_set_default_size(GTK_WINDOW(Window), 650, 400); | gtk_window_set_default_size(GTK_WINDOW(Window), 650, 400); |
| gtk_container_set_border_width(GTK_CONTAINER(Window), 10); | gtk_container_set_border_width(GTK_CONTAINER(Window), 10); |
| VBox = gtk_vbox_new(FALSE, 10); | |
| Toolbar = gtk_hbox_new(FALSE, 10); | VBox = gtk_vbox_new_(GTK_ORIENTATION_VERTICAL, 10); |
| Toolbar = gtk_hbox_new_(GTK_ORIENTATION_HORIZONTAL, 10); | |
| Toolbar_fill(ctl, Toolbar); | Toolbar_fill(ctl, Toolbar); |
| gtk_box_pack_start(GTK_BOX(VBox), Toolbar, FALSE, FALSE, 0); | gtk_box_pack_start(GTK_BOX(VBox), Toolbar, FALSE, FALSE, 0); |
| Line 620 void gtk_open( | Line 629 void gtk_open( |
| Window_fill(ctl, main_window); | Window_fill(ctl, main_window); |
| g_signal_connect(GTK_OBJECT(main_window), "delete_event", | g_signal_connect(G_OBJECT(main_window), "delete_event", |
| GTK_SIGNAL_FUNC(Window_destroy), NULL); | G_CALLBACK(Window_destroy), NULL); |
| g_signal_connect(GTK_OBJECT(main_window), "destroy", | g_signal_connect(G_OBJECT(main_window), "destroy", |
| GTK_SIGNAL_FUNC(Window_destroy), NULL); | G_CALLBACK(Window_destroy), NULL); |
| gtk_widget_show_all(main_window); | gtk_widget_show_all(main_window); |
| } | } |
| Line 802 static gboolean ReportTreeView_clicked( | Line 811 static gboolean ReportTreeView_clicked( |
| newdestination_item = | newdestination_item = |
| gtk_menu_item_new_with_label("Set as new destination"); | gtk_menu_item_new_with_label("Set as new destination"); |
| gtk_menu_append(GTK_MENU(popup_menu), copy_item); | gtk_menu_shell_append(GTK_MENU_SHELL(popup_menu), copy_item); |
| gtk_menu_append(GTK_MENU(popup_menu), newdestination_item); | gtk_menu_shell_append(GTK_MENU_SHELL(popup_menu), newdestination_item); |
| g_signal_connect(GTK_OBJECT(copy_item), "activate", | g_signal_connect(G_OBJECT(copy_item), "activate", |
| GTK_SIGNAL_FUNC(Copy_activate), path); | G_CALLBACK(Copy_activate), path); |
| ctl->gtk_data = path; | ctl->gtk_data = path; |
| g_signal_connect(GTK_OBJECT(newdestination_item), "activate", | g_signal_connect(G_OBJECT(newdestination_item), "activate", |
| GTK_SIGNAL_FUNC(NewDestination_activate), ctl); | G_CALLBACK(NewDestination_activate), ctl); |
| gtk_widget_show(copy_item); | gtk_widget_show(copy_item); |
| gtk_widget_show(newdestination_item); | gtk_widget_show(newdestination_item); |
| #ifdef HAVE_GTK3 | |
| gtk_menu_popup_at_pointer(GTK_MENU(popup_menu), NULL); | |
| #else | |
| gtk_menu_popup(GTK_MENU(popup_menu), NULL, NULL, NULL, NULL, | gtk_menu_popup(GTK_MENU(popup_menu), NULL, NULL, NULL, NULL, |
| 0, event->time); | 0, event->time); |
| #endif | |
| return TRUE; | return TRUE; |
| } | } |