/* this macro puts a version check function into the module */ GLADE_MODULE_CHECK_INIT void glade_module_register_widgets (void) { glade_require ("gtk"); glade_register_widget (GTK_TYPE_DATABOX, glade_standard_build_widget, NULL, NULL); glade_register_widget (GTK_DATABOX_TYPE_RULER, glade_standard_build_widget, NULL, NULL); glade_provide ("databox"); }
/* this macro puts a version check function into the module */ GLADE_MODULE_CHECK_INIT void glade_module_register_widgets (void) { glade_require ("gtk"); glade_register_custom_prop (BONOBO_TYPE_DOCK, "allow_floating", dock_allow_floating); glade_register_custom_prop (BONOBO_TYPE_DOCK_ITEM, "shadow_type", dock_item_set_shadow_type); glade_register_custom_prop (BONOBO_TYPE_DOCK_ITEM, "behavior", dock_item_set_behavior); glade_register_widget (BONOBO_TYPE_WIDGET, glade_bonobo_widget_new, NULL, NULL); glade_register_widget (BONOBO_TYPE_WINDOW, NULL, glade_standard_build_children, bonobo_window_find_internal_child); glade_register_widget (BONOBO_TYPE_DOCK, NULL, dock_build_children, NULL); glade_register_widget (BONOBO_TYPE_DOCK_ITEM, dock_item_build, glade_standard_build_children, NULL); glade_provide ("bonobo"); }
/* this macro puts a version check function into the module */ GLADE_MODULE_CHECK_INIT void glade_module_register_widgets (void) { glade_require ("matecomponent"); glade_register_custom_prop (MATE_TYPE_APP, "enable_layout_config", app_enable_layout_config); glade_register_custom_prop (MATE_TYPE_PIXMAP_ENTRY, "preview", pixmap_entry_set_preview); glade_register_custom_prop (MATE_TYPE_ICON_LIST, "selection_mode", icon_list_set_selection_mode); glade_register_custom_prop (MATE_TYPE_ICON_LIST, "icon_width", custom_noop); glade_register_custom_prop (MATE_TYPE_ICON_LIST, "row_spacing", icon_list_set_row_spacing); glade_register_custom_prop (MATE_TYPE_ICON_LIST, "column_spacing", icon_list_set_col_spacing); glade_register_custom_prop (MATE_TYPE_ICON_LIST, "text_spacing", icon_list_set_text_spacing); glade_register_custom_prop (MATE_TYPE_ICON_LIST, "text_editable", custom_noop); glade_register_custom_prop (MATE_TYPE_ICON_LIST, "text_static", custom_noop); glade_register_custom_prop (MATE_TYPE_DIALOG, "auto_close", dialog_set_auto_close); glade_register_custom_prop (MATE_TYPE_DIALOG, "hide_on_close", dialog_set_hide_on_close); glade_register_custom_prop (MATE_TYPE_MESSAGE_BOX, "message", custom_noop); glade_register_custom_prop (MATE_TYPE_MESSAGE_BOX, "message_box_type", custom_noop); glade_register_custom_prop (MATE_TYPE_ABOUT, "authors", about_set_authors); glade_register_custom_prop (MATE_TYPE_ABOUT, "translator_credits", about_set_translator_credits); glade_register_custom_prop (MATE_TYPE_ABOUT, "documenters", about_set_documentors); glade_register_custom_prop (MATE_TYPE_DRUID_PAGE_EDGE, "title", druid_page_edge_set_title); glade_register_custom_prop (MATE_TYPE_DRUID_PAGE_EDGE, "text", druid_page_edge_set_text); glade_register_custom_prop (MATE_TYPE_DRUID_PAGE_EDGE, "title_color", druid_page_edge_set_title_color); glade_register_custom_prop (MATE_TYPE_DRUID_PAGE_EDGE, "text_color", druid_page_edge_set_text_color); glade_register_custom_prop (MATE_TYPE_DRUID_PAGE_EDGE, "background_color", druid_page_edge_set_bg_color); glade_register_custom_prop (MATE_TYPE_DRUID_PAGE_EDGE, "logo_background_color", druid_page_edge_set_logo_bg_color); glade_register_custom_prop (MATE_TYPE_DRUID_PAGE_EDGE, "textbox_color", druid_page_edge_set_textbox_color); glade_register_custom_prop (MATE_TYPE_DRUID_PAGE_EDGE, "logo", druid_page_edge_set_logo); glade_register_custom_prop (MATE_TYPE_DRUID_PAGE_EDGE, "watermark", druid_page_edge_set_watermark); glade_register_custom_prop (MATE_TYPE_DRUID_PAGE_EDGE, "top_watermark", druid_page_edge_set_top_watermark); glade_register_custom_prop (MATE_TYPE_DRUID_PAGE_EDGE, "position", custom_noop); glade_register_custom_prop (GTK_TYPE_IMAGE_MENU_ITEM, "stock_item", custom_noop); glade_register_custom_prop (GTK_TYPE_MENU_ITEM, "stock_item", custom_noop); glade_register_custom_prop (MATE_TYPE_PIXMAP, "filename", pixmap_set_filename); glade_register_custom_prop (MATE_TYPE_ENTRY, "max_saved", entry_set_max_saved); glade_register_custom_prop (MATE_TYPE_FILE_ENTRY, "max_saved", file_entry_set_max_saved); glade_register_custom_prop (MATE_TYPE_FILE_ENTRY, "use_filechooser", file_entry_set_use_filechooser); glade_register_custom_prop (MATE_TYPE_ICON_ENTRY, "max_saved", icon_entry_set_max_saved); glade_register_widget (MATE_TYPE_ABOUT, NULL, NULL, NULL); glade_register_widget (MATE_TYPE_APP, app_build, app_build_children, app_find_internal_child); glade_register_widget (MATE_TYPE_APPBAR, glade_standard_build_widget, NULL, NULL); glade_register_widget (MATE_TYPE_COLOR_PICKER,glade_standard_build_widget, NULL, NULL); glade_register_widget (MATE_TYPE_DATE_EDIT, date_edit_new, NULL, NULL); glade_register_widget (MATE_TYPE_DIALOG, dialog_new, dialog_build_children, dialog_find_internal_child); glade_register_widget (MATE_TYPE_DRUID, glade_standard_build_widget, glade_standard_build_children, NULL); glade_register_widget (MATE_TYPE_DRUID_PAGE, glade_standard_build_widget, glade_standard_build_children, NULL); glade_register_widget (MATE_TYPE_DRUID_PAGE_EDGE, druid_page_edge_new, NULL, NULL); glade_register_widget (MATE_TYPE_DRUID_PAGE_STANDARD, glade_standard_build_widget, glade_standard_build_children, druidpagestandard_find_internal_child); glade_register_widget (MATE_TYPE_ENTRY, glade_standard_build_widget, glade_standard_build_children, entry_find_internal_child); glade_register_widget (MATE_TYPE_FILE_ENTRY, glade_standard_build_widget, glade_standard_build_children, file_entry_find_internal_child); glade_register_widget (MATE_TYPE_HREF, glade_standard_build_widget, NULL, NULL); glade_register_widget (MATE_TYPE_ICON_ENTRY, glade_standard_build_widget, NULL, NULL); glade_register_widget (MATE_TYPE_ICON_LIST, icon_list_new, NULL, NULL); glade_register_widget (MATE_TYPE_ICON_SELECTION, glade_standard_build_widget, NULL, NULL); glade_register_widget (MATE_TYPE_MESSAGE_BOX, message_box_new, glade_standard_build_children, dialog_find_internal_child); glade_register_widget (MATE_TYPE_PIXMAP_ENTRY, glade_standard_build_widget, NULL, NULL); glade_register_widget (MATE_TYPE_PROPERTY_BOX, glade_standard_build_widget, glade_standard_build_children, propertybox_find_internal_child); glade_register_widget (MATE_TYPE_SCORES, glade_standard_build_widget, NULL, NULL); glade_register_widget (MATE_TYPE_PIXMAP, glade_standard_build_widget, NULL, NULL); glade_register_widget (MATE_TYPE_FONT_PICKER, NULL, NULL, NULL); /* things we need to override */ glade_register_widget (MATECOMPONENT_TYPE_DOCK, NULL, mate_dock_build_children, NULL); glade_register_widget (GTK_TYPE_MENU_BAR, NULL, menushell_build_children, NULL); glade_register_widget (GTK_TYPE_MENU, NULL, menushell_build_children, NULL); glade_provide ("mate"); }
/*************************************************************************** * * implementation * **************************************************************************/ int main (int argc, char *argv[]) { GtkWidget *widget; GnomeClient *client; gchar *mode_string = NULL; gchar *cl_filter = NULL; gchar *cl_interface = NULL; gchar *cl_input_file = NULL; gchar *export_file_final = NULL; gchar *export_file_signal = NULL; gboolean cl_numeric = FALSE; glong midelay = 0; glong madelay = G_MAXLONG; gchar *version; gchar *cl_glade_file = NULL; poptContext poptcon; struct poptOption optionsTable[] = { {"diagram-only", 'd', POPT_ARG_NONE, &(pref.diagram_only), 0, N_("don't display any node text identification"), NULL}, {"replay-file", 'r', POPT_ARG_STRING, &cl_input_file, 0, N_("replay packets from file"), N_("<file to replay>")}, {"filter", 'f', POPT_ARG_STRING, &cl_filter, 0, N_("set capture filter"), N_("<capture filter>")}, {"interface", 'i', POPT_ARG_STRING, &cl_interface, 0, N_("set interface to listen to"), N_("<interface name>")}, {"final-export", 0, POPT_ARG_STRING, &export_file_final, 0, N_("export to named file at end of replay"), N_("<file to export to>")}, {"signal-export", 0, POPT_ARG_STRING, &export_file_signal, 0, N_("export to named file on receiving USR1"), N_("<file to export to>")}, {"stationary", 's', POPT_ARG_NONE, &(pref.stationary), 0, N_("don't move nodes around (deprecated)"), NULL}, {"node-limit", 'l', POPT_ARG_INT, &(appdata.node_limit), 0, N_("limits nodes displayed"), N_("<number of nodes>")}, {"mode", 'm', POPT_ARG_STRING, &mode_string, 0, N_("mode of operation"), N_("<link|ip|tcp>")}, {"numeric", 'n', POPT_ARG_NONE, &cl_numeric, 0, N_("don't convert addresses to names"), NULL}, {"quiet", 'q', POPT_ARG_NONE, &quiet, 0, N_("Disable informational messages"), NULL}, {"min-delay", 0, POPT_ARG_LONG, &midelay, 0, N_("minimum packet delay in ms for reading capture files [cli only]"), N_("<delay>")}, {"max-delay", 0, POPT_ARG_LONG, &madelay, 0, N_("maximum packet delay in ms for reading capture files [cli only]"), N_("<delay>")}, {"glade-file", 0, POPT_ARG_STRING, &(cl_glade_file), 0, N_("uses the named libglade file for widgets"), N_("<glade file>")}, POPT_AUTOHELP {NULL, 0, 0, NULL, 0, NULL, NULL} }; #ifdef ENABLE_NLS bindtextdomain (PACKAGE, PACKAGE_LOCALE_DIR); bind_textdomain_codeset(PACKAGE, "UTF-8"); /* force UTF-8 conversion */ textdomain (PACKAGE); #endif /* We set the window icon to use */ if (!getenv ("GNOME_DESKTOP_ICON")) putenv ("GNOME_DESKTOP_ICON=" PIXMAPS_DIR "/etherape.png"); #ifdef PACKAGE_SCM_REV /* We initiate the application and read command line options */ version = g_strdup_printf("%s (hg id %s)", VERSION, (*PACKAGE_SCM_REV) ? PACKAGE_SCM_REV : _("-unknown-")); #else version = g_strdup(VERSION); #endif gnome_program_init ("EtherApe", version, LIBGNOMEUI_MODULE, argc, argv, GNOME_PARAM_POPT_TABLE, optionsTable, GNOME_PARAM_NONE); g_free(version); appdata_init(&appdata); /* We obtain application parameters * First, absolute defaults * Second, values saved in the config file * Third, whatever given in the command line */ init_config(&pref); set_debug_level(); /* Config file */ load_config(); /* Command line */ cl_numeric = !pref.name_res; poptcon = poptGetContext ("Etherape", argc, (const char **) argv, optionsTable, 0); while (poptGetNextOpt (poptcon) > 0); if (cl_interface) { if (appdata.interface) g_free (appdata.interface); appdata.interface = g_strdup (cl_interface); } if (export_file_final) { if (appdata.export_file_final) g_free (appdata.export_file_final); appdata.export_file_final = g_strdup (export_file_final); } if (export_file_signal) { if (appdata.export_file_signal) g_free (appdata.export_file_signal); appdata.export_file_signal = g_strdup (export_file_signal); } pref.name_res = !cl_numeric; if (cl_input_file) { if (appdata.input_file) g_free (appdata.input_file); appdata.input_file = g_strdup (cl_input_file); } /* Find mode of operation */ if (mode_string) { if (strstr (mode_string, "link")) appdata.mode = LINK6; else if (strstr (mode_string, "ip")) appdata.mode = IP; else if (strstr (mode_string, "tcp")) appdata.mode = TCP; else g_warning (_ ("Unrecognized mode. Do etherape --help for a list of modes")); g_free(pref.filter); pref.filter = get_default_filter(appdata.mode); } if (cl_filter) { if (pref.filter) g_free (pref.filter); pref.filter = g_strdup (cl_filter); } if (midelay >= 0 && midelay <= G_MAXLONG) { appdata.min_delay = midelay; if (appdata.min_delay != 0) g_message("Minimum delay set to %lu ms", appdata.min_delay); } else g_message("Invalid minimum delay %ld, ignored", midelay); if (madelay >= 0 && madelay <= G_MAXLONG) { if (madelay < appdata.min_delay) { g_message("Maximum delay must be less of minimum delay"); appdata.max_delay = appdata.min_delay; } else appdata.max_delay = madelay; if (appdata.max_delay != G_MAXLONG) g_message("Maximum delay set to %lu ms", appdata.max_delay); } else g_message("Invalid maximum delay %ld, ignored", madelay); /* Glade */ glade_gnome_init (); glade_require("gnome"); glade_require("canvas"); if (!appdata_init_glade(cl_glade_file)) return 1; /* prepare decoders */ services_init(); /* Sets controls to the values of variables and connects signals */ init_diagram (appdata.xml); /* Session handling */ client = gnome_master_client (); g_signal_connect (G_OBJECT (client), "save_yourself", GTK_SIGNAL_FUNC (save_session), argv[0]); g_signal_connect (G_OBJECT (client), "die", GTK_SIGNAL_FUNC (session_die), NULL); gtk_widget_show (appdata.app1); install_handlers(); /* With this we force an update of the diagram every x ms * Data in the diagram is updated, and then the canvas redraws itself when * the gtk loop is idle. If the CPU can't handle the set refresh_period, * then it will just do a best effort */ widget = glade_xml_get_widget (appdata.xml, "canvas1"); destroying_idle (widget); /* This other timeout makes sure that the info windows are updated */ g_timeout_add (500, (GtkFunction) update_info_windows, NULL); /* another timeout to handle IP-cache timeouts */ g_timeout_add (10000, (GtkFunction) ipcache_tick, NULL); init_menus (); gui_start_capture (); /* MAIN LOOP */ gtk_main (); free_static_data(); return 0; } /* main */