private music list added (early)

This commit is contained in:
cidoku 2025-10-08 19:32:47 -03:00
parent 479e380a73
commit 7716a803bc
2 changed files with 84 additions and 27 deletions

View File

@ -1373,36 +1373,44 @@ class GUI(QtGui.QWidget):
self.btnMusicOptions = QtGui.QPushButton(QtGui.QIcon(AO2XPpath + "icons/" + "cog.png"), "", self.tabMusic)
self.btnMusicOptions.setToolTip('Music options')
self.btnMusicOptions.clicked.connect(self.onMusicOptionsClicked)
self.actMusicRandom = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "control_play_blue.png"), "&Play random", self.tabMusic)
self.actMusicRandom.triggered.connect(self.onActMusicRandomTriggered)
self.actMusicCopy = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "page_copy.png"), "&Copy selected song name", self.tabMusic)
self.actMusicCopy.triggered.connect(self.onActMusicCopyTriggered)
self.actMusicCopy.setDisabled(True)
self.actMusicSeparator = QtGui.QAction(self.tabMusic)
self.actMusicSeparator.setSeparator(True)
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)
self.actMusicEdit.setDisabled(True)
self.actMusicDelete = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "delete.png"), "&Delete selected entry", self.tabMusic)
self.actMusicDelete.triggered.connect(self.onActMusicDeleteTriggered)
self.actMusicDelete.setVisible(False)
self.actMusicDelete.setDisabled(True)
self.actMusicSwitchToGlobal = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "world.png"), "&View global music list", self.tabMusic)
self.actMusicSwitchToGlobal.triggered.connect(self.onActMusicSwitchTriggered)
self.actMusicSwitchToGlobal.setVisible(False)
self.actMusicSwitchToPrivate = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "briefcase.png"), "&View private music list", self.tabMusic)
self.actMusicSwitchToPrivate.setDisabled(True)
self.actMusicSwitchToPrivate.triggered.connect(self.onActMusicSwitchTriggered)
self.mnuMusicOptions = QtGui.QMenu(self.tabMusic)
self.mnuMusicOptions.addAction(self.actMusicRandom)
self.mnuMusicOptions.addAction(self.actMusicCopy)
self.mnuMusicOptions.addAction(self.actMusicSeparator)
self.mnuMusicOptions.addAction(self.actMusicAdd)
self.mnuMusicOptions.addAction(self.actMusicEdit)
self.mnuMusicOptions.addAction(self.actMusicDelete)
self.mnuMusicOptions.addSeparator()
self.mnuMusicOptions.addAction(self.actMusicSwitchToPrivate)
self.mnuMusicOptions.addAction(self.actMusicSwitchToGlobal)
self.mnuMusicOptionsPrivate = QtGui.QMenu(self.tabMusic)
self.mnuMusicOptionsPrivate.addAction(self.actMusicRandom)
self.mnuMusicOptionsPrivate.addAction(self.actMusicCopy)
self.mnuMusicOptionsPrivate.addSeparator()
self.mnuMusicOptionsPrivate.addAction(self.actMusicAdd)
self.mnuMusicOptionsPrivate.addAction(self.actMusicEdit)
self.mnuMusicOptionsPrivate.addAction(self.actMusicDelete)
self.mnuMusicOptionsPrivate.addSeparator()
self.mnuMusicOptionsPrivate.addAction(self.actMusicSwitchToGlobal)
self.musicListPrivate = {}
if exists(AO2XPpath + "music.ini"):
self.musicListPrivate = ini.sectionless_ini_to_dict(AO2XPpath + "music.ini", QtCore.QString)
# Areas list
self.areaItems = QtGui.QListWidget()
@ -1630,7 +1638,6 @@ class GUI(QtGui.QWidget):
self.demoRecorder = None
self.demoPlaying = False
self.musicList = {}
self.musicListPrivate = {}
self.pickedMusicItem = False
self.slideEnabled = getOption("General", "slide", False) == 'True'
@ -1889,15 +1896,23 @@ class GUI(QtGui.QWidget):
def onMusicItemClicked(self, item):
self.actMusicCopy.setDisabled(False)
# self.actMusicAdd.setDisabled(False)
# self.actMusicEdit.setDisabled(False)
# self.actMusicDelete.setDisabled(False)
def onMusicItemDoubleClicked(self, item):
self.pickedMusicItem = True
_musicList = self.musicListPrivate if self.privateMusicSelected else self.musicList
self.sendMC(_musicList[item.text()])
if self.privateMusicSelected:
self.sendOOCchat(self.OOCNameInput.text().toUtf8(), "/play " + self.musicListPrivate[item.text()])
else:
self.sendMC(self.musicList[item.text()])
def onMusicSearch(self, text):
self.musicItems.clear()
self.actMusicCopy.setDisabled(True)
# self.actMusicAdd.setDisabled(True)
# self.actMusicEdit.setDisabled(True)
# self.actMusicDelete.setDisabled(True)
_musicList = self.musicListPrivate if self.privateMusicSelected else self.musicList
@ -1913,22 +1928,46 @@ class GUI(QtGui.QWidget):
self.loadAllMusic()
def onMusicOptionsClicked(self):
if self.privateMusicSelected:
self.mnuMusicOptionsPrivate.exec_(QtGui.QCursor.pos())
else:
self.mnuMusicOptions.exec_(QtGui.QCursor.pos())
self.mnuMusicOptions.exec_(QtGui.QCursor.pos())
def onActMusicRandomTriggered(self):
self.pickedMusicItem = True
_musicList = self.musicListPrivate if self.privateMusicSelected else self.musicList
_item = self.musicItems.item(random.randint(0, self.musicItems.count()))
choice = random.randint(0, self.musicItems.count() - 1)
print choice
_item = self.musicItems.item(choice)
self.musicItems.setCurrentItem(_item)
self.actMusicCopy.setDisabled(False)
self.sendMC(_musicList[_item.text()])
# 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
def onActMusicEditTriggered(self):
pass
def onActMusicDeleteTriggered(self):
pass
def onActMusicSwitchTriggered(self):
self.privateMusicSelected = not self.privateMusicSelected
self.actMusicSeparator.setVisible(self.privateMusicSelected)
self.actMusicAdd.setVisible(self.privateMusicSelected)
self.actMusicEdit.setVisible(self.privateMusicSelected)
self.actMusicDelete.setVisible(self.privateMusicSelected)
self.actMusicSwitchToGlobal.setVisible(self.privateMusicSelected)
self.actMusicSwitchToPrivate.setVisible(not self.privateMusicSelected)
self.musicItems.clear()
self.actMusicCopy.setDisabled(True)
self.loadAllMusic()
def loadBackgrounds(self):
self.backgroundItems.clear()
self.backgroundSearch.clear()
@ -3794,7 +3833,9 @@ class GUI(QtGui.QWidget):
if mus == "~stop.mp3" or not mus:
return
if not mus.endswith(".mp3") and "===MUSIC START===.mp3" in self.musicList: #vidya workaround
_musicList = self.musicListPrivate if self.privateMusicSelected else self.musicList
if not mus.endswith(".mp3") and "===MUSIC START===.mp3" in _musicList: #vidya workaround
mus += ".mp3"
musl = mus.lower()
@ -3803,7 +3844,7 @@ class GUI(QtGui.QWidget):
if exists(AOpath + 'sounds/music/' + musl):
playLocal = True
elif self.pickedMusicItem:
_musl = self.musicList[self.musicItems.currentItem().text()]
_musl = _musicList[self.musicItems.currentItem().text()]
if exists(AOpath + 'sounds/music/' + _musl):
musl = _musl
playLocal = True
@ -3891,6 +3932,8 @@ class GUI(QtGui.QWidget):
def loadAllMusic(self):
_musicList = self.musicListPrivate if self.privateMusicSelected else self.musicList
self.actMusicRandom.setDisabled(not len(_musicList.items()))
for song, fname in _musicList.items():
songitem = QtGui.QListWidgetItem()
songitem.setText(song)

14
ini.py
View File

@ -69,6 +69,20 @@ def read_sectionless_ini(file, search, default=""):
return value.lstrip()
return default
def sectionless_ini_to_dict(file, cast=unicode):
if isinstance(file, QString): file = str(file)
result = {}
with open(file) as f:
for keys in f.read().split("\n"):
if not keys or "=" not in keys: continue
key, value = keys.split("=")
result[cast(key.decode('utf-8').strip())] = value.strip()
return result
# AO 2.8
def get_img_suffix(path):