diff options
author | Anders Broman <anders.broman@ericsson.com> | 2012-02-29 16:51:32 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2012-02-29 16:51:32 +0000 |
commit | d24fad6371fb15e9b02f9a0bb27251e4102a8956 (patch) | |
tree | 05d6336b30c63b0f1c00751ffb06968bea8e16b5 /ui/gtk/edit_packet_comment_dlg.c | |
parent | 094e8f8947730632710030b5bde07d1a10801e7c (diff) | |
download | wireshark-d24fad6371fb15e9b02f9a0bb27251e4102a8956.tar.gz |
- Add a LED in the statusbar to indicate that capture comments exists,
clickable to open an edit window.
- Add checks for NULL pointers.
Help with a different color LED possibly with Jeff's (c) in it apreceated.
Should the LED be placed elsewhere or the whole thing done differently?
svn path=/trunk/; revision=41242
Diffstat (limited to 'ui/gtk/edit_packet_comment_dlg.c')
-rw-r--r-- | ui/gtk/edit_packet_comment_dlg.c | 99 |
1 files changed, 96 insertions, 3 deletions
diff --git a/ui/gtk/edit_packet_comment_dlg.c b/ui/gtk/edit_packet_comment_dlg.c index 1ae7954e33..929d7c62c1 100644 --- a/ui/gtk/edit_packet_comment_dlg.c +++ b/ui/gtk/edit_packet_comment_dlg.c @@ -34,6 +34,12 @@ #include <gtk/gtk.h> +#include <epan/epan.h> +#include <epan/filesystem.h> + +#include "../cfile.h" +#include "../file.h" + #include "ui/simple_dialog.h" #include "ui/gtk/dlg_utils.h" @@ -46,10 +52,11 @@ #include "ui/gtk/old-gtk-compat.h" GtkWidget *edit_or_add_pkt_comment_dlg = NULL; +GtkWidget *edit_or_add_capture_comment_dlg = NULL; static void -pkt_comment_text_buff_clear_cb(GtkWidget *w _U_, GtkWidget *view) +comment_text_buff_clear_cb(GtkWidget *w _U_, GtkWidget *view) { GtkTextBuffer *buffer; @@ -80,6 +87,31 @@ pkt_comment_text_buff_save_cb(GtkWidget *w _U_, GtkWidget *view) } + +static void +capture_comment_text_buff_save_cb(GtkWidget *w _U_, GtkWidget *view) +{ + GtkTextBuffer *buffer; + GtkTextIter start_iter; + GtkTextIter end_iter; + gchar *new_capture_comment = NULL; + + buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)); + gtk_text_buffer_get_start_iter (buffer, &start_iter); + gtk_text_buffer_get_end_iter (buffer, &end_iter); + + new_capture_comment = gtk_text_buffer_get_text (buffer, &start_iter, &end_iter, FALSE /* whether to include invisible text */); + + /*g_warning("The new comment is '%s'",new_capture_comment);*/ + cf_update_capture_comment(&cfile, new_capture_comment); + + /* Mark the file as unsaved, caues a popup asking to save the file if we quit the file */ + cfile.user_saved = FALSE; + + /*window_destroy(w);*/ + +} + void edit_packet_comment_dlg (GtkAction *action _U_, gpointer data _U_) { @@ -93,7 +125,7 @@ edit_packet_comment_dlg (GtkAction *action _U_, gpointer data _U_) const gchar *buf_str; edit_or_add_pkt_comment_dlg = dlg_window_new ("Edit or Add Packet Comments"); - gtk_widget_set_size_request (edit_or_add_pkt_comment_dlg, 400, 80); + gtk_widget_set_size_request (edit_or_add_pkt_comment_dlg, 500, 160); gtk_window_set_resizable (GTK_WINDOW (edit_or_add_pkt_comment_dlg), TRUE); gtk_container_set_border_width (GTK_CONTAINER (edit_or_add_pkt_comment_dlg), 0); @@ -124,7 +156,7 @@ edit_packet_comment_dlg (GtkAction *action _U_, gpointer data _U_) gtk_widget_set_sensitive (save_bt, TRUE); clear_bt = g_object_get_data(G_OBJECT(bbox), GTK_STOCK_CLEAR); - g_signal_connect(clear_bt, "clicked", G_CALLBACK(pkt_comment_text_buff_clear_cb), view); + g_signal_connect(clear_bt, "clicked", G_CALLBACK(comment_text_buff_clear_cb), view); close_bt = g_object_get_data (G_OBJECT(bbox), GTK_STOCK_CLOSE); window_set_cancel_button (edit_or_add_pkt_comment_dlg, close_bt, window_cancel_button_cb); @@ -141,3 +173,64 @@ edit_packet_comment_dlg (GtkAction *action _U_, gpointer data _U_) } + +void +edit_capture_dlg_launch (void) +{ + + GtkWidget *vbox; + GtkWidget *view; + GtkWidget *bbox; + GtkWidget *save_bt, *clear_bt, *close_bt, *help_bt; + GtkTextBuffer *buffer = NULL; + const gchar *comment_str = NULL; + const gchar *buf_str; + + edit_or_add_capture_comment_dlg = dlg_window_new ("Edit or Add Capture Comments"); + gtk_widget_set_size_request (edit_or_add_capture_comment_dlg, 500, 160); + gtk_window_set_resizable (GTK_WINDOW (edit_or_add_capture_comment_dlg), TRUE); + gtk_container_set_border_width (GTK_CONTAINER (edit_or_add_capture_comment_dlg), 0); + + vbox = gtk_vbox_new (FALSE, 0); + gtk_container_add (GTK_CONTAINER (edit_or_add_capture_comment_dlg), vbox); + gtk_widget_show (vbox); + + view = gtk_text_view_new (); + buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)); + + /* Get the comment */ + comment_str = cf_read_shb_comment(&cfile); + /*g_warning("Fetched comment '%s'",opt_comment);*/ + + if(comment_str != NULL){ + buf_str = g_strdup_printf("%s", comment_str); + gtk_text_buffer_set_text (buffer, buf_str, -1); + } + gtk_container_add(GTK_CONTAINER(vbox), view); + gtk_widget_show (view); + + /* Button row. */ + bbox = dlg_button_row_new (GTK_STOCK_SAVE, GTK_STOCK_CLEAR, GTK_STOCK_CLOSE, GTK_STOCK_HELP, NULL); + gtk_box_pack_end (GTK_BOX(vbox), bbox, FALSE, FALSE, 0); + + save_bt = g_object_get_data (G_OBJECT(bbox), GTK_STOCK_SAVE); + g_signal_connect (save_bt, "clicked", G_CALLBACK(capture_comment_text_buff_save_cb), view); + gtk_widget_set_sensitive (save_bt, TRUE); + + clear_bt = g_object_get_data(G_OBJECT(bbox), GTK_STOCK_CLEAR); + g_signal_connect(clear_bt, "clicked", G_CALLBACK(comment_text_buff_clear_cb), view); + + close_bt = g_object_get_data (G_OBJECT(bbox), GTK_STOCK_CLOSE); + window_set_cancel_button (edit_or_add_capture_comment_dlg, close_bt, window_cancel_button_cb); + + help_bt = g_object_get_data (G_OBJECT(bbox), GTK_STOCK_HELP); + g_signal_connect (help_bt, "clicked",/* G_CALLBACK(topic_cb)*/NULL, /*(gpointer)HELP_MANUAL_ADDR_RESOLVE_DIALOG*/NULL); + gtk_widget_set_sensitive (help_bt, FALSE); + + gtk_widget_grab_default (save_bt); + g_signal_connect (edit_or_add_capture_comment_dlg, "delete_event", G_CALLBACK(window_delete_event_cb), NULL); + + + gtk_widget_show (edit_or_add_capture_comment_dlg); + +}
\ No newline at end of file |