LiVES 1.3.11-svn
src/preferences.h
Go to the documentation of this file.
00001 // preferences.h
00002 // LiVES (lives-exe)
00003 // (c) G. Finch 2004 - 2011
00004 // released under the GNU GPL 3 or later
00005 // see file ../COPYING or www.gnu.org for licensing details
00006 
00007 #ifndef _HAS_PREFS_H
00008 #define _HAS_PREFS_H
00009 
00010 
00011 
00012 typedef struct {
00013   gchar bgcolour[256];
00014   gboolean stop_screensaver;
00015   gboolean open_maximised;
00016   gchar theme[64];  
00017 
00018   gshort pb_quality;
00019 #define PB_QUALITY_LOW 1
00020 #define PB_QUALITY_MED 2  ///< default
00021 #define PB_QUALITY_HIGH 3
00022 
00023   _encoder encoder; 
00024 
00025   gshort audio_player;
00026 #define AUD_PLAYER_SOX 1
00027 #define AUD_PLAYER_MPLAYER 2
00028 #define AUD_PLAYER_JACK 3
00029 #define AUD_PLAYER_PULSE 4
00030 
00031   gchar aplayer[512]; // name, eg. "jack","pulse","sox","mplayer"
00032 
00034   gshort q_type;
00035 #define Q_FILL 1
00036 #define Q_SMOOTH 1
00037 
00038   gchar tmpdir[256];  
00039 
00040   // TODO - also use cur_vid_load_dir, etc.
00041   // utf8 encoding
00042   gchar def_vid_load_dir[256];
00043   gchar def_vid_save_dir[256];
00044   gchar def_audio_dir[256];
00045   gchar def_image_dir[256];
00046   gchar def_proj_dir[256];
00047 
00048   // locale encoding
00049   gchar prefix_dir[256];
00050   gchar lib_dir[256];
00051 
00052 
00053   gchar image_ext[16];
00054 
00055   guint warning_mask;
00056   // if these bits are set, we do not show the warning
00057 #define WARN_MASK_FPS (1<<0)
00058 #define WARN_MASK_FSIZE (1<<1)
00059 
00061 #define WARN_MASK_SAVE_QUALITY (1<<2)
00062 
00063 #define WARN_MASK_SAVE_SET (1<<3)
00064 #define WARN_MASK_NO_MPLAYER (1<<4)
00065 #define WARN_MASK_RENDERED_FX (1<<5)
00066 #define WARN_MASK_NO_ENCODERS (1<<6)
00067 #define WARN_MASK_LAYOUT_MISSING_CLIPS (1<<7)
00068 #define WARN_MASK_LAYOUT_CLOSE_FILE (1<<8)
00069 #define WARN_MASK_LAYOUT_DELETE_FRAMES (1<<9)
00070 
00071   /* next two are off by default (on a fresh install) */
00072 #define WARN_MASK_LAYOUT_SHIFT_FRAMES (1<<10)
00073 #define WARN_MASK_LAYOUT_ALTER_FRAMES (1<<11)
00074 
00075 #define WARN_MASK_DUPLICATE_SET (1<<12)
00076 
00077 #define WARN_MASK_EXIT_MT (1<<13)
00078 #define WARN_MASK_DISCARD_SET (1<<14)
00079 #define WARN_MASK_AFTER_DVGRAB (1<<15)
00080 
00081 #define WARN_MASK_MT_ACHANS (1<<16)
00082 
00083 #define WARN_MASK_LAYOUT_DELETE_AUDIO (1<<17)
00084   
00085   /* next two are off by default (on a fresh install) */
00086 #define WARN_MASK_LAYOUT_SHIFT_AUDIO (1<<18)
00087 #define WARN_MASK_LAYOUT_ALTER_AUDIO (1<<19)
00088 
00089 #define WARN_MASK_MT_NO_JACK (1<<20)
00090 
00091 #define WARN_MASK_OPEN_YUV4M (1<<21)
00092 
00093 #define WARN_MASK_MT_BACKUP_SPACE (1<<22)
00094 
00095 #define WARN_MASK_LAYOUT_POPUP (1<<23)
00096 
00097 #define WARN_MASK_CLEAN_AFTER_CRASH (1<<24)
00098 
00099 
00100   gchar effect_command[256];
00101   gchar video_open_command[256];
00102   gchar audio_play_command[256];
00103   gchar cdplay_device[256];  
00104   gdouble default_fps;
00105   gint bar_height;
00106   gboolean pause_effect_during_preview;
00107   gboolean open_decorated;
00108   int sleep_time;
00109   gboolean pause_during_pb;
00110   gboolean fileselmax;
00111   gboolean show_recent;
00112   gint warn_file_size;
00113   gboolean pause_xmms;
00114   gboolean midisynch;
00115   gint dl_bandwidth;
00116   gboolean conserve_space;
00117   gboolean ins_resample;
00118   gboolean show_tool;
00119   gshort sepwin_type;
00120   gboolean show_player_stats;
00121   gboolean show_framecount;
00122   gboolean show_subtitles;
00123   gboolean loop_recording;
00124   gboolean discard_tv;
00125   gboolean save_directories;
00126   gboolean safer_preview;
00127   guint rec_opts;
00128 #define REC_FRAMES (1<<0)
00129 #define REC_FPS (1<<1)
00130 #define REC_EFFECTS (1<<2)
00131 #define REC_CLIPS (1<<3)
00132 #define REC_AUDIO (1<<4)
00133   
00134   gboolean no_bandwidth;
00135   gboolean osc_udp_started;
00136   guint osc_udp_port;
00137 
00138   gboolean omc_noisy; 
00139   gboolean omc_events; 
00140 
00141   gshort startup_phase; 
00142   const gchar *wm; 
00143   gint ocp; 
00144 
00145   gboolean antialias;
00146 
00147   gboolean ignore_tiny_fps_diffs;
00148 
00149   gshort rte_keys_virtual;
00150 
00151   guint jack_opts;
00152 #define JACK_OPTS_TRANSPORT_CLIENT (1<<0)   ///< jack can start/stop
00153 #define JACK_OPTS_TRANSPORT_MASTER (1<<1)  ///< transport master
00154 #define JACK_OPTS_START_TSERVER (1<<2)     ///< start transport server
00155 #define JACK_OPTS_NOPLAY_WHEN_PAUSED (1<<3) ///< play audio even when transport paused
00156 #define JACK_OPTS_START_ASERVER (1<<4)     ///< start audio server
00157 #define JACK_OPTS_TIMEBASE_START (1<<5)    ///< jack sets play start position
00158 #define JACK_OPTS_TIMEBASE_CLIENT (1<<6)    ///< full timebase client
00159 #define JACK_OPTS_TIMEBASE_MASTER (1<<7)   ///< timebase master (not implemented yet)
00160 
00161   gchar jack_tserver[256];
00162   gchar jack_aserver[256];
00163 
00164   gchar *fxdefsfile;
00165   gchar *fxsizesfile;
00166   gchar *vppdefaultsfile;
00167 
00168   GList *acodec_list;
00169   gint acodec_list_to_format[AUDIO_CODEC_NONE];
00170 
00171   guint audio_opts;
00172 #define AUDIO_OPTS_FOLLOW_CLIPS (1<<0)
00173 #define AUDIO_OPTS_FOLLOW_FPS (1<<1)
00174 
00175   gboolean event_window_show_frame_events;
00176   gboolean crash_recovery; 
00177 
00178   gboolean show_rdet; 
00179 
00180   gboolean move_effects;
00181 
00182   gint mt_undo_buf;
00183   gboolean mt_enter_prompt;
00184 
00185   gint mt_def_width;
00186   gint mt_def_height;
00187   gdouble mt_def_fps;
00188 
00189   gint mt_def_arate;
00190   gint mt_def_achans;
00191   gint mt_def_asamps;
00192   gint mt_def_signed_endian;
00193 
00194   gboolean mt_exit_render;
00195   gboolean render_prompt;
00196 
00197   gboolean mt_pertrack_audio;
00198   gint mt_backaudio;
00199 
00200   gint mt_auto_back;
00201 
00202   gboolean ar_clipset;
00203   gboolean ar_layout;
00204 
00205   gchar ar_clipset_name[128]; 
00206   gchar ar_layout_name[128];  
00207 
00208   gboolean rec_desktop_audio;
00209 
00210   gboolean show_gui;
00211   gboolean show_splash;
00212   gboolean show_playwin;
00213 
00214   gboolean osc_start;
00215 
00216   gboolean show_threaded_dialog;
00217 
00218   gboolean collate_images;
00219 
00220   gint virt_height; 
00221 
00222   gboolean concat_images;
00223 
00224   gboolean render_audio;
00225 
00226   gboolean instant_open;
00227   gboolean auto_deint;
00228 
00229   gint gui_monitor;
00230   gint play_monitor;
00231 
00232   gboolean force_single_monitor;
00233 
00234   gint midi_check_rate;
00235   gint midi_rpt;
00236 
00237 #define OMC_DEV_MIDI 1<<0
00238 #define OMC_DEV_JS 1<<1
00239 #define OMC_DEV_FORCE_RAW_MIDI 1<<2
00240   guint omc_dev_opts;
00241 
00242   gchar omc_js_fname[256];  
00243   gchar omc_midi_fname[256]; 
00244   
00245   gboolean mouse_scroll_clips;
00246 
00247   gint num_rtaudiobufs;
00248 
00249   gboolean safe_symlinks;
00250 
00251 #ifdef ALSA_MIDI
00252   gboolean use_alsa_midi;
00253 #endif
00254 
00255   gint startup_interface;
00256 
00257 #define STARTUP_CE 0
00258 #define STARTUP_MT 1
00259 
00260   gboolean ce_maxspect;
00261 
00262   gboolean lamp_buttons;
00263 
00264   gboolean autoload_subs;
00265 
00266   glong rec_stop_gb;
00267 
00268   guint max_modes_per_key; 
00269 
00270   // autotransitioning in mt
00271   gint atrans_fx;
00272   gchar def_autotrans[256];
00273 
00274   gint nfx_threads;
00275 
00276   gboolean stream_audio_out;
00277 
00278 } _prefs;
00279 
00280 enum {
00281     LIST_ENTRY_GUI,
00282     LIST_ENTRY_DECODING,
00283     LIST_ENTRY_PLAYBACK,
00284     LIST_ENTRY_RECORDING,
00285     LIST_ENTRY_ENCODING,
00286     LIST_ENTRY_EFFECTS,
00287     LIST_ENTRY_DIRECTORIES,
00288     LIST_ENTRY_WARNINGS,
00289     LIST_ENTRY_MISC,
00290     LIST_ENTRY_THEMES,
00291     LIST_ENTRY_NET,
00292     LIST_ENTRY_JACK,
00293     LIST_ENTRY_MIDI,
00294     LIST_ENTRY_MULTITRACK
00295 };
00296 
00297 enum {
00298     LIST_ICON = 0,
00299     LIST_ITEM,
00300     LIST_NUM,
00301     N_COLUMNS
00302 };
00303 
00304 
00305 #define PREF_WIN_WIDTH 960
00306 #define PREF_WIN_HEIGHT 640
00307 
00308 
00310 typedef struct {
00311   gulong encoder_ofmt_fn;
00312   gulong encoder_name_fn;
00313   GtkWidget *prefs_dialog;
00314   
00315   GtkWidget *prefs_list;
00316   GtkWidget *prefs_table;
00317   GtkWidget *vbox_right_gui;
00318   GtkWidget *vbox_right_multitrack;
00319   GtkWidget *vbox_right_decoding;
00320   GtkWidget *vbox_right_playback;
00321   GtkWidget *vbox_right_recording;
00322   GtkWidget *vbox_right_encoding;
00323   GtkWidget *vbox_right_effects;
00324   GtkWidget *table_right_directories;
00325   GtkWidget *vbox_right_warnings;
00326   GtkWidget *vbox_right_warnings_outer;
00327   GtkWidget *vbox_right_misc;
00328   GtkWidget *vbox_right_themes;
00329   GtkWidget *vbox_right_net;
00330   GtkWidget *vbox_right_jack;
00331   GtkWidget *vbox_right_midi;
00332   GtkWidget *scrollw;
00333   GtkWidget *right_shown;
00334   GtkWidget *cancelbutton;
00335   GtkWidget *applybutton;
00336   GtkWidget *closebutton;
00337   GtkWidget *stop_screensaver_check;
00338   GtkWidget *open_maximised_check;
00339   GtkWidget *show_tool;
00340   GtkWidget *mouse_scroll;
00341   GtkWidget *fs_max_check;
00342   GtkWidget *recent_check;
00343   GtkWidget *video_open_entry;
00344   GtkWidget *audio_command_entry;
00345   GtkWidget *vid_load_dir_entry;
00346   GtkWidget *vid_save_dir_entry;
00347   GtkWidget *audio_dir_entry;
00348   GtkWidget *image_dir_entry;
00349   GtkWidget *proj_dir_entry;
00350   GtkWidget *tmpdir_entry;
00351   GtkWidget *cdplay_entry;
00352   GtkWidget *spinbutton_def_fps;
00353   GtkWidget *pbq_combo;
00354   GtkWidget *ofmt_combo;
00355   GtkWidget *audp_combo;
00356   GtkWidget *rframes;
00357   GtkWidget *rfps;
00358   GtkWidget *rclips;
00359   GtkWidget *reffects;
00360   GtkWidget *raudio;
00361   GtkWidget *rdesk_audio;
00362   GtkWidget *encoder_combo;
00363   GtkWidget *checkbutton_antialias;
00364   GtkWidget *checkbutton_threads;
00365   GtkWidget *checkbutton_warn_fps;
00366   GtkWidget *checkbutton_warn_mplayer;
00367   GtkWidget *checkbutton_warn_save_set;
00368   GtkWidget *checkbutton_warn_dup_set;
00369   GtkWidget *checkbutton_warn_rendered_fx;
00370   GtkWidget *checkbutton_warn_encoders;
00371   GtkWidget *checkbutton_warn_layout_clips;
00372   GtkWidget *checkbutton_warn_layout_close;
00373   GtkWidget *checkbutton_warn_layout_delete;
00374   GtkWidget *checkbutton_warn_layout_alter;
00375   GtkWidget *checkbutton_warn_layout_shift;
00376   GtkWidget *checkbutton_warn_layout_adel;
00377   GtkWidget *checkbutton_warn_layout_aalt;
00378   GtkWidget *checkbutton_warn_layout_ashift;
00379   GtkWidget *checkbutton_warn_layout_popup;
00380   GtkWidget *checkbutton_warn_discard_layout;
00381   GtkWidget *checkbutton_warn_after_dvgrab;
00382   GtkWidget *checkbutton_show_stats;
00383   GtkWidget *check_xmms_pause;
00384   GtkWidget *checkbutton_warn_fsize;
00385   GtkWidget *checkbutton_warn_mt_achans;
00386   GtkWidget *checkbutton_warn_mt_no_jack;
00387   GtkWidget *checkbutton_warn_yuv4m_open;
00388   GtkWidget *checkbutton_warn_mt_backup_space;
00389   GtkWidget *checkbutton_warn_after_crash;
00390   GtkWidget *spinbutton_warn_fsize;
00391   GtkWidget *spinbutton_bwidth;
00392   GtkWidget *theme_combo;
00393   GtkWidget *check_midi;
00394   GtkWidget *ins_speed;
00395   GtkWidget *jpeg;
00396   GtkWidget *mt_enter_prompt;
00397   GtkWidget *spinbutton_ocp;
00398   GtkWidget *acodec_combo;
00399   GtkWidget *spinbutton_osc_udp;
00400   GtkWidget *spinbutton_rte_keys;
00401   GtkWidget *spinbutton_nfx_threads;
00402   GtkWidget *enable_OSC;
00403   GtkWidget *enable_OSC_start;
00404   GtkWidget *jack_tserver_entry;
00405   GtkWidget *jack_aserver_entry;
00406   GtkWidget *checkbutton_jack_master;
00407   GtkWidget *checkbutton_jack_client;
00408   GtkWidget *checkbutton_jack_tb_start;
00409   GtkWidget *checkbutton_jack_tb_client;
00410   GtkWidget *checkbutton_jack_pwp;
00411   GtkWidget *checkbutton_start_tjack;
00412   GtkWidget *checkbutton_start_ajack;
00413   GtkWidget *checkbutton_afollow;
00414   GtkWidget *checkbutton_aclips;
00415   GtkWidget *spinbutton_mt_def_width;
00416   GtkWidget *spinbutton_mt_def_height;
00417   GtkWidget *spinbutton_mt_def_fps;
00418   GtkWidget *spinbutton_mt_undo_buf;
00419   GtkWidget *spinbutton_mt_ab_time;
00420   GtkWidget *spinbutton_rec_gb;
00421   GtkWidget *mt_autoback_every;
00422   GtkWidget *mt_autoback_always;
00423   GtkWidget *mt_autoback_never;
00424   GtkWidget *spinbutton_gmoni;
00425   GtkWidget *spinbutton_pmoni;
00426   GtkWidget *checkbutton_mt_exit_render;
00427   GtkWidget *pertrack_checkbutton;
00428   GtkWidget *backaudio_checkbutton;
00429   GtkWidget *checkbutton_render_prompt;
00430   GtkWidget *checkbutton_instant_open;
00431   GtkWidget *checkbutton_auto_deint;
00432   GtkWidget *checkbutton_concat_images;
00433   GtkWidget *forcesmon;
00434   GList *pbq_list;
00435   gchar *audp_name;
00436   gulong audp_entry_func;
00437   GtkWidget *checkbutton_omc_js;
00438   GtkWidget *checkbutton_omc_midi;
00439   GtkWidget *omc_js_entry;
00440   GtkWidget *omc_midi_entry;
00441   GtkWidget *spinbutton_midicr;
00442   GtkWidget *spinbutton_midirpt;
00443   GtkWidget *alsa_midi;
00444   GtkWidget *button_midid;
00445   GtkWidget *rb_startup_ce;
00446   GtkWidget *rb_startup_mt;
00447   GtkWidget *jack_int_label;
00448   GtkWidget *checkbutton_ce_maxspect;
00449   GtkWidget *temp_label;
00450   GtkWidget *checkbutton_stream_audio;
00451   gboolean needs_restart;
00452 } _prefsw;
00453 
00455 typedef struct {
00456   gboolean ign_clipset;
00457   gboolean ign_osc;
00458   gboolean ign_aplayer;
00459   gboolean ign_stmode;
00460   gboolean ign_vppdefs;
00461 } _ign_opts;
00462 
00463 typedef struct {
00464   gchar tmpdir[256];
00465   gchar theme[64];
00466   gchar vpp_name[64]; 
00467   gint vpp_fixed_fps_numer;
00468   gint vpp_fixed_fps_denom;
00469   gdouble vpp_fixed_fpsd;
00470   int vpp_palette;
00471   int vpp_YUV_clamping;
00472   gint vpp_fwidth;
00473   gint vpp_fheight;
00474   gint vpp_argc;
00475   gchar **vpp_argv;
00476 
00477   _encoder encoder;
00478   gboolean show_recent;
00479   gboolean show_tool;
00480   gboolean osc_start;
00481   gint startup_interface;
00482   guint jack_opts;
00483 
00484   gint nfx_threads;
00485 
00486 } _future_prefs;
00487 
00488 _prefs *prefs;
00489 _future_prefs *future_prefs;
00490 _prefsw *prefsw;
00491 
00492 void set_acodec_list_from_allowed (_prefsw *, render_details *);
00493 void  rdet_acodec_changed (GtkComboBox *acodec_combo, gpointer user_data);
00494 
00495 _prefsw* create_prefs_dialog (void);
00496 
00497 gboolean on_prefs_delete_event (GtkWidget *, GdkEvent *, gpointer prefsw);
00498 
00499 void on_preferences_activate (GtkMenuItem *, gpointer);
00500 
00501 void on_prefs_close_clicked (GtkButton *, gpointer);
00502 
00503 void on_prefs_revert_clicked (GtkButton *, gpointer);
00504 
00505 void set_vpp(gboolean set_in_prefs);
00506 
00507 void on_prefDomainChanged(GtkTreeSelection *, gpointer);
00508 
00509 void select_pref_list_row(guint);
00510 
00511 void populate_combo_box(GtkComboBox *combo, GList *data);
00512 
00513 void set_combo_box_active_string(GtkComboBox *, gchar *active_str);
00514 
00515 void prefsw_set_astream_settings(_vid_playback_plugin *);
00516 
00517 #endif
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines