close
Python Forum
Please can the Python Community revisit and renew pyRenamer.
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Please can the Python Community revisit and renew pyRenamer.
#1
Hello Everyone.

Years ago, in Xunbuntu,
I used to use the original pyRenamer,
to rename my photos off my camera,
with this date time format,
which makes the files list in correct chronological order:
YYYY MMDD HHmm ss

Then as Xubuntu and Python evolved,
pyRenamer ceased working, and I was lost,
then, I found KRename,
with which I can do the same thing.
https://userbase.kde.org/KRename

Recently, from being a complete beginner,
I have began to learn Python,
which is quite exciting for me.

So, then, with renewed interest in Python,
I remembered pyRenamer,
which I have been able to find on github,
in partially updated working version, here:
https://github.com/TheTimeTombs/pyRenamer

I have been able to download it and run it,
with some syntax warnings and gtk errors.

Please can I encourage and inspire you all,
to please revisit and renew pyRenamer,
so that it works well for now and for the future,
and is available for everyone, please ?

When I was using pyRenamer,
I always felt it was a phenomenally important software.

RSVP.
Best wishes, Micheal Jenkins.
Hollingbury. Brighton. UK.
Reply
#2
Here a "patch":

diff --git a/pyrenamer/pyrenamer.py b/pyrenamer/pyrenamer.py
index c383612..50d8af0 100755
--- a/pyrenamer/pyrenamer.py
+++ b/pyrenamer/pyrenamer.py
@@ -171,6 +171,7 @@ class pyRenamer:
 
         # Get defined signals
         signals = {
+            "on_view1_activate": self.on_view1_activate,
             "on_main_window_destroy": self.on_main_quit,
             "on_main_window_window_state_event": self.on_main_window_window_state_event,
             "on_main_window_configure_event": self.on_main_window_configure_event,
@@ -300,20 +301,20 @@ class pyRenamer:
         self.builder.get_object("subs_capitalization_combo").set_active(0)
 
         # # Init some menu items
-        self.builder.get_object("menu_rename").set_sensitive(False)
-        self.builder.get_object("menu_clear_preview").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("menu_clear_preview").set_sensitive(False)
 
         # # Init delete radio buttons
-        self.builder.get_object("delete_from").set_sensitive(False)
-        self.builder.get_object("delete_to").set_sensitive(False)
+        # self.builder.get_object("delete_from").set_sensitive(False)
+        # self.builder.get_object("delete_to").set_sensitive(False)
 
         # # Init pattern comboboxes
         self.populate_pattern_combos()
 
         # # Init the undo/redo manager
         self.undo_manager = undo.Undo()
-        self.builder.get_object("menu_undo").set_sensitive(False)
-        self.builder.get_object("menu_redo").set_sensitive(False)
+        # self.builder.get_object("menu_undo").set_sensitive(False)
+        # self.builder.get_object("menu_redo").set_sensitive(False)
 
     def create_selected_files_treeview(self):
         """Create the TreeView and the ScrolledWindow for the selected
@@ -553,6 +554,10 @@ class pyRenamer:
     # ---------------------------------------------------------------------------------------
     # Callbacks
 
+    def on_view1_activate(self, widget):
+        """I don't know for what this is..."""
+        print(widget)
+
     def on_selected_files_cursor_changed(self, treeview):
         """Clicked a file"""
 
@@ -618,11 +623,11 @@ class pyRenamer:
         self.file_selected_model.foreach(self.preview_rename_rows, paths)
 
         self.selected_files.columns_autosize()
-        self.builder.get_object("clear_button").set_sensitive(True)
-        self.builder.get_object("menu_clear_preview").set_sensitive(True)
-        self.builder.get_object("rename_button").set_sensitive(True)
-        self.builder.get_object("menu_rename").set_sensitive(True)
-        self.file_selected_model.foreach(self.enable_rename_and_clean)
+        # self.builder.get_object("clear_button").set_sensitive(True)
+        # self.builder.get_object("menu_clear_preview").set_sensitive(True)
+        # self.builder.get_object("rename_button").set_sensitive(True)
+        # self.builder.get_object("menu_rename").set_sensitive(True)
+        # self.file_selected_model.foreach(self.enable_rename_and_clean)
 
     def on_clean_button_clicked(self, widget):
         """Clean the previewed filenames"""
@@ -721,15 +726,15 @@ class pyRenamer:
 
     def on_subs_spaces_combo_changed(self, widget):
         """Disable Rename button (user has to click on Preview again)"""
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
         if self.autopreview:
             self.on_preview_button_clicked(None)
 
     def on_subs_capitalization_combo_changed(self, widget):
         """Disable Rename button (user has to click on Preview again)"""
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
         if self.autopreview:
             self.on_preview_button_clicked(None)
 
diff --git a/pyrenamer/tools/filetools.py b/pyrenamer/tools/filetools.py
index 9d2d8dc..6aa815f 100644
--- a/pyrenamer/tools/filetools.py
+++ b/pyrenamer/tools/filetools.py
@@ -259,17 +259,17 @@ def rename_using_patterns(name, path, pattern_ini, pattern_end, count, ext=""):
     pattern = pattern_ini
     newname = pattern_end
 
-    pattern = pattern.replace(".", "\.")
-    pattern = pattern.replace("[", "\[")
-    pattern = pattern.replace("]", "\]")
-    pattern = pattern.replace("(", "\(")
-    pattern = pattern.replace(")", "\)")
-    pattern = pattern.replace("?", "\?")
-    pattern = pattern.replace("{#}", "([0-9]*)")
-    pattern = pattern.replace("{L}", "([a-zA-Z]*)")
-    pattern = pattern.replace("{C}", "([\S]*)")
-    pattern = pattern.replace("{X}", "([\S\s]*)")
-    pattern = pattern.replace("{@}", "(.*)")
+    pattern = pattern.replace(".", r"\.")
+    pattern = pattern.replace("[", r"\[")
+    pattern = pattern.replace("]", r"\]")
+    pattern = pattern.replace("(", r"\(")
+    pattern = pattern.replace(")", r"\)")
+    pattern = pattern.replace("?", r"\?")
+    pattern = pattern.replace("{#}", r"([0-9]*)")
+    pattern = pattern.replace("{L}", r"([a-zA-Z]*)")
+    pattern = pattern.replace("{C}", r"([\S]*)")
+    pattern = pattern.replace("{X}", r"([\S\s]*)")
+    pattern = pattern.replace("{@}", r"(.*)")
 
     try:
         repattern = re.compile(pattern)
@@ -289,7 +289,7 @@ def rename_using_patterns(name, path, pattern_ini, pattern_end, count, ext=""):
     # If {num2} the number will be 02
     # If {num3+10} the number will be 010
     count = repr(count)
-    cr = re.compile("{(num)([0-9]*)}|{(num)([0-9]*)(\+)([0-9]*)}")
+    cr = re.compile(r"{(num)([0-9]*)}|{(num)([0-9]*)(\+)([0-9]*)}")
     try:
         cg = cr.search(newname).groups()
         if len(cg) == 6:
@@ -387,10 +387,10 @@ def rename_using_patterns(name, path, pattern_ini, pattern_end, count, ext=""):
     # ie. {rand20,5} will be a number between 0 and 20 of 5 digits (00012)
     rnd = ""
     cr = re.compile(
-        "{(rand)([0-9]*)}"
-        "|{(rand)([0-9]*)(\-)([0-9]*)}"
-        "|{(rand)([0-9]*)(\,)([0-9]*)}"
-        "|{(rand)([0-9]*)(\-)([0-9]*)(\,)([0-9]*)}"
+        r"{(rand)([0-9]*)}"
+        r"|{(rand)([0-9]*)(\-)([0-9]*)}"
+        r"|{(rand)([0-9]*)(\,)([0-9]*)}"
+        r"|{(rand)([0-9]*)(\-)([0-9]*)(\,)([0-9]*)}"
     )
     try:
         cg = cr.search(newname).groups()
diff --git a/pyrenamer/pyrenamer.py b/pyrenamer/pyrenamer.py
index c383612..1aa5b15 100755
--- a/pyrenamer/pyrenamer.py
+++ b/pyrenamer/pyrenamer.py
@@ -171,6 +171,7 @@ class pyRenamer:
 
         # Get defined signals
         signals = {
+            "on_view1_activate": self.on_view1_activate,
             "on_main_window_destroy": self.on_main_quit,
             "on_main_window_window_state_event": self.on_main_window_window_state_event,
             "on_main_window_configure_event": self.on_main_window_configure_event,
@@ -300,20 +301,20 @@ class pyRenamer:
         self.builder.get_object("subs_capitalization_combo").set_active(0)
 
         # # Init some menu items
-        self.builder.get_object("menu_rename").set_sensitive(False)
-        self.builder.get_object("menu_clear_preview").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("menu_clear_preview").set_sensitive(False)
 
         # # Init delete radio buttons
-        self.builder.get_object("delete_from").set_sensitive(False)
-        self.builder.get_object("delete_to").set_sensitive(False)
+        # self.builder.get_object("delete_from").set_sensitive(False)
+        # self.builder.get_object("delete_to").set_sensitive(False)
 
         # # Init pattern comboboxes
         self.populate_pattern_combos()
 
         # # Init the undo/redo manager
         self.undo_manager = undo.Undo()
-        self.builder.get_object("menu_undo").set_sensitive(False)
-        self.builder.get_object("menu_redo").set_sensitive(False)
+        # self.builder.get_object("menu_undo").set_sensitive(False)
+        # self.builder.get_object("menu_redo").set_sensitive(False)
 
     def create_selected_files_treeview(self):
         """Create the TreeView and the ScrolledWindow for the selected
@@ -543,16 +544,20 @@ class pyRenamer:
         else:
             prev = False
 
-        self.builder.get_object("rename_button").set_sensitive(val or prev)
-        self.builder.get_object("menu_rename").set_sensitive(val or prev)
-        self.builder.get_object("clear_button").set_sensitive(val or prev)
-        self.builder.get_object("menu_clear_preview").set_sensitive(val or prev)
+        # self.builder.get_object("rename_button").set_sensitive(val or prev)
+        # self.builder.get_object("menu_rename").set_sensitive(val or prev)
+        # self.builder.get_object("clear_button").set_sensitive(val or prev)
+        # self.builder.get_object("menu_clear_preview").set_sensitive(val or prev)
 
         return False
 
     # ---------------------------------------------------------------------------------------
     # Callbacks
 
+    def on_view1_activate(self, widget):
+        """I don't know for what this is..."""
+        print(widget)
+
     def on_selected_files_cursor_changed(self, treeview):
         """Clicked a file"""
 
@@ -598,14 +603,14 @@ class pyRenamer:
         """For everyrow rename the files as requested"""
 
         self.undo_manager.clean()
-        self.builder.get_object("menu_undo").set_sensitive(True)
-        self.builder.get_object("menu_redo").set_sensitive(False)
+        # self.builder.get_object("menu_undo").set_sensitive(True)
+        # self.builder.get_object("menu_redo").set_sensitive(False)
         self.file_selected_model.foreach(self.rename_rows, None)
         self.dir_reload_current()
-        self.builder.get_object("clear_button").set_sensitive(False)
-        self.builder.get_object("menu_clear_preview").set_sensitive(False)
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("clear_button").set_sensitive(False)
+        # self.builder.get_object("menu_clear_preview").set_sensitive(False)
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
         self.ignore_errors = False
 
     def on_preview_button_clicked(self, widget):
@@ -618,11 +623,11 @@ class pyRenamer:
         self.file_selected_model.foreach(self.preview_rename_rows, paths)
 
         self.selected_files.columns_autosize()
-        self.builder.get_object("clear_button").set_sensitive(True)
-        self.builder.get_object("menu_clear_preview").set_sensitive(True)
-        self.builder.get_object("rename_button").set_sensitive(True)
-        self.builder.get_object("menu_rename").set_sensitive(True)
-        self.file_selected_model.foreach(self.enable_rename_and_clean)
+        # self.builder.get_object("clear_button").set_sensitive(True)
+        # self.builder.get_object("menu_clear_preview").set_sensitive(True)
+        # self.builder.get_object("rename_button").set_sensitive(True)
+        # self.builder.get_object("menu_rename").set_sensitive(True)
+        # self.file_selected_model.foreach(self.enable_rename_and_clean)
 
     def on_clean_button_clicked(self, widget):
         """Clean the previewed filenames"""
@@ -679,140 +684,140 @@ class pyRenamer:
 
     def on_original_pattern_changed(self, widget):
         """Reload current dir and disable Rename button"""
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
         if self.autopreview:
             self.on_preview_button_clicked(None)
 
     def on_renamed_pattern_changed(self, widget):
         """Disable Rename button (user has to click on Preview again)"""
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
         if self.autopreview:
             self.on_preview_button_clicked(None)
 
     def on_subs_spaces_toggled(self, widget):
         """Enable/Disable spaces combo"""
-        self.builder.get_object("subs_spaces_combo").set_sensitive(widget.get_active())
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("subs_spaces_combo").set_sensitive(widget.get_active())
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
         if self.autopreview:
             self.on_preview_button_clicked(None)
 
     def on_subs_capitalization_toggled(self, widget):
         """Enable/Disable caps combo"""
-        self.builder.get_object("subs_capitalization_combo").set_sensitive(
-            widget.get_active()
-        )
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("subs_capitalization_combo").set_sensitive(
+        #     widget.get_active()
+        # )
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
         if self.autopreview:
             self.on_preview_button_clicked(None)
 
     def on_subs_replace_toggled(self, widget):
         """Enable/Disable replace with text entries"""
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
-        self.builder.get_object("subs_replace_new").set_sensitive(widget.get_active())
-        self.builder.get_object("subs_replace_orig").set_sensitive(widget.get_active())
-        self.builder.get_object("subs_replace_label").set_sensitive(widget.get_active())
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("subs_replace_new").set_sensitive(widget.get_active())
+        # self.builder.get_object("subs_replace_orig").set_sensitive(widget.get_active())
+        # self.builder.get_object("subs_replace_label").set_sensitive(widget.get_active())
         if self.autopreview:
             self.on_preview_button_clicked(None)
 
     def on_subs_spaces_combo_changed(self, widget):
         """Disable Rename button (user has to click on Preview again)"""
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
         if self.autopreview:
             self.on_preview_button_clicked(None)
 
     def on_subs_capitalization_combo_changed(self, widget):
         """Disable Rename button (user has to click on Preview again)"""
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
         if self.autopreview:
             self.on_preview_button_clicked(None)
 
     def on_subs_replace_orig_changed(self, widget):
         """Disable Rename button (user has to click on Preview again)"""
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
         if self.autopreview:
             self.on_preview_button_clicked(None)
 
     def on_subs_replace_new_changed(self, widget):
         """Disable Rename button (user has to click on Preview again)"""
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
         if self.autopreview:
             self.on_preview_button_clicked(None)
 
     def on_subs_accents_toggled(self, widget):
         """Enable/Disable accents"""
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
         if self.autopreview:
             self.on_preview_button_clicked(None)
 
     def on_subs_duplicated_toggled(self, widget):
         """Fixes duplicated symbols"""
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
         if self.autopreview:
             self.on_preview_button_clicked(None)
 
     def on_insert_radio_toggled(self, widget):
         """Disable Rename button (user has to click on Preview again)"""
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
-        self.builder.get_object("insert_entry").set_sensitive(True)
-        self.builder.get_object("insert_pos").set_sensitive(True)
-        self.builder.get_object("insert_end").set_sensitive(True)
-        self.builder.get_object("delete_from").set_sensitive(False)
-        self.builder.get_object("delete_to").set_sensitive(False)
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("insert_entry").set_sensitive(True)
+        # self.builder.get_object("insert_pos").set_sensitive(True)
+        # self.builder.get_object("insert_end").set_sensitive(True)
+        # self.builder.get_object("delete_from").set_sensitive(False)
+        # self.builder.get_object("delete_to").set_sensitive(False)
         if self.autopreview:
             self.on_preview_button_clicked(None)
 
     def on_insert_entry_changed(self, widget):
         """Disable Rename button (user has to click on Preview again)"""
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
         if self.autopreview:
             self.on_preview_button_clicked(None)
 
     def on_insert_pos_changed(self, widget):
         """Disable Rename button (user has to click on Preview again)"""
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
         if self.autopreview:
             self.on_preview_button_clicked(None)
 
     def on_insert_end_toggled(self, widget):
         """Disable Rename button (user has to click on Preview again)"""
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
-        self.builder.get_object("insert_pos").set_sensitive(
-            not self.builder.get_object("insert_end").get_active()
-        )
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("insert_pos").set_sensitive(
+        #     not self.builder.get_object("insert_end").get_active()
+        # )
         if self.autopreview:
             self.on_preview_button_clicked(None)
 
     def on_delete_radio_toggled(self, widget):
         """Disable Rename button (user has to click on Preview again)"""
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
-        self.builder.get_object("delete_from").set_sensitive(True)
-        self.builder.get_object("delete_to").set_sensitive(True)
-        self.builder.get_object("insert_entry").set_sensitive(False)
-        self.builder.get_object("insert_pos").set_sensitive(False)
-        self.builder.get_object("insert_end").set_sensitive(False)
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("delete_from").set_sensitive(True)
+        # self.builder.get_object("delete_to").set_sensitive(True)
+        # self.builder.get_object("insert_entry").set_sensitive(False)
+        # self.builder.get_object("insert_pos").set_sensitive(False)
+        # self.builder.get_object("insert_end").set_sensitive(False)
         if self.autopreview:
             self.on_preview_button_clicked(None)
 
     def on_delete_from_changed(self, widget):
         """Disable Rename button (user has to click on Preview again)"""
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
         if (
             self.builder.get_object("delete_from").get_value()
             > self.builder.get_object("delete_to").get_value()
@@ -825,8 +830,8 @@ class pyRenamer:
 
     def on_delete_to_changed(self, widget):
         """Disable Rename button (user has to click on Preview again)"""
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
         if (
             self.builder.get_object("delete_to").get_value()
             < self.builder.get_object("delete_from").get_value()
@@ -839,8 +844,8 @@ class pyRenamer:
 
     def on_manual_changed(self, widget):
         """Disable Rename button (user has to click on Preview again)"""
-        self.builder.get_object("rename_button").set_sensitive(False)
-        self.builder.get_object("menu_rename").set_sensitive(False)
+        # self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("menu_rename").set_sensitive(False)
         if self.autopreview:
             self.on_preview_button_clicked(None)
 
@@ -1148,8 +1153,8 @@ class pyRenamer:
         self.populate_stop()
 
         self.stop_button.show()
-        self.builder.get_object("clear_button").set_sensitive(False)
-        self.builder.get_object("rename_button").set_sensitive(False)
+        # self.builder.get_object("clear_button").set_sensitive(False)
+        # self.builder.get_object("rename_button").set_sensitive(False)
         self.file_selected_model.clear()
 
         while Gtk.events_pending():
@@ -1278,10 +1283,10 @@ class pyRenamer:
         self.selected_files.set_model(self.file_selected_model)
 
         self.selected_files.columns_autosize()
-        self.builder.get_object("clear_button").set_sensitive(True)
-        self.builder.get_object("menu_clear_preview").set_sensitive(True)
-        self.builder.get_object("rename_button").set_sensitive(True)
-        self.builder.get_object("menu_rename").set_sensitive(True)
+        # self.builder.get_object("clear_button").set_sensitive(True)
+        # self.builder.get_object("menu_clear_preview").set_sensitive(True)
+        # self.builder.get_object("rename_button").set_sensitive(True)
+        # self.builder.get_object("menu_rename").set_sensitive(True)
 
         f.close()
 
diff --git a/pyrenamer/tools/filetools.py b/pyrenamer/tools/filetools.py
index 9d2d8dc..6aa815f 100644
--- a/pyrenamer/tools/filetools.py
+++ b/pyrenamer/tools/filetools.py
@@ -259,17 +259,17 @@ def rename_using_patterns(name, path, pattern_ini, pattern_end, count, ext=""):
     pattern = pattern_ini
     newname = pattern_end
 
-    pattern = pattern.replace(".", "\.")
-    pattern = pattern.replace("[", "\[")
-    pattern = pattern.replace("]", "\]")
-    pattern = pattern.replace("(", "\(")
-    pattern = pattern.replace(")", "\)")
-    pattern = pattern.replace("?", "\?")
-    pattern = pattern.replace("{#}", "([0-9]*)")
-    pattern = pattern.replace("{L}", "([a-zA-Z]*)")
-    pattern = pattern.replace("{C}", "([\S]*)")
-    pattern = pattern.replace("{X}", "([\S\s]*)")
-    pattern = pattern.replace("{@}", "(.*)")
+    pattern = pattern.replace(".", r"\.")
+    pattern = pattern.replace("[", r"\[")
+    pattern = pattern.replace("]", r"\]")
+    pattern = pattern.replace("(", r"\(")
+    pattern = pattern.replace(")", r"\)")
+    pattern = pattern.replace("?", r"\?")
+    pattern = pattern.replace("{#}", r"([0-9]*)")
+    pattern = pattern.replace("{L}", r"([a-zA-Z]*)")
+    pattern = pattern.replace("{C}", r"([\S]*)")
+    pattern = pattern.replace("{X}", r"([\S\s]*)")
+    pattern = pattern.replace("{@}", r"(.*)")
 
     try:
         repattern = re.compile(pattern)
@@ -289,7 +289,7 @@ def rename_using_patterns(name, path, pattern_ini, pattern_end, count, ext=""):
     # If {num2} the number will be 02
     # If {num3+10} the number will be 010
     count = repr(count)
-    cr = re.compile("{(num)([0-9]*)}|{(num)([0-9]*)(\+)([0-9]*)}")
+    cr = re.compile(r"{(num)([0-9]*)}|{(num)([0-9]*)(\+)([0-9]*)}")
     try:
         cg = cr.search(newname).groups()
         if len(cg) == 6:
@@ -387,10 +387,10 @@ def rename_using_patterns(name, path, pattern_ini, pattern_end, count, ext=""):
     # ie. {rand20,5} will be a number between 0 and 20 of 5 digits (00012)
     rnd = ""
     cr = re.compile(
-        "{(rand)([0-9]*)}"
-        "|{(rand)([0-9]*)(\-)([0-9]*)}"
-        "|{(rand)([0-9]*)(\,)([0-9]*)}"
-        "|{(rand)([0-9]*)(\-)([0-9]*)(\,)([0-9]*)}"
+        r"{(rand)([0-9]*)}"
+        r"|{(rand)([0-9]*)(\-)([0-9]*)}"
+        r"|{(rand)([0-9]*)(\,)([0-9]*)}"
+        r"|{(rand)([0-9]*)(\-)([0-9]*)(\,)([0-9]*)}"
     )
     try:
         cg = cr.search(newname).groups()
I never worked with PyGObject. I just fixed the missing raw-Strings and removed set_sensitive. Maybe I missed some of them. I don't know what set_sensitive does, but there should be a replacement.
ukmjenkins likes this post
Almost dead, but too lazy to die: https://sourceserver.info
All humans together. We don't need politicians!
Reply
#3
FYI: To install a python patch, use pypatch which you can install using: pip install pypatch
You can find usageinstructions here
ukmjenkins likes this post
Reply
#4
Hello DeaD_EyE.
Thank you for your interest and your input.
Please may I ask,
did you manually read the Python script,
then manually work to create this patch, please ?
Thank you for doing this !
Have you tested this patch yourself ?
I am very new to Python.
I will try to follow,
the next respondent's Larz60+'s instructions,
for how to apply a patch.
Best wishes, Michael.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Hello python community! eddiemyson 8 5,637 Jun-20-2020, 08:37 PM
Last Post: Larz60+

Forum Jump:
Image

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020