use strict; use warnings; #-------------------------------------------------------------------------------------------------------------- # Edit Preferences #-------------------------------------------------------------------------------------------------------------- sub edit_prefs { $main::load_defaults = 0; my $top = $main::mw -> Toplevel( -padx => 5, -pady => 5 ); $top -> title("Edit Preferences"); my $book = $top->NoteBook() -> grid( -row=>1, -column=>1, -columnspan=>2, -sticky=>'nw' ); # Main prefences tab my $tab1 = $book->add( "Sheet 1", -label=>"Main" ); my $tab1_label_mo = $tab1 -> Label( -justify=>"left", -text=>"Main system options for namefix.pl:\n" ) -> grid( -row=>1, -column=>1, -sticky=>"nw" ); $tab1 -> Label( -text=>" " ) -> grid( -row=>4, -column=>1, -sticky=>"nw" ); my $label6 = $tab1 -> Label( -justify=>"left", -text=>"Space Delimter: " ) -> grid( -row=>5, -column=>1, -sticky=>"nw" ); my $e_ent = $tab1 -> Entry( -textvariable=>\$main::space_character, -width=>5 ) -> grid( -row=>5, -column=>2, -sticky=>"nw" ); $main::balloon->attach( $e_ent, -msg => "Enter your \ prefered space delimiter.\n\nPopular choices are: \"_\" \".\" \" \" " ); $tab1 -> Label( -text=>" " ) -> grid( -row=>7, -column=>1, -sticky=>"nw" ); $tab1 -> Label( -justify=>"left", -text=>"Maximum Filename Length: " ) -> grid( -row=>8, -column=>1, -sticky=>"nw" ); my $mfnl_ent = $tab1 -> Entry( -textvariable=>\$main::max_fn_length, -width=>5 ) -> grid( -row=>8, -column=>2, -sticky=>"nw" ); $main::balloon->attach( $mfnl_ent, -msg => "Files will not be renamed if new name exceeds max length" ); $tab1 -> Label( -justify=>"left", -text=>" " ) -> grid( -row=>9, -column=>1, -sticky=>"nw" ); $tab1 -> Label( -text=>" " ) -> grid( -row=>13, -column=>1, -sticky=>"nw" ); my $save_window_size_chk = $tab1 -> Checkbutton( -text=>"Save main window size and position", -variable=>\$main::save_window_size, -activeforeground => "blue" ) -> grid( -row=>14, -column=>1, -columnspan=>2, -sticky=>"sw" ); my $save_defs_chk = $tab1 -> Checkbutton( -text=>"Save main window options", -variable=>\$main::load_defaults, -activeforeground => "blue" ) -> grid( -row=>15, -column=>1, -columnspan=>2, -sticky=>"sw" ); $main::balloon->attach( $save_defs_chk, -msg => "Saves safe options from main window as defaults.\nUnsafe options can be set by manually editing the\nconfig file.\n\nOptions Deemed Safe:\n\n\tCleanup\n\tCasing\n\tSpecific Casing\n\tSpaces\n\t. to Space\n\tRM Word List\n\tRM Pattern List\n\n\tid3 mode\n\n\tUppercase All\n\tLowercase All\n\tInternational.\n\n\tEnumerate Styles\n\tTruncate Styles" ); $tab1 -> Label( -text=>"\n" ) -> grid( -row=>20, -column=>1, -sticky=>"nw" ); # Advanced options tab my $tab7 = $book->add( "Sheet 2", -label=>"Advanced" ); $tab7 -> Label( -justify=>"left", -text=>"Advance system options for namefix.pl:\n" ) -> grid( -row=>1, -column=>1, -sticky=>"nw" ); my $F_chk = $tab7 -> Checkbutton( -text=>"FS Fix (Case insensitive file system workaround)", -variable=>\$main::fat32fix, -activeforeground => "blue" ) -> grid( -row=>2, -column=>1, -sticky=>"nw", -columnspan=>2 ); $main::balloon->attach( $F_chk, -msg => "Enabled by default for win32 OS's\nFile systems known to have this issue: NTFS, Fat32, HFS.\n\neg: renaming test.mp3 to Test.mp3 will fail if FS is case insensitive." ); my $tab7_regexp_chk = $tab7 -> Checkbutton( -text=>"Disable Regexp pattern matching for Remove option", -variable=>\$main::disable_regexp, -activeforeground => "blue" ) -> grid( -row=>3, -column=>1, -sticky=>"nw", -columnspan=>2 ); $main::balloon->attach( $tab7_regexp_chk, -msg => "Disabled by default for novice users" ); $tab7 -> Label( -text=>" " ) -> grid( -row=>4, -column=>1, -sticky=>"nw" ); $tab7 -> Label( -justify=>"left", -text=>"Media File Extensions: " ) -> grid( -row=>11, -column=>1, -sticky=>"nw" ); my $mfe_ent = $tab7 -> Entry( -textvariable=>\$main::file_ext_2_proc, -width=>60 ) -> grid( -row=>12, -column=>1, -columnspan=>2, -sticky=>"nw" ); $main::balloon->attach( $mfe_ent, -msg => "Enter File extensions of files you wish seperated by |.\nThey will be processed by default.\n\nNote: Case insensitive matching is used." ); $tab7 -> Label( -text=>"\n" ) -> grid( -row=>20, -column=>1, -sticky=>"nw" ); my $overwrite_chk = $tab7 -> Checkbutton ( -text=>"Overwrite", -variable=>\$main::overwrite, -activeforeground => "blue" ) -> grid( -row=>23, -column=>1, -sticky=>"nw", ); $main::balloon->attach ( $overwrite_chk, -msg => "Overwrite: Preform rename without checking if new filename exists.\n\nThis Option is not saved, Please be carefull witht this option" ); # Save n Close Buttons my $but_save = $top -> Button( -text=>"Save", -activebackground => 'white', -command => sub { \&save_config(); } ) -> grid( -row =>5, -column => 1, -sticky=>"ne" ); my $but_close = $top -> Button( -text=>"Close", -activebackground => 'white', -command => sub { destroy $top; } ) -> grid( -row =>5, -column => 2, -sticky=>"nw" ); $main::balloon->attach( $but_save, -msg => "Save Preferences to config file." ); $top->resizable(0,0); } #-------------------------------------------------------------------------------------------------------------- # Save Config File #-------------------------------------------------------------------------------------------------------------- # MEMO: to self, config file is for stuff under prefs dialog only and defaults is for mainwindow vars sub save_config { open(FILE, ">$main::config_file"); print FILE "\# namefix.pl $main::version config file\n", "\# treated as perl script - dont fuck up if doing manual edit.\n\n"; print FILE "\$space_character = \"$main::space_character\";\n", "\$max_fn_length = $main::max_fn_length;\n", "\n", "\$fat32fix = $main::fat32fix;\n", "\$disable_regexp = $main::disable_regexp;\n", "\$file_ext_2_proc = \"$main::file_ext_2_proc\";\n", "\n", "\n"; if($main::load_defaults == 1) { print FILE "\n\# main window options\n\n", "\$case = $main::case;\n", "\$sp_word = $main::sp_word;\n", "\$spaces = $main::spaces;\n", "\$dot2space = $main::dot2space;\n", "\$kill_cwords = $main::kill_cwords;\n", "\$kill_sp_patterns = $main::kill_sp_patterns;\n", "\$sp_char = $main::sp_char;\n", "\$intr_char = $main::intr_char;\n", "\$lc_all = $main::lc_all;\n", "\$uc_all = $main::uc_all;\n", "\$id3_mode = $main::id3_mode;\n", "\$id3_guess_tag = $main::id3_guess_tag;\n", "\$enum_opt = $main::enum_opt;\n", "\$enum_pad = $main::enum_pad;\n", "\$enum_pad_zeros = $main::enum_pad_zeros;\n", "\$truncate = $main::truncate;\n", "\$truncate_style = $main::truncate_style;\n", "\$trunc_char = \"$main::trunc_char\";\n", "\$truncate_to = \"$main::truncate_to\";\n", "\n"; } if($main::save_window_size == 1) { $main::window_g = $main::mw->geometry; print FILE "\$save_window_size = 1;\n", "\$window_g = \"$main::window_g\";\n\n"; } print FILE "\# end of config file"; close(FILE); } #-------------------------------------------------------------------------------------------------------------- # Save Fonts Config File #-------------------------------------------------------------------------------------------------------------- sub save_fonts { open(FILE, ">$main::fonts_file") or die "ERROR: couldnt open $main::fonts_file to write to\n$!\n"; print FILE "# namefix.pl $main::version fonts configuration file\n", "# manually edit the fonts below if your sizes are screwed up in the dialog windows\n", "\n", "\$dialog_font = \"$main::dialog_font\"; \n", "\$dialog_title_font = \"$main::dialog_title_font\"; \n", "\$edit_pat_font = \"$main::edit_pat_font\"; \n", "\n"; close(FILE); } 1;