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

📄 testgtk.c

📁 开发linux应用-用gtk+和gdk开发linux图形用户界面应用--的实例
💻 C
📖 第 1 页 / 共 5 页
字号:
  /* create separator */  separator = gtk_hseparator_new();  gtk_box_pack_start(GTK_BOX(box1), separator, FALSE, FALSE, 0);  gtk_widget_show(separator);  /* create button box */  box2 = gtk_vbox_new(FALSE, 0);  gtk_box_pack_start(GTK_BOX(box1), box2, FALSE, FALSE, 0);  gtk_container_border_width(GTK_CONTAINER(box2), 5);  gtk_widget_show(box2);  button = gtk_button_new_with_label("Close");  gtk_box_pack_start(GTK_BOX(box2), button, TRUE, TRUE, 0);  gtk_signal_connect_object(GTK_OBJECT (button), "clicked",			    (GtkSignalFunc) gtk_widget_destroy, 			    GTK_OBJECT(window));  gtk_widget_show(button);  gtk_widget_show(window);}static voidcb_create_tree(GtkWidget* w){  guint selection_mode = GTK_SELECTION_SINGLE;  guint view_line;  guint draw_line;  guint no_root_item;  guint nb_item;  guint recursion_level;  /* get selection mode choice */  if(GTK_TOGGLE_BUTTON(sTreeSampleSelection.single_button)->active)    selection_mode = GTK_SELECTION_SINGLE;  else    if(GTK_TOGGLE_BUTTON(sTreeSampleSelection.browse_button)->active)      selection_mode = GTK_SELECTION_BROWSE;    else      selection_mode = GTK_SELECTION_MULTIPLE;  /* get options choice */  draw_line = GTK_TOGGLE_BUTTON(sTreeSampleSelection.draw_line_button)->active;  view_line = GTK_TOGGLE_BUTTON(sTreeSampleSelection.view_line_button)->active;  no_root_item = GTK_TOGGLE_BUTTON(sTreeSampleSelection.no_root_item_button)->active;      /* get levels */  nb_item = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(sTreeSampleSelection.nb_item_spinner));  recursion_level = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(sTreeSampleSelection.recursion_spinner));  if (pow (nb_item, recursion_level) > 10000)    {      g_print ("%g total items? That will take a very long time. Try less\n",	       pow (nb_item, recursion_level));      return;    }  create_tree_sample(selection_mode, draw_line, view_line, no_root_item, nb_item, recursion_level);}void create_tree_mode_window(void){  static GtkWidget* window;  GtkWidget* box1;  GtkWidget* box2;  GtkWidget* box3;  GtkWidget* box4;  GtkWidget* box5;  GtkWidget* button;  GtkWidget* frame;  GtkWidget* separator;  GtkWidget* label;  GtkWidget* spinner;  GtkAdjustment *adj;  if (!window)    {      /* create toplevel window  */      window = gtk_window_new(GTK_WINDOW_TOPLEVEL);      gtk_window_set_title(GTK_WINDOW(window), "Set Tree Parameters");      gtk_signal_connect (GTK_OBJECT (window), "destroy",			  GTK_SIGNAL_FUNC(gtk_widget_destroyed),			  &window);      box1 = gtk_vbox_new(FALSE, 0);      gtk_container_add(GTK_CONTAINER(window), box1);      /* create upper box - selection box */      box2 = gtk_vbox_new(FALSE, 5);      gtk_box_pack_start(GTK_BOX(box1), box2, TRUE, TRUE, 0);      gtk_container_border_width(GTK_CONTAINER(box2), 5);      box3 = gtk_hbox_new(FALSE, 5);      gtk_box_pack_start(GTK_BOX(box2), box3, TRUE, TRUE, 0);      /* create selection mode frame */      frame = gtk_frame_new("Selection Mode");      gtk_box_pack_start(GTK_BOX(box3), frame, TRUE, TRUE, 0);      box4 = gtk_vbox_new(FALSE, 0);      gtk_container_add(GTK_CONTAINER(frame), box4);      gtk_container_border_width(GTK_CONTAINER(box4), 5);      /* create radio button */        button = gtk_radio_button_new_with_label(NULL, "SINGLE");      gtk_box_pack_start(GTK_BOX(box4), button, TRUE, TRUE, 0);      sTreeSampleSelection.single_button = button;      button = gtk_radio_button_new_with_label(gtk_radio_button_group (GTK_RADIO_BUTTON (button)),					       "BROWSE");      gtk_box_pack_start(GTK_BOX(box4), button, TRUE, TRUE, 0);      sTreeSampleSelection.browse_button = button;      button = gtk_radio_button_new_with_label(gtk_radio_button_group (GTK_RADIO_BUTTON (button)),					       "MULTIPLE");      gtk_box_pack_start(GTK_BOX(box4), button, TRUE, TRUE, 0);      sTreeSampleSelection.multiple_button = button;      sTreeSampleSelection.selection_mode_group = gtk_radio_button_group (GTK_RADIO_BUTTON (button));      /* create option mode frame */      frame = gtk_frame_new("Options");      gtk_box_pack_start(GTK_BOX(box3), frame, TRUE, TRUE, 0);      box4 = gtk_vbox_new(FALSE, 0);      gtk_container_add(GTK_CONTAINER(frame), box4);      gtk_container_border_width(GTK_CONTAINER(box4), 5);      /* create check button */      button = gtk_check_button_new_with_label("Draw line");      gtk_box_pack_start(GTK_BOX(box4), button, TRUE, TRUE, 0);      gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), TRUE);      sTreeSampleSelection.draw_line_button = button;        button = gtk_check_button_new_with_label("View Line mode");      gtk_box_pack_start(GTK_BOX(box4), button, TRUE, TRUE, 0);      gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), TRUE);      sTreeSampleSelection.view_line_button = button;        button = gtk_check_button_new_with_label("Without Root item");      gtk_box_pack_start(GTK_BOX(box4), button, TRUE, TRUE, 0);      sTreeSampleSelection.no_root_item_button = button;      /* create recursion parameter */      frame = gtk_frame_new("Size Parameters");      gtk_box_pack_start(GTK_BOX(box2), frame, TRUE, TRUE, 0);      box4 = gtk_hbox_new(FALSE, 5);      gtk_container_add(GTK_CONTAINER(frame), box4);      gtk_container_border_width(GTK_CONTAINER(box4), 5);      /* create number of item spin button */      box5 = gtk_hbox_new(FALSE, 5);      gtk_box_pack_start(GTK_BOX(box4), box5, FALSE, FALSE, 0);      label = gtk_label_new("Number of items : ");      gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);      gtk_box_pack_start (GTK_BOX (box5), label, FALSE, TRUE, 0);      adj = (GtkAdjustment *) gtk_adjustment_new ((gfloat)DEFAULT_NUMBER_OF_ITEM, 1.0, 255.0, 1.0,						  5.0, 0.0);      spinner = gtk_spin_button_new (adj, 0, 0);      gtk_box_pack_start (GTK_BOX (box5), spinner, FALSE, TRUE, 0);      sTreeSampleSelection.nb_item_spinner = spinner;        /* create recursion level spin button */      box5 = gtk_hbox_new(FALSE, 5);      gtk_box_pack_start(GTK_BOX(box4), box5, FALSE, FALSE, 0);      label = gtk_label_new("Depth : ");      gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);      gtk_box_pack_start (GTK_BOX (box5), label, FALSE, TRUE, 0);      adj = (GtkAdjustment *) gtk_adjustment_new ((gfloat)DEFAULT_RECURSION_LEVEL, 0.0, 255.0, 1.0,						  5.0, 0.0);      spinner = gtk_spin_button_new (adj, 0, 0);      gtk_box_pack_start (GTK_BOX (box5), spinner, FALSE, TRUE, 0);      sTreeSampleSelection.recursion_spinner = spinner;        /* create horizontal separator */      separator = gtk_hseparator_new();      gtk_box_pack_start(GTK_BOX(box1), separator, FALSE, FALSE, 0);      /* create bottom button box */      box2 = gtk_hbox_new(TRUE, 10);      gtk_box_pack_start(GTK_BOX(box1), box2, FALSE, FALSE, 0);      gtk_container_border_width(GTK_CONTAINER(box2), 5);      button = gtk_button_new_with_label("Create Tree");      gtk_box_pack_start(GTK_BOX(box2), button, TRUE, TRUE, 0);      gtk_signal_connect(GTK_OBJECT (button), "clicked",			 (GtkSignalFunc) cb_create_tree, NULL);      button = gtk_button_new_with_label("Close");      gtk_box_pack_start(GTK_BOX(box2), button, TRUE, TRUE, 0);      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",                                 GTK_SIGNAL_FUNC(gtk_widget_destroy),                                 GTK_OBJECT (window));    }  if (!GTK_WIDGET_VISIBLE (window))    gtk_widget_show_all (window);  else    gtk_widget_destroy (window);}/* * GtkHandleBox */static voidhandle_box_child_signal (GtkHandleBox *hb,			 GtkWidget    *child,			 const gchar  *action){  printf ("%s: child <%s> %sed\n",	  gtk_type_name (GTK_OBJECT_TYPE (hb)),	  gtk_type_name (GTK_OBJECT_TYPE (child)),	  action);}static voidcreate_handle_box (void){  static GtkWidget* window = NULL;  GtkWidget *handle_box;  GtkWidget *handle_box2;  GtkWidget *vbox;  GtkWidget *hbox;  GtkWidget *toolbar;  GtkWidget *label;  GtkWidget *separator;	  if (!window)  {    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);    gtk_window_set_title (GTK_WINDOW (window),			  "Handle Box Test");    gtk_window_set_policy (GTK_WINDOW (window),			   TRUE,			   TRUE,			   FALSE);        gtk_signal_connect (GTK_OBJECT (window), "destroy",			GTK_SIGNAL_FUNC(gtk_widget_destroyed),			&window);        gtk_container_border_width (GTK_CONTAINER (window), 20);    vbox = gtk_vbox_new (FALSE, 0);    gtk_container_add (GTK_CONTAINER (window), vbox);    gtk_widget_show (vbox);    label = gtk_label_new ("Above");    gtk_container_add (GTK_CONTAINER (vbox), label);    gtk_widget_show (label);    separator = gtk_hseparator_new ();    gtk_container_add (GTK_CONTAINER (vbox), separator);    gtk_widget_show (separator);        hbox = gtk_hbox_new (FALSE, 10);    gtk_container_add (GTK_CONTAINER (vbox), hbox);    gtk_widget_show (hbox);    separator = gtk_hseparator_new ();    gtk_container_add (GTK_CONTAINER (vbox), separator);    gtk_widget_show (separator);    label = gtk_label_new ("Below");    gtk_container_add (GTK_CONTAINER (vbox), label);    gtk_widget_show (label);    handle_box = gtk_handle_box_new ();    gtk_container_add (GTK_CONTAINER (hbox), handle_box);    gtk_signal_connect (GTK_OBJECT (handle_box),			"child_attached",			GTK_SIGNAL_FUNC (handle_box_child_signal),			"attached");    gtk_signal_connect (GTK_OBJECT (handle_box),			"child_detached",			GTK_SIGNAL_FUNC (handle_box_child_signal),			"detached");    gtk_widget_show (handle_box);    toolbar = make_toolbar (window);    gtk_toolbar_set_button_relief (GTK_TOOLBAR (toolbar), GTK_RELIEF_NORMAL);    gtk_container_add (GTK_CONTAINER (handle_box), toolbar);    gtk_widget_show (toolbar);    handle_box = gtk_handle_box_new ();    gtk_container_add (GTK_CONTAINER (hbox), handle_box);    gtk_signal_connect (GTK_OBJECT (handle_box),			"child_attached",			GTK_SIGNAL_FUNC (handle_box_child_signal),			"attached");    gtk_signal_connect (GTK_OBJECT (handle_box),			"child_detached",			GTK_SIGNAL_FUNC (handle_box_child_signal),			"detached");    gtk_widget_show (handle_box);    handle_box2 = gtk_handle_box_new ();    gtk_container_add (GTK_CONTAINER (handle_box), handle_box2);    gtk_signal_connect (GTK_OBJECT (handle_box2),			"child_attached",			GTK_SIGNAL_FUNC (handle_box_child_signal),			"attached");    gtk_signal_connect (GTK_OBJECT (handle_box2),			"child_detached",			GTK_SIGNAL_FUNC (handle_box_child_signal),			"detached");    gtk_widget_show (handle_box2);    label = gtk_label_new ("Fooo!");    gtk_container_add (GTK_CONTAINER (handle_box2), label);    gtk_widget_show (label);  }  if (!GTK_WIDGET_VISIBLE (window))    gtk_widget_show (window);  else    gtk_widget_destroy (window);}/* * Reparent demo */static voidreparent_label (GtkWidget *widget,		GtkWidget *new_parent){  GtkWidget *label;  label = gtk_object_get_user_data (GTK_OBJECT (widget));  gtk_widget_reparent (label, new_parent);}static voidset_parent_signal (GtkWidget *child,		   GtkWidget *old_parent,		   gpointer   func_data){  g_print ("set_parent for \"%s\": new parent: \"%s\", old parent: \"%s\", data: %d\n",	   gtk_type_name (GTK_OBJECT_TYPE (child)),	   child->parent ? gtk_type_name (GTK_OBJECT_TYPE (child->parent)) : "NULL",	   old_parent ? gtk_type_name (GTK_OBJECT_TYPE (old_parent)) : "NULL",	   GPOINTER_TO_INT (func_data));}static voidcreate_reparent (void){  static GtkWidget *window = NULL;  GtkWidget *box1;  GtkWidget *box2;  GtkWidget *box3;  GtkWidget *frame;  GtkWidget *button;  GtkWidget *label;  GtkWidget *separator;  if (!window)    {      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);      gtk_signal_connect (GTK_OBJECT (window), "destroy",			  GTK_SIGNAL_FUNC(gtk_widget_destroyed),			  &window);      gtk_window_set_title (GTK_WINDOW (window), "reparent");      gtk_container_border_width (GTK_CONTAINER (window), 0);      box1 = gtk_vbox_new (FALSE, 0);      gtk_container_add (GTK_CONTAINER (window), box1);      box2 = gtk_hbox_new (FALSE, 5);      gtk_container_border_width (GTK_CONTAINER (box2), 10);      gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);      label = gtk_label_new ("Hello World");      frame = gtk_frame_new ("Frame 1");      gtk_box_pack_start (GTK_BOX (box2), frame, TRUE, TRUE, 0);      box3 = gtk_vbox_new (FALSE, 5);      gtk_container_border_width (GTK_CONTAINER (box3), 5);      gtk_container_add (GTK_CONTAINER (frame), box3);      button = gtk_button_new_with_label ("switch");      gtk_signal_connect (GTK_OBJECT (button), "clicked",			  GTK_SIGNAL_FUNC(reparent_label),			  box3);      gtk_object_set_user_data (GTK_OBJECT (button), label);      gtk_box_pack_start (GTK_BOX (box3), button, FALSE, TRUE, 0);      gtk_box_pack_start (GTK_BOX (box3), label, FALSE, TRUE, 0);      gtk_signal_connect (GTK_OBJECT (label),			  "parent_set",			  GTK_SIGNAL_FUNC (set_parent_signal),			  GINT_TO_POINTER (42));      frame = gtk_frame_new ("Frame 2");      gtk_box_pack_start (GTK_BOX (box2), frame, TRUE, TRUE, 0);      box3 = gtk_vbox_new (FALSE, 5);      gtk_container_border_width (GTK_CONTAINER (box3), 5);      gtk_container_add (GTK_CONTAINER (frame), box3);      button = gtk_button_new_with_label ("switch");      gtk_signal_connect (GTK_OBJECT (button), "clicked",			  GTK_SIGNAL_FUNC(reparent_label),			  box3);      gtk_object_set_user_data (GTK_OBJECT (button), label);      gtk_box_pack_start (GTK_BOX (box3), button, FALSE, TRUE, 0);      separator = gtk_hseparator_new ();      gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);      box2 = gtk_vbox_new (FALSE, 10);      gtk_container_border_width (GTK_CONTAINER (box2), 10);      gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);      button = gtk_button_new_with_label ("close");

⌨️ 快捷键说明

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