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

📄 gtkpacker.c

📁 gtk是linux一款强大的夸平台的图形化开发工具
💻 C
📖 第 1 页 / 共 3 页
字号:
	  arg->type = GTK_TYPE_INVALID;	  return;	}    }  switch (arg_id)    {    case CHILD_ARG_SIDE:      GTK_VALUE_ENUM (*arg) = child_info->side;      break;    case CHILD_ARG_ANCHOR:      GTK_VALUE_ENUM (*arg) = child_info->anchor;      break;    case CHILD_ARG_EXPAND:      GTK_VALUE_BOOL (*arg) = (child_info->options & GTK_PACK_EXPAND) != 0;      break;    case CHILD_ARG_FILL_X:      GTK_VALUE_BOOL (*arg) = (child_info->options & GTK_FILL_X) != 0;      break;    case CHILD_ARG_FILL_Y:      GTK_VALUE_BOOL (*arg) = (child_info->options & GTK_FILL_Y) != 0;      break;    case CHILD_ARG_USE_DEFAULT:      GTK_VALUE_BOOL (*arg) = child_info->use_default;      break;    case CHILD_ARG_BORDER_WIDTH:      GTK_VALUE_UINT (*arg) = child_info->border_width;      break;    case CHILD_ARG_PAD_X:      GTK_VALUE_UINT (*arg) = child_info->pad_x;      break;    case CHILD_ARG_PAD_Y:      GTK_VALUE_UINT (*arg) = child_info->pad_y;      break;    case CHILD_ARG_I_PAD_X:      GTK_VALUE_UINT (*arg) = child_info->i_pad_x;      break;    case CHILD_ARG_I_PAD_Y:      GTK_VALUE_UINT (*arg) = child_info->i_pad_y;      break;    case CHILD_ARG_POSITION:      GTK_VALUE_LONG (*arg) = 0;      for (list = packer->children; list; list = list->next)	{	  child_info = list->data;	  if (child_info->widget == child)	    break;	  GTK_VALUE_LONG (*arg)++;	}      if (!list)	GTK_VALUE_LONG (*arg) = -1;      break;    default:      arg->type = GTK_TYPE_INVALID;      break;    }}static voidgtk_packer_init (GtkPacker *packer){  GTK_WIDGET_SET_FLAGS (packer, GTK_NO_WINDOW);    packer->children = NULL;  packer->spacing = 0;}voidgtk_packer_set_spacing (GtkPacker *packer,			guint      spacing){  g_return_if_fail (packer != NULL);  g_return_if_fail (GTK_IS_PACKER (packer));    if (spacing != packer->spacing)     {      packer->spacing = spacing;      gtk_widget_queue_resize (GTK_WIDGET (packer));    }}GtkWidget*gtk_packer_new (void){  return GTK_WIDGET (gtk_type_new (GTK_TYPE_PACKER));}static voidredo_defaults_children (GtkPacker *packer){  GList *list;  GtkPackerChild *child;    list = g_list_first(packer->children);  while (list != NULL)     {      child = list->data;            if (child->use_default) 	{	  child->border_width = packer->default_border_width;	  child->pad_x = packer->default_pad_x;	  child->pad_y = packer->default_pad_y;	  child->i_pad_x = packer->default_i_pad_x;	  child->i_pad_y = packer->default_i_pad_y;	  gtk_widget_queue_resize (GTK_WIDGET (child->widget));	}      list = g_list_next(list);    }}voidgtk_packer_set_default_border_width (GtkPacker *packer,				     guint      border){  g_return_if_fail (packer != NULL);  g_return_if_fail (GTK_IS_PACKER (packer));    if (packer->default_border_width != border)     {      packer->default_border_width = border;;      redo_defaults_children (packer);    }}voidgtk_packer_set_default_pad (GtkPacker *packer,			    guint      pad_x,			    guint      pad_y){  g_return_if_fail (packer != NULL);  g_return_if_fail (GTK_IS_PACKER (packer));    if (packer->default_pad_x != pad_x ||      packer->default_pad_y != pad_y)     {      packer->default_pad_x = pad_x;      packer->default_pad_y = pad_y;      redo_defaults_children (packer);    }}voidgtk_packer_set_default_ipad (GtkPacker *packer,			     guint      i_pad_x,			     guint      i_pad_y){  g_return_if_fail (packer != NULL);  g_return_if_fail (GTK_IS_PACKER (packer));    if (packer->default_i_pad_x != i_pad_x ||      packer->default_i_pad_y != i_pad_y) {        packer->default_i_pad_x = i_pad_x;    packer->default_i_pad_y = i_pad_y;    redo_defaults_children (packer);  }}static void gtk_packer_container_add (GtkContainer *packer, GtkWidget *child){  gtk_packer_add_defaults(GTK_PACKER(packer), child,			  GTK_SIDE_TOP, GTK_ANCHOR_CENTER, 0);}void gtk_packer_add_defaults (GtkPacker       *packer,			 GtkWidget       *child,                         GtkSideType      side,                         GtkAnchorType    anchor,                         GtkPackerOptions options){  GtkPackerChild *pchild;    g_return_if_fail (packer != NULL);  g_return_if_fail (GTK_IS_PACKER (packer));  g_return_if_fail (child != NULL);  g_return_if_fail (GTK_IS_WIDGET (child));    pchild = (GtkPackerChild*) g_malloc(sizeof(GtkPackerChild));    pchild->widget = child;  pchild->side = side;  pchild->options = options;  pchild->anchor = anchor;    pchild->use_default = 1;    pchild->border_width = packer->default_border_width;  pchild->pad_x = packer->default_pad_x;  pchild->pad_y = packer->default_pad_y;  pchild->i_pad_x = packer->default_i_pad_x;  pchild->i_pad_y = packer->default_i_pad_y;    packer->children = g_list_append(packer->children, (gpointer) pchild);    gtk_widget_set_parent (child, GTK_WIDGET (packer));    if (GTK_WIDGET_REALIZED (child->parent))    gtk_widget_realize (child);  if (GTK_WIDGET_VISIBLE (child->parent) && GTK_WIDGET_VISIBLE (child))    {      if (GTK_WIDGET_MAPPED (child->parent))	gtk_widget_map (child);      gtk_widget_queue_resize (child);    }}void gtk_packer_add (GtkPacker       *packer,                GtkWidget       *child,                GtkSideType      side,                GtkAnchorType    anchor,                GtkPackerOptions options,                guint            border_width,                guint            pad_x,                guint            pad_y,                guint            i_pad_x,                guint            i_pad_y){  GtkPackerChild *pchild;    g_return_if_fail (packer != NULL);  g_return_if_fail (GTK_IS_PACKER (packer));  g_return_if_fail (child != NULL);  g_return_if_fail (GTK_IS_WIDGET (child));    pchild = (GtkPackerChild*) g_malloc(sizeof(GtkPackerChild));    pchild->widget = child;  pchild->side = side;  pchild->options = options;  pchild->anchor = anchor;    pchild->use_default = 0;    pchild->border_width = border_width;  pchild->pad_x = pad_x;  pchild->pad_y = pad_y;  pchild->i_pad_x = i_pad_x;  pchild->i_pad_y = i_pad_y;    packer->children = g_list_append(packer->children, (gpointer) pchild);    gtk_widget_set_parent (child, GTK_WIDGET (packer));    if (GTK_WIDGET_REALIZED (child->parent))    gtk_widget_realize (child);  if (GTK_WIDGET_VISIBLE (child->parent) && GTK_WIDGET_VISIBLE (child))    {      if (GTK_WIDGET_MAPPED (child->parent))	gtk_widget_map (child);      gtk_widget_queue_resize (child);    }}voidgtk_packer_set_child_packing (GtkPacker       *packer,			      GtkWidget       *child,			      GtkSideType      side,			      GtkAnchorType    anchor,			      GtkPackerOptions options,			      guint            border_width,			      guint            pad_x,			      guint            pad_y,			      guint            i_pad_x,			      guint            i_pad_y){  GList *list;  GtkPackerChild *pchild;    g_return_if_fail (packer != NULL);  g_return_if_fail (GTK_IS_PACKER (packer));  g_return_if_fail (child != NULL);    list = g_list_first(packer->children);  while (list != NULL)     {      pchild = (GtkPackerChild*) list->data;      if (pchild->widget == child) 	{	  pchild->side = side;	  pchild->anchor = anchor;	  pchild->options = options;	  	  pchild->use_default = 0;	  	  pchild->border_width = border_width;	  pchild->pad_x = pad_x;	  pchild->pad_y = pad_y;	  pchild->i_pad_x = i_pad_x;	  pchild->i_pad_y = i_pad_y;	  	  if (GTK_WIDGET_VISIBLE (child) && GTK_WIDGET_VISIBLE (packer))	    gtk_widget_queue_resize (child);	  return;        }      list = g_list_next(list);    }  g_warning ("couldn't find child `%s' amongst the packer's children", gtk_type_name (GTK_OBJECT_TYPE (child)));}voidgtk_packer_reorder_child (GtkPacker *packer,			  GtkWidget *child,			  gint       position){  GList *list;  g_return_if_fail (packer != NULL);  g_return_if_fail (GTK_IS_PACKER (packer));  g_return_if_fail (child != NULL);  list = packer->children;  while (list)    {      GtkPackerChild *child_info;      child_info = list->data;      if (child_info->widget == child)	break;      list = list->next;    }  if (list && packer->children->next)    {      GList *tmp_list;      if (list->next)	list->next->prev = list->prev;      if (list->prev)	list->prev->next = list->next;      else	packer->children = list->next;      tmp_list = packer->children;      while (position && tmp_list->next)	{	  position--;	  tmp_list = tmp_list->next;	}      if (position)	{	  tmp_list->next = list;	  list->prev = tmp_list;	  list->next = NULL;	}      else	{	  if (tmp_list->prev)	    tmp_list->prev->next = list;	  else	    packer->children = list;	  list->prev = tmp_list->prev;	  tmp_list->prev = list;	  list->next = tmp_list;	}      if (GTK_WIDGET_VISIBLE (child) && GTK_WIDGET_VISIBLE (packer))	gtk_widget_queue_resize (child);    }}static void gtk_packer_remove (GtkContainer *container,		   GtkWidget    *widget) {  GtkPacker *packer;  GtkPackerChild *child;  GList *children;  gint visible;    g_return_if_fail (container != NULL);  g_return_if_fail (widget != NULL);    packer = GTK_PACKER (container);    children = g_list_first(packer->children);  while (children)     {      child = children->data;            if (child->widget == widget) 	{	  visible = GTK_WIDGET_VISIBLE (widget);	  gtk_widget_unparent (widget);	  	  packer->children = g_list_remove_link (packer->children, children);	  g_list_free (children);	  g_free (child);	  	  if (visible && GTK_WIDGET_VISIBLE (container))	    gtk_widget_queue_resize (GTK_WIDGET (container));	  	  break;        }            children = g_list_next(children);    }}static void gtk_packer_map (GtkWidget *widget){  GtkPacker *packer;  GtkPackerChild *child;  GList *children;    g_return_if_fail (widget != NULL);  g_return_if_fail (GTK_IS_PACKER (widget));    packer = GTK_PACKER (widget);  GTK_WIDGET_SET_FLAGS (packer, GTK_MAPPED);    children = g_list_first(packer->children);  while (children != NULL)     {      child = children->data;      children = g_list_next(children);            if (GTK_WIDGET_VISIBLE (child->widget) &&	  !GTK_WIDGET_MAPPED (child->widget))	gtk_widget_map (child->widget);    }}static void gtk_packer_unmap (GtkWidget *widget){  GtkPacker *packer;  GtkPackerChild *child;  GList *children;  

⌨️ 快捷键说明

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