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

📄 assistant.c

📁 windows平台下开发gtk程序所需要的库和头文件等
💻 C
字号:
/* Assistant * * Demonstrates a sample multistep assistant. Assistants are used to divide * an operation into several simpler sequential steps, and to guide the user * through these steps. */#include <gtk/gtk.h>#include "demo-common.h"static GtkWidget *assistant = NULL;static voidon_assistant_apply (GtkWidget *widget, gpointer data){  /* Apply here changes, this is a fictional     example, so we just do nothing here */}static voidon_assistant_close_cancel (GtkWidget *widget, gpointer data){  GtkWidget **assistant = (GtkWidget **) data;  gtk_widget_destroy (*assistant);  *assistant = NULL;}static voidon_assistant_prepare (GtkWidget *widget, GtkWidget *page, gpointer data){  gint current_page, n_pages;  gchar *title;  current_page = gtk_assistant_get_current_page (GTK_ASSISTANT (widget));  n_pages = gtk_assistant_get_n_pages (GTK_ASSISTANT (widget));  title = g_strdup_printf ("Sample assistant (%d of %d)", current_page + 1, n_pages);  gtk_window_set_title (GTK_WINDOW (widget), title);  g_free (title);}static voidon_entry_changed (GtkWidget *widget, gpointer data){  GtkAssistant *assistant = GTK_ASSISTANT (data);  GtkWidget *current_page;  gint page_number;  const gchar *text;  page_number = gtk_assistant_get_current_page (assistant);  current_page = gtk_assistant_get_nth_page (assistant, page_number);  text = gtk_entry_get_text (GTK_ENTRY (widget));  if (text && *text)    gtk_assistant_set_page_complete (assistant, current_page, TRUE);  else    gtk_assistant_set_page_complete (assistant, current_page, FALSE);}static voidcreate_page1 (GtkWidget *assistant){  GtkWidget *box, *label, *entry;  GdkPixbuf *pixbuf;  box = gtk_hbox_new (FALSE, 12);  gtk_container_set_border_width (GTK_CONTAINER (box), 12);  label = gtk_label_new ("You must fill out this entry to continue:");  gtk_box_pack_start (GTK_BOX (box), label, FALSE, FALSE, 0);  entry = gtk_entry_new ();  gtk_box_pack_start (GTK_BOX (box), entry, TRUE, TRUE, 0);  g_signal_connect (G_OBJECT (entry), "changed",		    G_CALLBACK (on_entry_changed), assistant);  gtk_widget_show_all (box);  gtk_assistant_append_page (GTK_ASSISTANT (assistant), box);  gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), box, "Page 1");  gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), box, GTK_ASSISTANT_PAGE_INTRO);  pixbuf = gtk_widget_render_icon (assistant, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG, NULL);  gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), box, pixbuf);  g_object_unref (pixbuf);}static voidcreate_page2 (GtkWidget *assistant){  GtkWidget *box, *checkbutton;  GdkPixbuf *pixbuf;  box = gtk_vbox_new (12, FALSE);  gtk_container_set_border_width (GTK_CONTAINER (box), 12);  checkbutton = gtk_check_button_new_with_label ("This is optional data, you may continue "						 "even if you do not check this");  gtk_box_pack_start (GTK_BOX (box), checkbutton, FALSE, FALSE, 0);  gtk_widget_show_all (box);  gtk_assistant_append_page (GTK_ASSISTANT (assistant), box);  gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), box, TRUE);  gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), box, "Page 2");  pixbuf = gtk_widget_render_icon (assistant, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG, NULL);  gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), box, pixbuf);  g_object_unref (pixbuf);}static voidcreate_page3 (GtkWidget *assistant){  GtkWidget *label;  GdkPixbuf *pixbuf;  label = gtk_label_new ("This is a confirmation page, press 'Apply' to apply changes");  gtk_widget_show (label);  gtk_assistant_append_page (GTK_ASSISTANT (assistant), label);  gtk_assistant_set_page_type (GTK_ASSISTANT (assistant), label, GTK_ASSISTANT_PAGE_CONFIRM);  gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), label, TRUE);  gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), label, "Confirmation");  pixbuf = gtk_widget_render_icon (assistant, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG, NULL);  gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), label, pixbuf);  g_object_unref (pixbuf);}GtkWidget*do_assistant (GtkWidget *do_widget){  if (!assistant)    {      assistant = gtk_assistant_new ();	 gtk_window_set_default_size (GTK_WINDOW (assistant), -1, 300);      gtk_window_set_screen (GTK_WINDOW (assistant),			     gtk_widget_get_screen (do_widget));      create_page1 (assistant);      create_page2 (assistant);      create_page3 (assistant);      g_signal_connect (G_OBJECT (assistant), "cancel",			G_CALLBACK (on_assistant_close_cancel), &assistant);      g_signal_connect (G_OBJECT (assistant), "close",			G_CALLBACK (on_assistant_close_cancel), &assistant);      g_signal_connect (G_OBJECT (assistant), "apply",			G_CALLBACK (on_assistant_apply), NULL);      g_signal_connect (G_OBJECT (assistant), "prepare",			G_CALLBACK (on_assistant_prepare), NULL);    }  if (!GTK_WIDGET_VISIBLE (assistant))    gtk_widget_show (assistant);  else    {      gtk_widget_destroy (assistant);      assistant = NULL;    }  return assistant;}

⌨️ 快捷键说明

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