#include <epan/epan_dissect.h>
#include <epan/filesystem.h>
-#include "../globals.h"
#include "../print.h"
#include "../alert_box.h"
#include "../simple_dialog.h"
-#include "../tempfile.h"
#include "../util.h"
#include <wsutil/file_util.h>
#include "gtk/range_utils.h"
#include "gtk/help_dlg.h"
-#if _WIN32
+#ifdef _WIN32
#include <gdk/gdkwin32.h>
#include <windows.h>
-#include "gtk/file_dlg_win32.h"
-#include "gtk/print_win32.h"
+#include "win32/file_dlg_win32.h"
+#include "win32/print_win32.h"
+#include "../tempfile.h"
#endif
/* dialog output action */
static gboolean export_text_prefs_init = FALSE;
+#ifdef _WIN32
void
export_text_cmd_cb(GtkWidget *widget _U_, gpointer data _U_)
{
- print_args_t *args = &export_text_args;
-
-#if _WIN32
- win32_export_file(GDK_WINDOW_HWND(top_level->window), export_type_text);
+ win32_export_file(GDK_WINDOW_HWND(gtk_widget_get_window(top_level)), export_type_text);
return;
-#endif
+}
+#else
+void
+export_text_cmd_cb(GtkWidget *widget _U_, gpointer data _U_)
+{
+ print_args_t *args = &export_text_args;
if (export_text_win != NULL) {
/* There's already a "Export text" dialog box; reactivate it. */
export_text_win = open_print_dialog("Wireshark: Export as \"Plain Text\" File", output_action_export_text, args);
g_signal_connect(export_text_win, "destroy", G_CALLBACK(print_destroy_cb), &export_text_win);
}
+#endif
/*
static gboolean export_ps_prefs_init = FALSE;
+#ifdef _WIN32
void
export_ps_cmd_cb(GtkWidget *widget _U_, gpointer data _U_)
{
- print_args_t *args = &export_ps_args;
-
-#if _WIN32
- win32_export_file(GDK_WINDOW_HWND(top_level->window), export_type_ps);
+ win32_export_file(GDK_WINDOW_HWND(gtk_widget_get_window(top_level)), export_type_ps);
return;
-#endif
+}
+#else
+void
+export_ps_cmd_cb(GtkWidget *widget _U_, gpointer data _U_)
+{
+ print_args_t *args = &export_ps_args;
if (export_ps_win != NULL) {
/* There's already a "Export ps" dialog box; reactivate it. */
export_ps_win = open_print_dialog("Wireshark: Export as \"PostScript\" file", output_action_export_ps, args);
g_signal_connect(export_ps_win, "destroy", G_CALLBACK(print_destroy_cb), &export_ps_win);
}
+#endif
/*
static gboolean export_psml_prefs_init = FALSE;
+#ifdef _WIN32
void
export_psml_cmd_cb(GtkWidget *widget _U_, gpointer data _U_)
{
- print_args_t *args = &export_psml_args;
-
-#if _WIN32
- win32_export_file(GDK_WINDOW_HWND(top_level->window), export_type_psml);
+ win32_export_file(GDK_WINDOW_HWND(gtk_widget_get_window(top_level)), export_type_psml);
return;
-#endif
+}
+#else
+void
+export_psml_cmd_cb(GtkWidget *widget _U_, gpointer data _U_)
+{
+ print_args_t *args = &export_psml_args;
if (export_psml_win != NULL) {
/* There's already a "Export psml" dialog box; reactivate it. */
export_psml_win = open_print_dialog("Wireshark: Export as \"PSML\" file", output_action_export_psml, args);
g_signal_connect(export_psml_win, "destroy", G_CALLBACK(print_destroy_cb), &export_psml_win);
}
-
+#endif
/*
* Keep a static pointer to the current "Export pdml" window, if any, so that if
static gboolean export_pdml_prefs_init = FALSE;
+#ifdef _WIN32
void
export_pdml_cmd_cb(GtkWidget *widget _U_, gpointer data _U_)
{
- print_args_t *args = &export_pdml_args;
-
-#if _WIN32
- win32_export_file(GDK_WINDOW_HWND(top_level->window), export_type_pdml);
+ win32_export_file(GDK_WINDOW_HWND(gtk_widget_get_window(top_level)), export_type_pdml);
return;
-#endif
+}
+#else
+void
+export_pdml_cmd_cb(GtkWidget *widget _U_, gpointer data _U_)
+{
+ print_args_t *args = &export_pdml_args;
if (export_pdml_win != NULL) {
/* There's already a "Export pdml" dialog box; reactivate it. */
export_pdml_win = open_print_dialog("Wireshark: Export as \"PDML\" file", output_action_export_pdml, args);
g_signal_connect(export_pdml_win, "destroy", G_CALLBACK(print_destroy_cb), &export_pdml_win);
}
+#endif
/*
* Keep a static pointer to the current "Export csv" window, if any, so that if
static gboolean export_csv_prefs_init = FALSE;
+#ifdef _WIN32
void
export_csv_cmd_cb(GtkWidget *widget _U_, gpointer data _U_)
{
- print_args_t *args = &export_csv_args;
-
-#if _WIN32
- win32_export_file(GDK_WINDOW_HWND(top_level->window), export_type_csv);
+ win32_export_file(GDK_WINDOW_HWND(gtk_widget_get_window(top_level)), export_type_csv);
return;
-#endif
+}
+#else
+void
+export_csv_cmd_cb(GtkWidget *widget _U_, gpointer data _U_)
+{
+ print_args_t *args = &export_csv_args;
if (export_csv_win != NULL) {
/* There's already a "Export csv" dialog box; reactivate it. */
export_csv_win = open_print_dialog("Wireshark: Export as \"Comma Separated Values\" File", output_action_export_csv, args);
g_signal_connect(export_csv_win, "destroy", G_CALLBACK(print_destroy_cb), &export_csv_win);
}
+#endif
/*
* Keep a static pointer to the current "Export carrays" window, if any, so that if
static gboolean export_carrays_prefs_init = FALSE;
+#ifdef _WIN32
void
export_carrays_cmd_cb(GtkWidget *widget _U_, gpointer data _U_)
{
- print_args_t *args = &export_carrays_args;
-
-#if _WIN32
- win32_export_file(GDK_WINDOW_HWND(top_level->window), export_type_carrays);
+ win32_export_file(GDK_WINDOW_HWND(gtk_widget_get_window(top_level)), export_type_carrays);
return;
-#endif
+}
+#else
+void
+export_carrays_cmd_cb(GtkWidget *widget _U_, gpointer data _U_)
+{
+ print_args_t *args = &export_carrays_args;
if (export_carrays_win != NULL) {
/* There's already a "Export carrays" dialog box; reactivate it. */
output_action_export_carrays, args);
g_signal_connect(export_carrays_win, "destroy", G_CALLBACK(print_destroy_cb), &export_carrays_win);
}
+#endif
static void
print_browse_file_cb(GtkWidget *file_bt, GtkWidget *file_te)
GtkWidget *bbox, *ok_bt, *cancel_bt, *help_bt;
- GtkTooltips *tooltips;
-
-
/* dialog window */
main_win = dlg_window_new(title);
- /* Enable tooltips */
- tooltips = gtk_tooltips_new();
-
/* Vertical enclosing container for each row of widgets */
main_vb = gtk_vbox_new(FALSE, 5);
- gtk_container_border_width(GTK_CONTAINER(main_vb), 5);
+ gtk_container_set_border_width(GTK_CONTAINER(main_vb), 5);
gtk_container_add(GTK_CONTAINER(main_win), main_vb);
gtk_widget_show(main_vb);
gtk_box_pack_start(GTK_BOX(main_vb), printer_fr, FALSE, FALSE, 0);
gtk_widget_show(printer_fr);
printer_vb = gtk_vbox_new(FALSE, 5);
- gtk_container_border_width(GTK_CONTAINER(printer_vb), 5);
+ gtk_container_set_border_width(GTK_CONTAINER(printer_vb), 5);
gtk_container_add(GTK_CONTAINER(printer_fr), printer_vb);
gtk_widget_show(printer_vb);
/* "Plain text" / "Postscript" / "PDML", ... radio buttons */
text_rb = gtk_radio_button_new_with_mnemonic_from_widget(NULL, "Plain _text");
if (args->format == PR_FMT_TEXT)
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(text_rb), TRUE);
- gtk_tooltips_set_tip (tooltips, text_rb, "Print output in ascii \"plain text\" format. If you're unsure, use this format.", NULL);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(text_rb), TRUE);
+ gtk_widget_set_tooltip_text(text_rb, "Print output in ascii \"plain text\" format. If you're unsure, use this format.");
gtk_box_pack_start(GTK_BOX(printer_vb), text_rb, FALSE, FALSE, 0);
if(action == output_action_print)
gtk_widget_show(text_rb);
ps_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(text_rb), "_PostScript");
if (args->format == PR_FMT_PS)
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(ps_rb), TRUE);
- gtk_tooltips_set_tip (tooltips, ps_rb, "Print output in \"postscript\" format, for postscript capable printers or print servers.", NULL);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ps_rb), TRUE);
+ gtk_widget_set_tooltip_text(ps_rb, "Print output in \"postscript\" format, for postscript capable printers or print servers.");
gtk_box_pack_start(GTK_BOX(printer_vb), ps_rb, FALSE, FALSE, 0);
if(action == output_action_print)
gtk_widget_show(ps_rb);
pdml_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(text_rb), "PDM_L (XML: Packet Details Markup Language)");
if (action == output_action_export_pdml)
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(pdml_rb), TRUE);
- gtk_tooltips_set_tip (tooltips, pdml_rb,
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(pdml_rb), TRUE);
+ gtk_widget_set_tooltip_text(pdml_rb,
"Print output in \"PDML\" (Packet Details Markup Language), "
"an XML based packet data interchange format. "
- "Usually used in combination with the \"Output to file\" option to export packet data into an XML file.", NULL);
+ "Usually used in combination with the \"Output to file\" option to export packet data into an XML file.");
gtk_box_pack_start(GTK_BOX(printer_vb), pdml_rb, FALSE, FALSE, 0);
/* gtk_widget_show(pdml_rb); */
psml_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(text_rb), "PSML (XML: Packet Summary Markup Language)");
if (action == output_action_export_psml)
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(psml_rb), TRUE);
- gtk_tooltips_set_tip (tooltips, psml_rb,
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(psml_rb), TRUE);
+ gtk_widget_set_tooltip_text(psml_rb,
"Print output in \"PSML\" (Packet Summary Markup Language), "
"an XML based packet summary interchange format. "
- "Usually used in combination with the \"Output to file\" option to export packet data into an XML file.", NULL);
+ "Usually used in combination with the \"Output to file\" option to export packet data into an XML file.");
gtk_box_pack_start(GTK_BOX(printer_vb), psml_rb, FALSE, FALSE, 0);
/* gtk_widget_show(psml_rb); */
csv_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(text_rb), "_CSV");
if (action == output_action_export_csv)
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(csv_rb), TRUE);
- gtk_tooltips_set_tip (tooltips, csv_rb,
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(csv_rb), TRUE);
+ gtk_widget_set_tooltip_text(csv_rb,
"Print output in \"Comma Separated Values\" (CSV) format, "
"a text format compatible with OpenOffice and Excel. "
- "One row for each packet, with its timestamp and size.", NULL);
+ "One row for each packet, with its timestamp and size.");
gtk_box_pack_start(GTK_BOX(printer_vb), csv_rb, FALSE, FALSE, 0);
/* gtk_widget_show(csv_rb); */
carrays_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(text_rb), "C Arrays");
if (action == output_action_export_carrays)
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(carrays_rb), TRUE);
- gtk_tooltips_set_tip (tooltips, carrays_rb,
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(carrays_rb), TRUE);
+ gtk_widget_set_tooltip_text(carrays_rb,
"Print output in C Arrays format, "
"a text file suitable for use in C/C++ programs. "
- "One char[] for each packet.", NULL);
+ "One char[] for each packet.");
gtk_box_pack_start(GTK_BOX(printer_vb), carrays_rb, FALSE, FALSE, 0);
/* gtk_widget_show(carrays_rb); */
/* Output to file button */
dest_cb = gtk_check_button_new_with_mnemonic("Output to _file:");
if (args->to_file)
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(dest_cb), TRUE);
- gtk_tooltips_set_tip (tooltips, dest_cb, "Output to file instead of printer", NULL);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dest_cb), TRUE);
+ gtk_widget_set_tooltip_text(dest_cb, "Output to file instead of printer");
gtk_table_attach_defaults(GTK_TABLE(printer_tb), dest_cb, 0, 1, 0, 1);
if(action == output_action_print)
gtk_widget_show(dest_cb);
/* File text entry */
file_te = gtk_entry_new();
g_object_set_data(G_OBJECT(dest_cb), PRINT_FILE_TE_KEY, file_te);
- gtk_tooltips_set_tip (tooltips, file_te, "Enter Output filename", NULL);
+ gtk_widget_set_tooltip_text(file_te, "Enter Output filename");
gtk_entry_set_text(GTK_ENTRY(file_te), args->file);
gtk_table_attach_defaults(GTK_TABLE(printer_tb), file_te, 1, 2, 0, 1);
gtk_widget_set_sensitive(file_te, args->to_file);
file_bt = gtk_button_new_from_stock(WIRESHARK_STOCK_BROWSE);
g_object_set_data(G_OBJECT(dest_cb), PRINT_FILE_BT_KEY, file_bt);
g_object_set_data(G_OBJECT(file_bt), PRINT_TE_PTR_KEY, file_te);
- gtk_tooltips_set_tip (tooltips, file_bt, "Browse output filename in filesystem", NULL);
+ gtk_widget_set_tooltip_text(file_bt, "Browse output filename in filesystem");
gtk_table_attach_defaults(GTK_TABLE(printer_tb), file_bt, 2, 3, 0, 1);
gtk_widget_set_sensitive(file_bt, args->to_file);
gtk_widget_show(file_bt);
#ifndef _WIN32
cmd_lb = gtk_label_new("Print command:");
g_object_set_data(G_OBJECT(dest_cb), PRINT_CMD_LB_KEY, cmd_lb);
- gtk_misc_set_alignment(GTK_MISC(cmd_lb), 1.0, 0.5);
+ gtk_misc_set_alignment(GTK_MISC(cmd_lb), 1.0f, 0.5f);
gtk_table_attach_defaults(GTK_TABLE(printer_tb), cmd_lb, 0, 1, 1, 2);
gtk_widget_set_sensitive(cmd_lb, !args->to_file);
if(action == output_action_print)
cmd_te = gtk_entry_new();
g_object_set_data(G_OBJECT(dest_cb), PRINT_CMD_TE_KEY, cmd_te);
- gtk_tooltips_set_tip (tooltips, cmd_te, "Enter print command", NULL);
+ gtk_widget_set_tooltip_text(cmd_te, "Enter print command");
gtk_entry_set_text(GTK_ENTRY(cmd_te), args->cmd);
gtk_table_attach_defaults(GTK_TABLE(printer_tb), cmd_te, 1, 2, 1, 2);
gtk_widget_set_sensitive(cmd_te, !args->to_file);
action == output_action_export_ps)
gtk_widget_show(format_fr);
format_vb = gtk_vbox_new(FALSE, 5);
- gtk_container_border_width(GTK_CONTAINER(format_vb), 5);
+ gtk_container_set_border_width(GTK_CONTAINER(format_vb), 5);
gtk_container_add(GTK_CONTAINER(format_fr), format_vb);
gtk_widget_show(format_vb);
/* "Print summary line" check button */
summary_cb = gtk_check_button_new_with_mnemonic("Packet summary line");
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(summary_cb), args->print_summary);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(summary_cb), args->print_summary);
g_signal_connect(summary_cb, "clicked", G_CALLBACK(print_cmd_toggle_detail), main_win);
- gtk_tooltips_set_tip (tooltips, summary_cb, "Output of a packet summary line, like in the packet list", NULL);
+ gtk_widget_set_tooltip_text(summary_cb, "Output of a packet summary line, like in the packet list");
gtk_container_add(GTK_CONTAINER(format_vb), summary_cb);
gtk_widget_show(summary_cb);
/* "Details" check button */
details_cb = gtk_check_button_new_with_mnemonic("Packet details:");
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(details_cb), args->print_dissections != print_dissections_none);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(details_cb), args->print_dissections != print_dissections_none);
g_signal_connect(details_cb, "clicked", G_CALLBACK(print_cmd_toggle_detail), main_win);
- gtk_tooltips_set_tip (tooltips, details_cb, "Output format of the selected packet details (protocol tree).", NULL);
+ gtk_widget_set_tooltip_text(details_cb, "Output format of the selected packet details (protocol tree).");
gtk_container_add(GTK_CONTAINER(format_vb), details_cb);
gtk_widget_show(details_cb);
/*** packet details ***/
details_hb = gtk_hbox_new(FALSE, 6);
- gtk_container_border_width(GTK_CONTAINER(details_hb), 0);
+ gtk_container_set_border_width(GTK_CONTAINER(details_hb), 0);
gtk_container_add(GTK_CONTAINER(format_vb), details_hb);
gtk_widget_show(details_hb);
details_vb = gtk_vbox_new(FALSE, 6);
- gtk_container_border_width(GTK_CONTAINER(details_vb), 0);
+ gtk_container_set_border_width(GTK_CONTAINER(details_vb), 0);
gtk_container_add(GTK_CONTAINER(details_hb), details_vb);
gtk_widget_show(details_vb);
details_vb = gtk_vbox_new(FALSE, 6);
- gtk_container_border_width(GTK_CONTAINER(details_vb), 0);
+ gtk_container_set_border_width(GTK_CONTAINER(details_vb), 0);
gtk_container_add(GTK_CONTAINER(details_hb), details_vb);
gtk_widget_show(details_vb);
/* "All collapsed"/"As displayed"/"All Expanded" radio buttons */
collapse_all_rb = gtk_radio_button_new_with_mnemonic_from_widget(NULL, "All co_llapsed");
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(collapse_all_rb), args->print_dissections == print_dissections_collapsed);
- gtk_tooltips_set_tip (tooltips, collapse_all_rb, "Output of the packet details tree \"collapsed\"", NULL);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(collapse_all_rb), args->print_dissections == print_dissections_collapsed);
+ gtk_widget_set_tooltip_text(collapse_all_rb, "Output of the packet details tree \"collapsed\"");
gtk_container_add(GTK_CONTAINER(details_vb), collapse_all_rb);
gtk_widget_show(collapse_all_rb);
as_displayed_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(collapse_all_rb), "As displa_yed");
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(as_displayed_rb), args->print_dissections == print_dissections_as_displayed);
- gtk_tooltips_set_tip (tooltips, as_displayed_rb, "Output of the packet details tree \"as displayed\"", NULL);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(as_displayed_rb), args->print_dissections == print_dissections_as_displayed);
+ gtk_widget_set_tooltip_text(as_displayed_rb, "Output of the packet details tree \"as displayed\"");
gtk_container_add(GTK_CONTAINER(details_vb), as_displayed_rb);
gtk_widget_show(as_displayed_rb);
expand_all_rb = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(collapse_all_rb), "All e_xpanded");
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(expand_all_rb), args->print_dissections == print_dissections_expanded);
- gtk_tooltips_set_tip (tooltips, expand_all_rb, "Output of the packet details tree \"expanded\"", NULL);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(expand_all_rb), args->print_dissections == print_dissections_expanded);
+ gtk_widget_set_tooltip_text(expand_all_rb, "Output of the packet details tree \"expanded\"");
gtk_container_add(GTK_CONTAINER(details_vb), expand_all_rb);
gtk_widget_show(expand_all_rb);
/* "Print hex" check button. */
hex_cb = gtk_check_button_new_with_mnemonic("Packet bytes");
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(hex_cb), args->print_hex);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(hex_cb), args->print_hex);
g_signal_connect(hex_cb, "clicked", G_CALLBACK(print_cmd_toggle_detail), main_win);
- gtk_tooltips_set_tip (tooltips, hex_cb, "Add a hexdump of the packet data", NULL);
+ gtk_widget_set_tooltip_text(hex_cb, "Add a hexdump of the packet data");
gtk_container_add(GTK_CONTAINER(format_vb), hex_cb);
gtk_widget_show(hex_cb);
/* "Each packet on a new page" check button. */
formfeed_cb = gtk_check_button_new_with_mnemonic("Each packet on a new page");
- gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(formfeed_cb), args->print_formfeed);
- gtk_tooltips_set_tip (tooltips, formfeed_cb, "When checked, a new page will be used for each packet. "
- "This is done by adding a formfeed (or similar) between the packet outputs.", NULL);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(formfeed_cb), args->print_formfeed);
+ gtk_widget_set_tooltip_text (formfeed_cb, "When checked, a new page will be used for each packet. "
+ "This is done by adding a formfeed (or similar) between the packet outputs.");
gtk_container_add(GTK_CONTAINER(format_vb), formfeed_cb);
gtk_widget_show(formfeed_cb);
/* Button row */
- if(topic_available(HELP_PRINT_DIALOG)) {
- bbox = dlg_button_row_new(action == output_action_print ? GTK_STOCK_PRINT : GTK_STOCK_OK, GTK_STOCK_CANCEL, GTK_STOCK_HELP, NULL);
- } else {
- bbox = dlg_button_row_new(action == output_action_print ? GTK_STOCK_PRINT : GTK_STOCK_OK, GTK_STOCK_CANCEL, NULL);
- }
+ bbox = dlg_button_row_new(action == output_action_print ? GTK_STOCK_PRINT : GTK_STOCK_OK, GTK_STOCK_CANCEL, GTK_STOCK_HELP, NULL);
gtk_box_pack_start(GTK_BOX(main_vb), bbox, FALSE, FALSE, 0);
gtk_widget_show(bbox);
g_object_set_data(G_OBJECT(ok_bt), PRINT_HEX_CB_KEY, hex_cb);
g_object_set_data(G_OBJECT(ok_bt), PRINT_FORMFEED_CB_KEY, formfeed_cb);
g_signal_connect(ok_bt, "clicked", G_CALLBACK(print_ok_cb), main_win);
- gtk_tooltips_set_tip (tooltips, ok_bt, "Start output", NULL);
+ gtk_widget_set_tooltip_text (ok_bt, "Start output");
cancel_bt = g_object_get_data(G_OBJECT(bbox), GTK_STOCK_CANCEL);
window_set_cancel_button(main_win, cancel_bt, window_cancel_button_cb);
- gtk_tooltips_set_tip (tooltips, cancel_bt, "Cancel and exit dialog", NULL);
+ gtk_widget_set_tooltip_text (cancel_bt, "Cancel and exit dialog");
if(action == output_action_print) {
- if(topic_available(HELP_PRINT_DIALOG)) {
- help_bt = g_object_get_data(G_OBJECT(bbox), GTK_STOCK_HELP);
- g_signal_connect(help_bt, "clicked", G_CALLBACK(topic_cb), (gpointer)HELP_PRINT_DIALOG);
- }
+ help_bt = g_object_get_data(G_OBJECT(bbox), GTK_STOCK_HELP);
+ g_signal_connect(help_bt, "clicked", G_CALLBACK(topic_cb), (gpointer)HELP_PRINT_DIALOG);
} else {
-#if _WIN32
- if(topic_available(HELP_EXPORT_FILE_WIN32_DIALOG)) {
- help_bt = g_object_get_data(G_OBJECT(bbox), GTK_STOCK_HELP);
- g_signal_connect(help_bt, "clicked", G_CALLBACK(topic_cb), (gpointer)HELP_EXPORT_FILE_WIN32_DIALOG);
- }
+#ifdef _WIN32
+ help_bt = g_object_get_data(G_OBJECT(bbox), GTK_STOCK_HELP);
+ g_signal_connect(help_bt, "clicked", G_CALLBACK(topic_cb), (gpointer)HELP_EXPORT_FILE_WIN32_DIALOG);
#else
- if(topic_available(HELP_EXPORT_FILE_DIALOG)) {
- help_bt = g_object_get_data(G_OBJECT(bbox), GTK_STOCK_HELP);
- g_signal_connect(help_bt, "clicked", G_CALLBACK(topic_cb), (gpointer)HELP_EXPORT_FILE_DIALOG);
- }
+ help_bt = g_object_get_data(G_OBJECT(bbox), GTK_STOCK_HELP);
+ g_signal_connect(help_bt, "clicked", G_CALLBACK(topic_cb), (gpointer)HELP_EXPORT_FILE_DIALOG);
#endif
}
#ifdef _WIN32
gboolean win_printer = FALSE;
int tmp_fd;
- char tmp_namebuf[128+1]; /* XXX - length was used elsewhere too, why? */
- char *tmp_oldfile;
+ char *tmp_namebuf;
+ char *tmp_oldfile = NULL;
#endif
cf_print_status_t status;
#ifdef _WIN32
win_printer = TRUE;
/* We currently don't have a function in util.h to create just a tempfile */
- /* name, so simply create a tempfile using the "official" function, */
- /* then delete this file again. After this, the name MUST be available. */
+ /* name, so simply create a tempfile using the "official" function, */
+ /* then delete this file again. After this, the name MUST be available. */
/* */
- /* Don't use tmpnam() or such, as this will fail under some ACL */
- /* circumstances: http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=358 */
-
- tmp_fd = create_tempfile(tmp_namebuf, sizeof(tmp_namebuf), "ethprint");
+ /* Don't use tmpnam() or such, as this will fail under some ACL */
+ /* circumstances: http://bugs.wireshark.org/bugzilla/show_bug.cgi?id=358 */
+ /* Also: tmpnam is "insecure" and should not be used. */
+ tmp_fd = create_tempfile(&tmp_namebuf, "wshprint");
if(tmp_fd == -1) {
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
- "Couldn't create a temporary file for printing.");
+ "Couldn't create a temporary file for printing:\n%s", tmp_namebuf);
return;
}
/* remember to restore these values later! */
write_failure_alert_box(args->file, errno);
else
simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK,
- "Error writing to print command: %s", strerror(errno));
+ "Error writing to print command: %s", g_strerror(errno));
break;
}
/* trash temp file */
ws_remove(args->file);
+ g_free(args->file);
/* restore old settings */
args->to_file = FALSE;