LiVES 1.3.11-svn
|
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