📄 gtkclist.c
字号:
/* Misc */static gboolean title_focus (GtkCList *clist, gint dir);static void real_row_move (GtkCList *clist, gint source_row, gint dest_row);static gint column_title_passive_func (GtkWidget *widget, GdkEvent *event, gpointer data);static void drag_dest_cell (GtkCList *clist, gint x, gint y, GtkCListDestInfo *dest_info);static GtkContainerClass *parent_class = NULL;static guint clist_signals[LAST_SIGNAL] = {0};static GtkTargetEntry clist_target_table = { "gtk-clist-drag-reorder", 0, 0};GtkTypegtk_clist_get_type (void){ static GtkType clist_type = 0; if (!clist_type) { static const GtkTypeInfo clist_info = { "GtkCList", sizeof (GtkCList), sizeof (GtkCListClass), (GtkClassInitFunc) gtk_clist_class_init, (GtkObjectInitFunc) gtk_clist_init, /* reserved_1 */ NULL, /* reserved_2 */ NULL, (GtkClassInitFunc) NULL, }; clist_type = gtk_type_unique (GTK_TYPE_CONTAINER, &clist_info); } return clist_type;}static voidgtk_clist_class_init (GtkCListClass *klass){ GtkObjectClass *object_class; GtkWidgetClass *widget_class; GtkContainerClass *container_class; GtkBindingSet *binding_set; object_class = (GtkObjectClass *) klass; widget_class = (GtkWidgetClass *) klass; container_class = (GtkContainerClass *) klass; parent_class = gtk_type_class (GTK_TYPE_CONTAINER); gtk_object_add_arg_type ("GtkCList::n_columns", GTK_TYPE_UINT, GTK_ARG_READWRITE | GTK_ARG_CONSTRUCT_ONLY, ARG_N_COLUMNS); gtk_object_add_arg_type ("GtkCList::shadow_type", GTK_TYPE_SHADOW_TYPE, GTK_ARG_READWRITE, ARG_SHADOW_TYPE); gtk_object_add_arg_type ("GtkCList::selection_mode", GTK_TYPE_SELECTION_MODE, GTK_ARG_READWRITE, ARG_SELECTION_MODE); gtk_object_add_arg_type ("GtkCList::row_height", GTK_TYPE_UINT, GTK_ARG_READWRITE, ARG_ROW_HEIGHT); gtk_object_add_arg_type ("GtkCList::reorderable", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_REORDERABLE); gtk_object_add_arg_type ("GtkCList::titles_active", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_TITLES_ACTIVE); gtk_object_add_arg_type ("GtkCList::use_drag_icons", GTK_TYPE_BOOL, GTK_ARG_READWRITE, ARG_USE_DRAG_ICONS); gtk_object_add_arg_type ("GtkCList::sort_type", GTK_TYPE_SORT_TYPE, GTK_ARG_READWRITE, ARG_SORT_TYPE); object_class->set_arg = gtk_clist_set_arg; object_class->get_arg = gtk_clist_get_arg; object_class->destroy = gtk_clist_destroy; object_class->finalize = gtk_clist_finalize; widget_class->set_scroll_adjustments_signal = gtk_signal_new ("set_scroll_adjustments", GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkCListClass, set_scroll_adjustments), gtk_marshal_NONE__POINTER_POINTER, GTK_TYPE_NONE, 2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT); clist_signals[SELECT_ROW] = gtk_signal_new ("select_row", GTK_RUN_FIRST, object_class->type, GTK_SIGNAL_OFFSET (GtkCListClass, select_row), gtk_marshal_NONE__INT_INT_POINTER, GTK_TYPE_NONE, 3, GTK_TYPE_INT, GTK_TYPE_INT, GTK_TYPE_GDK_EVENT); clist_signals[UNSELECT_ROW] = gtk_signal_new ("unselect_row", GTK_RUN_FIRST, object_class->type, GTK_SIGNAL_OFFSET (GtkCListClass, unselect_row), gtk_marshal_NONE__INT_INT_POINTER, GTK_TYPE_NONE, 3, GTK_TYPE_INT, GTK_TYPE_INT, GTK_TYPE_GDK_EVENT); clist_signals[ROW_MOVE] = gtk_signal_new ("row_move", GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkCListClass, row_move), gtk_marshal_NONE__INT_INT, GTK_TYPE_NONE, 2, GTK_TYPE_INT, GTK_TYPE_INT); clist_signals[CLICK_COLUMN] = gtk_signal_new ("click_column", GTK_RUN_FIRST, object_class->type, GTK_SIGNAL_OFFSET (GtkCListClass, click_column), gtk_marshal_NONE__INT, GTK_TYPE_NONE, 1, GTK_TYPE_INT); clist_signals[RESIZE_COLUMN] = gtk_signal_new ("resize_column", GTK_RUN_LAST, object_class->type, GTK_SIGNAL_OFFSET (GtkCListClass, resize_column), gtk_marshal_NONE__INT_INT, GTK_TYPE_NONE, 2, GTK_TYPE_INT, GTK_TYPE_INT); clist_signals[TOGGLE_FOCUS_ROW] = gtk_signal_new ("toggle_focus_row", GTK_RUN_LAST | GTK_RUN_ACTION, object_class->type, GTK_SIGNAL_OFFSET (GtkCListClass, toggle_focus_row), gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); clist_signals[SELECT_ALL] = gtk_signal_new ("select_all", GTK_RUN_LAST | GTK_RUN_ACTION, object_class->type, GTK_SIGNAL_OFFSET (GtkCListClass, select_all), gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); clist_signals[UNSELECT_ALL] = gtk_signal_new ("unselect_all", GTK_RUN_LAST | GTK_RUN_ACTION, object_class->type, GTK_SIGNAL_OFFSET (GtkCListClass, unselect_all), gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); clist_signals[UNDO_SELECTION] = gtk_signal_new ("undo_selection", GTK_RUN_LAST | GTK_RUN_ACTION, object_class->type, GTK_SIGNAL_OFFSET (GtkCListClass, undo_selection), gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); clist_signals[START_SELECTION] = gtk_signal_new ("start_selection", GTK_RUN_LAST | GTK_RUN_ACTION, object_class->type, GTK_SIGNAL_OFFSET (GtkCListClass, start_selection), gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); clist_signals[END_SELECTION] = gtk_signal_new ("end_selection", GTK_RUN_LAST | GTK_RUN_ACTION, object_class->type, GTK_SIGNAL_OFFSET (GtkCListClass, end_selection), gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); clist_signals[TOGGLE_ADD_MODE] = gtk_signal_new ("toggle_add_mode", GTK_RUN_LAST | GTK_RUN_ACTION, object_class->type, GTK_SIGNAL_OFFSET (GtkCListClass, toggle_add_mode), gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); clist_signals[EXTEND_SELECTION] = gtk_signal_new ("extend_selection", GTK_RUN_LAST | GTK_RUN_ACTION, object_class->type, GTK_SIGNAL_OFFSET (GtkCListClass, extend_selection), gtk_marshal_NONE__ENUM_FLOAT_BOOL, GTK_TYPE_NONE, 3, GTK_TYPE_SCROLL_TYPE, GTK_TYPE_FLOAT, GTK_TYPE_BOOL); clist_signals[SCROLL_VERTICAL] = gtk_signal_new ("scroll_vertical", GTK_RUN_LAST | GTK_RUN_ACTION, object_class->type, GTK_SIGNAL_OFFSET (GtkCListClass, scroll_vertical), gtk_marshal_NONE__ENUM_FLOAT, GTK_TYPE_NONE, 2, GTK_TYPE_SCROLL_TYPE, GTK_TYPE_FLOAT); clist_signals[SCROLL_HORIZONTAL] = gtk_signal_new ("scroll_horizontal", GTK_RUN_LAST | GTK_RUN_ACTION, object_class->type, GTK_SIGNAL_OFFSET (GtkCListClass, scroll_horizontal), gtk_marshal_NONE__ENUM_FLOAT, GTK_TYPE_NONE, 2, GTK_TYPE_SCROLL_TYPE, GTK_TYPE_FLOAT); clist_signals[ABORT_COLUMN_RESIZE] = gtk_signal_new ("abort_column_resize", GTK_RUN_LAST | GTK_RUN_ACTION, object_class->type, GTK_SIGNAL_OFFSET (GtkCListClass, abort_column_resize), gtk_marshal_NONE__NONE, GTK_TYPE_NONE, 0); gtk_object_class_add_signals (object_class, clist_signals, LAST_SIGNAL); widget_class->realize = gtk_clist_realize; widget_class->unrealize = gtk_clist_unrealize; widget_class->map = gtk_clist_map; widget_class->unmap = gtk_clist_unmap; widget_class->draw = gtk_clist_draw; widget_class->button_press_event = gtk_clist_button_press; widget_class->button_release_event = gtk_clist_button_release; widget_class->motion_notify_event = gtk_clist_motion; widget_class->expose_event = gtk_clist_expose; widget_class->size_request = gtk_clist_size_request; widget_class->size_allocate = gtk_clist_size_allocate; widget_class->key_press_event = gtk_clist_key_press; widget_class->focus_in_event = gtk_clist_focus_in; widget_class->focus_out_event = gtk_clist_focus_out; widget_class->draw_focus = gtk_clist_draw_focus; widget_class->style_set = gtk_clist_style_set; widget_class->drag_begin = gtk_clist_drag_begin; widget_class->drag_end = gtk_clist_drag_end; widget_class->drag_motion = gtk_clist_drag_motion; widget_class->drag_leave = gtk_clist_drag_leave; widget_class->drag_drop = gtk_clist_drag_drop; widget_class->drag_data_get = gtk_clist_drag_data_get; widget_class->drag_data_received = gtk_clist_drag_data_received; /* container_class->add = NULL; use the default GtkContainerClass warning */ /* container_class->remove=NULL; use the default GtkContainerClass warning */ container_class->forall = gtk_clist_forall; container_class->focus = gtk_clist_focus; container_class->set_focus_child = gtk_clist_set_focus_child; klass->set_scroll_adjustments = gtk_clist_set_scroll_adjustments; klass->refresh = clist_refresh; klass->select_row = real_select_row; klass->unselect_row = real_unselect_row; klass->row_move = real_row_move; klass->undo_selection = real_undo_selection; klass->resync_selection = resync_selection; klass->selection_find = selection_find; klass->click_column = NULL; klass->resize_column = real_resize_column; klass->draw_row = draw_row; klass->draw_drag_highlight = draw_drag_highlight; klass->insert_row = real_insert_row; klass->remove_row = real_remove_row; klass->clear = real_clear; klass->sort_list = real_sort_list; klass->select_all = real_select_all; klass->unselect_all = real_unselect_all; klass->fake_unselect_all = fake_unselect_all; klass->scroll_horizontal = scroll_horizontal; klass->scroll_vertical = scroll_vertical; klass->extend_selection = extend_selection; klass->toggle_focus_row = toggle_focus_row; klass->toggle_add_mode = toggle_add_mode; klass->start_selection = start_selection; klass->end_selection = end_selection; klass->abort_column_resize = abort_column_resize; klass->set_cell_contents = set_cell_contents; klass->cell_size_request = cell_size_request; binding_set = gtk_binding_set_by_class (klass); gtk_binding_entry_add_signal (binding_set, GDK_Up, 0, "scroll_vertical", 2, GTK_TYPE_ENUM, GTK_SCROLL_STEP_BACKWARD, GTK_TYPE_FLOAT, 0.0); gtk_binding_entry_add_signal (binding_set, GDK_Down, 0, "scroll_vertical", 2, GTK_TYPE_ENUM, GTK_SCROLL_STEP_FORWARD, GTK_TYPE_FLOAT, 0.0); gtk_binding_entry_add_signal (binding_set, GDK_Page_Up, 0, "scroll_vertical", 2, GTK_TYPE_ENUM, GTK_SCROLL_PAGE_BACKWARD, GTK_TYPE_FLOAT, 0.0); gtk_binding_entry_add_signal (binding_set, GDK_Page_Down, 0, "scroll_vertical", 2, GTK_TYPE_ENUM, GTK_SCROLL_PAGE_FORWARD, GTK_TYPE_FLOAT, 0.0); gtk_binding_entry_add_signal (binding_set, GDK_Home, GDK_CONTROL_MASK, "scroll_vertical", 2, GTK_TYPE_ENUM, GTK_SCROLL_JUMP, GTK_TYPE_FLOAT, 0.0); gtk_binding_entry_add_signal (binding_set, GDK_End, GDK_CONTROL_MASK, "scroll_vertical", 2, GTK_TYPE_ENUM, GTK_SCROLL_JUMP, GTK_TYPE_FLOAT, 1.0); gtk_binding_entry_add_signal (binding_set, GDK_Up, GDK_SHIFT_MASK, "extend_selection", 3, GTK_TYPE_ENUM, GTK_SCROLL_STEP_BACKWARD, GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE); gtk_binding_entry_add_signal (binding_set, GDK_Down, GDK_SHIFT_MASK, "extend_selection", 3, GTK_TYPE_ENUM, GTK_SCROLL_STEP_FORWARD, GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE); gtk_binding_entry_add_signal (binding_set, GDK_Page_Up, GDK_SHIFT_MASK, "extend_selection", 3, GTK_TYPE_ENUM, GTK_SCROLL_PAGE_BACKWARD, GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE); gtk_binding_entry_add_signal (binding_set, GDK_Page_Down, GDK_SHIFT_MASK, "extend_selection", 3, GTK_TYPE_ENUM, GTK_SCROLL_PAGE_FORWARD, GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE); gtk_binding_entry_add_signal (binding_set, GDK_Home, GDK_SHIFT_MASK | GDK_CONTROL_MASK, "extend_selection", 3, GTK_TYPE_ENUM, GTK_SCROLL_JUMP, GTK_TYPE_FLOAT, 0.0, GTK_TYPE_BOOL, TRUE); gtk_binding_entry_add_signal (binding_set, GDK_End, GDK_SHIFT_MASK | GDK_CONTROL_MASK, "extend_selection", 3, GTK_TYPE_ENUM, GTK_SCROLL_JUMP, GTK_TYPE_FLOAT, 1.0, GTK_TYPE_BOOL, TRUE); gtk_binding_entry_add_signal (binding_set, GDK_Left, 0, "scroll_horizontal", 2, GTK_TYPE_ENUM, GTK_SCROLL_STEP_BACKWARD, GTK_TYPE_FLOAT, 0.0); gtk_binding_entry_add_signal (binding_set, GDK_Right, 0, "scroll_horizontal", 2, GTK_TYPE_ENUM, GTK_SCROLL_STEP_FORWARD, GTK_TYPE_FLOAT, 0.0); gtk_binding_entry_add_signal (binding_set, GDK_Home, 0, "scroll_horizontal", 2, GTK_TYPE_ENUM, GTK_SCROLL_JUMP, GTK_TYPE_FLOAT, 0.0); gtk_binding_entry_add_signal (binding_set, GDK_End, 0, "scroll_horizontal", 2, GTK_TYPE_ENUM, GTK_SCROLL_JUMP, GTK_TYPE_FLOAT, 1.0); gtk_binding_entry_add_signal (binding_set, GDK_Escape, 0, "undo_selection", 0); gtk_binding_entry_add_signal (binding_set, GDK_Escape, 0, "abort_column_resize", 0); gtk_binding_entry_add_signal (binding_set, GDK_space, 0, "toggle_focus_row", 0); gtk_binding_entry_add_signal (binding_set, GDK_space, GDK_CONTROL_MASK, "toggle_add_mode", 0); gtk_binding_entry_add_signal (binding_set, '/', GDK_CONTROL_MASK, "select_all", 0); gtk_binding_entry_add_signal (binding_set, '\\', GDK_CONTROL_MASK, "unselect_all", 0); gtk_binding_entry_add_signal (binding_set, GDK_Shift_L, GDK_RELEASE_MASK | GDK_SHIFT_MASK, "end_selection", 0); gtk_binding_entry_add_signal (binding_set, GDK_Shift_R, GDK_RELEASE_MASK | GDK_SHIFT_MASK, "end_selection", 0); gtk_binding_entry_add_signal (binding_set, GDK_Shift_L, GDK_RELEASE_MASK | GDK_SHIFT_MASK | GDK_CONTROL_MASK, "end_selection", 0); gtk_binding_entry_add_signal (binding_set, GDK_Shift_R, GDK_RELEASE_MASK | GDK_SHIFT_MASK | GDK_CONTROL_MASK, "end_selection", 0);}static voidgtk_clist_set_arg (GtkObject *object, GtkArg *arg, guint arg_id){ GtkCList *clist; clist = GTK_CLIST (object); switch (arg_id) { case ARG_N_COLUMNS: /* construct-only arg, only set when !GTK_CONSTRUCTED */ gtk_clist_construct (clist, MAX (1, GTK_VALUE_UINT (*arg)), NULL); break; case ARG_SHADOW_TYPE: gtk_clist_set_shadow_type (clist, GTK_VALUE_ENUM (*arg)); break; case ARG_SELECTION_MODE: gtk_clist_set_selection_mode (clist, GTK_VALUE_ENUM (*arg)); break; case ARG_ROW_HEIGHT: gtk_clist_set_row_height (clist, GTK_VALUE_UINT (*arg)); break; case ARG_REORDERABLE: gtk_clist_set_reorderable (clist, GTK_VALUE_BOOL (*arg)); break; case ARG_TITLES_ACTIVE: if (GTK_VALUE_BOOL (*arg)) gtk_clist_column_titles_active (clist); else gtk_clist_column_titles_passive (clist); break; case ARG_USE_DRAG_ICONS: gtk_clist_set_use_drag_icons (clist, GTK_VALUE_BOOL (*arg)); break; case ARG_SORT_TYPE: gtk_clist_set_sort_type (clist, GTK_VALUE_ENUM (*arg)); break; }}static voidgtk_clist_get_arg (GtkObject *object, GtkArg *arg, guint arg_id){ GtkCList *clist; clist = GTK_CLIST (object); switch (arg_id) { guint i;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -