#include "gtk/plugins_dlg.h"
#include "../image/wssplash.xpm"
+#include "webbrowser.h"
static void about_wireshark_destroy_cb(GtkWidget *, gpointer);
return page;
}
+static gint about_folders_callback(GtkWidget *widget, GdkEventButton *event, gint id)
+{
+ gint row = 0, col = 0;
+ GtkTreeSelection *tree_selection;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gchar *path;
+
+ tree_selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widget));
+
+ if(gtk_tree_selection_count_selected_rows(tree_selection) == 0)
+ return FALSE;
+
+ if(event->type != GDK_2BUTTON_PRESS)
+ /* not a double click */
+ return FALSE;
+
+ if(gtk_tree_selection_get_selected (tree_selection, &model, &iter)) {
+ gtk_tree_model_get(model, &iter, 1, &path, -1);
+ browser_open_data_file(path);
+ }
+
+ return TRUE;
+}
+
static void
about_folders_row(GtkWidget *table, const char *label, const char *dir, const char *tip)
{
char *path;
const gchar *titles[] = { "Name", "Folder", "Typical Files"};
GtkWidget *scrolledwindow;
+#ifdef HAVE_LIBSMI
+ gint i;
+ gchar **resultArray;
+#endif
scrolledwindow = scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolledwindow),
/* Container for our data */
table = simple_list_new(3, titles);
+ /* connect a callback so we can spot a double-click */
+ gtk_signal_connect(GTK_OBJECT(table), "button_press_event",
+ GTK_SIGNAL_FUNC(about_folders_callback), (gpointer)0);
+
+ simple_list_url_col(table, 1);
+
/* "file open" */
about_folders_row(table, "\"File\" dialogs", get_last_open_dir(),
"capture files");
#ifdef HAVE_LIBSMI
/* SMI MIBs/PIBs */
path = oid_get_default_mib_path();
- about_folders_row(table, "MIB/PIB paths", path,
- "SMI MIB/PIB search path");
+
+ resultArray = g_strsplit(path, ";", 10);
+
+ for(i = 0; resultArray[i]; i++)
+ about_folders_row(table, "MIB/PIB path", g_strstrip(resultArray[i]),
+ "SMI MIB/PIB search path");
+ g_strfreev(resultArray);
g_free((void *) path);
#endif
return plugins_list;
}
+void render_as_url(GtkCellRenderer *cell)
+{
+ g_object_set(cell, "foreground", "blue", NULL);
+ g_object_set(cell, "foreground-set", TRUE, NULL);
+
+ g_object_set(cell, "underline", PANGO_UNDERLINE_SINGLE, NULL);
+ g_object_set(cell, "underline-set", TRUE, NULL);
+}
+
+void simple_list_url_col(GtkWidget *list, gint col)
+{
+ GtkTreeViewColumn *ul_column;
+ GList *renderers_list;
+ GtkCellRenderer *ul_renderer;
+
+ /* make the column look like a link ... */
+ ul_column = gtk_tree_view_get_column(GTK_TREE_VIEW(list), col);
+
+ renderers_list = gtk_tree_view_column_get_cell_renderers(ul_column);
+
+ if(renderers_list != NULL) {
+ /* it is simple list - there should be only one renderer */
+ ul_renderer = (GtkCellRenderer*)renderers_list->data;
+
+ render_as_url(ul_renderer);
+
+ g_list_free(renderers_list);
+ }
+
+}
+
void
copy_to_clipboard(GString *str)
{
*/
extern void simple_list_append(GtkWidget *list, ...);
+/*** Make a column look like a url
+ *
+ * @param list the list from simple_list_new()
+ * @param col the column to make the values lookk like urls
+ */
+extern void simple_list_url_col(GtkWidget *list, gint col);
+
+/*** Make a cell underline to look like links
+ *
+ * @param cell the cell renderer that will show the text as a link
+ */
+extern void render_as_url(GtkCellRenderer *cell);
/** Set the styles of all Trees based upon user preferences. */
extern void set_tree_styles_all(void);
if((fi->hfinfo->type == FT_FRAMENUM) ||
(FI_GET_FLAG(fi, FI_URL) && IS_FT_STRING(fi->hfinfo->type))) {
- g_object_set (cell, "foreground", "blue", NULL);
- g_object_set (cell, "foreground-set", TRUE, NULL);
-
- g_object_set (cell, "underline", PANGO_UNDERLINE_SINGLE, NULL);
- g_object_set (cell, "underline-set", TRUE, NULL);
+ render_as_url(cell);
}
if(FI_GET_FLAG(fi, PI_SEVERITY_MASK)) {
gchar *uri;
/* build filename */
+#ifdef G_OS_WIN32
+ if((strlen(filename) > 2) && (filename[1] == ':'))
+ file_path = g_strdup(filename);
+#else
+ /* XXX: is this correct for MacOS/Linux ? */
+ if((strlen(filename) > 1) && (filename[0] == '/'))
+ file_path = g_strdup(filename);
+#endif
+ else
+
file_path = g_strdup_printf("%s/%s", get_datafile_dir(), filename);
/* XXX - check, if the file is really existing, otherwise display a simple_dialog about the problem */