int clip_GTK_COMBODISABLEACTIVATE(ClipMachine * ClipMachineMemory) { C_widget *ccmb = _fetch_cw_arg(ClipMachineMemory); CHECKCWID(ccmb, GTK_IS_COMBO); gtk_combo_disable_activate(GTK_COMBO(ccmb->widget)); return 0; err: return 1; }
PRIVATE void init_combo( Control *control ) { GtkCombo *cb; cb = GTK_COMBO( gtk_combo_new() ); g_assert( cb != NULL ); gtk_combo_disable_activate( cb ); if( ((Data *)control->g->data)->list != NULL ) gtk_combo_set_popdown_strings( cb, ((Data *)control->g->data)->list ); gtk_signal_connect( GTK_OBJECT( cb->entry ), "activate", GTK_SIGNAL_FUNC(entry_activated), control ); control->widget = GTK_WIDGET(cb); }
GtkWidget * create_file_view(FileView *view) { GtkWidget *vbox; GtkWidget *hbox; GtkWidget *menu_bar; GtkWidget *button; GtkWidget *pixmapwid; GdkPixmap *pixmap; GdkBitmap *mask; GtkStyle *style; GdkFont *font; GtkWidget *sw; gint i; /* Top Pane */ vbox = gtk_vbox_new(FALSE, 0); gtk_widget_show(vbox); menu_bar = create_filelist_menu_bar(view); gtk_widget_show(menu_bar); gtk_box_pack_start(GTK_BOX(vbox), menu_bar, FALSE, FALSE, 0); hbox = gtk_hbox_new(FALSE, 0); gtk_widget_show(hbox); /* Show/Hide Button */ if (view == &app.right_view) button = gtk_button_new_with_label("<"); else button = gtk_button_new_with_label(">"); GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS); gtk_signal_connect(GTK_OBJECT(button), "button_press_event", GTK_SIGNAL_FUNC(show_hide_file_view_cb), view); gtk_tooltips_set_tip(GTK_TOOLTIPS(app.tooltips), button, _("Left Click: Maximize/Minimize File View\n" "Right Click: Sync Dirs"), NULL); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); gtk_widget_show(button); /* Hidden files toggle button */ view->hidden_toggle = gtk_toggle_button_new_with_label("H"); GTK_WIDGET_UNSET_FLAGS(view->hidden_toggle, GTK_CAN_FOCUS); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(view->hidden_toggle), view->show_hidden); gtk_signal_connect(GTK_OBJECT(view->hidden_toggle), "toggled", GTK_SIGNAL_FUNC(toggle_show_hidden_cb), view); gtk_tooltips_set_tip(GTK_TOOLTIPS(app.tooltips), view->hidden_toggle, _("Show/Hide hidden files"), NULL); gtk_box_pack_start(GTK_BOX(hbox), view->hidden_toggle, FALSE, FALSE, 0); gtk_widget_show(view->hidden_toggle); /* Dir Entry Combo */ view->dir_entry = gtk_combo_new(); gtk_combo_disable_activate(GTK_COMBO(view->dir_entry)); gtk_combo_set_use_arrows_always(GTK_COMBO(view->dir_entry), TRUE); gtk_combo_set_case_sensitive(GTK_COMBO(view->dir_entry), TRUE); gtk_signal_connect(GTK_OBJECT(GTK_COMBO(view->dir_entry)->entry), "activate", GTK_SIGNAL_FUNC(dir_entry_cb), view); gtk_signal_connect(GTK_OBJECT(GTK_COMBO(view->dir_entry)->popwin), "hide", GTK_SIGNAL_FUNC(dir_popwin_cb), view); gtk_box_pack_start(GTK_BOX(hbox), view->dir_entry, TRUE, TRUE, 0); gtk_widget_show(view->dir_entry); /* Up Dir Button */ button = gtk_button_new(); GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS); gtk_signal_connect(GTK_OBJECT(button), "button_press_event", GTK_SIGNAL_FUNC(updir_click_cb), view); gtk_tooltips_set_tip(GTK_TOOLTIPS(app.tooltips), button, _("Left Click: Up Dir Right Click: Home"), NULL); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); gtk_widget_show(button); style = gtk_widget_get_style(app.main_window); pixmap = gdk_pixmap_create_from_xpm_d(app.main_window->window, &mask, &style->bg[GTK_STATE_NORMAL], icon_dirparent_xpm); pixmapwid = gtk_pixmap_new(pixmap, mask); gtk_container_add(GTK_CONTAINER(button), pixmapwid); gtk_widget_show(pixmapwid); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); sw = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW(sw), cfg.scrollbar_pos); gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); gtk_widget_show(sw); /* File List */ view->clist = gtk_clist_new(MAX_COLUMNS); for (i = 0; i < MAX_COLUMNS; i++) { GtkWidget *hbox = gtk_hbox_new(FALSE, 0); GtkWidget *label = gtk_label_new(all_columns[i].title); view->sort_arrows[i] = gtk_arrow_new(GTK_ARROW_DOWN, GTK_SHADOW_IN); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0); gtk_box_pack_end(GTK_BOX(hbox), view->sort_arrows[i], FALSE, TRUE, 0); gtk_widget_show(label); gtk_widget_show(hbox); gtk_clist_set_column_widget(GTK_CLIST(view->clist), i, hbox); GTK_WIDGET_UNSET_FLAGS(GTK_CLIST(view->clist)->column[i].button, GTK_CAN_FOCUS); } gtk_clist_column_titles_show(GTK_CLIST(view->clist)); gtk_clist_set_shadow_type(GTK_CLIST(view->clist), GTK_SHADOW_ETCHED_IN); gtk_clist_set_selection_mode(GTK_CLIST(view->clist), GTK_SELECTION_EXTENDED); gtk_clist_set_use_drag_icons(GTK_CLIST(view->clist), TRUE); gtk_clist_set_row_height(GTK_CLIST(view->clist), 0); font = gdk_font_load(cfg.list_font); if (font != NULL) { style = gtk_style_copy(gtk_widget_get_style(view->clist)); style->font = font; gtk_widget_set_style(view->clist, style); } for (i = 0; i < MAX_COLUMNS; i++) { gtk_clist_set_column_width(GTK_CLIST(view->clist), i, all_columns[i].size); gtk_clist_set_column_visibility(GTK_CLIST(view->clist), i, all_columns[i].is_visible); } gtk_signal_connect(GTK_OBJECT(view->clist), "select_row", GTK_SIGNAL_FUNC(select_row_cb), view); gtk_signal_connect(GTK_OBJECT(view->clist), "button_press_event", GTK_SIGNAL_FUNC(mouse_click_cb), view); gtk_signal_connect(GTK_OBJECT(view->clist), "key_press_event", GTK_SIGNAL_FUNC(file_list_key_press_cb), view); gtk_signal_connect(GTK_OBJECT(view->clist), "click_column", GTK_SIGNAL_FUNC(column_button_cb), view); gtk_signal_connect(GTK_OBJECT(view->clist), "drag_data_get", GTK_SIGNAL_FUNC(clist_drag_data_get), view); gtk_signal_connect(GTK_OBJECT(view->clist), "drag_motion", GTK_SIGNAL_FUNC(clist_drag_motion), view); gtk_signal_connect(GTK_OBJECT(view->clist), "drag_leave", GTK_SIGNAL_FUNC(clist_drag_leave), view); gtk_signal_connect(GTK_OBJECT(view->clist), "drag_data_received", GTK_SIGNAL_FUNC(clist_drag_data_received), view); gtk_drag_dest_set(view->clist, GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_HIGHLIGHT | GTK_DEST_DEFAULT_DROP, target_table, n_targets, GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK | GDK_ACTION_ASK); gtk_container_add(GTK_CONTAINER(sw), view->clist); gtk_widget_show(view->clist); /* Set the CLIST_COLOR for resetting from the DRAG_HILIGHT color */ { GtkStyle *style = gtk_widget_get_style(view->clist); CLIST_COLOR.red = style->base[GTK_STATE_NORMAL].red; CLIST_COLOR.green = style->base[GTK_STATE_NORMAL].green; CLIST_COLOR.blue = style->base[GTK_STATE_NORMAL].blue; } return vbox; }
viewer_t *viewer_init(char *title) { GtkTooltips *tooltips; GtkWidget *main_box; GtkWidget *hbox; GtkWidget *button; /* New viewer instance */ viewer_t *viewer = (viewer_t *) malloc(sizeof(viewer_t)); /* The main window */ viewer->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_set_usize(viewer->window, VIEWER_SIZE_WIDTH, VIEWER_SIZE_HIGHT); gtk_signal_connect(GTK_OBJECT(viewer->window), "destroy", GTK_SIGNAL_FUNC(viewer_destroyed_handler), viewer); /* The window icon */ set_window_icon(GTK_WINDOW(viewer->window)); /* The window title */ if ( title == NULL ) { viewer->title = NULL; gtk_window_set_title(GTK_WINDOW(viewer->window), TITLE); } else { viewer->title = (char *) malloc(strlen(TITLE)+strlen(title)+4); sprintf(viewer->title, TITLE ": %s", title); gtk_window_set_title(GTK_WINDOW(viewer->window), viewer->title); } /* A vertical box to put the list and the button in */ main_box = gtk_vbox_new(FALSE, 5); gtk_container_set_border_width(GTK_CONTAINER(main_box), 5); gtk_container_add(GTK_CONTAINER(viewer->window), main_box); gtk_widget_show(main_box); /* Some tooltips to make life easier */ tooltips = gtk_tooltips_new(); /* The result log list */ viewer->list = list_init(main_box); viewer->loaded = 0; /* The button box */ viewer->button_box = gtk_vbox_new(FALSE, 5); gtk_widget_show(viewer->button_box); gtk_box_pack_start(GTK_BOX(main_box), viewer->button_box, FALSE, FALSE, 0); /* The file buttons */ hbox = gtk_hbox_new(FALSE, 5); gtk_widget_show(hbox); gtk_box_pack_start(GTK_BOX(viewer->button_box), hbox, FALSE, FALSE, 0); button = viewer_button(hbox, "Follow"); gtk_tooltips_set_tip(tooltips, button, "Follow the Test Log file as it grows", NULL); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(button_follow_clicked), viewer); button = viewer_button(hbox, "Close"); gtk_tooltips_set_tip(tooltips, button, "Quit the TestFarm Log Viewer", NULL); gtk_signal_connect_object(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), (gpointer) viewer->window); viewer_vsep(hbox); /* The selection buttons */ button = viewer_button(hbox, "+Interfaces"); gtk_tooltips_set_tip(tooltips, button, "Perform filtering on interfaces", NULL); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(button_periph_clicked), viewer); list_destroyed_periph(viewer->list, button_destroyed, button); button = viewer_button(hbox, "+Tags"); gtk_tooltips_set_tip(tooltips, button, "Perform filtering on tags", NULL); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(button_tag_clicked), viewer); list_destroyed_tag(viewer->list, button_destroyed, button); button = viewer_button(hbox, "+Test cases"); gtk_tooltips_set_tip(tooltips, button, "Perform filtering on Test Cases", NULL); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(button_case_clicked), viewer); list_destroyed_case(viewer->list, button_destroyed, button); viewer_vsep(hbox); button = viewer_button(hbox, "Clear selection"); gtk_tooltips_set_tip(tooltips, button, "Clear all selected Log lines", NULL); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(button_clear_clicked), viewer); /* The search entry and buttons */ hbox = gtk_hbox_new(FALSE, 10); gtk_widget_show(hbox); gtk_box_pack_start(GTK_BOX(viewer->button_box), hbox, FALSE, FALSE, 0); viewer->search_combo = gtk_combo_new(); gtk_widget_show(viewer->search_combo); gtk_combo_disable_activate(GTK_COMBO(viewer->search_combo)); gtk_combo_set_case_sensitive(GTK_COMBO(viewer->search_combo), 1); gtk_box_pack_start(GTK_BOX(hbox), viewer->search_combo, TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT(GTK_COMBO(viewer->search_combo)->entry), "activate", GTK_SIGNAL_FUNC(search_entry_validated), viewer); button = gtk_button_new_with_label("Find First"); gtk_widget_show(button); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(search_button_clicked), viewer); button = gtk_button_new_with_label("Find Next"); gtk_widget_show(button); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(search_entry_validated), viewer); viewer->search_info = gtk_check_button_new_with_label("Information only"); gtk_widget_show(viewer->search_info); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(viewer->search_info), 1); gtk_box_pack_start(GTK_BOX(hbox), viewer->search_info, FALSE, FALSE, 0); viewer->search_case = gtk_check_button_new_with_label("Match case"); gtk_widget_show(viewer->search_case); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(viewer->search_case), 0); gtk_box_pack_start(GTK_BOX(hbox), viewer->search_case, FALSE, FALSE, 0); viewer->search_history = NULL; viewer->search_list = NULL; search_history_load(viewer); /* Show this beautiful piece of art... */ gtk_widget_show(viewer->window); /* Load result log file and fill the list with it */ viewer->filew = NULL; viewer->filename = NULL; /* Clear destroyed signal handling */ viewer->destroyed = NULL; viewer->destroyed_arg = NULL; /* The mouse cursors */ viewer->cursor_watch = gdk_cursor_new(GDK_WATCH); /* Open the FAM connection */ viewer_fam_open(viewer); return viewer; }
struct master *add_master_dialog (struct master *m) { GtkWidget *window; GtkWidget *main_vbox; GtkWidget *table; GtkWidget *option_menu; GtkWidget *hbox; GtkWidget *label; GtkWidget *button; GtkWidget *hseparator; char *typestr; enum master_query_type i; struct master *master_to_edit; char *windowtitle; master_name_result = NULL; master_addr_result = NULL; current_master_query_type = MASTER_NATIVE; master_to_edit = NULL; master_to_add = NULL; for (i=MASTER_NATIVE;i<MASTER_NUM_QUERY_TYPES;i++) master_query_type_radios[i]=NULL; master_to_edit = m; if (master_to_edit) { current_master_query_type = master_to_edit->master_type; master_type = master_to_edit->type; } else { // Get last game type added (stored in master_okbutton_callback) typestr = config_get_string ("/" CONFIG_FILE "/Add Master/game"); if (typestr) { master_type = id2type (typestr); g_free (typestr); } else { master_type = QW_SERVER; } } if (master_to_edit) { windowtitle=_("Rename Master"); } else { windowtitle=_("Add Master"); } window = dialog_create_modal_transient_window(windowtitle, TRUE, FALSE, NULL); main_vbox = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (window), main_vbox); table = gtk_table_new (2, 2, FALSE); gtk_table_set_row_spacings (GTK_TABLE (table), 2); gtk_table_set_col_spacings (GTK_TABLE (table), 4); gtk_container_set_border_width (GTK_CONTAINER (table), 16); gtk_box_pack_start (GTK_BOX (main_vbox), table, FALSE, FALSE, 0); /* Master Name (Description) */ label = gtk_label_new (_("Master Name")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 0, 0); gtk_widget_show (label); hbox = gtk_hbox_new (FALSE, 4); gtk_table_attach_defaults (GTK_TABLE (table), hbox, 1, 2, 0, 1); master_name_combo = gtk_combo_new (); gtk_widget_set_usize (master_name_combo, 200, -1); gtk_box_pack_start (GTK_BOX (hbox), master_name_combo, TRUE, TRUE, 0); gtk_entry_set_max_length (GTK_ENTRY (GTK_COMBO (master_name_combo)->entry), 256); gtk_combo_set_case_sensitive (GTK_COMBO (master_name_combo), TRUE); gtk_combo_set_use_arrows_always (GTK_COMBO (master_name_combo), TRUE); gtk_combo_disable_activate (GTK_COMBO (master_name_combo)); gtk_signal_connect( GTK_OBJECT (GTK_COMBO (master_name_combo)->entry), "activate", GTK_SIGNAL_FUNC (master_okbutton_callback), GTK_OBJECT (window)); GTK_WIDGET_SET_FLAGS (GTK_COMBO (master_name_combo)->entry, GTK_CAN_FOCUS); GTK_WIDGET_UNSET_FLAGS (GTK_COMBO (master_name_combo)->button, GTK_CAN_FOCUS); gtk_widget_grab_focus (GTK_COMBO (master_name_combo)->entry); gtk_widget_show (master_name_combo); if (master_history_name->items) combo_set_vals (master_name_combo, master_history_name->items, ""); if (master_to_edit) { gtk_entry_set_text(GTK_ENTRY (GTK_COMBO (master_name_combo)->entry), master_to_edit->name); } /* Master Type Option Menu */ option_menu = create_server_type_menu (master_type, create_server_type_menu_filter_configured, GTK_SIGNAL_FUNC(select_master_type_callback)); gtk_box_pack_start (GTK_BOX (hbox), option_menu, FALSE, FALSE, 0); if (master_to_edit) { gtk_widget_set_state (option_menu, GTK_STATE_NORMAL); gtk_widget_set_sensitive (GTK_WIDGET(option_menu),FALSE); } gtk_widget_show (option_menu); gtk_widget_show (hbox); /* Master Address */ label = gtk_label_new (_("Master Address")); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_table_attach (GTK_TABLE (table), label, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0); gtk_widget_show (label); master_addr_combo = gtk_combo_new (); gtk_table_attach_defaults (GTK_TABLE (table), master_addr_combo, 1, 2, 1, 2); gtk_entry_set_max_length (GTK_ENTRY (GTK_COMBO (master_addr_combo)->entry), 4096); gtk_combo_set_case_sensitive (GTK_COMBO (master_addr_combo), TRUE); gtk_combo_set_use_arrows_always (GTK_COMBO (master_addr_combo), TRUE); gtk_combo_disable_activate (GTK_COMBO (master_addr_combo)); gtk_signal_connect ( GTK_OBJECT (GTK_COMBO (master_addr_combo)->entry), "activate", GTK_SIGNAL_FUNC (master_okbutton_callback), GTK_OBJECT (window)); gtk_signal_connect ( GTK_OBJECT (GTK_COMBO (master_addr_combo)->list), "selection-changed", GTK_SIGNAL_FUNC (master_address_from_history_selected_callback),NULL); GTK_WIDGET_SET_FLAGS (GTK_COMBO (master_addr_combo)->entry, GTK_CAN_FOCUS); GTK_WIDGET_UNSET_FLAGS (GTK_COMBO (master_addr_combo)->button, GTK_CAN_FOCUS); // gtk_widget_grab_focus (GTK_COMBO (master_addr_combo)->entry); gtk_widget_show (master_addr_combo); if (master_history_addr->items) combo_set_vals (master_addr_combo, master_history_addr->items, ""); if (master_to_edit) { char* url = master_to_url(master_to_edit); gtk_entry_set_text(GTK_ENTRY (GTK_COMBO (master_addr_combo)->entry), url); gtk_widget_set_state (master_addr_combo, GTK_STATE_NORMAL); gtk_widget_set_sensitive (GTK_WIDGET(master_addr_combo),FALSE); g_free(url); } gtk_widget_show (table); /* query type */ hbox = gtk_hbox_new (TRUE, 8); for (i=MASTER_NATIVE;i<MASTER_NUM_QUERY_TYPES;i++) { master_query_type_radios[i] = gtk_radio_button_new_with_label_from_widget( i==MASTER_NATIVE?NULL:GTK_RADIO_BUTTON(master_query_type_radios[MASTER_NATIVE]), _(master_designation[i])); if (master_to_edit) { gtk_widget_set_sensitive (GTK_WIDGET(master_query_type_radios[i]),FALSE); } gtk_signal_connect(GTK_OBJECT (master_query_type_radios[i]), "toggled", GTK_SIGNAL_FUNC (master_type_radio_callback), (gpointer)i); gtk_widget_show (master_query_type_radios[i]); gtk_box_pack_start (GTK_BOX (hbox),master_query_type_radios[i], FALSE, FALSE, 0); } if (master_to_edit) { master_activate_radio_for_type(current_master_query_type); } else if (!games[master_type].default_master_port && current_master_query_type == MASTER_NATIVE) { gtk_widget_set_state (master_query_type_radios[MASTER_NATIVE], GTK_STATE_NORMAL); gtk_widget_set_sensitive (GTK_WIDGET(master_query_type_radios[MASTER_NATIVE]),FALSE); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(master_query_type_radios[MASTER_GAMESPY]),TRUE); } gtk_widget_show (hbox); gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0); /* Separator */ hseparator = gtk_hseparator_new (); gtk_box_pack_start (GTK_BOX (main_vbox), hseparator, FALSE, FALSE, 0); gtk_widget_show (hseparator); /* Buttons */ hbox = gtk_hbox_new (FALSE, 8); gtk_container_set_border_width (GTK_CONTAINER (hbox), 8); gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0); /* Cancel Button */ button = gtk_button_new_with_label (_("Cancel")); gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0); gtk_widget_set_usize (button, 80, -1); gtk_signal_connect_object (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (gtk_widget_destroy), GTK_OBJECT (window)); GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); gtk_widget_show (button); /* OK Button */ button = gtk_button_new_with_label ("OK"); gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0); gtk_widget_set_usize (button, 80, -1); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC(master_okbutton_callback), window); GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); gtk_widget_grab_default (button); gtk_widget_show (button); gtk_widget_show (hbox); gtk_widget_show (main_vbox); gtk_widget_show (window); gtk_main (); unregister_window (window); return master_to_add; }
GtkWidget* create_SurfaceInspector( void ){ GtkWidget *label; GtkObject *adjustment; GtkWidget *table1; GtkWidget *table2; GtkWidget *frame1; GtkWidget *frame2; GtkWidget *vbox1; GtkWidget *hbox1; SurfaceInspector = gtk_window_new( GTK_WINDOW_TOPLEVEL ); gtk_container_set_border_width( GTK_CONTAINER( SurfaceInspector ), 4 ); gtk_window_set_title( GTK_WINDOW( SurfaceInspector ), "Surface Inspector" ); SetWinPos_from_Prefs( SurfaceInspector ); vbox1 = gtk_vbox_new( FALSE, 5 ); gtk_widget_show( vbox1 ); gtk_container_add( GTK_CONTAINER( SurfaceInspector ), vbox1 ); hbox1 = gtk_hbox_new( FALSE, 5 ); gtk_widget_show( hbox1 ); gtk_container_add( GTK_CONTAINER( vbox1 ), hbox1 ); gtk_container_set_border_width( GTK_CONTAINER( hbox1 ), 4 ); label = gtk_label_new( "Texture: " ); gtk_widget_show( label ); gtk_box_pack_start( GTK_BOX( hbox1 ), label, FALSE, FALSE, 0 ); gtk_misc_set_alignment( GTK_MISC( label ), 1, 0.5 ); texture_combo = gtk_combo_new(); g_object_set_data( G_OBJECT( GTK_COMBO( texture_combo )->popwin ), "KeepMeAround", texture_combo ); gtk_combo_disable_activate( (GtkCombo*) texture_combo ); gtk_widget_show( texture_combo ); gtk_box_pack_start( GTK_BOX( hbox1 ), texture_combo, TRUE, TRUE, 0 ); texture_combo_entry = GTK_COMBO( texture_combo )->entry; gtk_widget_show( texture_combo_entry ); gtk_entry_set_max_length( GTK_ENTRY( texture_combo_entry ), 1024 ); frame1 = gtk_frame_new( "Surface" ); gtk_widget_show( frame1 ); gtk_container_add( GTK_CONTAINER( vbox1 ), frame1 ); table1 = gtk_table_new( 7, 3, FALSE ); gtk_widget_show( table1 ); gtk_table_set_col_spacings( GTK_TABLE( table1 ), 5 ); gtk_table_set_row_spacings( GTK_TABLE( table1 ), 5 ); gtk_container_set_border_width( GTK_CONTAINER( table1 ), 5 ); gtk_container_add( GTK_CONTAINER( frame1 ), table1 ); label = gtk_label_new( "Step" ); gtk_widget_show( label ); gtk_table_attach( GTK_TABLE( table1 ), label, 2, 3, 0, 1, (GtkAttachOptions) ( GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); label = gtk_label_new( "Value" ); gtk_widget_show( label ); gtk_table_attach( GTK_TABLE( table1 ), label, 1, 2, 0, 1, (GtkAttachOptions) ( GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_misc_set_alignment( GTK_MISC( label ), 0.5, 1 ); label = gtk_label_new( "Horizontal shift: " ); gtk_widget_show( label ); gtk_table_attach( GTK_TABLE( table1 ), label, 0, 1, 1, 2, (GtkAttachOptions) ( GTK_FILL ), (GtkAttachOptions) ( GTK_FILL ), 0, 0 ); label = gtk_label_new( "Vertical shift: " ); gtk_widget_show( label ); gtk_table_attach( GTK_TABLE( table1 ), label, 0, 1, 2, 3, (GtkAttachOptions) ( GTK_FILL ), (GtkAttachOptions) ( GTK_FILL ), 0, 0 ); label = gtk_label_new( "Horizontal scale: " ); gtk_widget_show( label ); gtk_table_attach( GTK_TABLE( table1 ), label, 0, 1, 3, 4, (GtkAttachOptions) ( GTK_FILL ), (GtkAttachOptions) ( GTK_FILL ), 0, 0 ); label = gtk_label_new( "Vertical scale: " ); gtk_widget_show( label ); gtk_table_attach( GTK_TABLE( table1 ), label, 0, 1, 4, 5, (GtkAttachOptions) ( GTK_FILL ), (GtkAttachOptions) ( GTK_FILL ), 0, 0 ); label = gtk_label_new( "Rotate: " ); gtk_widget_show( label ); gtk_table_attach( GTK_TABLE( table1 ), label, 0, 1, 5, 6, (GtkAttachOptions) ( GTK_FILL ), (GtkAttachOptions) ( GTK_FILL ), 0, 0 ); // Value Spins adjustment = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 0.0 ); hshift_value_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( adjustment ), 1, 2 ); gtk_widget_show( hshift_value_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), hshift_value_spinbutton, 1, 2, 1, 2, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( hshift_value_spinbutton ), GTK_UPDATE_IF_VALID ); gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( hshift_value_spinbutton ), TRUE ); adjustment = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 0.0 ); vshift_value_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( adjustment ), 1, 2 ); gtk_widget_show( vshift_value_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), vshift_value_spinbutton, 1, 2, 2, 3, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( vshift_value_spinbutton ), GTK_UPDATE_IF_VALID ); gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( vshift_value_spinbutton ), TRUE ); adjustment = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 0.0 ); hscale_value_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( adjustment ), 1, 4 ); gtk_widget_show( hscale_value_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), hscale_value_spinbutton, 1, 2, 3, 4, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( hscale_value_spinbutton ), GTK_UPDATE_IF_VALID ); gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( hscale_value_spinbutton ), TRUE ); adjustment = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 0.0 ); vscale_value_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( adjustment ), 1, 4 ); gtk_widget_show( vscale_value_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), vscale_value_spinbutton, 1, 2, 4, 5, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( vscale_value_spinbutton ), GTK_UPDATE_IF_VALID ); adjustment = gtk_adjustment_new( 0.0, -360.0, 360.0, 1.0, 10.0, 0.0 ); rotate_value_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( adjustment ), 1, 0 ); gtk_widget_show( rotate_value_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), rotate_value_spinbutton, 1, 2, 5, 6, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( rotate_value_spinbutton ), GTK_UPDATE_IF_VALID ); gtk_spin_button_set_wrap( GTK_SPIN_BUTTON( rotate_value_spinbutton ), TRUE ); // Step Spins adjustment = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 0.0 ); hshift_step_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( adjustment ), 1, 2 ); gtk_widget_show( hshift_step_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), hshift_step_spinbutton, 2, 3, 1, 2, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( hshift_step_spinbutton ), GTK_UPDATE_IF_VALID ); adjustment = gtk_adjustment_new( 0.0, -8192.0, 8192.0, 2.0, 8.0, 0.0 ); vshift_step_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( adjustment ), 1, 2 ); gtk_widget_show( vshift_step_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), vshift_step_spinbutton, 2, 3, 2, 3, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( vshift_step_spinbutton ), GTK_UPDATE_IF_VALID ); adjustment = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 0.0 ); hscale_step_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( adjustment ), 1, 4 ); gtk_widget_show( hscale_step_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), hscale_step_spinbutton, 2, 3, 3, 4, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( hscale_step_spinbutton ), GTK_UPDATE_IF_VALID ); adjustment = gtk_adjustment_new( 0.0, -1024.0, 1024.0, 1.0, 4.0, 0.0 ); vscale_step_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( adjustment ), 1, 4 ); gtk_widget_show( vscale_step_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), vscale_step_spinbutton, 2, 3, 4, 5, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( vscale_step_spinbutton ), GTK_UPDATE_IF_VALID ); adjustment = gtk_adjustment_new( 0.0, -360.0, 360.0, 1.0, 10.0, 0.0 ); rotate_step_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( adjustment ), 1, 2 ); gtk_widget_show( rotate_step_spinbutton ); gtk_table_attach( GTK_TABLE( table1 ), rotate_step_spinbutton, 2, 3, 5, 6, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( rotate_step_spinbutton ), GTK_UPDATE_IF_VALID ); match_grid_button = gtk_button_new_with_mnemonic( "Match Grid" ); gtk_widget_show( match_grid_button ); gtk_table_attach( GTK_TABLE( table1 ), match_grid_button, 2, 3, 6, 7, (GtkAttachOptions) ( GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); frame2 = gtk_frame_new( "Tools" ); gtk_widget_show( frame2 ); gtk_container_add( GTK_CONTAINER( vbox1 ), frame2 ); table2 = gtk_table_new( 2, 4, TRUE ); gtk_widget_show( table2 ); gtk_table_set_col_spacings( GTK_TABLE( table2), 5 ); gtk_table_set_row_spacings( GTK_TABLE( table2 ), 0 ); gtk_container_set_border_width( GTK_CONTAINER( table2 ), 5 ); gtk_container_add( GTK_CONTAINER( frame2 ), table2 ); label = gtk_label_new( "Height" ); gtk_widget_show( label ); gtk_table_attach( GTK_TABLE( table2 ), label, 3, 4, 0, 1, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); label = gtk_label_new( "Width" ); gtk_widget_show( label ); gtk_table_attach( GTK_TABLE( table2 ), label, 2, 3, 0, 1, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); label = gtk_label_new( "Brush" ); gtk_widget_show( label ); gtk_table_attach( GTK_TABLE( table2 ), label, 0, 2, 0, 1, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); adjustment = gtk_adjustment_new( 1, 1, 32, 1, 10, 0 ); fit_height_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( adjustment ), 1, 0 ); gtk_widget_show( fit_height_spinbutton ); gtk_table_attach( GTK_TABLE( table2 ), fit_height_spinbutton, 3, 4, 1, 2, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_numeric( GTK_SPIN_BUTTON( fit_height_spinbutton ), TRUE ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( fit_height_spinbutton ), GTK_UPDATE_IF_VALID ); adjustment = gtk_adjustment_new( 1, 1, 32, 1, 10, 0 ); fit_width_spinbutton = gtk_spin_button_new( GTK_ADJUSTMENT( adjustment ), 1, 0 ); gtk_widget_show( fit_width_spinbutton ); gtk_table_attach( GTK_TABLE( table2 ), fit_width_spinbutton, 2, 3, 1, 2, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); gtk_spin_button_set_numeric( GTK_SPIN_BUTTON( fit_width_spinbutton ), TRUE ); gtk_spin_button_set_update_policy( GTK_SPIN_BUTTON( fit_width_spinbutton ), GTK_UPDATE_IF_VALID ); fit_button = gtk_button_new_with_mnemonic( "Fit" ); gtk_widget_show( fit_button ); gtk_table_attach( GTK_TABLE( table2 ), fit_button, 1, 2, 1, 2, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); axial_button = gtk_button_new_with_mnemonic( "Axial" ); gtk_widget_show( axial_button ); gtk_table_attach( GTK_TABLE( table2 ), axial_button, 0, 1, 1, 2, (GtkAttachOptions) ( GTK_EXPAND | GTK_FILL ), (GtkAttachOptions) ( 0 ), 0, 0 ); // Add the SURF_ and CONTENTS_ flags frame create_SurfaceFlagsFrame( vbox1 ); g_signal_connect( (gpointer) SurfaceInspector, "delete_event", G_CALLBACK( delete_event_callback ), NULL ); g_signal_connect( (gpointer) SurfaceInspector, "destroy", G_CALLBACK( gtk_widget_destroy ), NULL ); g_signal_connect( (gpointer) SurfaceInspector, "key_press_event", G_CALLBACK( surface_inspector_key_press_event ), NULL ); g_signal_connect( (gpointer) texture_combo_entry, "key_press_event", G_CALLBACK( on_texture_combo_entry_key_press_event ), NULL ); g_signal_connect( (gpointer) texture_combo_entry, "activate", G_CALLBACK( on_texture_combo_entry_activate ), NULL ); g_signal_connect( (gpointer) hshift_value_spinbutton, "value_changed", G_CALLBACK( on_hshift_value_spinbutton_value_changed ), NULL ); g_signal_connect( (gpointer) vshift_value_spinbutton, "value_changed", G_CALLBACK( on_vshift_value_spinbutton_value_changed ), NULL ); g_signal_connect( (gpointer) hscale_value_spinbutton, "value_changed", G_CALLBACK( on_hscale_value_spinbutton_value_changed ), NULL ); g_signal_connect( (gpointer) vscale_value_spinbutton, "value_changed", G_CALLBACK( on_vscale_value_spinbutton_value_changed ), NULL ); g_signal_connect( (gpointer) rotate_value_spinbutton, "value_changed", G_CALLBACK( on_rotate_value_spinbutton_value_changed ), NULL ); g_signal_connect( (gpointer) hshift_step_spinbutton, "value_changed", G_CALLBACK( on_hshift_step_spinbutton_value_changed ), NULL ); g_signal_connect( (gpointer) vshift_step_spinbutton, "value_changed", G_CALLBACK( on_vshift_step_spinbutton_value_changed ), NULL ); g_signal_connect( (gpointer) hscale_step_spinbutton, "value_changed", G_CALLBACK( on_hscale_step_spinbutton_value_changed ), NULL ); g_signal_connect( (gpointer) vscale_step_spinbutton, "value_changed", G_CALLBACK( on_vscale_step_spinbutton_value_changed ), NULL ); g_signal_connect( (gpointer) rotate_step_spinbutton, "value_changed", G_CALLBACK( on_rotate_step_spinbutton_value_changed ), NULL ); g_signal_connect( (gpointer) match_grid_button, "clicked", G_CALLBACK( on_match_grid_button_clicked ), NULL ); g_signal_connect( (gpointer) fit_width_spinbutton, "value_changed", G_CALLBACK( on_fit_width_spinbutton_value_changed ), NULL ); g_signal_connect( (gpointer) fit_height_spinbutton, "value_changed", G_CALLBACK( on_fit_height_spinbutton_value_changed ), NULL ); g_signal_connect( (gpointer) fit_button, "clicked", G_CALLBACK( on_fit_button_clicked ), NULL ); g_signal_connect( (gpointer) axial_button, "clicked", G_CALLBACK( on_axial_button_clicked ), NULL ); return SurfaceInspector; }
static GtkWidget* make_login_table(login_dlg *ldlg) { GtkWidget *vbox, *hbox, *cvbox, *img; GtkSizeGroup *sg; sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); vbox = gtk_vbox_new(FALSE, 6); ldlg->mhost = gtk_option_menu_new(); gtk_widget_set_size_request(ldlg->mhost, 50, -1); populate_host_list(ldlg); g_signal_connect(G_OBJECT(ldlg->mhost), "changed", G_CALLBACK(host_changed_cb), ldlg); gtk_box_pack_start(GTK_BOX(vbox), labelled_box_new_sg(_("_Server:"), ldlg->mhost, sg), FALSE, FALSE, 0); ldlg->cusername = gtk_combo_new(); gtk_widget_set_size_request(ldlg->cusername, 50, -1); ldlg->eusername = GTK_COMBO(ldlg->cusername)->entry; gtk_combo_disable_activate(GTK_COMBO(ldlg->cusername)); gtk_entry_set_activates_default(GTK_ENTRY(ldlg->eusername), TRUE); gtk_box_pack_start(GTK_BOX(vbox), labelled_box_new_all(_("_User Name:"), ldlg->cusername, TRUE, sg, ldlg->eusername), FALSE, FALSE, 0); ldlg->epassword = gtk_entry_new(); gtk_entry_set_activates_default(GTK_ENTRY(ldlg->epassword), TRUE); gtk_widget_set_size_request(ldlg->epassword, 100, -1); gtk_entry_set_visibility(GTK_ENTRY(ldlg->epassword), FALSE); gtk_box_pack_start(GTK_BOX(vbox), labelled_box_new_sg(_("_Password:"******"R_emember user")); ldlg->crpassword = gtk_check_button_new_with_mnemonic(_("Re_member password")); ldlg->bupdate = gtk_button_new_with_mnemonic(_("Update _Information")); g_signal_connect(G_OBJECT(ldlg->bupdate), "clicked", G_CALLBACK(update_cb), ldlg); cvbox = gtk_vbox_new(FALSE, 6); gtk_box_pack_start(GTK_BOX(cvbox), ldlg->cruser, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(cvbox), ldlg->crpassword, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(cvbox), ldlg->bupdate, FALSE, FALSE, 0); img = gtk_image_new_from_stock("logjam-goat", GTK_ICON_SIZE_DIALOG), gtk_size_group_add_widget(sg, img); hbox = gtk_hbox_new(FALSE, 12); gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(hbox), cvbox, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); populate_user_list(ldlg); g_signal_connect(G_OBJECT(ldlg->eusername), "changed", G_CALLBACK(username_changed), ldlg); return vbox; }
void lzaktaxiv(class lzaktaxi_data *gl_data) { class lzaktaxiv_data v_data; v_data.zap_zaktaxi.clear_data(); char strsql[300]; SQL_str row; short d,m,g; time_t vrem; struct tm *bf; int i=0; v_data.metkavz=gl_data->metkavz; v_data.metkarr=gl_data->metkarr; v_data.metkazapisi=gl_data->metkazapisi; time(&v_data.vremnz); //v_data->zap_zaktaxi.clear_data(); v_data.zap_zaktaxi.suma.new_plus("1"); if(gl_data->metkazapisi == 1) { if(gl_data->metkavz == 0) return; v_data.vrem.new_plus(gl_data->rowv[16]); v_data.datz.new_plus(gl_data->rowv[8]); v_data.vremz.new_plus(gl_data->rowv[9]); SQLCURSOR cur; if(gl_data->rowv[0][0] != '\0') { sprintf(strsql,"select naik from Taxikzz where kod=%s",gl_data->rowv[0]); if(iceb_sql_readkey(strsql,&row,&cur,gl_data->window) == 1) { sprintf(strsql,"%s %s",gl_data->rowv[0],row[0]); v_data.zap_zaktaxi.kodzav.new_plus(strsql); } } v_data.zap_zaktaxi.kodk.new_plus(gl_data->rowv[1]); if(gl_data->rowv[2][0] != '\0') { sprintf(strsql,"select fio,gosn from Taxivod where kod='%s'",gl_data->rowv[2]); if(sql_readkey(&bd,strsql,&row,&cur) == 1) { sprintf(strsql,"%s %s %s",gl_data->rowv[2],row[0],row[1]); v_data.zap_zaktaxi.kv.new_plus(strsql); } } v_data.zap_zaktaxi.fio.new_plus(gl_data->rowv[3]); v_data.zap_zaktaxi.telef.new_plus(gl_data->rowv[4]); v_data.zap_zaktaxi.kolp.new_plus(gl_data->rowv[5]); v_data.zap_zaktaxi.datvz.new_plus(iceb_u_datzap(gl_data->rowv[6])); v_data.zap_zaktaxi.vremvz.new_plus(gl_data->rowv[7]); v_data.zap_zaktaxi.adreso.new_plus(gl_data->rowv[10]); v_data.zap_zaktaxi.adresk.new_plus(gl_data->rowv[11]); v_data.zap_zaktaxi.koment.new_plus(gl_data->rowv[12]); v_data.zap_zaktaxi.suma.new_plus(gl_data->rowv[13]); } v_data.window=gtk_window_new(GTK_WINDOW_TOPLEVEL); //gtk_window_set_position( GTK_WINDOW(v_data.window),ICEB_POS_CENTER); //gtk_widget_set_usize(GTK_WIDGET(v_data.window), 600,180); //if(v_data.metkazapisi == 1) gdk_window_set_cursor(gl_data->window->window,gdk_cursor_new(ICEB_CURSOR_GDITE)); //Удерживать окно над породившем его окном всегда gtk_window_set_transient_for(GTK_WINDOW(v_data.window),GTK_WINDOW(gl_data->window)); gtk_window_set_modal( GTK_WINDOW(v_data.window) ,TRUE ); if(gl_data->metkazapisi == 0) sprintf(strsql,"%s %s",NAME_SYSTEM,iceb_u_toutf("Ввод новой записи")); if(gl_data->metkazapisi == 1) sprintf(strsql,"%s %s",NAME_SYSTEM,iceb_u_toutf("Корректировка записи")); gtk_window_set_title(GTK_WINDOW(v_data.window),strsql); gtk_signal_connect(GTK_OBJECT(v_data.window),"delete_event",GTK_SIGNAL_FUNC(gtk_widget_destroy),NULL); gtk_signal_connect(GTK_OBJECT(v_data.window),"destroy",GTK_SIGNAL_FUNC(gtk_main_quit),NULL); gtk_signal_connect_after(GTK_OBJECT(v_data.window),"key_press_event",GTK_SIGNAL_FUNC(vzaktaxi_key_press),&v_data); //gtk_signal_connect_after(GTK_OBJECT(v_data.window),"key_release_event",GTK_SIGNAL_FUNC(obr_klav_plansh_o),gl_data); GtkWidget *vbox = gtk_vbox_new (FALSE, 0); GtkWidget *hbox = gtk_hbox_new (FALSE, 0); GtkWidget *hbox1 = gtk_hbox_new (FALSE, 0); GtkWidget *hbox2 = gtk_hbox_new (FALSE, 0); GtkWidget *hbox3 = gtk_hbox_new (FALSE, 0); GtkWidget *hbox4 = gtk_hbox_new (FALSE, 0); GtkWidget *hbox5 = gtk_hbox_new (FALSE, 0); GtkWidget *hbox6 = gtk_hbox_new (FALSE, 0); GtkWidget *hbox7 = gtk_hbox_new (FALSE, 0); GtkWidget *hbox8 = gtk_hbox_new (FALSE, 0); GtkWidget *hboxknop = gtk_hbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (v_data.window), vbox); gtk_container_add (GTK_CONTAINER (vbox), hbox1); //Адрес подачи gtk_container_add (GTK_CONTAINER (vbox), hbox2); //Адрес поездки gtk_container_add (GTK_CONTAINER (vbox), hbox3); //Код водителя gtk_container_add (GTK_CONTAINER (vbox), hbox5); //Код завершения gtk_container_add (GTK_CONTAINER (vbox), hbox); //Телефон, код клиента gtk_container_add (GTK_CONTAINER (vbox), hbox4); //Коментарий gtk_container_add (GTK_CONTAINER (vbox), hbox6); //Сумма, количество пассажиров gtk_container_add (GTK_CONTAINER (vbox), hbox7); //Фамилия клиента gtk_container_add (GTK_CONTAINER (vbox), hbox8); //Дата , время выполнения заказа gtk_container_add (GTK_CONTAINER (vbox), hboxknop); GtkWidget *label=gtk_label_new(iceb_u_toutf("Телефон")); v_data.entry[E_TELEF] = gtk_entry_new(); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox), v_data.entry[E_TELEF], TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT (v_data.entry[E_TELEF]), "activate",GTK_SIGNAL_FUNC(get_telef),&v_data); gtk_entry_set_text(GTK_ENTRY(v_data.entry[E_TELEF]),v_data.zap_zaktaxi.telef.ravno_toutf()); //gtk_widget_set_usize(v_data.entry[E_TELEF],100,20); label=gtk_label_new(iceb_u_toutf("Код клиента")); v_data.entry[E_KODKL] = gtk_entry_new(); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox), v_data.entry[E_KODKL], TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT (v_data.entry[E_KODKL]), "activate",GTK_SIGNAL_FUNC(kodkl_get),&v_data); //gtk_widget_set_usize(v_data.entry[E_KODKL],60,20); gtk_entry_set_text(GTK_ENTRY(v_data.entry[E_KODKL]),v_data.zap_zaktaxi.kodk.ravno_toutf()); label=gtk_label_new(iceb_u_toutf("Адрес подачи")); v_data.entry[E_ADRES_POD] = gtk_entry_new(); gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox1), v_data.entry[E_ADRES_POD], TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT (v_data.entry[E_ADRES_POD]), "activate",GTK_SIGNAL_FUNC(iceb_get_text_str),&v_data.zap_zaktaxi.adreso); //gtk_widget_set_usize(v_data.entry[E_ADRES_POD],200,20); gtk_entry_set_text(GTK_ENTRY(v_data.entry[E_ADRES_POD]),v_data.zap_zaktaxi.adreso.ravno_toutf()); label=gtk_label_new(iceb_u_toutf("Адрес поездки")); v_data.entry[E_ADRES_POEZ] = gtk_entry_new(); gtk_box_pack_start (GTK_BOX (hbox2), label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox2), v_data.entry[E_ADRES_POEZ], TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT (v_data.entry[E_ADRES_POEZ]), "activate",GTK_SIGNAL_FUNC(iceb_get_text_str),&v_data.zap_zaktaxi.adresk); //gtk_widget_set_usize(v_data.entry[E_ADRES_POEZ],200,20); gtk_entry_set_text(GTK_ENTRY(v_data.entry[E_ADRES_POEZ]),v_data.zap_zaktaxi.adresk.ravno_toutf()); label=gtk_label_new(iceb_u_toutf("Код водителя")); gtk_box_pack_start (GTK_BOX (hbox3), label, FALSE, FALSE, 0); //Создаем выбор водителя GList *glist=NULL; SQLCURSOR cur; sprintf(strsql,"select kod,fio,gosn from Taxivod where sm=0 order by fio asc"); int kolstr=0; if((kolstr=cur.make_cursor(&bd,strsql)) < 0) iceb_msql_error(&bd,gettext("Ошибка создания курсора !"),strsql,NULL); iceb_u_spisok VOD; while(cur.read_cursor(&row) != 0) { sprintf(strsql,"%s %s %s",row[0],row[1],row[2]); VOD.plus(iceb_u_toutf(strsql)); } if(kolstr == 0) VOD.plus(iceb_u_toutf("Не введен список водителей !!!")); v_data.windowvoditel=gtk_combo_new(); for(i=0 ; i < kolstr; i++) glist=g_list_append(glist,(void*)VOD.ravno(i)); gtk_combo_set_popdown_strings(GTK_COMBO(v_data.windowvoditel),glist); gtk_combo_disable_activate(GTK_COMBO(v_data.windowvoditel)); gtk_box_pack_start (GTK_BOX (hbox3), v_data.windowvoditel, TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT (GTK_COMBO(v_data.windowvoditel)->entry), "activate",GTK_SIGNAL_FUNC(voditel_get),&v_data); gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(v_data.windowvoditel)->entry),v_data.zap_zaktaxi.kv.ravno_toutf()); label=gtk_label_new(iceb_u_toutf("Коментарий")); v_data.entry[E_KOMENT] = gtk_entry_new(); gtk_box_pack_start (GTK_BOX (hbox4), label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox4), v_data.entry[E_KOMENT], TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT (v_data.entry[E_KOMENT]), "activate",GTK_SIGNAL_FUNC(iceb_get_text_str),&v_data.zap_zaktaxi.koment); //gtk_widget_set_usize(v_data.entry[E_KOMENT],200,20); gtk_entry_set_text(GTK_ENTRY(v_data.entry[E_KOMENT]),v_data.zap_zaktaxi.koment.ravno_toutf()); label=gtk_label_new(iceb_u_toutf("Код завершения")); gtk_box_pack_start (GTK_BOX (hbox5), label, FALSE, FALSE, 0); //Создаем меню кодов завершения glist=NULL; sprintf(strsql,"select kod,naik from Taxikzz order by kod asc"); kolstr=0; if((kolstr=cur.make_cursor(&bd,strsql)) < 0) iceb_msql_error(&bd,gettext("Ошибка создания курсора !"),strsql,NULL); iceb_u_spisok KZV; while(cur.read_cursor(&row) != 0) { sprintf(strsql,"%s %s",row[0],row[1]); KZV.plus(iceb_u_toutf(strsql)); } if(kolstr == 0) KZV.plus(iceb_u_toutf("Не введен список кодов завершения !!!")); v_data.windowkodzav=gtk_combo_new(); for(i=0 ; i < kolstr; i++) glist=g_list_append(glist,(void*)KZV.ravno(i)); gtk_combo_set_popdown_strings(GTK_COMBO(v_data.windowkodzav),glist); gtk_combo_disable_activate(GTK_COMBO(v_data.windowkodzav)); gtk_box_pack_start (GTK_BOX (hbox5), v_data.windowkodzav, TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT (GTK_COMBO(v_data.windowkodzav)->entry), "activate",GTK_SIGNAL_FUNC(kodzav_get),&v_data); //Если не выводить то в меню будет первая строка из списка //if(gl_data->metkazapisi == 1) gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(v_data.windowkodzav)->entry),v_data.zap_zaktaxi.kodzav.ravno_toutf()); label=gtk_label_new(iceb_u_toutf("Сумма")); v_data.entry[E_SUMA] = gtk_entry_new(); gtk_box_pack_start (GTK_BOX (hbox6), label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox6), v_data.entry[E_SUMA], TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT (v_data.entry[E_SUMA]), "activate",GTK_SIGNAL_FUNC(iceb_get_text_str),&v_data.zap_zaktaxi.suma); //gtk_widget_set_usize(v_data.entry[E_SUMA],40,20); gtk_entry_set_text(GTK_ENTRY(v_data.entry[E_SUMA]),v_data.zap_zaktaxi.suma.ravno_toutf()); double suma=0.; if(v_data.zap_zaktaxi.kodk.getdlinna() > 1) suma=taxi_saldo(v_data.zap_zaktaxi.kodk.ravno()); sprintf(strsql,"Сальдо: %.2f ",suma); v_data.label_saldo=gtk_label_new(iceb_u_toutf(strsql)); gtk_box_pack_start (GTK_BOX (hbox6), v_data.label_saldo, FALSE, FALSE, 0); label=gtk_label_new(iceb_u_toutf("Количество пассажиров")); v_data.entry[E_KOLIH_PAS] = gtk_entry_new(); gtk_box_pack_start (GTK_BOX (hbox6), label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox6), v_data.entry[E_KOLIH_PAS], TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT (v_data.entry[E_KOLIH_PAS]), "activate",GTK_SIGNAL_FUNC(iceb_get_text_str),&v_data.zap_zaktaxi.kolp); //gtk_widget_set_usize(v_data.entry[E_KOLIH_PAS],40,20); gtk_entry_set_text(GTK_ENTRY(v_data.entry[E_KOLIH_PAS]),v_data.zap_zaktaxi.kolp.ravno_toutf()); /********************************/ label=gtk_label_new(iceb_u_toutf("ФИО")); v_data.entry[E_FIO] = gtk_entry_new(); gtk_box_pack_start (GTK_BOX (hbox7), label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox7), v_data.entry[E_FIO], TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT (v_data.entry[E_FIO]), "activate",GTK_SIGNAL_FUNC(iceb_get_text_str),&v_data.zap_zaktaxi.fio); gtk_entry_set_text(GTK_ENTRY(v_data.entry[E_FIO]),v_data.zap_zaktaxi.fio.ravno_toutf()); //gtk_widget_set_usize(v_data.entry[E_FIO],200,20); label=gtk_label_new(iceb_u_toutf("Дата вып.заказа")); v_data.entry[E_DATA_ZAK] = gtk_entry_new_with_max_length (11); gtk_box_pack_start (GTK_BOX (hbox8), label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox8), v_data.entry[E_DATA_ZAK], TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT (v_data.entry[E_DATA_ZAK]), "activate",GTK_SIGNAL_FUNC(iceb_get_text_str),&v_data.zap_zaktaxi.datvz); time(&vrem); bf=localtime(&vrem); if(gl_data->metkazapisi == 1) { gtk_entry_set_text(GTK_ENTRY(v_data.entry[E_DATA_ZAK]),v_data.zap_zaktaxi.datvz.ravno()); // strcpy(strsql,v_data.zap_zaktaxi.datvz.ravno()); } /****** if(gl_data->metkazapisi == 0) { sprintf(strsql,"%02d.%02d.%04d",bf->tm_mday,bf->tm_mon+1,bf->tm_year+1900); v_data.zap_zaktaxi.datvz.new_plus(strsql); } *********/ //gtk_widget_set_usize(v_data.entry[E_DATA_ZAK],68,20); //gtk_entry_set_text(GTK_ENTRY(v_data.entry[E_DATA_ZAK]),strsql); label=gtk_label_new(iceb_u_toutf("Время вып.заказа")); v_data.entry[E_VREM_ZAK] = gtk_entry_new_with_max_length (9); gtk_box_pack_start (GTK_BOX (hbox8), label, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (hbox8), v_data.entry[E_VREM_ZAK], TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT (v_data.entry[E_VREM_ZAK]), "activate",GTK_SIGNAL_FUNC(iceb_get_text_str),&v_data.zap_zaktaxi.vremvz); if(gl_data->metkazapisi == 1) { iceb_u_rstime(&d,&m,&g,v_data.zap_zaktaxi.vremvz.ravno()); if(d != 0) sprintf(strsql,"%02d:%02d",d,m); gtk_entry_set_text(GTK_ENTRY(v_data.entry[E_VREM_ZAK]),strsql); } /************* if(gl_data->metkazapisi == 0) { sprintf(strsql,"%02d:%02d",bf->tm_hour,bf->tm_min); v_data.zap_zaktaxi.vremvz.new_plus(strsql); } //gtk_widget_set_usize(v_data.entry[E_VREM_ZAK],68,20); gtk_entry_set_text(GTK_ENTRY(v_data.entry[E_VREM_ZAK]),strsql); **************/ sprintf(strsql,"F2 %s",gettext("Запись")); v_data.knopka[FK2]=gtk_button_new_with_label(strsql); GtkTooltips *tooltips0=gtk_tooltips_new(); gtk_tooltips_set_tip(tooltips0,v_data.knopka[FK2],gettext("Запись введеной в меню информации"),NULL); gtk_signal_connect(GTK_OBJECT(v_data.knopka[FK2]),"clicked",GTK_SIGNAL_FUNC(vzaktaxi_knopka),&v_data); gtk_object_set_user_data(GTK_OBJECT(v_data.knopka[FK2]),(gpointer)FK2); gtk_box_pack_start(GTK_BOX(hboxknop), v_data.knopka[FK2], TRUE, TRUE, 0); if(gl_data->metkazapisi == 0) { sprintf(strsql,"F4 %s",gettext("Очистить")); v_data.knopka[FK4]=gtk_button_new_with_label(strsql); // GtkTooltips *tooltips2=gtk_tooltips_new(); gtk_tooltips_set_tip(tooltips0,v_data.knopka[FK4],gettext("Очистить меню от введеноой информации. Установить текущее время и дату"),NULL); gtk_signal_connect(GTK_OBJECT(v_data.knopka[FK4]),"clicked",GTK_SIGNAL_FUNC(vzaktaxi_knopka),&v_data); gtk_object_set_user_data(GTK_OBJECT(v_data.knopka[FK4]),(gpointer)FK4); gtk_box_pack_start(GTK_BOX(hboxknop), v_data.knopka[FK4], TRUE, TRUE, 0); } sprintf(strsql,"F10 %s",gettext("Выход")); v_data.knopka[FK10]=gtk_button_new_with_label(strsql); GtkTooltips *tooltips1=gtk_tooltips_new(); gtk_tooltips_set_tip(tooltips1,v_data.knopka[FK10],gettext("Завершение работы с меню без записи введенной информации"),NULL); gtk_signal_connect(GTK_OBJECT(v_data.knopka[FK10]),"clicked",GTK_SIGNAL_FUNC(vzaktaxi_knopka),&v_data); gtk_object_set_user_data(GTK_OBJECT(v_data.knopka[FK10]),(gpointer)FK10); gtk_box_pack_start(GTK_BOX(hboxknop), v_data.knopka[FK10], TRUE, TRUE, 0); gtk_widget_grab_focus(v_data.entry[E_ADRES_POD]); if(gl_data->metkazapisi == 0) clear_menu(&v_data); gtk_widget_show_all (v_data.window); gtk_main(); gdk_window_set_cursor(gl_data->window->window,gdk_cursor_new(ICEB_CURSOR)); }
void zavzak(class lzaktaxi_data *data) { //printf("metkavz=%d\n",data->metkavz); if(data->metkavz == 0) return; char strsql[300]; data->zzwindow=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_position( GTK_WINDOW(data->zzwindow),ICEB_POS_CENTER); sprintf(strsql,"%s %s",NAME_SYSTEM,iceb_u_toutf("Завершение заказа")); gtk_window_set_title(GTK_WINDOW(data->zzwindow),strsql); gtk_signal_connect(GTK_OBJECT(data->zzwindow),"delete_event",GTK_SIGNAL_FUNC(zavzak_delete_event),data); gtk_signal_connect_after(GTK_OBJECT(data->zzwindow),"key_press_event",GTK_SIGNAL_FUNC(zavzak_zaktaxi_key_press),data); GtkWidget *vbox = gtk_vbox_new (FALSE, 0); GtkWidget *hbox = gtk_hbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (data->zzwindow), vbox); GtkWidget *label=gtk_label_new(iceb_u_toutf("Введите код завершения")); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); //Создаем меню кодов завершения GList *glist=NULL; SQLCURSOR cur; SQLCURSOR cur1; SQL_str row; sprintf(strsql,"select kod,naik from Taxikzz order by kod asc"); int kolstr=0; if((kolstr=cur.make_cursor(&bd,strsql)) < 0) iceb_msql_error(&bd,gettext("Ошибка создания курсора !"),strsql,NULL); iceb_u_spisok KZV; while(cur.read_cursor(&row) != 0) { sprintf(strsql,"%s %s",row[0],row[1]); KZV.plus(iceb_u_toutf(strsql)); } if(kolstr == 0) KZV.plus(iceb_u_toutf("Не введен список кодов завершения !!!")); data->kod_zav.new_plus(""); if(data->rowv[0][0] != '\0') { sprintf(strsql,"select naik from Taxikzz where kod=%s",data->rowv[0]); if(sql_readkey(&bd,strsql,&row,&cur1) == 1) { sprintf(strsql,"%s %s",data->rowv[0],row[0]); data->kod_zav.new_plus(strsql); } } //printf("zapzak-%s/%s\n",data->rowv[0],data->zap_zaktaxi.kodzav); data->kodzav=gtk_combo_new(); for(int i=0 ; i < kolstr; i++) glist=g_list_append(glist,(void*)KZV.ravno(i)); gtk_combo_set_popdown_strings(GTK_COMBO(data->kodzav),glist); gtk_combo_disable_activate(GTK_COMBO(data->kodzav)); gtk_box_pack_start (GTK_BOX (vbox), data->kodzav, TRUE, TRUE, 0); gtk_signal_connect(GTK_OBJECT (GTK_COMBO(data->kodzav)->entry), "activate",GTK_SIGNAL_FUNC(kodzav_get1),data); gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(data->kodzav)->entry),data->kod_zav.ravno_toutf()); gtk_container_add (GTK_CONTAINER (vbox), hbox); GtkWidget *knopka[2]; sprintf(strsql,"F2 %s",gettext("Запись")); knopka[0]=gtk_button_new_with_label(strsql); GtkTooltips *tooltips0=gtk_tooltips_new(); gtk_tooltips_set_tip(tooltips0,knopka[0],gettext("Запись введенной в меню информации"),NULL); gtk_signal_connect(GTK_OBJECT(knopka[0]),"clicked",GTK_SIGNAL_FUNC(zavzak_zaktaxi_knopka),data); gtk_object_set_user_data(GTK_OBJECT(knopka[0]),(gpointer)"2"); sprintf(strsql,"F10 %s",gettext("Выход")); knopka[1]=gtk_button_new_with_label(strsql); GtkTooltips *tooltips1=gtk_tooltips_new(); gtk_tooltips_set_tip(tooltips1,knopka[1],gettext("Завершение работы с меню без записи введенной информации"),NULL); gtk_signal_connect(GTK_OBJECT(knopka[1]),"clicked",GTK_SIGNAL_FUNC(zavzak_zaktaxi_knopka),data); gtk_object_set_user_data(GTK_OBJECT(knopka[1]),(gpointer)"10"); gtk_box_pack_start(GTK_BOX(hbox), knopka[0], TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), knopka[1], TRUE, TRUE, 0); gtk_widget_grab_focus(data->kodzav); gtk_widget_show_all(data->zzwindow); }
int main (int argc, char *argv[]) { struct pollfd pfd; char line[4096], *p; char *name, *id, *polname, *filters; int nfilters, res; time_t curtime; GList *items = NULL; GtkWidget *systracewin; GtkWidget *processname; GtkWidget *policyname; GtkWidget *processid; GtkWidget *syscallinfo; GtkWidget *statusline; GtkWidget *timeline; GtkWidget *reviewbutton; GtkWidget *detachlabel; GtkWidget *filterentry; GtkStyle *default_style, *red_style; /* Set up required parameters */ parameters(); gtk_set_locale (); gtk_init (&argc, &argv); add_pixmap_directory (PACKAGE_DATA_DIR "/pixmaps"); add_pixmap_directory (PACKAGE_SOURCE_DIR "/pixmaps"); /* * The following code was added by Glade to create one of each component * (except popup menus), just so that you see something after building * the project. Delete any components that you don't want shown initially. */ systracewin = create_systracewin (); filterreview = create_filterreview(); wizard = create_wizard(); processname = lookup_widget(GTK_WIDGET(systracewin), "processname"); processid = lookup_widget(GTK_WIDGET(systracewin), "processid"); policyname = lookup_widget(GTK_WIDGET(systracewin), "policyname"); syscallinfo = lookup_widget(GTK_WIDGET(systracewin), "syscallinfo"); statusline = lookup_widget(GTK_WIDGET(systracewin), "statusline"); timeline = lookup_widget(GTK_WIDGET(systracewin), "timeline"); reviewbutton = lookup_widget(GTK_WIDGET(systracewin), "reviewbutton"); wizardbutton = lookup_widget(GTK_WIDGET(systracewin), "wizardbutton"); detachlabel = lookup_widget(GTK_WIDGET(systracewin), "detachlabel"); filterentry = lookup_widget(GTK_WIDGET(systracewin), "filterentry"); default_style = gtk_widget_get_style(processname); red_style = make_color(default_style, 0xd000, 0x1000, 0); red_style->private_font = gdk_font_load("-*-helvetica-bold-r-normal--*-140-*-*-*-*-iso8859-1"); gtk_widget_set_style(processname, red_style); gtk_widget_set_style(processid, red_style); gtk_widget_set_style(policyname, red_style); gtk_widget_set_style(syscallinfo, red_style); /* Return key is not supposed to pop it up */ gtk_combo_disable_activate(GTK_COMBO(filterentry)); /* Connect to cradle server if requested */ if (argc == 2 && strcmp(argv[1], "-C") == 0) { struct sockaddr_un sun; int s; char path[MAXPATHLEN]; snprintf(path, sizeof(path), "/tmp/systrace-%d/%s", getuid(), CRADLE_UI); if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) err(1, "socket()"); memset(&sun, 0, sizeof (sun)); sun.sun_family = AF_UNIX; if (strlcpy(sun.sun_path, path, sizeof(sun.sun_path)) >= sizeof(sun.sun_path)) errx(1, "Path too long: %s", path); if (connect(s, (struct sockaddr *)&sun, sizeof(sun)) == -1) err(1, "connect()"); if (dup2(s, fileno(stdin)) == -1) err(1, "dup2"); if (dup2(s, fileno(stdout)) == -1) err(1, "dup2"); } /* Make IO line buffered */ setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); while (1) { /* See if we can read from the file descriptor */ memset(&pfd, 0, sizeof(pfd)); pfd.fd = fileno(stdin); pfd.events = POLLIN; res = poll(&pfd, 1, 1000); if (res == -1) { if (errno == EINTR || errno == EAGAIN) break; } else if (res == 0) { while (gtk_events_pending()) gtk_main_iteration(); continue; } if (freadline(line, sizeof(line), stdin) == NULL) break; p = line; name = strsep(&p, ","); if (p == NULL || *p == '\0') errx(1, "Bad input line"); p++; strsep(&p, " "); if (p == NULL || *p == '\0') errx(1, "Bad input line"); id = strsep(&p, "("); if (p == NULL || *p == '\0') errx(1, "Bad input line"); strsep(&p, ":"); if (p == NULL || *p == '\0') errx(1, "Bad input line"); p++; polname = strsep(&p, ","); if (p == NULL || *p == '\0') errx(1, "Bad input line"); strsep(&p, ":"); if (p == NULL || *p == '\0') errx(1, "Bad input line"); p++; filters = strsep(&p, ","); if (p == NULL || *p == '\0') errx(1, "Bad input line"); nfilters = atoi(filters); strsep(&p, ":"); if (p == NULL || *p == '\0') errx(1, "Bad input line"); p++; gtk_label_set_text(GTK_LABEL(processname), name); gtk_label_set_text(GTK_LABEL(processid), id); gtk_label_set_text(GTK_LABEL(policyname), polname); gtk_label_set_text(GTK_LABEL(syscallinfo), p); gtk_label_set_text(GTK_LABEL(statusline), ""); items = make_policy_suggestion(p); curtime = time(NULL); snprintf(line, sizeof(line), "%.25s", ctime(&curtime)); gtk_label_set_text(GTK_LABEL(timeline), line); if (nfilters) { gtk_widget_set_sensitive(wizardbutton, 0); gtk_widget_set_sensitive(reviewbutton, 1); gtk_label_set_text(GTK_LABEL(detachlabel), "Automatic"); } else { gtk_widget_set_sensitive(wizardbutton, 1); gtk_widget_set_sensitive(reviewbutton, 0); gtk_label_set_text(GTK_LABEL(detachlabel), "Detach"); } gtk_widget_show (systracewin); gtk_combo_set_popdown_strings (GTK_COMBO(filterentry), items); g_list_foreach(items, free_list, NULL); g_list_free(items); do { gtk_main (); while (freadline(line, sizeof(line), stdin)) { if (!strcmp(line, "OKAY")) goto done; if (!strcmp(line, "WRONG")) break; gtk_label_set_text(GTK_LABEL(statusline), line); } } while (1); done: gtk_widget_hide (systracewin); while (gtk_events_pending()) gtk_main_iteration(); } return 0; }
int main(int argc, char* argv[]) { int persistent = 0; // wipe away any previous err file unlink("/tmp/err"); char histFile[256]; sprintf(histFile, "/home/%s/.obrun_history", getenv("USER")); // open history file FILE* logFp = fopen(histFile, "r"); gtk_init(NULL, NULL); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); // main window combo = gtk_combo_new(); // editable box with dropdown menu GList* histLines = NULL; char line[356]; gchar* newLine = NULL; int lc = 0; // add in the history items, if the file was found if (logFp != NULL) { while (fgets(line, sizeof(line), logFp) != NULL) // read a line { line[strlen(line)-1] = '\0'; // almighty null-terminator newLine = g_strdup(line); // g_list_append apparently cant just be run in a loop #if DEBUG printf("Adding line (%s) to lines...\n", newLine); #endif histLines = g_list_prepend(histLines, newLine); lc++; } histLines = g_list_prepend(histLines, ""); // empty to start with if (histLines != NULL) { #if DEBUG printf("%d histLines found\n", lc); #endif gtk_combo_set_popdown_strings(GTK_COMBO(combo), histLines); g_list_free(histLines); } } else { // just create it #if DEBUG printf("Creating new history file...\n"); #endif logFp = fopen(histFile, "w"); } g_free(newLine); // we're done with this file for now fclose(logFp); // how do we want to sort? sort_mode = "size"; if (argc > 1) { int ai; for (ai=0; ai<argc; ai++) { if (strcmp(argv[ai], "-a") == 0) { sort_mode = "alpha"; } if (strcmp(argv[ai], "-p") == 0) { persistent = 1; } } } gtk_window_set_title(GTK_WINDOW(window), "Run..."); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_container_add(GTK_CONTAINER(window), combo); gtk_window_set_resizable(GTK_WINDOW(window), FALSE); gtk_widget_set_size_request(GTK_COMBO(combo)->entry, 200, 20); gtk_combo_disable_activate(GTK_COMBO(combo)); // don't show dropdown when enter // listen for X button g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(die), NULL); // listen for key up events: for typing g_signal_connect(window, "key_release_event", G_CALLBACK(check_key_up), NULL); // listen for key down events: for autocomplete, esc g_signal_connect(window, "key_press_event", G_CALLBACK(check_key_down), NULL); // listen for enter g_signal_connect(GTK_OBJECT(GTK_COMBO(combo)->entry), "activate", G_CALLBACK(gtk_main_quit), NULL); G_START: gtk_widget_show_all(window); gtk_main(); gchar *orig_str = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(combo)->entry))); gchar *exec_str = g_strdup_printf("%s 2> /tmp/err &", gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(combo)->entry))); if (strcmp(orig_str, "(null)") == 0 || strcmp(orig_str, "") == 0) // user didnt enter anything { die(); } g_printf("Executing %s...\n", exec_str); int result = system(exec_str); // before anything else, has this comand already been recorded? int already_present = in_file(histFile, orig_str, 0); if (!already_present) { // now lets check our error file for a bash error "command not found" char not_found_str[256]; sprintf(not_found_str, "sh: %s: command not found", orig_str); int not_found = in_file("/tmp/err", not_found_str, 1); #if DEBUG printf("already_present: %d\n", already_present); printf("not_found: %d\n", not_found); #endif if (not_found) { char* err_msg = malloc((strlen(orig_str) + strlen(": Command not found!") + 1) * sizeof(char)); sprintf(err_msg, "%s: Command not found!", orig_str); display_error_dialog(err_msg); // wipe out the entry field gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(combo)->entry), ""); free(err_msg); goto G_START; // don't exit, move back up to where widgets are shown } if (result == 0 && !already_present && !not_found) { FILE* logFp = fopen(histFile, "a"); if (logFp == NULL) { logFp = fopen(histFile, "w"); } #if DEBUG printf("Adding %s to historyFile...\n", orig_str); #endif fprintf(logFp, "%s\n", orig_str); fclose(logFp); } } #if DEBUG printf("persistent: %d\n", persistent); #endif if (persistent == 1) { goto G_START; } g_free(orig_str); g_free(exec_str); g_list_free(matches); die(); return 0; }