LiVES 1.4.9

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 #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
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines