⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gtkclist.c

📁 gtk是linux一款强大的夸平台的图形化开发工具
💻 C
📖 第 1 页 / 共 5 页
字号:
    case ARG_N_COLUMNS:      GTK_VALUE_UINT (*arg) = clist->columns;      break;    case ARG_SHADOW_TYPE:      GTK_VALUE_ENUM (*arg) = clist->shadow_type;      break;    case ARG_SELECTION_MODE:      GTK_VALUE_ENUM (*arg) = clist->selection_mode;      break;    case ARG_ROW_HEIGHT:      GTK_VALUE_UINT (*arg) = GTK_CLIST_ROW_HEIGHT_SET(clist) ? clist->row_height : 0;      break;    case ARG_REORDERABLE:      GTK_VALUE_BOOL (*arg) = GTK_CLIST_REORDERABLE (clist);      break;    case ARG_TITLES_ACTIVE:      GTK_VALUE_BOOL (*arg) = TRUE;      for (i = 0; i < clist->columns; i++)	if (clist->column[i].button &&	    !GTK_WIDGET_SENSITIVE (clist->column[i].button))	  {	    GTK_VALUE_BOOL (*arg) = FALSE;	    break;	  }      break;    case ARG_USE_DRAG_ICONS:      GTK_VALUE_BOOL (*arg) = GTK_CLIST_USE_DRAG_ICONS (clist);      break;    case ARG_SORT_TYPE:      GTK_VALUE_ENUM (*arg) = clist->sort_type;      break;    default:      arg->type = GTK_TYPE_INVALID;      break;    }}static voidgtk_clist_init (GtkCList *clist){  clist->flags = 0;  GTK_WIDGET_UNSET_FLAGS (clist, GTK_NO_WINDOW);  GTK_WIDGET_SET_FLAGS (clist, GTK_CAN_FOCUS);  GTK_CLIST_SET_FLAG (clist, CLIST_CHILD_HAS_FOCUS);  GTK_CLIST_SET_FLAG (clist, CLIST_DRAW_DRAG_LINE);  GTK_CLIST_SET_FLAG (clist, CLIST_USE_DRAG_ICONS);  clist->row_mem_chunk = NULL;  clist->cell_mem_chunk = NULL;  clist->freeze_count = 0;  clist->rows = 0;  clist->row_center_offset = 0;  clist->row_height = 0;  clist->row_list = NULL;  clist->row_list_end = NULL;  clist->columns = 0;  clist->title_window = NULL;  clist->column_title_area.x = 0;  clist->column_title_area.y = 0;  clist->column_title_area.width = 1;  clist->column_title_area.height = 1;  clist->clist_window = NULL;  clist->clist_window_width = 1;  clist->clist_window_height = 1;  clist->hoffset = 0;  clist->voffset = 0;  clist->shadow_type = GTK_SHADOW_IN;  clist->vadjustment = NULL;  clist->hadjustment = NULL;  clist->button_actions[0] = GTK_BUTTON_SELECTS | GTK_BUTTON_DRAGS;  clist->button_actions[1] = GTK_BUTTON_IGNORED;  clist->button_actions[2] = GTK_BUTTON_IGNORED;  clist->button_actions[3] = GTK_BUTTON_IGNORED;  clist->button_actions[4] = GTK_BUTTON_IGNORED;  clist->cursor_drag = NULL;  clist->xor_gc = NULL;  clist->fg_gc = NULL;  clist->bg_gc = NULL;  clist->x_drag = 0;  clist->selection_mode = GTK_SELECTION_SINGLE;  clist->selection = NULL;  clist->selection_end = NULL;  clist->undo_selection = NULL;  clist->undo_unselection = NULL;  clist->focus_row = -1;  clist->undo_anchor = -1;  clist->anchor = -1;  clist->anchor_state = GTK_STATE_SELECTED;  clist->drag_pos = -1;  clist->htimer = 0;  clist->vtimer = 0;  clist->click_cell.row = -1;  clist->click_cell.column = -1;  clist->compare = default_compare;  clist->sort_type = GTK_SORT_ASCENDING;  clist->sort_column = 0;}/* Constructors */voidgtk_clist_construct (GtkCList *clist,		     gint      columns,		     gchar    *titles[]){  g_return_if_fail (clist != NULL);  g_return_if_fail (GTK_IS_CLIST (clist));  g_return_if_fail (columns > 0);  g_return_if_fail (GTK_OBJECT_CONSTRUCTED (clist) == FALSE);  /* mark the object as constructed */  gtk_object_constructed (GTK_OBJECT (clist));  /* initalize memory chunks, if this has not been done by any   * possibly derived widget   */  if (!clist->row_mem_chunk)    clist->row_mem_chunk = g_mem_chunk_new ("clist row mem chunk",					    sizeof (GtkCListRow),					    sizeof (GtkCListRow) *					    CLIST_OPTIMUM_SIZE, 					    G_ALLOC_AND_FREE);  if (!clist->cell_mem_chunk)    clist->cell_mem_chunk = g_mem_chunk_new ("clist cell mem chunk",					     sizeof (GtkCell) * columns,					     sizeof (GtkCell) * columns *					     CLIST_OPTIMUM_SIZE, 					     G_ALLOC_AND_FREE);  /* set number of columns, allocate memory */  clist->columns = columns;  clist->column = columns_new (clist);  /* there needs to be at least one column button    * because there is alot of code that will break if it   * isn't there*/  column_button_create (clist, 0);  if (titles)    {      guint i;            GTK_CLIST_SET_FLAG (clist, CLIST_SHOW_TITLES);      for (i = 0; i < columns; i++)	gtk_clist_set_column_title (clist, i, titles[i]);    }  else    {      GTK_CLIST_UNSET_FLAG (clist, CLIST_SHOW_TITLES);    }}/* GTKCLIST PUBLIC INTERFACE *   gtk_clist_new *   gtk_clist_new_with_titles *   gtk_clist_set_hadjustment *   gtk_clist_set_vadjustment *   gtk_clist_get_hadjustment *   gtk_clist_get_vadjustment *   gtk_clist_set_shadow_type *   gtk_clist_set_selection_mode *   gtk_clist_freeze *   gtk_clist_thaw */GtkWidget*gtk_clist_new (gint columns){  return gtk_clist_new_with_titles (columns, NULL);} GtkWidget*gtk_clist_new_with_titles (gint   columns,			   gchar *titles[]){  GtkWidget *widget;  widget = gtk_type_new (GTK_TYPE_CLIST);  gtk_clist_construct (GTK_CLIST (widget), columns, titles);  return widget;}voidgtk_clist_set_hadjustment (GtkCList      *clist,			   GtkAdjustment *adjustment){  GtkAdjustment *old_adjustment;  g_return_if_fail (clist != NULL);  g_return_if_fail (GTK_IS_CLIST (clist));  if (adjustment)    g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));    if (clist->hadjustment == adjustment)    return;    old_adjustment = clist->hadjustment;  if (clist->hadjustment)    {      gtk_signal_disconnect_by_data (GTK_OBJECT (clist->hadjustment), clist);      gtk_object_unref (GTK_OBJECT (clist->hadjustment));    }  clist->hadjustment = adjustment;  if (clist->hadjustment)    {      gtk_object_ref (GTK_OBJECT (clist->hadjustment));      gtk_object_sink (GTK_OBJECT (clist->hadjustment));      gtk_signal_connect (GTK_OBJECT (clist->hadjustment), "changed",			  (GtkSignalFunc) hadjustment_changed,			  (gpointer) clist);      gtk_signal_connect (GTK_OBJECT (clist->hadjustment), "value_changed",			  (GtkSignalFunc) hadjustment_value_changed,			  (gpointer) clist);    }  if (!clist->hadjustment || !old_adjustment)    gtk_widget_queue_resize (GTK_WIDGET (clist));}GtkAdjustment *gtk_clist_get_hadjustment (GtkCList *clist){  g_return_val_if_fail (clist != NULL, NULL);  g_return_val_if_fail (GTK_IS_CLIST (clist), NULL);  return clist->hadjustment;}voidgtk_clist_set_vadjustment (GtkCList      *clist,			   GtkAdjustment *adjustment){  GtkAdjustment *old_adjustment;  g_return_if_fail (clist != NULL);  g_return_if_fail (GTK_IS_CLIST (clist));  if (adjustment)    g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));  if (clist->vadjustment == adjustment)    return;    old_adjustment = clist->vadjustment;  if (clist->vadjustment)    {      gtk_signal_disconnect_by_data (GTK_OBJECT (clist->vadjustment), clist);      gtk_object_unref (GTK_OBJECT (clist->vadjustment));    }  clist->vadjustment = adjustment;  if (clist->vadjustment)    {      gtk_object_ref (GTK_OBJECT (clist->vadjustment));      gtk_object_sink (GTK_OBJECT (clist->vadjustment));      gtk_signal_connect (GTK_OBJECT (clist->vadjustment), "changed",			  (GtkSignalFunc) vadjustment_changed,			  (gpointer) clist);      gtk_signal_connect (GTK_OBJECT (clist->vadjustment), "value_changed",			  (GtkSignalFunc) vadjustment_value_changed,			  (gpointer) clist);    }  if (!clist->vadjustment || !old_adjustment)    gtk_widget_queue_resize (GTK_WIDGET (clist));}GtkAdjustment *gtk_clist_get_vadjustment (GtkCList *clist){  g_return_val_if_fail (clist != NULL, NULL);  g_return_val_if_fail (GTK_IS_CLIST (clist), NULL);  return clist->vadjustment;}static voidgtk_clist_set_scroll_adjustments (GtkCList      *clist,				  GtkAdjustment *hadjustment,				  GtkAdjustment *vadjustment){  if (clist->hadjustment != hadjustment)    gtk_clist_set_hadjustment (clist, hadjustment);  if (clist->vadjustment != vadjustment)    gtk_clist_set_vadjustment (clist, vadjustment);}voidgtk_clist_set_shadow_type (GtkCList      *clist,			   GtkShadowType  type){  g_return_if_fail (clist != NULL);  g_return_if_fail (GTK_IS_CLIST (clist));  clist->shadow_type = type;  if (GTK_WIDGET_VISIBLE (clist))    gtk_widget_queue_resize (GTK_WIDGET (clist));}voidgtk_clist_set_selection_mode (GtkCList         *clist,			      GtkSelectionMode  mode){  g_return_if_fail (clist != NULL);  g_return_if_fail (GTK_IS_CLIST (clist));  if (mode == clist->selection_mode)    return;  clist->selection_mode = mode;  clist->anchor = -1;  clist->anchor_state = GTK_STATE_SELECTED;  clist->drag_pos = -1;  clist->undo_anchor = clist->focus_row;  g_list_free (clist->undo_selection);  g_list_free (clist->undo_unselection);  clist->undo_selection = NULL;  clist->undo_unselection = NULL;  switch (mode)    {    case GTK_SELECTION_MULTIPLE:    case GTK_SELECTION_EXTENDED:      return;    case GTK_SELECTION_BROWSE:    case GTK_SELECTION_SINGLE:      gtk_clist_unselect_all (clist);      break;    }}voidgtk_clist_freeze (GtkCList *clist){  g_return_if_fail (clist != NULL);  g_return_if_fail (GTK_IS_CLIST (clist));  clist->freeze_count++;}voidgtk_clist_thaw (GtkCList *clist){  g_return_if_fail (clist != NULL);  g_return_if_fail (GTK_IS_CLIST (clist));  if (clist->freeze_count)    {      clist->freeze_count--;      CLIST_REFRESH (clist);    }}/* PUBLIC COLUMN FUNCTIONS *   gtk_clist_column_titles_show *   gtk_clist_column_titles_hide *   gtk_clist_column_title_active *   gtk_clist_column_title_passive *   gtk_clist_column_titles_active *   gtk_clist_column_titles_passive *   gtk_clist_set_column_title *   gtk_clist_get_column_title *   gtk_clist_set_column_widget *   gtk_clist_set_column_justification *   gtk_clist_set_column_visibility *   gtk_clist_set_column_resizeable *   gtk_clist_set_column_auto_resize *   gtk_clist_optimal_column_width *   gtk_clist_set_column_width *   gtk_clist_set_column_min_width *   gtk_clist_set_column_max_width */voidgtk_clist_column_titles_show (GtkCList *clist){  g_return_if_fail (clist != NULL);  g_return_if_fail (GTK_IS_CLIST (clist));  if (!GTK_CLIST_SHOW_TITLES(clist))    {      GTK_CLIST_SET_FLAG (clist, CLIST_SHOW_TITLES);      if (clist->title_window)	gdk_window_show (clist->title_window);      gtk_widget_queue_resize (GTK_WIDGET (clist));    }}void gtk_clist_column_titles_hide (GtkCList *clist){  g_return_if_fail (clist != NULL);  g_return_if_fail (GTK_IS_CLIST (clist));  if (GTK_CLIST_SHOW_TITLES(clist))    {      GTK_CLIST_UNSET_FLAG (clist, CLIST_SHOW_TITLES);      if (clist->title_window)	gdk_window_hide (clist->title_window);      gtk_widget_queue_resize (GTK_WIDGET (clist));    }}voidgtk_clist_column_title_active (GtkCList *clist,			       gint      column){  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;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -