LiVES 1.4.9
|
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 #define WARN_MASK_NO_PULSE_CONNECT (1<<25) 00100 00101 gchar effect_command[256]; 00102 gchar video_open_command[256]; 00103 gchar audio_play_command[256]; 00104 gchar cdplay_device[256]; 00105 gdouble default_fps; 00106 gint bar_height; 00107 gboolean pause_effect_during_preview; 00108 gboolean open_decorated; 00109 int sleep_time; 00110 gboolean pause_during_pb; 00111 gboolean fileselmax; 00112 gboolean show_recent; 00113 gint warn_file_size; 00114 gboolean pause_xmms; 00115 gboolean midisynch; 00116 gint dl_bandwidth; 00117 gboolean conserve_space; 00118 gboolean ins_resample; 00119 gboolean show_tool; 00120 gshort sepwin_type; 00121 gboolean show_player_stats; 00122 gboolean show_framecount; 00123 gboolean show_subtitles; 00124 gboolean loop_recording; 00125 gboolean discard_tv; 00126 gboolean save_directories; 00127 gboolean safer_preview; 00128 guint rec_opts; 00129 #define REC_FRAMES (1<<0) 00130 #define REC_FPS (1<<1) 00131 #define REC_EFFECTS (1<<2) 00132 #define REC_CLIPS (1<<3) 00133 #define REC_AUDIO (1<<4) 00134 00135 gboolean no_bandwidth; 00136 gboolean osc_udp_started; 00137 guint osc_udp_port; 00138 00139 gboolean omc_noisy; 00140 gboolean omc_events; 00141 00142 gshort startup_phase; 00143 const gchar *wm; 00144 gint ocp; 00145 00146 gboolean antialias; 00147 00148 gboolean ignore_tiny_fps_diffs; 00149 00150 gshort rte_keys_virtual; 00151 00152 guint jack_opts; 00153 #define JACK_OPTS_TRANSPORT_CLIENT (1<<0) ///< jack can start/stop 00154 #define JACK_OPTS_TRANSPORT_MASTER (1<<1) ///< transport master 00155 #define JACK_OPTS_START_TSERVER (1<<2) ///< start transport server 00156 #define JACK_OPTS_NOPLAY_WHEN_PAUSED (1<<3) ///< play audio even when transport paused 00157 #define JACK_OPTS_START_ASERVER (1<<4) ///< start audio server 00158 #define JACK_OPTS_TIMEBASE_START (1<<5) ///< jack sets play start position 00159 #define JACK_OPTS_TIMEBASE_CLIENT (1<<6) ///< full timebase client 00160 #define JACK_OPTS_TIMEBASE_MASTER (1<<7) ///< timebase master (not implemented yet) 00161 00162 gchar jack_tserver[256]; 00163 gchar jack_aserver[256]; 00164 00165 gchar *fxdefsfile; 00166 gchar *fxsizesfile; 00167 gchar *vppdefaultsfile; 00168 00169 GList *acodec_list; 00170 gint acodec_list_to_format[AUDIO_CODEC_NONE]; 00171 00172 guint audio_opts; 00173 #define AUDIO_OPTS_FOLLOW_CLIPS (1<<0) 00174 #define AUDIO_OPTS_FOLLOW_FPS (1<<1) 00175 00176 gboolean event_window_show_frame_events; 00177 gboolean crash_recovery; 00178 00179 gboolean show_rdet; 00180 00181 gboolean move_effects; 00182 00183 gint mt_undo_buf; 00184 gboolean mt_enter_prompt; 00185 00186 gint mt_def_width; 00187 gint mt_def_height; 00188 gdouble mt_def_fps; 00189 00190 gint mt_def_arate; 00191 gint mt_def_achans; 00192 gint mt_def_asamps; 00193 gint mt_def_signed_endian; 00194 00195 gboolean mt_exit_render; 00196 gboolean render_prompt; 00197 00198 gboolean mt_pertrack_audio; 00199 gint mt_backaudio; 00200 00201 gint mt_auto_back; 00202 00203 gboolean ar_clipset; 00204 gboolean ar_layout; 00205 00206 gchar ar_clipset_name[128]; 00207 gchar ar_layout_name[128]; 00208 00209 gboolean rec_desktop_audio; 00210 00211 gboolean show_gui; 00212 gboolean show_splash; 00213 gboolean show_playwin; 00214 00215 gboolean osc_start; 00216 00217 gboolean collate_images; 00218 00219 gint virt_height; 00220 00221 gboolean concat_images; 00222 00223 gboolean render_audio; 00224 00225 gboolean instant_open; 00226 gboolean auto_deint; 00227 gboolean auto_nobord; 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 gboolean unstable_fx; 00278 gboolean letterbox; 00279 gboolean enc_letterbox; 00280 00281 GList *disabled_decoders; 00282 } _prefs; 00283 00284 enum { 00285 LIST_ENTRY_GUI, 00286 LIST_ENTRY_DECODING, 00287 LIST_ENTRY_PLAYBACK, 00288 LIST_ENTRY_RECORDING, 00289 LIST_ENTRY_ENCODING, 00290 LIST_ENTRY_EFFECTS, 00291 LIST_ENTRY_DIRECTORIES, 00292 LIST_ENTRY_WARNINGS, 00293 LIST_ENTRY_MISC, 00294 LIST_ENTRY_THEMES, 00295 LIST_ENTRY_NET, 00296 LIST_ENTRY_JACK, 00297 LIST_ENTRY_MIDI, 00298 LIST_ENTRY_MULTITRACK 00299 }; 00300 00301 enum { 00302 LIST_ICON = 0, 00303 LIST_ITEM, 00304 LIST_NUM, 00305 N_COLUMNS 00306 }; 00307 00308 00309 #define PREF_WIN_WIDTH 960 00310 #define PREF_WIN_HEIGHT 640 00311 00312 00314 typedef struct { 00315 gulong encoder_ofmt_fn; 00316 gulong encoder_name_fn; 00317 GtkWidget *prefs_dialog; 00318 00319 GtkWidget *prefs_list; 00320 GtkWidget *prefs_table; 00321 GtkWidget *vbox_right_gui; 00322 GtkWidget *vbox_right_multitrack; 00323 GtkWidget *vbox_right_decoding; 00324 GtkWidget *vbox_right_playback; 00325 GtkWidget *vbox_right_recording; 00326 GtkWidget *vbox_right_encoding; 00327 GtkWidget *vbox_right_effects; 00328 GtkWidget *table_right_directories; 00329 GtkWidget *vbox_right_warnings; 00330 GtkWidget *vbox_right_warnings_outer; 00331 GtkWidget *vbox_right_misc; 00332 GtkWidget *vbox_right_themes; 00333 GtkWidget *vbox_right_net; 00334 GtkWidget *vbox_right_jack; 00335 GtkWidget *vbox_right_midi; 00336 GtkWidget *scrollw; 00337 GtkWidget *right_shown; 00338 GtkWidget *cancelbutton; 00339 GtkWidget *applybutton; 00340 GtkWidget *closebutton; 00341 GtkWidget *stop_screensaver_check; 00342 GtkWidget *open_maximised_check; 00343 GtkWidget *show_tool; 00344 GtkWidget *mouse_scroll; 00345 GtkWidget *fs_max_check; 00346 GtkWidget *recent_check; 00347 GtkWidget *video_open_entry; 00348 GtkWidget *audio_command_entry; 00349 GtkWidget *vid_load_dir_entry; 00350 GtkWidget *vid_save_dir_entry; 00351 GtkWidget *audio_dir_entry; 00352 GtkWidget *image_dir_entry; 00353 GtkWidget *proj_dir_entry; 00354 GtkWidget *tmpdir_entry; 00355 GtkWidget *cdplay_entry; 00356 GtkWidget *spinbutton_def_fps; 00357 GtkWidget *pbq_combo; 00358 GtkWidget *ofmt_combo; 00359 GtkWidget *audp_combo; 00360 GtkWidget *rframes; 00361 GtkWidget *rfps; 00362 GtkWidget *rclips; 00363 GtkWidget *reffects; 00364 GtkWidget *raudio; 00365 GtkWidget *rdesk_audio; 00366 GtkWidget *encoder_combo; 00367 GtkWidget *checkbutton_antialias; 00368 GtkWidget *checkbutton_threads; 00369 GtkWidget *checkbutton_warn_fps; 00370 GtkWidget *checkbutton_warn_mplayer; 00371 GtkWidget *checkbutton_warn_save_set; 00372 GtkWidget *checkbutton_warn_dup_set; 00373 GtkWidget *checkbutton_warn_rendered_fx; 00374 GtkWidget *checkbutton_warn_encoders; 00375 GtkWidget *checkbutton_warn_layout_clips; 00376 GtkWidget *checkbutton_warn_layout_close; 00377 GtkWidget *checkbutton_warn_layout_delete; 00378 GtkWidget *checkbutton_warn_layout_alter; 00379 GtkWidget *checkbutton_warn_layout_shift; 00380 GtkWidget *checkbutton_warn_layout_adel; 00381 GtkWidget *checkbutton_warn_layout_aalt; 00382 GtkWidget *checkbutton_warn_layout_ashift; 00383 GtkWidget *checkbutton_warn_layout_popup; 00384 GtkWidget *checkbutton_warn_discard_layout; 00385 GtkWidget *checkbutton_warn_after_dvgrab; 00386 GtkWidget *checkbutton_warn_no_pulse; 00387 GtkWidget *checkbutton_show_stats; 00388 GtkWidget *check_xmms_pause; 00389 GtkWidget *checkbutton_warn_fsize; 00390 GtkWidget *checkbutton_warn_mt_achans; 00391 GtkWidget *checkbutton_warn_mt_no_jack; 00392 GtkWidget *checkbutton_warn_yuv4m_open; 00393 GtkWidget *checkbutton_warn_mt_backup_space; 00394 GtkWidget *checkbutton_warn_after_crash; 00395 GtkWidget *spinbutton_warn_fsize; 00396 GtkWidget *spinbutton_bwidth; 00397 GtkWidget *theme_combo; 00398 GtkWidget *check_midi; 00399 GtkWidget *ins_speed; 00400 GtkWidget *jpeg; 00401 GtkWidget *mt_enter_prompt; 00402 GtkWidget *spinbutton_ocp; 00403 GtkWidget *acodec_combo; 00404 GtkWidget *spinbutton_osc_udp; 00405 GtkWidget *spinbutton_rte_keys; 00406 GtkWidget *spinbutton_nfx_threads; 00407 GtkWidget *enable_OSC; 00408 GtkWidget *enable_OSC_start; 00409 GtkWidget *jack_tserver_entry; 00410 GtkWidget *jack_aserver_entry; 00411 GtkWidget *checkbutton_jack_master; 00412 GtkWidget *checkbutton_jack_client; 00413 GtkWidget *checkbutton_jack_tb_start; 00414 GtkWidget *checkbutton_jack_tb_client; 00415 GtkWidget *checkbutton_jack_pwp; 00416 GtkWidget *checkbutton_start_tjack; 00417 GtkWidget *checkbutton_start_ajack; 00418 GtkWidget *checkbutton_afollow; 00419 GtkWidget *checkbutton_aclips; 00420 GtkWidget *spinbutton_mt_def_width; 00421 GtkWidget *spinbutton_mt_def_height; 00422 GtkWidget *spinbutton_mt_def_fps; 00423 GtkWidget *spinbutton_mt_undo_buf; 00424 GtkWidget *spinbutton_mt_ab_time; 00425 GtkWidget *spinbutton_rec_gb; 00426 GtkWidget *mt_autoback_every; 00427 GtkWidget *mt_autoback_always; 00428 GtkWidget *mt_autoback_never; 00429 GtkWidget *spinbutton_gmoni; 00430 GtkWidget *spinbutton_pmoni; 00431 GtkWidget *checkbutton_mt_exit_render; 00432 GtkWidget *pertrack_checkbutton; 00433 GtkWidget *backaudio_checkbutton; 00434 GtkWidget *checkbutton_render_prompt; 00435 GtkWidget *checkbutton_instant_open; 00436 GtkWidget *checkbutton_auto_deint; 00437 GtkWidget *checkbutton_nobord; 00438 GtkWidget *checkbutton_concat_images; 00439 GtkWidget *forcesmon; 00440 GList *pbq_list; 00441 gchar *audp_name; 00442 gchar *orig_audp_name; 00443 gulong audp_entry_func; 00444 GtkWidget *checkbutton_omc_js; 00445 GtkWidget *checkbutton_omc_midi; 00446 GtkWidget *omc_js_entry; 00447 GtkWidget *omc_midi_entry; 00448 GtkWidget *spinbutton_midicr; 00449 GtkWidget *spinbutton_midirpt; 00450 GtkWidget *alsa_midi; 00451 GtkWidget *button_midid; 00452 GtkWidget *rb_startup_ce; 00453 GtkWidget *rb_startup_mt; 00454 GtkWidget *jack_int_label; 00455 GtkWidget *checkbutton_ce_maxspect; 00456 GtkWidget *temp_label; 00457 GtkWidget *checkbutton_stream_audio; 00458 gboolean needs_restart; 00459 } _prefsw; 00460 00462 typedef struct { 00463 gboolean ign_clipset; 00464 gboolean ign_osc; 00465 gboolean ign_aplayer; 00466 gboolean ign_stmode; 00467 gboolean ign_vppdefs; 00468 } _ign_opts; 00469 00470 typedef struct { 00471 gchar tmpdir[256]; 00472 gchar theme[64]; 00473 gchar vpp_name[64]; 00474 gint vpp_fixed_fps_numer; 00475 gint vpp_fixed_fps_denom; 00476 gdouble vpp_fixed_fpsd; 00477 int vpp_palette; 00478 int vpp_YUV_clamping; 00479 gint vpp_fwidth; 00480 gint vpp_fheight; 00481 gint vpp_argc; 00482 gchar **vpp_argv; 00483 00484 _encoder encoder; 00485 gboolean show_recent; 00486 gboolean show_tool; 00487 gboolean osc_start; 00488 gint startup_interface; 00489 guint jack_opts; 00490 00491 gint nfx_threads; 00492 00493 GList *disabled_decoders; 00494 GList *disabled_decoders_new; 00495 00496 } _future_prefs; 00497 00498 _prefs *prefs; 00499 _future_prefs *future_prefs; 00500 _prefsw *prefsw; 00501 00502 void set_acodec_list_from_allowed (_prefsw *, render_details *); 00503 void rdet_acodec_changed (GtkComboBox *acodec_combo, gpointer user_data); 00504 00505 _prefsw* create_prefs_dialog (void); 00506 00507 gboolean on_prefs_delete_event (GtkWidget *, GdkEvent *, gpointer prefsw); 00508 00509 void on_preferences_activate (GtkMenuItem *, gpointer); 00510 00511 void on_prefs_close_clicked (GtkButton *, gpointer); 00512 00513 void on_prefs_revert_clicked (GtkButton *, gpointer); 00514 00515 void set_vpp(gboolean set_in_prefs); 00516 00517 void on_prefDomainChanged(GtkTreeSelection *, gpointer); 00518 00519 void select_pref_list_row(guint); 00520 00521 void populate_combo_box(GtkComboBox *combo, GList *data); 00522 00523 void set_combo_box_active_string(GtkComboBox *, gchar *active_str); 00524 00525 void prefsw_set_astream_settings(_vid_playback_plugin *); 00526 00527 void apply_button_set_enabled(GtkWidget *widget, gpointer func_data); 00528 00529 #endif