00001 #ifndef PREFERENCESTHREAD_H
00002 #define PREFERENCESTHREAD_H
00003
00004 #include "edl.inc"
00005 #include "guicast.h"
00006 #include "mutex.inc"
00007 #include "mwindow.inc"
00008 #include "preferences.inc"
00009 #include "preferencesthread.inc"
00010 #include "thread.h"
00011
00012 #define CATEGORIES 5
00013
00014 class PreferencesMenuitem : public BC_MenuItem
00015 {
00016 public:
00017 PreferencesMenuitem(MWindow *mwindow);
00018 ~PreferencesMenuitem();
00019
00020 int handle_event();
00021
00022 MWindow *mwindow;
00023 PreferencesThread *thread;
00024 };
00025
00026 class PreferencesThread : public Thread
00027 {
00028 public:
00029 PreferencesThread(MWindow *mwindow);
00030 ~PreferencesThread();
00031 void run();
00032
00033 int update_framerate();
00034 int apply_settings();
00035 char* category_to_text(int category);
00036 int text_to_category(char *category);
00037
00038 int current_dialog;
00039 int thread_running;
00040 int redraw_indexes;
00041 int redraw_meters;
00042 int redraw_times;
00043 int redraw_overlays;
00044 int rerender;
00045 int close_assets;
00046 int reload_plugins;
00047 PreferencesWindow *window;
00048 Mutex *window_lock;
00049 MWindow *mwindow;
00050
00051 Preferences *preferences;
00052 EDL *edl;
00053 };
00054
00055 class PreferencesDialog : public BC_SubWindow
00056 {
00057 public:
00058 PreferencesDialog(MWindow *mwindow, PreferencesWindow *pwindow);
00059 virtual ~PreferencesDialog();
00060
00061 virtual int create_objects() { return 0; };
00062 virtual int draw_framerate() { return 0; };
00063 PreferencesWindow *pwindow;
00064 MWindow *mwindow;
00065 Preferences *preferences;
00066 };
00067
00068 class PreferencesCategory;
00069
00070 class PreferencesWindow : public BC_Window
00071 {
00072 public:
00073 PreferencesWindow(MWindow *mwindow,
00074 PreferencesThread *thread,
00075 int x,
00076 int y);
00077 ~PreferencesWindow();
00078
00079 int create_objects();
00080 int delete_current_dialog();
00081 int set_current_dialog(int number);
00082 int update_framerate();
00083
00084 MWindow *mwindow;
00085 PreferencesThread *thread;
00086 ArrayList<BC_ListBoxItem*> categories;
00087 PreferencesCategory *category;
00088
00089 private:
00090 PreferencesDialog *dialog;
00091 };
00092
00093 class PreferencesCategory : public BC_PopupTextBox
00094 {
00095 public:
00096 PreferencesCategory(MWindow *mwindow, PreferencesThread *thread, int x, int y);
00097 ~PreferencesCategory();
00098 int handle_event();
00099 MWindow *mwindow;
00100 PreferencesThread *thread;
00101 };
00102
00103 class PreferencesApply : public BC_GenericButton
00104 {
00105 public:
00106 PreferencesApply(MWindow *mwindow, PreferencesThread *thread);
00107 int handle_event();
00108 MWindow *mwindow;
00109 PreferencesThread *thread;
00110 };
00111
00112 class PreferencesOK : public BC_GenericButton
00113 {
00114 public:
00115 PreferencesOK(MWindow *mwindow, PreferencesThread *thread);
00116 int keypress_event();
00117 int handle_event();
00118 MWindow *mwindow;
00119 PreferencesThread *thread;
00120 };
00121
00122 class PreferencesCancel : public BC_GenericButton
00123 {
00124 public:
00125 PreferencesCancel(MWindow *mwindow, PreferencesThread *thread);
00126 int keypress_event();
00127 int handle_event();
00128 MWindow *mwindow;
00129 PreferencesThread *thread;
00130 };
00131
00132
00133 #endif