📄 gtkclist.c
字号:
clist->column[column].button_passive = FALSE; gtk_signal_disconnect_by_func (GTK_OBJECT (clist->column[column].button), (GtkSignalFunc) column_title_passive_func, NULL); GTK_WIDGET_SET_FLAGS (clist->column[column].button, GTK_CAN_FOCUS); if (GTK_WIDGET_VISIBLE (clist)) gtk_widget_queue_draw (clist->column[column].button);}voidgtk_clist_column_title_passive (GtkCList *clist, gint column){ GtkButton *button; g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CLIST (clist)); if (column < 0 || column >= clist->columns) return; if (!clist->column[column].button || clist->column[column].button_passive) return; button = GTK_BUTTON (clist->column[column].button); clist->column[column].button_passive = TRUE; if (button->button_down) gtk_button_released (button); if (button->in_button) gtk_button_leave (button); gtk_signal_connect (GTK_OBJECT (clist->column[column].button), "event", (GtkSignalFunc) column_title_passive_func, NULL); GTK_WIDGET_UNSET_FLAGS (clist->column[column].button, GTK_CAN_FOCUS); if (GTK_WIDGET_VISIBLE (clist)) gtk_widget_queue_draw (clist->column[column].button);}voidgtk_clist_column_titles_active (GtkCList *clist){ gint i; g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CLIST (clist)); if (!GTK_CLIST_SHOW_TITLES(clist)) return; for (i = 0; i < clist->columns; i++) gtk_clist_column_title_active (clist, i);}voidgtk_clist_column_titles_passive (GtkCList *clist){ gint i; g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CLIST (clist)); if (!GTK_CLIST_SHOW_TITLES(clist)) return; for (i = 0; i < clist->columns; i++) gtk_clist_column_title_passive (clist, i);}voidgtk_clist_set_column_title (GtkCList *clist, gint column, const gchar *title){ gint new_button = 0; GtkWidget *old_widget; GtkWidget *alignment = NULL; GtkWidget *label; g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CLIST (clist)); if (column < 0 || column >= clist->columns) return; /* if the column button doesn't currently exist, * it has to be created first */ if (!clist->column[column].button) { column_button_create (clist, column); new_button = 1; } column_title_new (clist, column, title); /* remove and destroy the old widget */ old_widget = GTK_BIN (clist->column[column].button)->child; if (old_widget) gtk_container_remove (GTK_CONTAINER (clist->column[column].button), old_widget); /* create new alignment based no column justification */ switch (clist->column[column].justification) { case GTK_JUSTIFY_LEFT: alignment = gtk_alignment_new (0.0, 0.5, 0.0, 0.0); break; case GTK_JUSTIFY_RIGHT: alignment = gtk_alignment_new (1.0, 0.5, 0.0, 0.0); break; case GTK_JUSTIFY_CENTER: alignment = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); break; case GTK_JUSTIFY_FILL: alignment = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); break; } gtk_widget_push_composite_child (); label = gtk_label_new (clist->column[column].title); gtk_widget_pop_composite_child (); gtk_container_add (GTK_CONTAINER (alignment), label); gtk_container_add (GTK_CONTAINER (clist->column[column].button), alignment); gtk_widget_show (label); gtk_widget_show (alignment); /* if this button didn't previously exist, then the * column button positions have to be re-computed */ if (GTK_WIDGET_VISIBLE (clist) && new_button) size_allocate_title_buttons (clist);}gchar *gtk_clist_get_column_title (GtkCList *clist, gint column){ g_return_val_if_fail (clist != NULL, NULL); g_return_val_if_fail (GTK_IS_CLIST (clist), NULL); if (column < 0 || column >= clist->columns) return NULL; return clist->column[column].title;}voidgtk_clist_set_column_widget (GtkCList *clist, gint column, GtkWidget *widget){ gint new_button = 0; GtkWidget *old_widget; g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CLIST (clist)); if (column < 0 || column >= clist->columns) return; /* if the column button doesn't currently exist, * it has to be created first */ if (!clist->column[column].button) { column_button_create (clist, column); new_button = 1; } column_title_new (clist, column, NULL); /* remove and destroy the old widget */ old_widget = GTK_BIN (clist->column[column].button)->child; if (old_widget) gtk_container_remove (GTK_CONTAINER (clist->column[column].button), old_widget); /* add and show the widget */ if (widget) { gtk_container_add (GTK_CONTAINER (clist->column[column].button), widget); gtk_widget_show (widget); } /* if this button didn't previously exist, then the * column button positions have to be re-computed */ if (GTK_WIDGET_VISIBLE (clist) && new_button) size_allocate_title_buttons (clist);}GtkWidget *gtk_clist_get_column_widget (GtkCList *clist, gint column){ g_return_val_if_fail (clist != NULL, NULL); g_return_val_if_fail (GTK_IS_CLIST (clist), NULL); if (column < 0 || column >= clist->columns) return NULL; if (clist->column[column].button) return GTK_BUTTON (clist->column[column].button)->child; return NULL;}voidgtk_clist_set_column_justification (GtkCList *clist, gint column, GtkJustification justification){ GtkWidget *alignment; g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CLIST (clist)); if (column < 0 || column >= clist->columns) return; clist->column[column].justification = justification; /* change the alinment of the button title if it's not a * custom widget */ if (clist->column[column].title) { alignment = GTK_BIN (clist->column[column].button)->child; switch (clist->column[column].justification) { case GTK_JUSTIFY_LEFT: gtk_alignment_set (GTK_ALIGNMENT (alignment), 0.0, 0.5, 0.0, 0.0); break; case GTK_JUSTIFY_RIGHT: gtk_alignment_set (GTK_ALIGNMENT (alignment), 1.0, 0.5, 0.0, 0.0); break; case GTK_JUSTIFY_CENTER: gtk_alignment_set (GTK_ALIGNMENT (alignment), 0.5, 0.5, 0.0, 0.0); break; case GTK_JUSTIFY_FILL: gtk_alignment_set (GTK_ALIGNMENT (alignment), 0.5, 0.5, 0.0, 0.0); break; default: break; } } if (CLIST_UNFROZEN (clist)) draw_rows (clist, NULL);}voidgtk_clist_set_column_visibility (GtkCList *clist, gint column, gboolean visible){ g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CLIST (clist)); if (column < 0 || column >= clist->columns) return; if (clist->column[column].visible == visible) return; /* don't hide last visible column */ if (!visible) { gint i; gint vis_columns = 0; for (i = 0, vis_columns = 0; i < clist->columns && vis_columns < 2; i++) if (clist->column[i].visible) vis_columns++; if (vis_columns < 2) return; } clist->column[column].visible = visible; if (clist->column[column].button) { if (visible) gtk_widget_show (clist->column[column].button); else gtk_widget_hide (clist->column[column].button); } gtk_widget_queue_resize (GTK_WIDGET(clist));}voidgtk_clist_set_column_resizeable (GtkCList *clist, gint column, gboolean resizeable){ g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CLIST (clist)); if (column < 0 || column >= clist->columns) return; if (clist->column[column].resizeable == resizeable) return; clist->column[column].resizeable = resizeable; if (resizeable) clist->column[column].auto_resize = FALSE; if (GTK_WIDGET_VISIBLE (clist)) size_allocate_title_buttons (clist);}voidgtk_clist_set_column_auto_resize (GtkCList *clist, gint column, gboolean auto_resize){ g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CLIST (clist)); if (column < 0 || column >= clist->columns) return; if (clist->column[column].auto_resize == auto_resize) return; clist->column[column].auto_resize = auto_resize; if (auto_resize) { clist->column[column].resizeable = FALSE; if (!GTK_CLIST_AUTO_RESIZE_BLOCKED(clist)) { gint width; width = gtk_clist_optimal_column_width (clist, column); gtk_clist_set_column_width (clist, column, width); } } if (GTK_WIDGET_VISIBLE (clist)) size_allocate_title_buttons (clist);}gintgtk_clist_columns_autosize (GtkCList *clist){ gint i; gint width; g_return_val_if_fail (clist != NULL, 0); g_return_val_if_fail (GTK_IS_CLIST (clist), 0); gtk_clist_freeze (clist); width = 0; for (i = 0; i < clist->columns; i++) { gtk_clist_set_column_width (clist, i, gtk_clist_optimal_column_width (clist, i)); width += clist->column[i].width; } gtk_clist_thaw (clist); return width;}gintgtk_clist_optimal_column_width (GtkCList *clist, gint column){ GtkRequisition requisition; GList *list; gint width; g_return_val_if_fail (clist != NULL, 0); g_return_val_if_fail (GTK_CLIST (clist), 0); if (column < 0 || column > clist->columns) return 0; if (GTK_CLIST_SHOW_TITLES(clist) && clist->column[column].button) width = (clist->column[column].button->requisition.width)#if 0 (CELL_SPACING + (2 * COLUMN_INSET)))#endif ; else width = 0; for (list = clist->row_list; list; list = list->next) { GTK_CLIST_CLASS_FW (clist)->cell_size_request (clist, GTK_CLIST_ROW (list), column, &requisition); width = MAX (width, requisition.width); } return width;}voidgtk_clist_set_column_width (GtkCList *clist, gint column, gint width){ g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CLIST (clist)); if (column < 0 || column >= clist->columns) return; gtk_signal_emit (GTK_OBJECT (clist), clist_signals[RESIZE_COLUMN], column, width);}voidgtk_clist_set_column_min_width (GtkCList *clist, gint column, gint min_width){ g_return_if_fail (clist != NULL); g_return_if_fail (GTK_IS_CLIST (clist)); if (column < 0 || column >= clist->columns) return; if (clist->column[column].min_width == min_width) return; if (clist->column[column].max_width >= 0 && clist->column[column].max_width < min_width) clist->column[column].min_width = clist->column[column].max_width; else clist->column[column].min_width = min_width;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -