143
154
"on_delete_radio_toggled": self.on_delete_radio_toggled,
144
155
"on_delete_from_changed": self.on_delete_from_changed,
145
156
"on_delete_to_changed": self.on_delete_to_changed,
157
"on_images_original_pattern_changed": self.on_images_original_pattern_changed,
158
"on_images_renamed_pattern_changed": self.on_images_renamed_pattern_changed,
159
"on_music_original_pattern_changed": self.on_music_original_pattern_changed,
160
"on_music_renamed_pattern_changed": self.on_music_renamed_pattern_changed,
146
161
"on_menu_quit_activate": self.on_main_quit,
147
162
"on_menu_about_activate": self.about_info,
163
"on_notebook_switch_page": self.on_notebook_switch_page,
164
"on_cut_activate": self.on_cut_activate,
165
"on_copy_activate": self.on_copy_activate,
166
"on_paste_activate": self.on_paste_activate,
167
"on_clear_activate": self.on_clear_activate,
168
"on_select_all_activate": self.on_select_all_activate,
169
"on_select_nothing_activate": self.on_select_nothing_activate,
170
"on_manual_key_press_event": self.on_manual_key_press_event,
148
171
"on_quit_button_clicked": self.on_main_quit }
149
172
self.glade_tree.signal_autoconnect(signals)
189
212
self.subs_spaces_combo.set_active(0)
190
213
self.subs_capitalization_combo.set_active(0)
192
# Init menu items and window name
215
# Init menu items, some widgets and window name
193
216
self.menu_rename.set_sensitive(False)
194
self.main_window.set_title(glob.name_long)
195
self.main_window.set_icon_from_file(glob.icon)
217
self.main_window.set_title(pyrenamerglob.name_long)
218
self.main_window.set_icon_from_file(pyrenamerglob.icon)
219
self.delete_from.set_sensitive(False)
220
self.delete_to.set_sensitive(False)
197
222
# Read preferences using Gconf
198
223
if HAS_GCONF: self.preferences_read()
232
262
self.selected_files.set_model(self.file_selected_model)
234
264
renderer1 = gtk.CellRendererText()
235
column1 = gtk.TreeViewColumn("Original file name", renderer1, text=0)
265
column1 = gtk.TreeViewColumn(_("Original file name"), renderer1, text=0)
236
266
#column1.set_resizable(True)
237
267
self.selected_files.append_column(column1)
239
269
renderer2 = gtk.CellRendererText()
240
column2 = gtk.TreeViewColumn("Renamed file name", renderer2, text=2)
270
column2 = gtk.TreeViewColumn(_("Renamed file name"), renderer2, text=2)
241
271
self.column_preview = column2
242
272
#column2.set_resizable(True)
243
273
self.selected_files.append_column(column2)
250
280
ori = model.get_value(iter, 1)
251
281
new = model.get_value(iter, 3)
283
if new != None and new != '':
254
284
result = renamerfilefuncs.rename_file(ori, new)
255
if not result: self.display_error_dialog("Could not rename file %s to %s" % (ori, new))
258
def preview_rename_rows(self, model, path, iter, user_data):
285
if not result: self.display_error_dialog(_("Could not rename file %s to %s") % (ori, new))
288
def preview_rename_rows(self, model, path, iter, paths):
259
289
""" Called when Preview button is clicked.
260
290
Get new names and paths and add it to the model """
292
if (paths != None) and (path not in paths) and (paths != []) and self.notebook.get_current_page() != 3:
293
# Preview only selected rows (if we're not on manual rename)
294
model.set_value(iter, 2, None)
295
model.set_value(iter, 3, None)
262
298
# Get current values
263
299
name = model.get_value(iter, 0)
264
300
path = model.get_value(iter, 1)
316
352
newname = model.get_value(iter, 2)
317
353
newpath = model.get_value(iter, 3)
355
elif self.notebook.get_current_page() == 4:
356
# Replace images using patterns
357
pattern_ini = self.images_original_pattern.get_text()
358
pattern_end = self.images_renamed_pattern.get_text()
359
newname, newpath = renamerfilefuncs.rename_using_patterns(name, path, pattern_ini, pattern_end, self.count)
360
newname, newpath = renamerfilefuncs.replace_images(name, path, newname, newpath)
362
elif self.notebook.get_current_page() == 5 and pyrenamerglob.have_eyed3:
363
# Replace music using patterns
364
pattern_ini = self.music_original_pattern.get_text()
365
pattern_end = self.music_renamed_pattern.get_text()
366
newname, newpath = renamerfilefuncs.rename_using_patterns(name, path, pattern_ini, pattern_end, self.count)
367
newname, newpath = renamerfilefuncs.replace_music(name, path, newname, newpath)
319
370
# Set new values on model
320
model.set_value(iter, 2, newname)
321
model.set_value(iter, 3, newpath)
371
if newname != '' and newname != None:
372
model.set_value(iter, 2, newname)
373
model.set_value(iter, 3, newpath)
375
model.set_value(iter, 2, None)
376
model.set_value(iter, 3, None)
368
424
def on_preview_button_clicked(self, widget):
369
425
""" Set the item count to zero and get new names and paths for files on model """
371
self.file_selected_model.foreach(self.preview_rename_rows, None)
428
# Get selected rows and execute rename function
429
model, paths = self.selected_files.get_selection().get_selected_rows()
430
self.file_selected_model.foreach(self.preview_rename_rows, paths)
372
432
self.selected_files.columns_autosize()
373
433
self.rename_button.set_sensitive(True)
374
434
self.menu_rename.set_sensitive(True)
377
def on_show_hidden_dirs_toggled(self, widget):
378
""" Show hidden directories on dir browser """
379
self.file_browser.set_show_hidden(self.show_hidden_dirs.get_active())
380
self.file_browser.set_active_dir(self.current_dir)
383
437
def on_add_recursive_toggled(self, widget):
477
536
""" Disable Rename button (user has to click on Preview again) """
478
537
self.rename_button.set_sensitive(False)
479
538
self.menu_rename.set_sensitive(False)
539
self.insert_pos.set_sensitive(not self.insert_end.get_active())
482
542
def on_delete_radio_toggled(self, widget):
483
543
""" Disable Rename button (user has to click on Preview again) """
484
544
self.rename_button.set_sensitive(False)
485
545
self.menu_rename.set_sensitive(False)
546
self.delete_from.set_sensitive(True)
547
self.delete_to.set_sensitive(True)
548
self.insert_entry.set_sensitive(False)
549
self.insert_pos.set_sensitive(False)
550
self.insert_end.set_sensitive(False)
488
553
def on_delete_from_changed(self, widget):
500
565
if self.delete_to.get_value() < self.delete_from.get_value():
501
566
self.delete_to.set_value(self.delete_from.get_value())
568
def on_images_original_pattern_changed(self, widget):
569
""" Reload current dir and disable Rename button """
570
self.rename_button.set_sensitive(False)
571
self.menu_rename.set_sensitive(False)
574
def on_images_renamed_pattern_changed(self, widget):
575
""" Disable Rename button (user has to click on Preview again) """
576
self.rename_button.set_sensitive(False)
577
self.menu_rename.set_sensitive(False)
580
def on_music_original_pattern_changed(self, widget):
581
""" Reload current dir and disable Rename button """
582
self.rename_button.set_sensitive(False)
583
self.menu_rename.set_sensitive(False)
586
def on_music_renamed_pattern_changed(self, widget):
587
""" Disable Rename button (user has to click on Preview again) """
588
self.rename_button.set_sensitive(False)
589
self.menu_rename.set_sensitive(False)
592
def on_notebook_switch_page(self, notebook, page, page_num):
595
self.selected_files.get_selection().set_mode(gtk.SELECTION_SINGLE)
597
self.selected_files.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
600
def on_copy_activate(self, widget):
601
""" Copy to clipboard """
602
w = self.main_window.get_focus()
603
if isinstance(w, gtk.Entry):
604
w.emit('copy-clipboard')
607
def on_paste_activate(self, widget):
608
""" Paste from clipboard """
609
w = self.main_window.get_focus()
610
if isinstance(w, gtk.Entry):
611
w.emit('paste-clipboard')
614
def on_cut_activate(self, widget):
615
""" Cut to clipboard """
616
w = self.main_window.get_focus()
617
if isinstance(w, gtk.Entry):
618
w.emit('cut-clipboard')
621
def on_clear_activate(self, widget):
622
""" Clear text widget """
623
w = self.main_window.get_focus()
624
if isinstance(w, gtk.Entry):
628
def on_select_all_activate(self, widget):
629
""" Select every row on selected-files treeview """
630
self.selected_files.get_selection().select_all()
633
def on_select_nothing_activate(self, widget):
634
""" Select nothing on selected-files treeview """
635
self.selected_files.get_selection().unselect_all()
638
def on_manual_key_press_event(self, widget, event):
639
""" Key pressed on manual rename entry """
641
if self.notebook.get_current_page() == 3:
642
if event.keyval == gtk.keysyms.Page_Up:
644
model, iter = self.selected_files.get_selection().get_selected()
645
path = model.get_path(iter)
648
iter = model.get_iter(path)
649
name = model.get_value(iter,0)
650
self.manual.set_text(name)
651
self.selected_files.get_selection().select_iter(iter)
652
self.selected_files.scroll_to_cell(path)
654
elif event.keyval == gtk.keysyms.Page_Down:
656
model, iter = self.selected_files.get_selection().get_selected()
657
iter = model.iter_next(iter)
658
path = model.get_path(iter)
659
name = model.get_value(iter,0)
660
self.manual.set_text(name)
661
self.selected_files.get_selection().select_iter(iter)
662
self.selected_files.scroll_to_cell(path)
504
666
def on_main_quit(self, *args):
505
667
""" Bye bye! But first, save preferences """
626
788
""" Display the About dialog """
628
790
about = gtk.AboutDialog()
629
about.set_name(glob.name_long)
630
about.set_version(glob.version)
631
about.set_authors(glob.authors)
632
#about.set_artists(glob.artists)
791
about.set_name(pyrenamerglob.name_long)
792
about.set_version(pyrenamerglob.version)
793
about.set_authors(pyrenamerglob.authors)
794
#about.set_artists(pyrenamerglob.artists)
633
795
#about.set_translator_credits(_('translator-credits'))
634
about.set_logo(gtk.gdk.pixbuf_new_from_file(glob.icon))
635
about.set_license(glob.license)
796
about.set_logo(gtk.gdk.pixbuf_new_from_file(pyrenamerglob.icon))
797
about.set_license(pyrenamerglob.license)
636
798
about.set_wrap_license(True)
637
about.set_comments(glob.description)
638
about.set_copyright(glob.copyright)
799
about.set_comments(pyrenamerglob.description)
800
about.set_copyright(pyrenamerglob.copyright)
640
802
def openHomePage(widget,url,url2):
641
803
import webbrowser
642
804
webbrowser.open_new(url)
643
gtk.about_dialog_set_url_hook(openHomePage,glob.website)
644
about.set_website(glob.website)
805
gtk.about_dialog_set_url_hook(openHomePage,pyrenamerglob.website)
806
about.set_website(pyrenamerglob.website)