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

📄 testgtk.c

📁 开发linux应用-用gtk+和gdk开发linux图形用户界面应用--的实例
💻 C
📖 第 1 页 / 共 5 页
字号:
/* GTK - The GIMP Toolkit * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */#undef	G_LOG_DOMAIN#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <time.h>#include "gtk.h"#include "../gdk/gdk.h"#include "../gdk/gdkx.h"#include "../gdk/gdkkeysyms.h"#include "circles.xbm"typedef struct _OptionMenuItem{  gchar        *name;  GtkSignalFunc func;} OptionMenuItem;GtkWidget *shape_create_icon (char     *xpm_file,		   gint      x,		   gint      y,		   gint      px,		   gint      py,		   gint      window_type);static GtkWidget *build_option_menu (OptionMenuItem items[],		   gint           num_items,		   gint           history,		   gpointer       data);/* macro, structure and variables used by tree window demos */#define DEFAULT_NUMBER_OF_ITEM  3#define DEFAULT_RECURSION_LEVEL 3struct {  GSList* selection_mode_group;  GtkWidget* single_button;  GtkWidget* browse_button;  GtkWidget* multiple_button;  GtkWidget* draw_line_button;  GtkWidget* view_line_button;  GtkWidget* no_root_item_button;  GtkWidget* nb_item_spinner;  GtkWidget* recursion_spinner;} sTreeSampleSelection;typedef struct sTreeButtons {  guint nb_item_add;  GtkWidget* add_button;  GtkWidget* remove_button;  GtkWidget* subtree_button;} sTreeButtons;/* end of tree section */static GtkWidget *build_option_menu (OptionMenuItem items[],		   gint           num_items,		   gint           history,		   gpointer       data){  GtkWidget *omenu;  GtkWidget *menu;  GtkWidget *menu_item;  GSList *group;  gint i;  omenu = gtk_option_menu_new ();        menu = gtk_menu_new ();  group = NULL;    for (i = 0; i < num_items; i++)    {      menu_item = gtk_radio_menu_item_new_with_label (group, items[i].name);      gtk_signal_connect (GTK_OBJECT (menu_item), "activate",			  (GtkSignalFunc) items[i].func, data);      group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (menu_item));      gtk_menu_append (GTK_MENU (menu), menu_item);      if (i == history)	gtk_check_menu_item_set_state (GTK_CHECK_MENU_ITEM (menu_item), TRUE);      gtk_widget_show (menu_item);    }  gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu);  gtk_option_menu_set_history (GTK_OPTION_MENU (omenu), history);    return omenu;}static voiddestroy_tooltips (GtkWidget *widget, GtkWindow **window){  GtkTooltips *tt = gtk_object_get_data (GTK_OBJECT (*window), "tooltips");  gtk_object_unref (GTK_OBJECT (tt));  *window = NULL;}/* * GtkButton */static voidbutton_window (GtkWidget *widget,	       GtkWidget *button){  if (!GTK_WIDGET_VISIBLE (button))    gtk_widget_show (button);  else    gtk_widget_hide (button);}static voidcreate_buttons (void){  static GtkWidget *window = NULL;  GtkWidget *box1;  GtkWidget *box2;  GtkWidget *table;  GtkWidget *button[10];  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), "GtkButton");      gtk_container_border_width (GTK_CONTAINER (window), 0);      box1 = gtk_vbox_new (FALSE, 0);      gtk_container_add (GTK_CONTAINER (window), box1);      table = gtk_table_new (3, 3, FALSE);      gtk_table_set_row_spacings (GTK_TABLE (table), 5);      gtk_table_set_col_spacings (GTK_TABLE (table), 5);      gtk_container_border_width (GTK_CONTAINER (table), 10);      gtk_box_pack_start (GTK_BOX (box1), table, TRUE, TRUE, 0);      button[0] = gtk_button_new_with_label ("button1");      button[1] = gtk_button_new_with_label ("button2");      button[2] = gtk_button_new_with_label ("button3");      button[3] = gtk_button_new_with_label ("button4");      button[4] = gtk_button_new_with_label ("button5");      button[5] = gtk_button_new_with_label ("button6");      button[6] = gtk_button_new_with_label ("button7");      button[7] = gtk_button_new_with_label ("button8");      button[8] = gtk_button_new_with_label ("button9");      gtk_signal_connect (GTK_OBJECT (button[0]), "clicked",			  GTK_SIGNAL_FUNC(button_window),			  button[1]);      gtk_table_attach (GTK_TABLE (table), button[0], 0, 1, 0, 1,			GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);      gtk_signal_connect (GTK_OBJECT (button[1]), "clicked",			  GTK_SIGNAL_FUNC(button_window),			  button[2]);      gtk_table_attach (GTK_TABLE (table), button[1], 1, 2, 1, 2,			GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);      gtk_signal_connect (GTK_OBJECT (button[2]), "clicked",			  GTK_SIGNAL_FUNC(button_window),			  button[3]);      gtk_table_attach (GTK_TABLE (table), button[2], 2, 3, 2, 3,			GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);      gtk_signal_connect (GTK_OBJECT (button[3]), "clicked",			  GTK_SIGNAL_FUNC(button_window),			  button[4]);      gtk_table_attach (GTK_TABLE (table), button[3], 0, 1, 2, 3,			GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);      gtk_signal_connect (GTK_OBJECT (button[4]), "clicked",			  GTK_SIGNAL_FUNC(button_window),			  button[5]);      gtk_table_attach (GTK_TABLE (table), button[4], 2, 3, 0, 1,			GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);      gtk_signal_connect (GTK_OBJECT (button[5]), "clicked",			  GTK_SIGNAL_FUNC(button_window),			  button[6]);      gtk_table_attach (GTK_TABLE (table), button[5], 1, 2, 2, 3,			GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);      gtk_signal_connect (GTK_OBJECT (button[6]), "clicked",			  GTK_SIGNAL_FUNC(button_window),			  button[7]);      gtk_table_attach (GTK_TABLE (table), button[6], 1, 2, 0, 1,			GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);      gtk_signal_connect (GTK_OBJECT (button[7]), "clicked",			  GTK_SIGNAL_FUNC(button_window),			  button[8]);      gtk_table_attach (GTK_TABLE (table), button[7], 2, 3, 1, 2,			GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);      gtk_signal_connect (GTK_OBJECT (button[8]), "clicked",			  GTK_SIGNAL_FUNC(button_window),			  button[0]);      gtk_table_attach (GTK_TABLE (table), button[8], 0, 1, 1, 2,			GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 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[9] = gtk_button_new_with_label ("close");      gtk_signal_connect_object (GTK_OBJECT (button[9]), "clicked",				 GTK_SIGNAL_FUNC(gtk_widget_destroy),				 GTK_OBJECT (window));      gtk_box_pack_start (GTK_BOX (box2), button[9], TRUE, TRUE, 0);      GTK_WIDGET_SET_FLAGS (button[9], GTK_CAN_DEFAULT);      gtk_widget_grab_default (button[9]);    }  if (!GTK_WIDGET_VISIBLE (window))    gtk_widget_show_all (window);  else    gtk_widget_destroy (window);}/* * GtkToggleButton */static voidcreate_toggle_buttons (void){  static GtkWidget *window = NULL;  GtkWidget *box1;  GtkWidget *box2;  GtkWidget *button;  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), "GtkToggleButton");      gtk_container_border_width (GTK_CONTAINER (window), 0);      box1 = gtk_vbox_new (FALSE, 0);      gtk_container_add (GTK_CONTAINER (window), box1);      box2 = gtk_vbox_new (FALSE, 10);      gtk_container_border_width (GTK_CONTAINER (box2), 10);      gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);      button = gtk_toggle_button_new_with_label ("button1");      gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);      button = gtk_toggle_button_new_with_label ("button2");      gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);      button = gtk_toggle_button_new_with_label ("button3");      gtk_box_pack_start (GTK_BOX (box2), button, TRUE, 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");      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",				 GTK_SIGNAL_FUNC(gtk_widget_destroy),				 GTK_OBJECT (window));      gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);      GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);      gtk_widget_grab_default (button);    }  if (!GTK_WIDGET_VISIBLE (window))    gtk_widget_show_all (window);  else    gtk_widget_destroy (window);}/* * GtkCheckButton */static voidcreate_check_buttons (void){  static GtkWidget *window = NULL;  GtkWidget *box1;  GtkWidget *box2;  GtkWidget *button;  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), "GtkCheckButton");      gtk_container_border_width (GTK_CONTAINER (window), 0);      box1 = gtk_vbox_new (FALSE, 0);      gtk_container_add (GTK_CONTAINER (window), box1);      box2 = gtk_vbox_new (FALSE, 10);      gtk_container_border_width (GTK_CONTAINER (box2), 10);      gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);      button = gtk_check_button_new_with_label ("button1");      gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);      button = gtk_check_button_new_with_label ("button2");      gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);      button = gtk_check_button_new_with_label ("button3");      gtk_box_pack_start (GTK_BOX (box2), button, TRUE, 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");      gtk_signal_connect_object (GTK_OBJECT (button), "clicked",				 GTK_SIGNAL_FUNC(gtk_widget_destroy),				 GTK_OBJECT (window));      gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);      GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);      gtk_widget_grab_default (button);    }  if (!GTK_WIDGET_VISIBLE (window))    gtk_widget_show_all (window);  else    gtk_widget_destroy (window);}/* * GtkRadioButton */static voidcreate_radio_buttons (void){  static GtkWidget *window = NULL;  GtkWidget *box1;  GtkWidget *box2;  GtkWidget *button;  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), "radio buttons");      gtk_container_border_width (GTK_CONTAINER (window), 0);      box1 = gtk_vbox_new (FALSE, 0);      gtk_container_add (GTK_CONTAINER (window), box1);      box2 = gtk_vbox_new (FALSE, 10);      gtk_container_border_width (GTK_CONTAINER (box2), 10);      gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);      button = gtk_radio_button_new_with_label (NULL, "button1");      gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);      button = gtk_radio_button_new_with_label (	         gtk_radio_button_group (GTK_RADIO_BUTTON (button)),		 "button2");      gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (button), TRUE);      gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);      button = gtk_radio_button_new_with_label (                 gtk_radio_button_group (GTK_RADIO_BUTTON (button)),		 "button3");      gtk_box_pack_start (GTK_BOX (box2), button, TRUE, 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);

⌨️ 快捷键说明

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