static int setup_interface( void ) { GtkWidget *window, *treeview, *select_entry, *spawn_dialog, *spawn_label; GtkCellRenderer *renderer; gtk_window_set_default_icon_name( "gnome-dev-keyboard" ); wl = window_list_new(); xml = glade_xml_new( PREFIX "/share/keyboardcast/keyboardcast.glade", NULL, NULL ); if( xml == NULL ) return 1; select_entry = glade_xml_get_widget( xml, "select-entry" ); treeview = glade_xml_get_widget( xml, "treeview" ); window = glade_xml_get_widget( xml, "window" ); spawn_dialog = glade_xml_get_widget( xml, "spawn-dialog" ); spawn_label = glade_xml_get_widget( xml, "spawn-label" ); if( select_entry == NULL || treeview == NULL || window == NULL || spawn_dialog == NULL || spawn_label == NULL ) return 1; gtk_tree_view_set_model( GTK_TREE_VIEW( treeview ), GTK_TREE_MODEL( wl ) ); renderer = window_list_toggle_renderer( wl ); gtk_tree_view_insert_column_with_attributes( GTK_TREE_VIEW( treeview ), -1, "✓", renderer, // ☑☒✓✔ "active", 1, NULL ); renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes( GTK_TREE_VIEW( treeview ), -1, "Window Title", renderer, "text", 2, NULL ); glade_xml_signal_connect( xml, "key_event", G_CALLBACK( key_event ) ); glade_xml_signal_connect( xml, "gtk_exit", G_CALLBACK( gtk_exit ) ); glade_xml_signal_connect_data( xml, "expanded", G_CALLBACK( expanded ), window ); glade_xml_signal_connect_data( xml, "button_clicked", G_CALLBACK( button_clicked ), select_entry ); glade_xml_signal_connect_data( xml, "spawn_clicked", G_CALLBACK( spawn_clicked ), spawn_dialog ); glade_xml_signal_connect( xml, "terminal_toggled", G_CALLBACK( terminal_toggled ) ); glade_xml_signal_connect_data( xml, "update_label", G_CALLBACK( update_label ), spawn_label ); update_label( NULL, GTK_LABEL( spawn_label ) ); window_list_filter_by_process( wl, "gnome-terminal" ); gtk_widget_show_all( window ); return 0; }
rdpRail* rail_new(rdpSettings* settings) { rdpRail* rail; rail = (rdpRail*) xzalloc(sizeof(rdpRail)); if (rail != NULL) { rail->settings = settings; rail->cache = icon_cache_new(rail); rail->list = window_list_new(rail); rail->clrconv = (CLRCONV*) xzalloc(sizeof(CLRCONV)); } return rail; }