diff --git a/aqt/main.py b/aqt/main.py
index 7f35ea979..f8d82b196 100755
--- a/aqt/main.py
+++ b/aqt/main.py
@@ -104,6 +104,7 @@ class AnkiQt(QMainWindow):
d.connect(f.login, SIGNAL("clicked()"), self.onOpenProfile)
d.connect(f.quit, SIGNAL("clicked()"), lambda: sys.exit(0))
d.connect(f.add, SIGNAL("clicked()"), self.onAddProfile)
+ d.connect(f.rename, SIGNAL("clicked()"), self.onRenameProfile)
d.connect(f.delete_2, SIGNAL("clicked()"), self.onRemProfile)
d.connect(d, SIGNAL("rejected()"), lambda: d.close())
d.connect(f.profiles, SIGNAL("currentRowChanged(int)"),
@@ -155,6 +156,22 @@ class AnkiQt(QMainWindow):
self.pm.create(name)
self.refreshProfilesList()
+ def onRenameProfile(self):
+ name = getOnlyText("New name:", default=self.pm.name)
+ if not self.openProfile():
+ return showWarning(_("Invalid password."))
+ if not name:
+ return
+ if name == self.pm.name:
+ return
+ if name in self.pm.profiles():
+ return showWarning("Name exists.")
+ if not re.match("^[A-Za-z0-9 ]+$", name):
+ return showWarning(
+ "Only numbers, letters and spaces can be used.")
+ self.pm.rename(name)
+ self.refreshProfilesList()
+
def onRemProfile(self):
profs = self.pm.profiles()
if len(profs) < 2:
diff --git a/aqt/profiles.py b/aqt/profiles.py
index 2086bcaec..8bf1764cd 100644
--- a/aqt/profiles.py
+++ b/aqt/profiles.py
@@ -152,6 +152,16 @@ computer.""")
self.db.execute("delete from profiles where name = ?", name)
self.db.commit()
+ def rename(self, name):
+ oldFolder = self.profileFolder()
+ # update name
+ self.db.execute("update profiles set name = ? where name = ?",
+ name, self.name)
+ # rename folder
+ self.name = name
+ os.rename(oldFolder, self.profileFolder())
+ self.db.commit()
+
# Folder handling
######################################################################
diff --git a/designer/profiles.ui b/designer/profiles.ui
index 59c68f1ee..ad50960d8 100644
--- a/designer/profiles.ui
+++ b/designer/profiles.ui
@@ -60,6 +60,13 @@
+ -
+
+
+ Rename
+
+
+
-
@@ -93,6 +100,15 @@
+
+ profiles
+ passEdit
+ login
+ add
+ rename
+ delete_2
+ quit
+