callback.c
来自「ANFY特效」· C语言 代码 · 共 2,174 行 · 第 1/5 页
C
2,174 行
#ifdef HAVE_CONFIG_H# include <config.h>#endif#include <gtk/gtk.h>#include <stdlib.h>#include <string.h>#include <stdio.h>#include "callback.h"#include "dialogs.h"#include "support.h"#include "main.h"#include "custom.h"#include "misc.h"// =========================================================void dlg_destroy (GtkWidget *widget, gpointer data);int validate_fields (GtkWidget *dlg);void restore_dialog_data (int usedefault);void save_dialog_data ();void on_dlg_ok (GtkWidget *widget, gpointer user_data);#define GetRValue(rgb) ((guint8)(rgb))#define GetGValue(rgb) ((guint8)(((guint16)(rgb)) >> 8))#define GetBValue(rgb) ((guint8)((rgb)>>16)) #define HTML_PREVIW_PAGE "preview.html"static int IsTwoPower (unsigned int uiNum){ for(;;) { uiNum = uiNum << 1; if(uiNum == 0x80000000 ) return 1; if(uiNum > 0x80000000 || uiNum == 0) return 0; }}// =========================================================// Menu callbacksvoid on_open_project_activate (GtkMenuItem *menuitem, gpointer user_data){ OpenProject(NULL);}void on_save_project_activate (GtkMenuItem *menuitem, gpointer user_data){ if (SaveProject() == 0) message_box(_("Problems during the saving of project"), 0);}#include <sys/stat.h>#include <unistd.h>void on_save_all_activate (GtkMenuItem *menuitem, gpointer user_data){ struct stat st; char* str; file_browse ("Choose HTML file", &str); if (str != NULL) { stat (str, &st); if (S_ISDIR (st.st_mode)) { char *tmp = str; if (str[strlen(str)-1] == '/') str[strlen(str)-1] = '\0'; str = g_strdup_printf ("%s/index.html", tmp); g_free (tmp); } Publish(current_applet, str); g_free (str); }}void on_exit_activate (GtkMenuItem *menuitem, gpointer user_data){ gtk_widget_destroy (main_dlg);}static void browser_find (GtkMenuItem *menuitem, gpointer user_data){ char* str; file_browse ("Find", &str); if (str != NULL) { gtk_entry_set_text (GTK_ENTRY (user_data), str); g_free (str); }}void on_change_browser_activate (GtkMenuItem *menuitem, gpointer user_data){ GtkWidget *browser; GtkWidget *vbox, *hbox; GtkWidget *entry, *button; char buf[1024]; int ret; GetSavedVar(INI_APP_SECTION, INI_BROWSER, buf); browser = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (browser), _("Change preview browser")); gtk_window_set_default_size (GTK_WINDOW (browser), 350, 80); vbox = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox); gtk_container_add (GTK_CONTAINER (browser), vbox); gtk_container_set_border_width (GTK_CONTAINER (vbox), 5); hbox = gtk_hbox_new (FALSE, 10); gtk_widget_show (hbox); gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, FALSE, 0); entry = gtk_entry_new (); gtk_widget_show (entry); gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0); gtk_entry_set_text (GTK_ENTRY (entry), buf); button = gtk_button_new_with_label (_("Find...")); gtk_widget_show (button); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); gtk_widget_set_usize (button, 75, -2); gtk_signal_connect (GTK_OBJECT (button), "clicked", (GtkSignalFunc)browser_find, entry); hbox = gtk_hbox_new (FALSE, 5); gtk_widget_show (hbox); gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, FALSE, 0); button = gtk_button_new_with_label (_("OK")); gtk_widget_show (button); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); gtk_widget_set_usize (button, 75, 22); gtk_signal_connect (GTK_OBJECT (button), "clicked", (GtkSignalFunc)on_dlg_ok, &ret); button = gtk_button_new_with_label (_("Cancel")); gtk_widget_show (button); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); gtk_widget_set_usize (button, 75, -2); gtk_signal_connect_object (GTK_OBJECT (button), "clicked", (GtkSignalFunc) gtk_widget_destroy, GTK_OBJECT (browser)); gtk_widget_show (browser); gtk_grab_add (browser); gtk_main (); if (ret == 1) { SaveVar(INI_APP_SECTION, INI_BROWSER, gtk_entry_get_text (GTK_ENTRY (entry))); } gtk_grab_remove (browser); gtk_widget_destroy (browser);}void on_insert_regcode_activate (GtkMenuItem *menuitem, gpointer user_data){ /* CAboutDlg dlgAbout; dlgAbout.DoModal(); */}void on_applet_info_activate (GtkMenuItem *menuitem, gpointer user_data){ char* str; if (current_dialog == DLG_STEP0) str = gtk_entry_get_text (GTK_ENTRY (lookup_widget (main_dlg, "applet_entry"))); else str = applet_info[current_applet].name; ShowHelp (str);}void on_instructions_activate (GtkMenuItem *menuitem, gpointer user_data){ ShowHelp(TOPIC_INSTRUCTION);}void on_tech_faq_activate (GtkMenuItem *menuitem, gpointer user_data){ ShowHelp(TOPIC_TECHFAQ);}void on_scrolltext_parameters_activate (GtkMenuItem *menuitem, gpointer user_data){ ShowHelp(TOPIC_SCRTEXT_HELP);}void on_home_page_activate (GtkMenuItem *menuitem, gpointer user_data){ StartBrowser(_("http://www.anfyteam.com"));}void on_registration_info_activate (GtkMenuItem *menuitem, gpointer user_data){ ShowHelp(TOPIC_REG_HELP);}void on_online_registration_activate (GtkMenuItem *menuitem, gpointer user_data){ StartBrowser(_("http://www.anfyteam.com/purchasean.html"));}void on_copyright_activate (GtkMenuItem *menuitem, gpointer user_data){ ShowHelp(TOPIC_COPYRIGHT_HELP);}void on_about_activate (GtkMenuItem *menuitem, gpointer user_data){ GtkWidget *dlg, *hbox, *vbox, *w; dlg = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (dlg), "About Anfy"); gtk_container_border_width (GTK_CONTAINER (dlg), 10); gtk_signal_connect (GTK_OBJECT (dlg), "destroy", GTK_SIGNAL_FUNC (dlg_destroy), NULL); hbox = gtk_hbox_new (FALSE, 10); gtk_container_add (GTK_CONTAINER (dlg), hbox); gtk_widget_show (hbox); vbox = gtk_vbox_new (TRUE, 5); gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); gtk_widget_show (vbox); w = gtk_label_new ("Anfy "VERSION); gtk_box_pack_start (GTK_BOX (vbox), w, TRUE, TRUE, 3); gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT); gtk_widget_show (w); w = gtk_label_new ("Copyright (c) 2000 Fabio Ciucci"); gtk_box_pack_start (GTK_BOX (vbox), w, TRUE, TRUE, 3); gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT); gtk_widget_show (w); w = gtk_label_new ("Linux editor by Leonardo Zide"); gtk_box_pack_start (GTK_BOX (vbox), w, TRUE, TRUE, 3); gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT); gtk_widget_show (w); w = gtk_label_new ("email bugs to leonardo@centroin.com.br"); gtk_box_pack_start (GTK_BOX (vbox), w, TRUE, TRUE, 3); gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT); gtk_widget_show (w); vbox = gtk_vbox_new (TRUE, 5); gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0); gtk_widget_show (vbox); w = gtk_button_new_with_label ("Ok"); gtk_box_pack_start (GTK_BOX (vbox), w, TRUE, FALSE, 0); gtk_signal_connect_object (GTK_OBJECT (w), "clicked", (GtkSignalFunc) gtk_widget_destroy, GTK_OBJECT (dlg)); GTK_WIDGET_SET_FLAGS (w, GTK_CAN_DEFAULT); gtk_widget_grab_default (w); gtk_widget_show (w); gtk_widget_show(dlg); gtk_grab_add(dlg); gtk_main ();}// =========================================================// Navigation buttons callbacksvoid on_applet_default (GtkWidget *widget, gpointer user_data){ restore_dialog_data (1);}void on_applet_preview (GtkWidget *widget, gpointer user_data){ char strCommandLine[1024]; int applet; applet = current_applet; GetAppletPath(applet, strCommandLine); strcat (strCommandLine, "/"); if (current_dialog == DLG_STEP0) strcat (strCommandLine, GetDemoFile(applet)); else strcat (strCommandLine, HTML_PREVIW_PAGE); StartBrowser(strCommandLine);}void on_previous_clicked (GtkButton *button, gpointer user_data){ int prev = DLG_STEP0; save_dialog_data(); switch (current_applet) { case APPLET_ANBLUR : prev = DLG_ANBLUR; break; case APPLET_ANFYBUMP : prev = DLG_ANFYBUMP; break; case APPLET_ANFADE : prev = DLG_ANFADE; break; case APPLET_ANFLAG : prev = DLG_ANFLAG; break; case APPLET_ANLENS : prev = DLG_ANLENS; break; case APPLET_BLOBS : prev = DLG_BLOBS; break; case APPLET_CUBEMENU : prev = DLG_CUBEMENU; break; case APPLET_DEFORM : prev = DLG_DEFORM; break; case APPLET_FIRE : prev = DLG_FIRE; break; case APPLET_FLAGLOAD : prev = DLG_FLAGLOAD; break; case APPLET_FLOZOIDS : prev = DLG_FLOZOIDS; break; case APPLET_FLUID : prev = DLG_FLUID; break; case APPLET_HUEROT : prev = DLG_HUEROT; break; case APPLET_ANFRACT : prev = DLG_ANFRACT; break; case APPLET_ANLAKE : prev = DLG_ANLAKE; break; case APPLET_ANFYCAM : prev = DLG_ANFYCAM; break; case APPLET_LIFE2D : prev = DLG_LIFE2D; break; case APPLET_MANDEL : prev = DLG_MANDEL; break; case APPLET_PLASMA : prev = DLG_PLASMA; break; case APPLET_ROTATE : prev = DLG_ROTATE; break; case APPLET_TMAPCUBE : prev = DLG_TMAPCUBE; break; case APPLET_ANTUNNEL : prev = DLG_TUNNEL; break; case APPLET_TUNNEL3D : prev = DLG_TUNNEL3D; break; case APPLET_ANVOXEL : prev = DLG_VOXEL; break; case APPLET_WARP : prev = DLG_WARP; break; case APPLET_ANWATER : prev = DLG_ANWATER; break; case APPLET_WORMHOLE : prev = DLG_WORMHOLE; break; case APPLET_GALAXY : prev = DLG_GALAXY; break; case APPLET_BOOKFLIP : prev = DLG_BOOKFLIP; break; case APPLET_MOSAIC : prev = DLG_MOSAIC; break; case APPLET_TSCROLLER : prev = DLG_TSCROLLER; break; case APPLET_WOBBLER : prev = DLG_WOBBLER; break; case APPLET_ANFY3D : prev = DLG_ANFY3D_0; break; case APPLET_WHEEL : prev = DLG_WHEEL; break; case APPLET_TREEMENU : prev = DLG_TREEMENU; break; case APPLET_MORPHMENU : if (dlg_plugin < 0) prev = DLG_MORPHMENU; else if (dlg_plugin == 0) prev = DLG_MM_GALAXY; else if (dlg_plugin == 1) prev = DLG_MM_BLOBS; break; case APPLET_ANFYPAINT : prev = DLG_ANFYPAINT; break; case APPLET_SOLIDSCROLLER : prev = DLG_ANFYFONT; break; case APPLET_ANFYSNOW : prev = DLG_ANFYSNOW; break; case APPLET_FIREWORKS : prev = DLG_FIREWORKS; break; default: prev = DLG_STEP0; } switch (current_dialog) { case DLG_STEP1: current_dialog = DLG_REGISTRATION; break; case DLG_REGISTRATION: if (current_applet != APPLET_ANFYPAINT) current_dialog = DLG_EXPERTMODE; break; case DLG_EXPERTMODE: if ((dlg_showtextstyle) && (current_applet != APPLET_ANBLUR) && (current_applet != APPLET_ANFADE) && (current_applet != APPLET_ANLENS) && (current_applet != APPLET_MANDEL) && (current_applet != APPLET_MOSAIC) && (current_applet != APPLET_BOOKFLIP) && (current_applet != APPLET_WHEEL) && (current_applet != APPLET_MORPHMENU) && (current_applet != APPLET_TREEMENU) && (current_applet != APPLET_ANFYCAM) && (current_applet != APPLET_ANFYPAINT) && (current_applet != APPLET_SOLIDSCROLLER)) current_dialog = DLG_TEXTSTYLE; else { if (dlg_showfloat) current_dialog = DLG_CONF_MENU_2; else current_dialog = prev; } break; case DLG_TEXTSTYLE: if (dlg_showfloat) current_dialog = DLG_CONF_MENU_2; else current_dialog = prev; break; case DLG_ANFY3D_0: current_dialog = DLG_ANFY3D; break; case DLG_ANFYFONT: current_dialog = DLG_SOLIDSCROLLER; break; case DLG_MM_GALAXY: case DLG_MM_BLOBS: current_dialog = DLG_MORPHMENU; break; case DLG_WHEEL: case DLG_MORPHMENU: case DLG_TREEMENU: current_dialog = DLG_CONF_MENU; break; case DLG_CONF_MENU_2: current_dialog = prev; break; case DLG_ANBLUR: case DLG_ANFYBUMP: case DLG_ANFADE: case DLG_ANFLAG: case DLG_BLOBS: case DLG_CUBEMENU: case DLG_DEFORM: case DLG_FIRE: case DLG_FLAGLOAD: case DLG_FLOZOIDS: case DLG_FLUID: case DLG_HUEROT: case DLG_ANFRACT: case DLG_ANLAKE:
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?