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 + -
显示快捷键?