add music options, random play and copy selected track name
This commit is contained in:
parent
b4a5c289f8
commit
a00ab9f4ae
@ -4,7 +4,7 @@ self.gamewindow.setStyleSheet("")
|
|||||||
# window size is defined at the end of the file
|
# window size is defined at the end of the file
|
||||||
|
|
||||||
# IC viewport
|
# IC viewport
|
||||||
_scale = 2
|
_scale = 2.5
|
||||||
self.viewport.move(0, 0)
|
self.viewport.move(0, 0)
|
||||||
self.viewport.resize(256 * _scale, 192 * _scale)
|
self.viewport.resize(256 * _scale, 192 * _scale)
|
||||||
|
|
||||||
@ -162,13 +162,14 @@ self.btnNextEmotePage.move(viewportRight + 286, self.btnPrevEmotePage.y())
|
|||||||
self.serverTabs.setGeometry(viewportRight + 14, oocBottom + 200, 288, 258)
|
self.serverTabs.setGeometry(viewportRight + 14, oocBottom + 200, 288, 258)
|
||||||
|
|
||||||
self.musicItems.setGeometry(8, 8, 268, 184)
|
self.musicItems.setGeometry(8, 8, 268, 184)
|
||||||
self.musicSearch.setGeometry(8, self.musicItems.size().height() + 16, 268, self.musicSearch.sizeHint().height())
|
self.btnMusicOptions.setGeometry(self.musicItems.x() + self.musicItems.width() - self.btnMusicOptions.sizeHint().width(), self.musicItems.size().height() + 16, self.btnMusicOptions.sizeHint().width(), self.musicSearch.sizeHint().height())
|
||||||
|
self.musicSearch.setGeometry(8, self.btnMusicOptions.y(), self.musicItems.width() - self.btnMusicOptions.width() - 4, self.musicSearch.sizeHint().height())
|
||||||
self.foundSongItemColor = "#80ff80"
|
self.foundSongItemColor = "#80ff80"
|
||||||
|
|
||||||
self.backgroundItems.setGeometry(8, 8, 268, 184)
|
self.backgroundItems.setGeometry(8, 8, 268, 184)
|
||||||
self.backgroundSearch.setGeometry(8, self.musicItems.size().height() + 16, 268 - self.btnBackgroundsRefresh.sizeHint().width() - 20, self.musicSearch.sizeHint().height())
|
self.backgroundSearch.setGeometry(8, self.musicItems.size().height() + 16, 268 - self.btnBackgroundsRefresh.sizeHint().width() - 20, self.backgroundSearch.sizeHint().height())
|
||||||
self.btnBackgroundsRefresh.resize(self.btnBackgroundsRefresh.sizeHint())
|
self.btnBackgroundsRefresh.resize(self.btnBackgroundsRefresh.sizeHint().width(), self.backgroundSearch.height())
|
||||||
self.btnBackgroundsRefresh.move(268 - self.btnBackgroundsRefresh.sizeHint().width(), self.backgroundItems.size().height() + 16)
|
self.btnBackgroundsRefresh.move(self.backgroundItems.width() - self.btnBackgroundsRefresh.width(), self.backgroundItems.size().height() + 16)
|
||||||
|
|
||||||
self.playerItems.setGeometry(8, 8, 268, 180)
|
self.playerItems.setGeometry(8, 8, 268, 180)
|
||||||
self.btnPlayerPair.resize(self.btnPlayerPair.sizeHint())
|
self.btnPlayerPair.resize(self.btnPlayerPair.sizeHint())
|
||||||
|
|||||||
BIN
AO2XPbase/icons/cog.png
Normal file
BIN
AO2XPbase/icons/cog.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 512 B |
BIN
AO2XPbase/icons/control_play_blue.png
Normal file
BIN
AO2XPbase/icons/control_play_blue.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 717 B |
BIN
AO2XPbase/icons/page_copy.png
Normal file
BIN
AO2XPbase/icons/page_copy.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 663 B |
98
gameview.py
98
gameview.py
@ -1065,6 +1065,7 @@ class GUI(QtGui.QWidget):
|
|||||||
chatmsg = ''
|
chatmsg = ''
|
||||||
charid = -1
|
charid = -1
|
||||||
login = False
|
login = False
|
||||||
|
privateMusicSelected = False
|
||||||
privateInventorySelected = False
|
privateInventorySelected = False
|
||||||
scaling = [SCALING_AUTO, SCALING_AUTO]
|
scaling = [SCALING_AUTO, SCALING_AUTO]
|
||||||
|
|
||||||
@ -1369,6 +1370,39 @@ class GUI(QtGui.QWidget):
|
|||||||
self.musicSearch.setPlaceholderText("Search...")
|
self.musicSearch.setPlaceholderText("Search...")
|
||||||
self.musicSearch.textChanged.connect(self.onMusicSearch)
|
self.musicSearch.textChanged.connect(self.onMusicSearch)
|
||||||
self.foundSongItemColor = "background: #80FF80;"
|
self.foundSongItemColor = "background: #80FF80;"
|
||||||
|
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.actMusicAdd = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "add.png"), "&Add new entry", self.tabMusic)
|
||||||
|
self.actMusicEdit = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "edit.png"), "&Edit selected entry", self.tabMusic)
|
||||||
|
self.actMusicDelete = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "delete.png"), "&Delete selected entry", self.tabMusic)
|
||||||
|
|
||||||
|
self.actMusicSwitchToGlobal = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "world.png"), "&View global music list", self.tabMusic)
|
||||||
|
self.actMusicSwitchToPrivate = QtGui.QAction(QtGui.QIcon(AO2XPpath + "icons/" + "briefcase.png"), "&View private music list", self.tabMusic)
|
||||||
|
self.actMusicSwitchToPrivate.setDisabled(True)
|
||||||
|
|
||||||
|
self.mnuMusicOptions = QtGui.QMenu(self.tabMusic)
|
||||||
|
self.mnuMusicOptions.addAction(self.actMusicRandom)
|
||||||
|
self.mnuMusicOptions.addAction(self.actMusicCopy)
|
||||||
|
self.mnuMusicOptions.addSeparator()
|
||||||
|
self.mnuMusicOptions.addAction(self.actMusicSwitchToPrivate)
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
# Areas list
|
# Areas list
|
||||||
self.areaItems = QtGui.QListWidget()
|
self.areaItems = QtGui.QListWidget()
|
||||||
@ -1596,7 +1630,8 @@ class GUI(QtGui.QWidget):
|
|||||||
self.demoRecorder = None
|
self.demoRecorder = None
|
||||||
self.demoPlaying = False
|
self.demoPlaying = False
|
||||||
self.musicList = {}
|
self.musicList = {}
|
||||||
self.userPickedMusicItem = False
|
self.musicListPrivate = {}
|
||||||
|
self.pickedMusicItem = False
|
||||||
|
|
||||||
self.slideEnabled = getOption("General", "slide", False) == 'True'
|
self.slideEnabled = getOption("General", "slide", False) == 'True'
|
||||||
self.slideAvailable = False
|
self.slideAvailable = False
|
||||||
@ -1851,20 +1886,48 @@ class GUI(QtGui.QWidget):
|
|||||||
|
|
||||||
def onShownameChanged(self, text):
|
def onShownameChanged(self, text):
|
||||||
self.showname = str(text.toUtf8())
|
self.showname = str(text.toUtf8())
|
||||||
|
|
||||||
|
def onMusicItemClicked(self, item):
|
||||||
|
self.actMusicCopy.setDisabled(False)
|
||||||
|
|
||||||
|
def onMusicItemDoubleClicked(self, item):
|
||||||
|
self.pickedMusicItem = True
|
||||||
|
_musicList = self.musicListPrivate if self.privateMusicSelected else self.musicList
|
||||||
|
self.sendMC(_musicList[item.text()])
|
||||||
|
|
||||||
def onMusicSearch(self, text):
|
def onMusicSearch(self, text):
|
||||||
self.musicItems.clear()
|
self.musicItems.clear()
|
||||||
|
self.actMusicCopy.setDisabled(True)
|
||||||
|
|
||||||
|
_musicList = self.musicListPrivate if self.privateMusicSelected else self.musicList
|
||||||
|
|
||||||
if text:
|
if text:
|
||||||
for song, fname in self.musicList.items():
|
for song, fname in _musicList.items():
|
||||||
if QtCore.QString(fname).contains(text, QtCore.Qt.CaseInsensitive):
|
if QtCore.QString(fname).contains(text, QtCore.Qt.CaseInsensitive):
|
||||||
songitem = QtGui.QListWidgetItem()
|
songitem = QtGui.QListWidgetItem()
|
||||||
songitem.setText(song)
|
songitem.setText(song)
|
||||||
if exists(unicode(AOpath + 'sounds/music/' + fname.replace("<and>","&").lower())):
|
if not self.privateMusicSelected and exists(unicode(AOpath + 'sounds/music/' + decodeAOString(fname).lower())):
|
||||||
songitem.setBackgroundColor(QtGui.QColor(self.foundSongItemColor))
|
songitem.setBackgroundColor(QtGui.QColor(self.foundSongItemColor))
|
||||||
self.musicItems.addItem(songitem)
|
self.musicItems.addItem(songitem)
|
||||||
else:
|
else:
|
||||||
self.loadAllMusic()
|
self.loadAllMusic()
|
||||||
|
|
||||||
|
def onMusicOptionsClicked(self):
|
||||||
|
if self.privateMusicSelected:
|
||||||
|
self.mnuMusicOptionsPrivate.exec_(QtGui.QCursor.pos())
|
||||||
|
else:
|
||||||
|
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()))
|
||||||
|
self.musicItems.setCurrentItem(_item)
|
||||||
|
self.actMusicCopy.setDisabled(False)
|
||||||
|
self.sendMC(_musicList[_item.text()])
|
||||||
|
|
||||||
|
def onActMusicCopyTriggered(self):
|
||||||
|
QtGui.QApplication.clipboard().setText(self.musicItems.currentItem().text())
|
||||||
|
|
||||||
def loadBackgrounds(self):
|
def loadBackgrounds(self):
|
||||||
self.backgroundItems.clear()
|
self.backgroundItems.clear()
|
||||||
@ -2255,7 +2318,7 @@ class GUI(QtGui.QWidget):
|
|||||||
else:
|
else:
|
||||||
if self.privateInventorySelected:
|
if self.privateInventorySelected:
|
||||||
for i in range(len(evi)):
|
for i in range(len(evi)):
|
||||||
evi[i] = evi[i].replace('#', '<num>').replace('%', '<percent>').replace('&', '<and>').replace('$', '<dollar>').replace('\\n', '\n')
|
evi[i] = encodeAOString(evi[i]).replace('\\n', '\n')
|
||||||
self.tcp.send('PE#' + evi[0] + '#' + evi[1] + '#' + evi[2] + '#%')
|
self.tcp.send('PE#' + evi[0] + '#' + evi[1] + '#' + evi[2] + '#%')
|
||||||
else:
|
else:
|
||||||
self.privateEvidence.append(evi)
|
self.privateEvidence.append(evi)
|
||||||
@ -2480,13 +2543,6 @@ class GUI(QtGui.QWidget):
|
|||||||
self.demoRecorder = None
|
self.demoRecorder = None
|
||||||
self.demoPlaying = False
|
self.demoPlaying = False
|
||||||
self.stopMusic()
|
self.stopMusic()
|
||||||
|
|
||||||
def onMusicItemClicked(self, item):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def onMusicItemDoubleClicked(self, item):
|
|
||||||
self.userPickedMusicItem = True
|
|
||||||
self.sendMC(self.musicList[item.text()])
|
|
||||||
|
|
||||||
def onAreaItemClicked(self, item):
|
def onAreaItemClicked(self, item):
|
||||||
area = item.text().split('\n')[0]
|
area = item.text().split('\n')[0]
|
||||||
@ -2511,7 +2567,7 @@ class GUI(QtGui.QWidget):
|
|||||||
self.tcp.send('CT#' + name + '#' + text + '#%')
|
self.tcp.send('CT#' + name + '#' + text + '#%')
|
||||||
|
|
||||||
def onOOCReturn(self):
|
def onOOCReturn(self):
|
||||||
text = self.OOCInput.text().replace('#', '<num>').replace('%', '<percent>').replace('&', '<and>').replace('$', '<dollar>').replace('\\n', '\n')
|
text = encodeAOString(self.OOCInput.text()).replace('\\n', '\n')
|
||||||
if text.startsWith('//'):
|
if text.startsWith('//'):
|
||||||
code = str(self.OOCInput.text()).replace('//', '', 1).replace('\\NEWLINE', '\n')
|
code = str(self.OOCInput.text()).replace('//', '', 1).replace('\\NEWLINE', '\n')
|
||||||
try:
|
try:
|
||||||
@ -2551,7 +2607,7 @@ class GUI(QtGui.QWidget):
|
|||||||
self.OOCInput.clear()
|
self.OOCInput.clear()
|
||||||
|
|
||||||
def onICReturn(self):
|
def onICReturn(self):
|
||||||
text = unicode(self.ICChatInput.text()).replace('#', '<num>').replace('%', '<percent>').replace('&', '<and>').replace('$', '<dollar>')#.replace('/n', '\n')
|
text = encodeAOString(unicode(self.ICChatInput.text())) #.replace('/n', '\n')
|
||||||
|
|
||||||
if text:
|
if text:
|
||||||
if self.cbMockText.isChecked():
|
if self.cbMockText.isChecked():
|
||||||
@ -2910,7 +2966,7 @@ class GUI(QtGui.QWidget):
|
|||||||
fShowname = mChatMessage[SHOWNAME]
|
fShowname = mChatMessage[SHOWNAME]
|
||||||
|
|
||||||
if self.messageQueue:
|
if self.messageQueue:
|
||||||
chatMsgComp = (self.messageQueue[0].split('#')[5]).replace('<dollar>', '$').replace('<percent>', '%').replace('<and>', '&').replace('<num>', '#')
|
chatMsgComp = decodeAOString(self.messageQueue[0].split('#')[5])
|
||||||
examine = chatMsgComp == ">" or chatMsgComp == "<" or chatMsgComp == "="
|
examine = chatMsgComp == ">" or chatMsgComp == "<" or chatMsgComp == "="
|
||||||
special = not chatMsgComp or chatMsgComp.isspace()
|
special = not chatMsgComp or chatMsgComp.isspace()
|
||||||
if examine or (fCharId == self.myChar and (special or mChatMessage[CHATMSG] == chatMsgComp)): # our message showed up
|
if examine or (fCharId == self.myChar and (special or mChatMessage[CHATMSG] == chatMsgComp)): # our message showed up
|
||||||
@ -3746,7 +3802,7 @@ class GUI(QtGui.QWidget):
|
|||||||
|
|
||||||
if exists(AOpath + 'sounds/music/' + musl):
|
if exists(AOpath + 'sounds/music/' + musl):
|
||||||
playLocal = True
|
playLocal = True
|
||||||
elif self.userPickedMusicItem:
|
elif self.pickedMusicItem:
|
||||||
_musl = self.musicList[self.musicItems.currentItem().text()]
|
_musl = self.musicList[self.musicItems.currentItem().text()]
|
||||||
if exists(AOpath + 'sounds/music/' + _musl):
|
if exists(AOpath + 'sounds/music/' + _musl):
|
||||||
musl = _musl
|
musl = _musl
|
||||||
@ -3757,7 +3813,7 @@ class GUI(QtGui.QWidget):
|
|||||||
musl = _musl
|
musl = _musl
|
||||||
playLocal = True
|
playLocal = True
|
||||||
|
|
||||||
self.userPickedMusicItem = False
|
self.pickedMusicItem = False
|
||||||
|
|
||||||
if playLocal:
|
if playLocal:
|
||||||
if isinstance(musl, unicode):
|
if isinstance(musl, unicode):
|
||||||
@ -3833,13 +3889,13 @@ class GUI(QtGui.QWidget):
|
|||||||
audio.pauseHandle(self.music)
|
audio.pauseHandle(self.music)
|
||||||
|
|
||||||
def loadAllMusic(self):
|
def loadAllMusic(self):
|
||||||
for song, fname in self.musicList.items():
|
_musicList = self.musicListPrivate if self.privateMusicSelected else self.musicList
|
||||||
|
|
||||||
|
for song, fname in _musicList.items():
|
||||||
songitem = QtGui.QListWidgetItem()
|
songitem = QtGui.QListWidgetItem()
|
||||||
songitem.setText(song)
|
songitem.setText(song)
|
||||||
if exists(unicode(AOpath + 'sounds/music/' + fname.replace("<and>","&").lower())):
|
if not self.privateMusicSelected and exists(unicode(AOpath + 'sounds/music/' + decodeAOString(fname).lower())):
|
||||||
songitem.setBackgroundColor(QtGui.QColor(self.foundSongItemColor))
|
songitem.setBackgroundColor(QtGui.QColor(self.foundSongItemColor))
|
||||||
#else:
|
|
||||||
#songitem.setBackgroundColor(QtGui.QColor(255, 128, 128))
|
|
||||||
self.musicItems.addItem(songitem)
|
self.musicItems.addItem(songitem)
|
||||||
|
|
||||||
def loadAllEvidence(self, evi):
|
def loadAllEvidence(self, evi):
|
||||||
@ -3982,7 +4038,7 @@ class GUI(QtGui.QWidget):
|
|||||||
# We want only song names without paths or extensions in the music list
|
# We want only song names without paths or extensions in the music list
|
||||||
for song in musicList:
|
for song in musicList:
|
||||||
_basename = os.path.splitext(basename(song))
|
_basename = os.path.splitext(basename(song))
|
||||||
self.musicList[QtCore.QString(_basename[0].decode('utf-8').replace("<and>","&"))] = song.decode('utf-8')
|
self.musicList[QtCore.QString(decodeAOString(_basename[0].decode('utf-8')))] = song.decode('utf-8')
|
||||||
|
|
||||||
if "base/" in webAO_bucket:
|
if "base/" in webAO_bucket:
|
||||||
webAO_bucket = webAO_bucket.replace("base/", "")
|
webAO_bucket = webAO_bucket.replace("base/", "")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user