00001
00002
00003 #ifndef ui_h
00004 #define ui_h
00005 #include <FL/Fl.H>
00006 #include <FL/Fl_Double_Window.H>
00007
00008 class My_Fl_Double_Window : public Fl_Double_Window {
00009 public:
00010 Fl_Double_Window* main_win;
00011 My_Fl_Double_Window(int x, int y, int w, int h, const char *label = 0 ) ;
00012 My_Fl_Double_Window(int w, int h, const char *label = 0 ) ;
00013 void set_main_window(Fl_Double_Window* mw);
00014 virtual int handle(int event);
00015 };
00016 #include <FL/Fl_Double_Window.H>
00017 #include <FL/Fl_Menu_Bar.H>
00018 #include <sys/types.h>
00019 #include <unistd.h>
00020 #include "imgviewer.h"
00021 #include <FL/Fl_Button.H>
00022 #include "defaults.h"
00023 #include "sndfile-play.h"
00024 #include <FL/Fl_Input.H>
00025 #include <FL/Fl_Group.H>
00026 #include <FL/Fl_Slider.H>
00027 #include <FL/Fl_Output.H>
00028 #include <FL/Fl_Text_Display.H>
00029 #include <FL/Fl_Choice.H>
00030 #include <FL/Fl_Repeat_Button.H>
00031 #include <FL/Fl_Value_Input.H>
00032 #include <FL/Fl_Check_Button.H>
00033 #include <FL/Fl_Round_Button.H>
00034 #include <FL/Fl_Return_Button.H>
00035
00036 class MuanUI {
00037 public:
00038 Boolean redraw_message;
00039 int camera_connection;
00040 Boolean camera_on;
00041 private:
00042 Boolean insert_on;
00043 char file_name[150];
00044 public:
00045 Boolean file_changed;
00046 int duration_default;
00047 int load_mode;
00048 char* first_frame_file;
00049 char* save_path;
00050 int auto_save;
00051 char* auto_save_file;
00052 int auto_save_time;
00053 int play_sound;
00054 char* fw_device;
00055 char* v4l_device;
00056 int v4l_channel;
00057 int v4l_mode;
00058 MuanUI();
00059 void show_all_windows();
00060 Fl_Double_Window* make_menu_window();
00061 Fl_Double_Window *win_menu;
00062 private:
00063 void cb_win_menu_i(Fl_Double_Window*, void*);
00064 static void cb_win_menu(Fl_Double_Window*, void*);
00065 static Fl_Menu_Item menu_[];
00066 public:
00067 static Fl_Menu_Item *mn_system;
00068 static Fl_Menu_Item *mn_mode;
00069 private:
00070 void cb_mn_mode_i(Fl_Menu_*, void*);
00071 static void cb_mn_mode(Fl_Menu_*, void*);
00072 public:
00073 static Fl_Menu_Item *mn_preferences;
00074 private:
00075 void cb_mn_preferences_i(Fl_Menu_*, void*);
00076 static void cb_mn_preferences(Fl_Menu_*, void*);
00077 public:
00078 static Fl_Menu_Item *mn_exit;
00079 private:
00080 void cb_mn_exit_i(Fl_Menu_*, void*);
00081 static void cb_mn_exit(Fl_Menu_*, void*);
00082 public:
00083 static Fl_Menu_Item *mn_file;
00084 static Fl_Menu_Item *mn_new;
00085 private:
00086 void cb_mn_new_i(Fl_Menu_*, void*);
00087 static void cb_mn_new(Fl_Menu_*, void*);
00088 public:
00089 static Fl_Menu_Item *mn_load;
00090 private:
00091 void cb_mn_load_i(Fl_Menu_*, void*);
00092 static void cb_mn_load(Fl_Menu_*, void*);
00093 public:
00094 static Fl_Menu_Item *mn_insert;
00095 private:
00096 void cb_mn_insert_i(Fl_Menu_*, void*);
00097 static void cb_mn_insert(Fl_Menu_*, void*);
00098 public:
00099 static Fl_Menu_Item *mn_save;
00100 private:
00101 void cb_mn_save_i(Fl_Menu_*, void*);
00102 static void cb_mn_save(Fl_Menu_*, void*);
00103 public:
00104 static Fl_Menu_Item *mn_save_as;
00105 private:
00106 void cb_mn_save_as_i(Fl_Menu_*, void*);
00107 static void cb_mn_save_as(Fl_Menu_*, void*);
00108 public:
00109 static Fl_Menu_Item *mn_export;
00110 private:
00111 void cb_mn_export_i(Fl_Menu_*, void*);
00112 static void cb_mn_export(Fl_Menu_*, void*);
00113 public:
00114 static Fl_Menu_Item *mn_import;
00115 private:
00116 void cb_mn_import_i(Fl_Menu_*, void*);
00117 static void cb_mn_import(Fl_Menu_*, void*);
00118 public:
00119 static Fl_Menu_Item *mn_view;
00120 static Fl_Menu_Item *mn_toolbars;
00121 static Fl_Menu_Item *mn_view_tool;
00122 private:
00123 void cb_mn_view_tool_i(Fl_Menu_*, void*);
00124 static void cb_mn_view_tool(Fl_Menu_*, void*);
00125 public:
00126 static Fl_Menu_Item *mn_view_imgtool;
00127 private:
00128 void cb_mn_view_imgtool_i(Fl_Menu_*, void*);
00129 static void cb_mn_view_imgtool(Fl_Menu_*, void*);
00130 public:
00131 static Fl_Menu_Item *mn_view_image;
00132 private:
00133 void cb_mn_view_image_i(Fl_Menu_*, void*);
00134 static void cb_mn_view_image(Fl_Menu_*, void*);
00135 public:
00136 static Fl_Menu_Item *mn_view_info;
00137 private:
00138 void cb_mn_view_info_i(Fl_Menu_*, void*);
00139 static void cb_mn_view_info(Fl_Menu_*, void*);
00140 public:
00141 static Fl_Menu_Item *mn_fullscr;
00142 private:
00143 void cb_mn_fullscr_i(Fl_Menu_*, void*);
00144 static void cb_mn_fullscr(Fl_Menu_*, void*);
00145 public:
00146 static Fl_Menu_Item *mn_animation;
00147 static Fl_Menu_Item *mn_capture;
00148 private:
00149 void cb_mn_capture_i(Fl_Menu_*, void*);
00150 static void cb_mn_capture(Fl_Menu_*, void*);
00151 public:
00152 static Fl_Menu_Item *mn_play;
00153 private:
00154 void cb_mn_play_i(Fl_Menu_*, void*);
00155 static void cb_mn_play(Fl_Menu_*, void*);
00156 public:
00157 static Fl_Menu_Item *mn_pause;
00158 private:
00159 void cb_mn_pause_i(Fl_Menu_*, void*);
00160 static void cb_mn_pause(Fl_Menu_*, void*);
00161 public:
00162 static Fl_Menu_Item *mn_go;
00163 static Fl_Menu_Item *mn_first;
00164 private:
00165 void cb_mn_first_i(Fl_Menu_*, void*);
00166 static void cb_mn_first(Fl_Menu_*, void*);
00167 public:
00168 static Fl_Menu_Item *mn_rew;
00169 private:
00170 void cb_mn_rew_i(Fl_Menu_*, void*);
00171 static void cb_mn_rew(Fl_Menu_*, void*);
00172 public:
00173 static Fl_Menu_Item *mn_fwd;
00174 private:
00175 void cb_mn_fwd_i(Fl_Menu_*, void*);
00176 static void cb_mn_fwd(Fl_Menu_*, void*);
00177 public:
00178 static Fl_Menu_Item *mn_last;
00179 private:
00180 void cb_mn_last_i(Fl_Menu_*, void*);
00181 static void cb_mn_last(Fl_Menu_*, void*);
00182 public:
00183 static Fl_Menu_Item *mn_goto;
00184 private:
00185 void cb_mn_goto_i(Fl_Menu_*, void*);
00186 static void cb_mn_goto(Fl_Menu_*, void*);
00187 public:
00188 static Fl_Menu_Item *mn_remove;
00189 private:
00190 void cb_mn_remove_i(Fl_Menu_*, void*);
00191 static void cb_mn_remove(Fl_Menu_*, void*);
00192 public:
00193 static Fl_Menu_Item *mn_clear;
00194 private:
00195 void cb_mn_clear_i(Fl_Menu_*, void*);
00196 static void cb_mn_clear(Fl_Menu_*, void*);
00197 public:
00198 static Fl_Menu_Item *mn_help;
00199 static Fl_Menu_Item *mn_manual;
00200 private:
00201 void cb_mn_manual_i(Fl_Menu_*, void*);
00202 static void cb_mn_manual(Fl_Menu_*, void*);
00203 public:
00204 static Fl_Menu_Item *mn_about;
00205 private:
00206 void cb_mn_about_i(Fl_Menu_*, void*);
00207 static void cb_mn_about(Fl_Menu_*, void*);
00208 public:
00209 My_Fl_Double_Window* make_image_window();
00210 My_Fl_Double_Window *win_image;
00211 private:
00212 void cb_win_image_i(My_Fl_Double_Window*, void*);
00213 static void cb_win_image(My_Fl_Double_Window*, void*);
00214 public:
00215 ImageViewer *imgv;
00216 My_Fl_Double_Window* make_tool_window();
00217 My_Fl_Double_Window *win_tool;
00218 private:
00219 void cb_win_tool_i(My_Fl_Double_Window*, void*);
00220 static void cb_win_tool(My_Fl_Double_Window*, void*);
00221 public:
00222 Fl_Button *btn_capture;
00223 private:
00224 void cb_btn_capture_i(Fl_Button*, void*);
00225 static void cb_btn_capture(Fl_Button*, void*);
00226 public:
00227 Fl_Input *edt_duration;
00228 private:
00229 void cb_edt_duration_i(Fl_Input*, void*);
00230 static void cb_edt_duration(Fl_Input*, void*);
00231 public:
00232 Fl_Button *btn_range;
00233 private:
00234 void cb_btn_range_i(Fl_Button*, void*);
00235 static void cb_btn_range(Fl_Button*, void*);
00236 public:
00237 Fl_Group *gb_trecho;
00238 Fl_Button *btn_begin;
00239 private:
00240 void cb_btn_begin_i(Fl_Button*, void*);
00241 static void cb_btn_begin(Fl_Button*, void*);
00242 public:
00243 Fl_Input *edt_begin;
00244 private:
00245 void cb_edt_begin_i(Fl_Input*, void*);
00246 static void cb_edt_begin(Fl_Input*, void*);
00247 public:
00248 Fl_Button *btn_end;
00249 private:
00250 void cb_btn_end_i(Fl_Button*, void*);
00251 static void cb_btn_end(Fl_Button*, void*);
00252 public:
00253 Fl_Input *edt_end;
00254 private:
00255 void cb_edt_end_i(Fl_Input*, void*);
00256 static void cb_edt_end(Fl_Input*, void*);
00257 public:
00258 Fl_Button *btn_flick;
00259 private:
00260 void cb_btn_flick_i(Fl_Button*, void*);
00261 static void cb_btn_flick(Fl_Button*, void*);
00262 public:
00263 Fl_Slider *sl_flick;
00264 private:
00265 void cb_sl_flick_i(Fl_Slider*, void*);
00266 static void cb_sl_flick(Fl_Slider*, void*);
00267 public:
00268 Fl_Button *btn_fullscr;
00269 private:
00270 void cb_btn_fullscr_i(Fl_Button*, void*);
00271 static void cb_btn_fullscr(Fl_Button*, void*);
00272 public:
00273 Fl_Button *btn_loop;
00274 private:
00275 void cb_btn_loop_i(Fl_Button*, void*);
00276 static void cb_btn_loop(Fl_Button*, void*);
00277 public:
00278 My_Fl_Double_Window* make_imgtool_window();
00279 My_Fl_Double_Window *win_imgtool;
00280 private:
00281 void cb_win_imgtool_i(My_Fl_Double_Window*, void*);
00282 static void cb_win_imgtool(My_Fl_Double_Window*, void*);
00283 public:
00284 Fl_Button *btn_first;
00285 private:
00286 void cb_btn_first_i(Fl_Button*, void*);
00287 static void cb_btn_first(Fl_Button*, void*);
00288 public:
00289 Fl_Button *btn_rew;
00290 private:
00291 void cb_btn_rew_i(Fl_Button*, void*);
00292 static void cb_btn_rew(Fl_Button*, void*);
00293 public:
00294 Fl_Button *btn_pause;
00295 private:
00296 void cb_btn_pause_i(Fl_Button*, void*);
00297 static void cb_btn_pause(Fl_Button*, void*);
00298 public:
00299 Fl_Button *btn_play;
00300 private:
00301 void cb_btn_play_i(Fl_Button*, void*);
00302 static void cb_btn_play(Fl_Button*, void*);
00303 public:
00304 Fl_Button *btn_fwd;
00305 private:
00306 void cb_btn_fwd_i(Fl_Button*, void*);
00307 static void cb_btn_fwd(Fl_Button*, void*);
00308 public:
00309 Fl_Button *btn_last;
00310 private:
00311 void cb_btn_last_i(Fl_Button*, void*);
00312 static void cb_btn_last(Fl_Button*, void*);
00313 public:
00314 My_Fl_Double_Window* make_info_window();
00315 My_Fl_Double_Window *win_info;
00316 private:
00317 void cb_win_info_i(My_Fl_Double_Window*, void*);
00318 static void cb_win_info(My_Fl_Double_Window*, void*);
00319 public:
00320 Fl_Group *gb_current;
00321 Fl_Output *out_frame_number;
00322 Fl_Input *out_current_frame_duration;
00323 Fl_Output *out_frame_pos;
00324 Fl_Group *gb_total;
00325 Fl_Output *out_tot_img_cap;
00326 Fl_Output *out_tot_frames;
00327 Fl_Text_Display *pn_message;
00328 Fl_Output *out_message;
00329 Fl_Double_Window* make_preferences_subwindow();
00330 Fl_Double_Window *win_preferences;
00331 Fl_Choice *cmb_load_mode;
00332 Fl_Input *edt_first_frame_file;
00333 Fl_Repeat_Button *btn_first_frame_file;
00334 private:
00335 void cb_btn_first_frame_file_i(Fl_Repeat_Button*, void*);
00336 static void cb_btn_first_frame_file(Fl_Repeat_Button*, void*);
00337 public:
00338 Fl_Input *edt_save_path;
00339 Fl_Repeat_Button *btn_save_path;
00340 private:
00341 void cb_btn_save_path_i(Fl_Repeat_Button*, void*);
00342 static void cb_btn_save_path(Fl_Repeat_Button*, void*);
00343 public:
00344 Fl_Value_Input *edt_duration_default;
00345 Fl_Check_Button *ck_auto_save;
00346 private:
00347 void cb_ck_auto_save_i(Fl_Check_Button*, void*);
00348 static void cb_ck_auto_save(Fl_Check_Button*, void*);
00349 public:
00350 Fl_Group *gb_auto_save;
00351 Fl_Input *edt_auto_save_file;
00352 Fl_Repeat_Button *btn_auto_save_file;
00353 private:
00354 void cb_btn_auto_save_file_i(Fl_Repeat_Button*, void*);
00355 static void cb_btn_auto_save_file(Fl_Repeat_Button*, void*);
00356 public:
00357 Fl_Value_Input *edt_auto_save_time;
00358 Fl_Output *out_seconds;
00359 Fl_Group *gb_camera_connection;
00360 Fl_Round_Button *btn_camera_firewire;
00361 Fl_Round_Button *btn_camera_v4l;
00362 Fl_Group *gb_v4l_conf;
00363 Fl_Input *edt_v4l_device_name;
00364 Fl_Group *gb_v4l_channel;
00365 Fl_Round_Button *btn_v4l_tv;
00366 Fl_Round_Button *btn_v4l_cp1;
00367 Fl_Round_Button *btn_v4l_svideo;
00368 Fl_Round_Button *btn_v4l_cp3;
00369 Fl_Group *gb_v4l_mode;
00370 Fl_Round_Button *btn_v4l_pal;
00371 Fl_Round_Button *btn_v4l_ntsc;
00372 Fl_Group *gb_fw_conf;
00373 Fl_Input *edt_fw_device_name;
00374 Fl_Return_Button *btn_save_pref;
00375 private:
00376 void cb_btn_save_pref_i(Fl_Return_Button*, void*);
00377 static void cb_btn_save_pref(Fl_Return_Button*, void*);
00378 public:
00379 Fl_Button *btn_cancel_pref;
00380 private:
00381 void cb_btn_cancel_pref_i(Fl_Button*, void*);
00382 static void cb_btn_cancel_pref(Fl_Button*, void*);
00383 public:
00384 Fl_Double_Window* make_about_window();
00385 Fl_Double_Window *win_about;
00386 Fl_Group *gb_img_about;
00387 Fl_Group *gb_nomes_visgraf;
00388 Fl_Group *gb_nomes_animamundi;
00389 Fl_Group *gb_nomes_ibm;
00390 Fl_Group *lbl_muan_about;
00391 Fl_Group *lbl_equipe_visgraf;
00392 Fl_Group *lbl_equipe_animamundi;
00393 Fl_Group *lbl_equipe_ibm;
00394 Fl_Button *btn_close_about;
00395 private:
00396 void cb_btn_close_about_i(Fl_Button*, void*);
00397 static void cb_btn_close_about(Fl_Button*, void*);
00398 public:
00399 void quit_muan();
00400 void close_window(My_Fl_Double_Window* w);
00401 Boolean validate_range(int inicio, int fim, int total);
00402 void redraw_file_name();
00403 void fullscr(int _fullscr);
00404 int file_exists(char *fname);
00405 void swap_mode();
00406 void set_memory_mode();
00407 int load();
00408 int insert();
00409 int load_file(char* fname);
00410 int check_file(Boolean _quit);
00411 int save(Boolean _quit);
00412 int save_as(Boolean _quit);
00413 void save_file(char* _fname, Boolean _quit);
00414 void cb_export();
00415 void export_file(char* fname);
00416 int import_jpg_list();
00417 void capture();
00418 void play();
00419 void go_to_first();
00420 void go_to_next();
00421 void go_to_prev();
00422 void go_to_last();
00423 void go_to();
00424 void remove();
00425 void clear();
00426 void remove_direct();
00427 void flip(int _flip);
00428 };
00429 #endif