diff --git a/AO2XPbase/icons/script_edit.png b/AO2XPbase/icons/script_edit.png new file mode 100644 index 0000000..b4d31ce Binary files /dev/null and b/AO2XPbase/icons/script_edit.png differ diff --git a/gameview.py b/gameview.py index 69f0b56..8f46f92 100644 --- a/gameview.py +++ b/gameview.py @@ -1,4 +1,4 @@ -import thread, time, os, urllib, random, re , platform +import thread, time, os, urllib, random, re , platform, subprocess import charselect, ini, AOsocket, images, packets, demo, buttons from os.path import exists, basename @@ -1365,7 +1365,6 @@ class GUI(QtGui.QWidget): self.actMusicAdd = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "add.png"), "&Add new entry", self.tabMusic) self.actMusicAdd.triggered.connect(self.onActMusicAddTriggered) self.actMusicAdd.setVisible(False) - self.actMusicAdd.setDisabled(True) self.actMusicEdit = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "edit.png"), "&Edit selected entry", self.tabMusic) self.actMusicEdit.triggered.connect(self.onActMusicEditTriggered) self.actMusicEdit.setVisible(False) @@ -1374,6 +1373,9 @@ class GUI(QtGui.QWidget): self.actMusicDelete.triggered.connect(self.onActMusicDeleteTriggered) self.actMusicDelete.setVisible(False) self.actMusicDelete.setDisabled(True) + self.actMusicEditExternal = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "script_edit.png"), "Edit list in e&xternal editor", self.tabMusic) + self.actMusicEditExternal.triggered.connect(self.onActMusicEditExternalTriggered) + self.actMusicEditExternal.setVisible(False) self.actMusicRefresh = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "arrow_refresh.png"), "&Refresh list", self.tabMusic) self.actMusicRefresh.triggered.connect(self.onActMusicRefreshTriggered) self.actMusicRefresh.setVisible(False) @@ -1389,6 +1391,7 @@ class GUI(QtGui.QWidget): self.mnuMusicOptions.addAction(self.actMusicAdd) self.mnuMusicOptions.addAction(self.actMusicEdit) self.mnuMusicOptions.addAction(self.actMusicDelete) + self.mnuMusicOptions.addAction(self.actMusicEditExternal) self.mnuMusicOptions.addAction(self.actMusicRefresh) self.mnuMusicOptions.addSeparator() self.mnuMusicOptions.addAction(self.actMusicSwitchToPrivate) @@ -1881,7 +1884,6 @@ class GUI(QtGui.QWidget): def onMusicItemClicked(self, item): self.actMusicCopy.setDisabled(False) - # self.actMusicAdd.setDisabled(False) # self.actMusicEdit.setDisabled(False) # self.actMusicDelete.setDisabled(False) @@ -1895,9 +1897,8 @@ class GUI(QtGui.QWidget): def onMusicSearch(self, text): self.musicItems.clear() self.actMusicCopy.setDisabled(True) - # self.actMusicAdd.setDisabled(True) - # self.actMusicEdit.setDisabled(True) - # self.actMusicDelete.setDisabled(True) + self.actMusicEdit.setDisabled(True) + self.actMusicDelete.setDisabled(True) _musicList = self.musicListPrivate if self.privateMusicSelected else self.musicList @@ -1921,16 +1922,22 @@ class GUI(QtGui.QWidget): _item = self.musicItems.item(choice) self.musicItems.setCurrentItem(_item) self.actMusicCopy.setDisabled(False) - # self.actMusicAdd.setDisabled(False) # self.actMusicEdit.setDisabled(False) # self.actMusicDelete.setDisabled(False) self.onMusicItemDoubleClicked(_item) def onActMusicCopyTriggered(self): QtGui.QApplication.clipboard().setText(self.musicItems.currentItem().text()) - + def onActMusicAddTriggered(self): - pass + title, ok = QtGui.QInputDialog.getText(self, "Add new song", "Please enter a title for the song.") + if title and ok: + title.replace("=", "") + url, ok = QtGui.QInputDialog.getText(self, "Add new song", "Please enter an URL for the song.") + if url and ok: + with open(AO2XPpath + "music.ini", "ab") as f: + f.write(("\n" + title + " = " + url).toUtf8()) + self.onActMusicRefreshTriggered() def onActMusicEditTriggered(self): pass @@ -1938,12 +1945,20 @@ class GUI(QtGui.QWidget): def onActMusicDeleteTriggered(self): pass + def onActMusicEditExternalTriggered(self): + path = AO2XPpath + "music.ini" + if platform.system() == 'Windows': + os.startfile(path) + else: + subprocess.call(('xdg-open', path)) + def onActMusicRefreshTriggered(self, init=False): if exists(AO2XPpath + "music.ini"): self.musicListPrivate = ini.sectionless_ini_to_dict(AO2XPpath + "music.ini", QtCore.QString) if not init: self.musicItems.clear() self.loadAllMusic() + print self.musicListPrivate def onActMusicSwitchTriggered(self): self.privateMusicSelected = not self.privateMusicSelected @@ -1952,6 +1967,7 @@ class GUI(QtGui.QWidget): self.actMusicAdd.setVisible(self.privateMusicSelected) self.actMusicEdit.setVisible(self.privateMusicSelected) self.actMusicDelete.setVisible(self.privateMusicSelected) + self.actMusicEditExternal.setVisible(self.privateMusicSelected) self.actMusicRefresh.setVisible(self.privateMusicSelected) self.actMusicSwitchToGlobal.setVisible(self.privateMusicSelected) self.actMusicSwitchToPrivate.setVisible(not self.privateMusicSelected)