Back to Evolution Project page


Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Header Files   Sources   Compound Members   File Members  

callbacks.c

00001 #ifdef HAVE_CONFIG_H
00002 #  include <config.h>
00003 #endif
00004 
00005 #include <gnome.h>
00006 
00007 #include "callbacks.h"
00008 #include "interface.h"
00009 #include "support.h"
00010 #include <unistd.h>
00011 #include <stdio.h>
00012 #include <string.h>
00013 #include "auxiliar.h"
00014 
00015 void
00016 on_new1_activate                       (GtkMenuItem     *menuitem,
00017                                         gpointer         user_data)
00018 {
00019   create_my_frmNew();
00020 }
00021 
00022 
00023 void
00024 on_open1_activate                      (GtkMenuItem     *menuitem,
00025                                         gpointer         user_data)
00026 {
00027   if (level_changed)
00028     gtk_widget_show(create_dlgConfirmOpen());
00029   else {
00030     current_fileoperation = FILE_OPERATION_OPEN;
00031     gtk_widget_show(create_frmOpenSave());
00032   }
00033 }
00034 
00035 
00036 void
00037 on_save1_activate                      (GtkMenuItem     *menuitem,
00038                                         gpointer         user_data)
00039 {  
00040   if (!level_changed) {
00041     show_on_statusbar("No need to saving... Saving again!");
00042   }
00043   if (!save_level(current_filename))
00044     on_save_as1_activate(menuitem, user_data);
00045 }
00046 
00047 
00048 void
00049 on_save_as1_activate                   (GtkMenuItem     *menuitem,
00050                                         gpointer         user_data)
00051 {
00052   current_fileoperation = FILE_OPERATION_SAVE;
00053   gtk_widget_show(create_frmOpenSave());
00054 }
00055 
00056 
00057 void
00058 on_exit1_activate                      (GtkMenuItem     *menuitem,
00059                                         gpointer         user_data)
00060 {
00061   if (level_changed)
00062     gtk_widget_show(create_dlgConfirmExit());
00063   else 
00064     exit_program();
00065 }
00066 
00067 
00068 void
00069 on_about1_activate                     (GtkMenuItem     *menuitem,
00070                                         gpointer         user_data)
00071 {
00072   gtk_widget_show(create_frmAbout());
00073 }
00074 
00075 
00076 
00077 void
00078 on_frmSplash_show                      (GtkWidget       *widget,
00079                                         gpointer         user_data)
00080 {
00081   GtkWidget* frmSplash;
00082   frmSplash = lookup_widget(widget, "frmSplash");
00083   
00084   //Warning: I need to change this...
00085   gtk_object_destroy(GTK_OBJECT(frmSplash));
00086 }
00087 
00088 
00089 void
00090 on_Main_show                           (GtkWidget       *widget,
00091                                         gpointer         user_data)
00092 {
00093   GList    *last, *current;
00094   GnomeIconList *iconlist1, *iconlist2;
00095   int pos; 
00096 
00097   iconlist1 = GNOME_ICON_LIST(lookup_widget(widget, "iconlist1"));
00098   iconlist2 = GNOME_ICON_LIST(lookup_widget(widget, "iconlist2"));
00099 
00100   read_config();  
00101   set_pixmaps_from_filenames(sprite_list);
00102   set_pixmaps_from_filenames(sprite_list_sp);
00103 
00104   last = g_list_first(sprite_list);
00105   current = g_list_last(sprite_list);
00106 
00107   if (last) {
00108     do {
00109       //      printf ("Descrição: '%s'\n", ((sprite *)(current->data))->description );
00110       pos = gnome_icon_list_append(iconlist1, 
00111                    ((sprite *)(current->data))->filename, 
00112                     ((sprite *)(current->data))->description);
00113       gnome_icon_list_set_icon_data(iconlist1, pos, (sprite *)(current->data));
00114       if (current==last) break;
00115       current = current->prev;
00116     } while (1);    
00117   }
00118 
00119   last = g_list_first(sprite_list_sp);
00120   current = g_list_last(sprite_list_sp);
00121 
00122   if (last) {
00123     do {
00124       //      printf ("Descrição: '%s'\n", ((sprite *)(current->data))->description );
00125       pos = gnome_icon_list_append(iconlist2, 
00126                    ((sprite *)(current->data))->filename, 
00127                     ((sprite *)(current->data))->description);
00128       gnome_icon_list_set_icon_data(iconlist2, pos, (sprite *)(current->data));
00129       if (current==last) break;
00130       current = current->prev;
00131     } while (1);
00132   }
00133   
00134   new_map(DEFAULT_MAP_WIDTH, DEFAULT_MAP_HEIGHT);
00135 }
00136 
00137 
00138 gboolean
00139 on_Main_destroy_event                  (GtkWidget       *widget,
00140                                         GdkEvent        *event,
00141                                         gpointer         user_data)
00142 {
00143   g_print("destroy event received...\n");
00144   return TRUE;
00145 }
00146 
00147 /*
00148 void
00149 on_list1_selection_changed             (GtkList         *list,
00150                                         gpointer         user_data)
00151 {
00152   GtkObject* item;
00153   GList* list1;
00154   sprite *sp;
00155   GtkPixmap *pixmap20;
00156   
00157   //Update level screen
00158   hide_old();
00159   old_x = old_y = -1;
00160 
00161   //get a pointer to screen pixmap widget
00162   pixmap20 = GTK_PIXMAP( lookup_widget(GTK_WIDGET(list), "pixmap20") );
00163   
00164   //get the sprite selected
00165   list1 = GTK_LIST(list)->selection;
00166   if (!list1) return;  //None items selected
00167   item = GTK_OBJECT(list1->data);
00168   sp = (sprite *) gtk_object_get_data(item, "sprite_list");
00169   sp_sel = sp;
00170 
00171   //Display the selected pixmap
00172   gtk_pixmap_set (pixmap20, sp->pixmap, sp->mask);
00173   g_print("Sprite selected. \tName: '%s'\tDescription: '%s'\n", sp->name, sp->description);
00174 
00175   //Refresh the level screen
00176   draw_grid();
00177 }
00178 */
00179 
00180 
00181 void
00182 on_buttonyes_clicked                   (GtkButton       *button,
00183                                         gpointer         user_data)
00184 {
00185   create_new_level();
00186   on_buttonno_clicked(button, user_data);
00187 }
00188 
00189 
00190 void
00191 on_buttonno_clicked                    (GtkButton       *button,
00192                                         gpointer         user_data)
00193 {
00194   gtk_widget_destroy(dlg_areyousure);
00195   dlg_areyousure=NULL;
00196 }
00197 
00198 
00199 void
00200 on_buttonok_clicked                    (GtkButton       *button,
00201                                         gpointer         user_data)
00202 {
00203   GtkWidget *sbtn_width, *sbtn_height;
00204   int lh, lw;
00205   level_changed = FALSE;
00206   strcpy(current_filename, "");
00207   current_fileoperation = FILE_OPERATION_NONE;
00208   
00209   //Get values from dialog box
00210   sbtn_width = lookup_widget(frmNew, "sbtn_width");
00211   sbtn_height = lookup_widget(frmNew, "sbtn_height");
00212   lw = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(sbtn_width));
00213   lh = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(sbtn_height));
00214   if ((lw<1) || (lh<1)) {
00215     g_print("Sorry, but I can't imagine in a level of size (%d x %d)... Are you crazy?\n", lw, lh);
00216     return; 
00217   }
00218   new_map(lw, lh);
00219 
00220   //Free dialog box 
00221   on_buttoncancel_clicked(button, user_data);  
00222 }
00223 
00224 
00225 void
00226 on_buttoncancel_clicked                (GtkButton       *button,
00227                                         gpointer         user_data)
00228 {
00229   gtk_widget_destroy(frmNew);
00230   frmNew = NULL;
00231 }
00232 
00233 
00234 gboolean
00235 on_drawarea_expose_event               (GtkWidget       *widget,
00236                                         GdkEventExpose  *event,
00237                                         gpointer         user_data)
00238 {
00239   draw_grid();
00240   return FALSE;
00241 }
00242 
00243 
00244 
00245 
00246 gboolean
00247 on_drawarea_motion_notify_event        (GtkWidget       *widget,
00248                                         GdkEventMotion  *event,
00249                                         gpointer         user_data)
00250 {
00251   int i, j, stepx, stepy;
00252   gchar status[200];
00253   current_x = get_unit_from_pixelx(event->x);
00254   current_y = get_unit_from_pixely(event->y);
00255 
00256   sprintf(status, " Position on grid: (%d, %d)", current_x, current_y);
00257   show_on_statusbar(status);
00258 
00259   if (!sp_sel) return FALSE;
00260   if ((current_x == old_x) && (current_y == old_y)) return FALSE;
00261 
00262   //  g_print("old (%d,%d) current (%d,%d)\n", old_x, old_y, current_x, current_y);
00263   if (clicked) {
00264     if ((old_x>-1) && (old_x<level_width) && (old_y>-1) && (old_y<level_height)) {
00265       stepx = (old_x>current_x) ? -1 : 1;
00266       stepy = (old_y>current_y) ? -1 : 1;
00267       for (i=old_x; (stepx==1) ? (i<=current_x) : (i>=current_x); i+=stepx)
00268     for (j=old_y; (stepy==1) ? (j<=current_y) : (j>=current_y); j+=stepy)
00269       event_on_unit(sp_sel, i, j);
00270     }
00271     else
00272       event_on_unit(sp_sel, current_x, current_y);
00273   }
00274 
00275   hide_old(widget->window);
00276   show_current(widget->window);
00277 
00278   //  draw_grid();
00279 
00280   return FALSE;
00281 }
00282 
00283 
00284 gboolean
00285 on_drawarea_button_press_event         (GtkWidget       *widget,
00286                                         GdkEventButton  *event,
00287                                         gpointer         user_data)
00288 {
00289 
00290   //g_print ("Button pressed on unit (%d;%d)\n", get_unit_from_pixelx(event->x), get_unit_from_pixely(event->y));
00291   clicked = 1;
00292   if(!sp_sel) return FALSE;
00293   event_on_unit(sp_sel, get_unit_from_pixelx(event->x), get_unit_from_pixely(event->y));
00294   return FALSE;
00295 }
00296 
00297 
00298 gboolean
00299 on_drawarea_button_release_event       (GtkWidget       *widget,
00300                                         GdkEventButton  *event,
00301                                         gpointer         user_data)
00302 {
00303   //g_print ("Button released on unit (%d;%d)\n", get_unit_from_pixelx(event->x), get_unit_from_pixely(event->y));
00304   clicked = 0;
00305   if(!sp_sel) return FALSE;
00306   event_on_unit(sp_sel, get_unit_from_pixelx(event->x), get_unit_from_pixely(event->y));
00307   return FALSE;
00308 }
00309 
00310 
00311 void
00312 on_grid1_activate                      (GtkMenuItem     *menuitem,
00313                                         gpointer         user_data)
00314 {
00315   GtkWidget *drawarea;
00316   drawarea = lookup_widget(Main, "drawarea");
00317 
00318   toggle_view_grid();
00319 
00320   hide_old(drawarea->window);
00321 }
00322 
00323 
00324 void
00325 on_refresh1_activate                   (GtkMenuItem     *menuitem,
00326                                         gpointer         user_data)
00327 {
00328   refresh_all();
00329 }
00330 
00331 
00332 void
00333 on_iconlist1_select_icon               (GnomeIconList   *gnomeiconlist,
00334                                         gint             arg1,
00335                                         GdkEvent        *event,
00336                                         gpointer         user_data)
00337 {
00338   sprite *sp;
00339   GtkWidget *drawarea;
00340   drawarea = lookup_widget(Main, "drawarea");
00341 
00342   //Update level screen
00343   hide_old(drawarea->window);
00344   old_x = old_y = -1;
00345 
00346   sp = (sprite *) gnome_icon_list_get_icon_data(gnomeiconlist, arg1);
00347   sp_sel = sp;
00348   //  g_print("Sprite selected: %s %s\n", sp->description, sp->filename);
00349   show_on_statusbar(sp->filename);
00350   //Refresh the level screen
00351   draw_grid();
00352 }
00353 
00354 
00355 void
00356 on_iconlist2_select_icon               (GnomeIconList   *gnomeiconlist,
00357                                         gint             arg1,
00358                                         GdkEvent        *event,
00359                                         gpointer         user_data)
00360 {
00361   on_iconlist1_select_icon(gnomeiconlist, arg1, event, user_data);
00362 }
00363 
00364 
00365 void
00366 on_sprites1_activate                   (GtkMenuItem     *menuitem,
00367                                         gpointer         user_data)
00368 {
00369   toggle_view_sprites();
00370 }
00371 
00372 
00373 void
00374 on_ok_button1_clicked                  (GtkButton       *button,
00375                                         gpointer         user_data)
00376 {
00377   GtkWidget *widget;
00378   widget = lookup_widget(GTK_WIDGET(button), "frmOpenSave");
00379   strcpy(op_filename, gtk_file_selection_get_filename(GTK_FILE_SELECTION(widget)));
00380 
00381   if (current_fileoperation == FILE_OPERATION_OPEN) {
00382     open_level(op_filename);
00383   } else if (current_fileoperation == FILE_OPERATION_SAVE) {
00384     if (file_exists(op_filename))
00385       gtk_widget_show(create_dlgConfirmOverwrite());
00386     else
00387       save_level(op_filename);
00388   }
00389 
00390   on_cancel_button1_clicked(button, user_data);
00391 }
00392 
00393 
00394 void
00395 on_cancel_button1_clicked              (GtkButton       *button,
00396                                         gpointer         user_data)
00397 {
00398   GtkWidget *frm;
00399   frm = lookup_widget(GTK_WIDGET(button), "frmOpenSave");
00400   if (frm) gtk_widget_destroy(frm);
00401 }
00402 
00403 
00404 void
00405 on_button1_clicked                     (GtkButton       *button,
00406                                         gpointer         user_data)
00407 {
00408   on_button2_clicked(button, user_data);
00409   exit_program();
00410 }
00411 
00412 
00413 void
00414 on_button2_clicked                     (GtkButton       *button,
00415                                         gpointer         user_data)
00416 {
00417   GtkWidget *frm;
00418   frm = lookup_widget(GTK_WIDGET(button), "dlgConfirmExit");
00419   if (frm) gtk_widget_destroy(frm);
00420 }
00421 
00422 
00423 void
00424 on_btn_yesopen_clicked                 (GtkButton       *button,
00425                                         gpointer         user_data)
00426 {
00427   GtkWidget *widget;
00428   current_fileoperation = FILE_OPERATION_OPEN;
00429   widget = create_frmOpenSave();
00430   gtk_file_selection_set_filename(GTK_FILE_SELECTION(widget), current_filename);
00431   gtk_widget_show(widget);
00432   on_btn_noopen_clicked(button, user_data);
00433 }
00434 
00435 
00436 void
00437 on_btn_noopen_clicked                  (GtkButton       *button,
00438                                         gpointer         user_data)
00439 {
00440   GtkWidget *frm;
00441   frm = lookup_widget(GTK_WIDGET(button), "dlgConfirmOpen");
00442   if (frm) gtk_widget_destroy(frm);
00443 }
00444 
00445 
00446 void
00447 on_btn_yesoverwrite_clicked            (GtkButton       *button,
00448                                         gpointer         user_data)
00449 {
00450   g_print(op_filename);
00451   save_level(op_filename);
00452   on_btn_nooverwrite_clicked(button, user_data);
00453 }
00454 
00455 
00456 void
00457 on_btn_nooverwrite_clicked             (GtkButton       *button,
00458                                         gpointer         user_data)
00459 {
00460   GtkWidget *frm;
00461   frm = lookup_widget(GTK_WIDGET(button), "dlgConfirmOverwrite");
00462   if (frm) gtk_widget_destroy(frm);
00463 }
00464 

Generated at Mon Nov 6 22:47:03 2000 for TheGameofEvolution by doxygen 1.0.0 written by Dimitri van Heesch, © 1997-1999