?? abookmarkview.c
字號:
last = gtk_tree_model_get_path (model, &child_iter); } } gtk_tree_view_set_cursor (treeview, last, NULL, FALSE); gtk_tree_path_free (last); } } } gtk_tree_path_free (path); return result; } else if (event->keyval == GDK_Down) { GtkTreePath *path = NULL; GtkTreeViewColumn *col = NULL; GtkTreeModel *model = NULL; gboolean result = FALSE; gtk_tree_view_get_cursor (treeview, &path, &col); model = gtk_tree_view_get_model (treeview); if (model) { GtkTreeIter iter; if (gtk_tree_model_iter_nth_child (model, &iter, NULL, gtk_tree_model_iter_n_children (model, NULL) - 1)) { GtkTreePath *last = NULL; last = gtk_tree_model_get_path (model, &iter); if (gtk_tree_view_row_expanded (treeview, last)) { GtkTreeIter child_iter; if (gtk_tree_model_iter_nth_child (model, &child_iter, &iter, gtk_tree_model_iter_n_children (model, &iter) - 1)) { gtk_tree_path_free (last); last = gtk_tree_model_get_path (model, &child_iter); } } result = !gtk_tree_path_compare (path, last); if (result) { GtkTreePath *first = NULL; first = gtk_tree_path_new_first (); gtk_tree_view_set_cursor (treeview, first, NULL, FALSE); gtk_tree_path_free (first); } gtk_tree_path_free (last); } } gtk_tree_path_free (path); return result; } if (!event->state && event->string && (isalpha (event->string[0]) || isalnum (event->string[0]))) { if (!GTK_WIDGET_HAS_FOCUS (view->search_entry)) { GdkEvent *new_event; gtk_widget_grab_focus (view->search_entry); new_event = gdk_event_copy ((GdkEvent *) event); ((GdkEventKey *) new_event)->window = view->search_entry->window; gtk_widget_event (view->search_entry, new_event); return FALSE; } } return FALSE;}voidabook_markview_string_cell_data_func (GtkTreeViewColumn *col, GtkCellRenderer *cell, GtkTreeModel *model, GtkTreeIter *iter, GtkTreeView *view){ GtkTreeIter parent_iter; if (gtk_tree_model_iter_parent (model, &parent_iter, iter)) { gchar *origtxt = NULL; gchar *markuptxt = NULL; gtk_tree_model_get (GTK_TREE_MODEL (model), iter, COL_MV_STRING, &origtxt, -1);// g_print("%s(): entering, str = %s\n", __FUNCTION__, origtxt); if (TRUE) { GtkTreePath *curr_path = NULL; GtkTreePath *cursor_path = NULL; GtkTreeViewColumn *unused = NULL; gtk_tree_view_get_cursor (view, &cursor_path, &unused); curr_path = gtk_tree_model_get_path (model, iter); if (gtk_tree_path_compare (curr_path, cursor_path) == 0) { markuptxt = g_strdup_printf ("<span color=\"White\" style=\"italic\">%s</span>", origtxt); } else { markuptxt = g_strdup_printf ("<span color=\"Blue\" style=\"italic\">%s</span>", origtxt); } gtk_tree_path_free (curr_path); gtk_tree_path_free (cursor_path); } g_object_set (G_OBJECT (cell), "markup", markuptxt, NULL); g_free (markuptxt); g_free (origtxt); }#if 1 else { GtkTreePath *path = NULL; GtkTreePath *first = NULL; path = gtk_tree_model_get_path (model, iter); first = gtk_tree_path_new_first (); if (path && first && !gtk_tree_path_compare (path, first)) { gchar *origtxt = NULL; gboolean active; gtk_tree_model_get (GTK_TREE_MODEL (model), iter, COL_MV_STRING, &origtxt, COL_MV_CHECK, &active, -1); // g_print("%s(): entering, str = %s\n", __FUNCTION__, origtxt); if (active) { gchar *markuptxt = NULL; markuptxt = g_strdup_printf ("<span color=\"Red\">%s</span>", origtxt); g_object_set (G_OBJECT (cell), "markup", markuptxt, NULL); g_free (markuptxt); } g_free (origtxt); } gtk_tree_path_free (path); gtk_tree_path_free (first); }#endif return;}gbooleanabook_markview_focus_in_event_cb (GtkWidget *widget, GdkEventFocus *event, gpointer user_data){ ABookMarkView *view = (ABookMarkView *) widget; gtk_widget_grab_focus (view->treeview); return FALSE;}static voidabook_markview_init (ABookMarkView *view){ GtkTreeViewColumn *col; GtkCellRenderer *renderer; GtkTreeIter iter; GtkWidget *vbox = NULL; view->scroll_window = gtk_auto_scrolled_window_new (); view->treestore = gtk_tree_store_new (NUM_MV_COLS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF); gtk_tree_store_append (view->treestore, &iter, NULL); gtk_tree_store_set (view->treestore, &iter, COL_MV_STRING, "Select All", COL_MV_CHECK, FALSE, -1); view->treeview = gtk_tree_view_new (); /* column check */ col = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (col, "Check"); gtk_tree_view_append_column (GTK_TREE_VIEW (view->treeview), col); renderer = gtk_cell_renderer_toggle_new (); gtk_tree_view_column_pack_start (col, renderer, TRUE); gtk_tree_view_column_add_attribute (col, renderer, "active", COL_MV_CHECK); g_signal_connect (G_OBJECT (renderer), "toggled", G_CALLBACK (abook_markview_toggled_cb), view->treeview); /* column string */ col = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (col, "String"); gtk_tree_view_append_column (GTK_TREE_VIEW (view->treeview), col); gtk_tree_view_column_set_clickable (col, FALSE); renderer = gtk_cell_renderer_text_new (); gtk_tree_view_column_pack_start (col, renderer, TRUE); gtk_cell_renderer_set_fixed_size (renderer, 110, -1); g_object_set (G_OBJECT (renderer), "ypad", 5, NULL); gtk_tree_view_column_add_attribute (col, renderer, "text", COL_MV_STRING); gtk_tree_view_set_expander_column (GTK_TREE_VIEW (view->treeview), col); gtk_tree_view_column_set_cell_data_func (col, renderer, (GtkTreeCellDataFunc) abook_markview_string_cell_data_func, view->treeview, NULL); /* column picture */ col = gtk_tree_view_column_new (); gtk_tree_view_column_set_title (col, "Picutre"); gtk_tree_view_append_column (GTK_TREE_VIEW (view->treeview), col); gtk_tree_view_column_set_clickable (col, FALSE); renderer = gtk_cell_renderer_pixbuf_new (); gtk_tree_view_column_pack_start (col, renderer, TRUE); gtk_tree_view_column_add_attribute (col, renderer, "pixbuf", COL_MV_PIC); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (view->treeview), FALSE); gtk_tree_view_set_enable_search (GTK_TREE_VIEW (view->treeview), FALSE); g_signal_connect (G_OBJECT (view->treeview), "key-press-event", G_CALLBACK (abook_markview_treeview_key_press_event_cb), view); gtk_tree_view_set_model (GTK_TREE_VIEW (view->treeview), GTK_TREE_MODEL (view->treestore)); g_object_unref (view->treestore); view->scroll_window = gtk_auto_scrolled_window_new (); gtk_auto_scrolled_window_add (GTK_AUTO_SCROLLED_WINDOW (view->scroll_window), view->treeview); view->search_entry = gtk_entry_new ();// g_signal_connect(G_OBJECT(view->search_entry), "key_press_event", G_CALLBACK(abook_listview_entry_key_press_event_cb), view); vbox = gtk_vbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), view->scroll_window, TRUE, TRUE, 0); if (TRUE) { GtkWidget *hbox = NULL; GtkWidget *search_icon = NULL; hbox = gtk_hbox_new (FALSE, 0); if (TRUE) { gchar *picpath = NULL; picpath = g_build_filename (abook_env_get_picpath (), "search.png", NULL); search_icon = gtk_image_new_from_file (picpath); } gtk_box_pack_start (GTK_BOX (hbox), search_icon, FALSE, FALSE, 5); gtk_box_pack_start (GTK_BOX (hbox), view->search_entry, TRUE, TRUE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); } if (TRUE) { GtkWidget *eventbox = NULL; eventbox = gtk_event_box_new (); GTK_WIDGET_SET_FLAGS (eventbox, GTK_CAN_FOCUS); gtk_widget_set_events (eventbox, GDK_ALL_EVENTS_MASK); gtk_event_box_set_above_child (GTK_EVENT_BOX (eventbox), FALSE); gtk_event_box_set_visible_window (GTK_EVENT_BOX (eventbox), FALSE); gtk_container_add (GTK_CONTAINER (eventbox), vbox); gtk_container_add (GTK_CONTAINER (view), eventbox);// g_signal_connect(G_OBJECT(view), "key-press-event", G_CALLBACK(abook_listview_key_press_event_cb), NULL); } GTK_WIDGET_SET_FLAGS (view, GTK_CAN_FOCUS); g_signal_connect (G_OBJECT (view), "focus-in-event", G_CALLBACK (abook_markview_focus_in_event_cb), NULL); view->status = MARK_VIEW_STATUS_CANCEL; return;}GtkWidget *abook_markview_new (void){ return g_object_new (ABOOK_TYPE_MARKVIEW, NULL);}GtkTreeStore *abook_markview_get_model (ABookMarkView *view){ if (view->treestore) { g_object_ref (view->treestore); } return view->treestore;}GtkWidget *abook_markview_get_view (ABookMarkView *view){ if (view->treeview) { g_object_ref (view->treeview); } return view->treeview;}voidabook_markview_update (ABookMarkView *view){ GtkTreePath *path = NULL; path = gtk_tree_path_new_first (); gtk_tree_view_set_cursor (GTK_TREE_VIEW (view->treeview), path, NULL, TRUE); gtk_tree_path_free (path); return;}/* vi:ts=2:nowrap:ai:expandtab*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -