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
|
||||
|
||||
# IC viewport
|
||||
_scale = 2
|
||||
_scale = 2.5
|
||||
self.viewport.move(0, 0)
|
||||
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.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.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.btnBackgroundsRefresh.resize(self.btnBackgroundsRefresh.sizeHint())
|
||||
self.btnBackgroundsRefresh.move(268 - self.btnBackgroundsRefresh.sizeHint().width(), self.backgroundItems.size().height() + 16)
|
||||
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().width(), self.backgroundSearch.height())
|
||||
self.btnBackgroundsRefresh.move(self.backgroundItems.width() - self.btnBackgroundsRefresh.width(), self.backgroundItems.size().height() + 16)
|
||||
|
||||
self.playerItems.setGeometry(8, 8, 268, 180)
|
||||
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 = ''
|
||||
charid = -1
|
||||
login = False
|
||||
privateMusicSelected = False
|
||||
privateInventorySelected = False
|
||||
scaling = [SCALING_AUTO, SCALING_AUTO]
|
||||
|
||||
@ -1369,6 +1370,39 @@ class GUI(QtGui.QWidget):
|
||||
self.musicSearch.setPlaceholderText("Search...")
|
||||
self.musicSearch.textChanged.connect(self.onMusicSearch)
|
||||
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
|
||||
self.areaItems = QtGui.QListWidget()
|
||||
@ -1596,7 +1630,8 @@ class GUI(QtGui.QWidget):
|
||||
self.demoRecorder = None
|
||||
self.demoPlaying = False
|
||||
self.musicList = {}
|
||||
self.userPickedMusicItem = False
|
||||
self.musicListPrivate = {}
|
||||
self.pickedMusicItem = False
|
||||
|
||||
self.slideEnabled = getOption("General", "slide", False) == 'True'
|
||||
self.slideAvailable = False
|
||||
@ -1852,20 +1887,48 @@ class GUI(QtGui.QWidget):
|
||||
def onShownameChanged(self, text):
|
||||
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):
|
||||
self.musicItems.clear()
|
||||
self.actMusicCopy.setDisabled(True)
|
||||
|
||||
_musicList = self.musicListPrivate if self.privateMusicSelected else self.musicList
|
||||
|
||||
if text:
|
||||
for song, fname in self.musicList.items():
|
||||
for song, fname in _musicList.items():
|
||||
if QtCore.QString(fname).contains(text, QtCore.Qt.CaseInsensitive):
|
||||
songitem = QtGui.QListWidgetItem()
|
||||
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))
|
||||
self.musicItems.addItem(songitem)
|
||||
else:
|
||||
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):
|
||||
self.backgroundItems.clear()
|
||||
self.backgroundSearch.clear()
|
||||
@ -2255,7 +2318,7 @@ class GUI(QtGui.QWidget):
|
||||
else:
|
||||
if self.privateInventorySelected:
|
||||
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] + '#%')
|
||||
else:
|
||||
self.privateEvidence.append(evi)
|
||||
@ -2481,13 +2544,6 @@ class GUI(QtGui.QWidget):
|
||||
self.demoPlaying = False
|
||||
self.stopMusic()
|
||||
|
||||
def onMusicItemClicked(self, item):
|
||||
pass
|
||||
|
||||
def onMusicItemDoubleClicked(self, item):
|
||||
self.userPickedMusicItem = True
|
||||
self.sendMC(self.musicList[item.text()])
|
||||
|
||||
def onAreaItemClicked(self, item):
|
||||
area = item.text().split('\n')[0]
|
||||
self.sendMC(area)
|
||||
@ -2511,7 +2567,7 @@ class GUI(QtGui.QWidget):
|
||||
self.tcp.send('CT#' + name + '#' + text + '#%')
|
||||
|
||||
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('//'):
|
||||
code = str(self.OOCInput.text()).replace('//', '', 1).replace('\\NEWLINE', '\n')
|
||||
try:
|
||||
@ -2551,7 +2607,7 @@ class GUI(QtGui.QWidget):
|
||||
self.OOCInput.clear()
|
||||
|
||||
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 self.cbMockText.isChecked():
|
||||
@ -2910,7 +2966,7 @@ class GUI(QtGui.QWidget):
|
||||
fShowname = mChatMessage[SHOWNAME]
|
||||
|
||||
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 == "="
|
||||
special = not chatMsgComp or chatMsgComp.isspace()
|
||||
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):
|
||||
playLocal = True
|
||||
elif self.userPickedMusicItem:
|
||||
elif self.pickedMusicItem:
|
||||
_musl = self.musicList[self.musicItems.currentItem().text()]
|
||||
if exists(AOpath + 'sounds/music/' + _musl):
|
||||
musl = _musl
|
||||
@ -3757,7 +3813,7 @@ class GUI(QtGui.QWidget):
|
||||
musl = _musl
|
||||
playLocal = True
|
||||
|
||||
self.userPickedMusicItem = False
|
||||
self.pickedMusicItem = False
|
||||
|
||||
if playLocal:
|
||||
if isinstance(musl, unicode):
|
||||
@ -3833,13 +3889,13 @@ class GUI(QtGui.QWidget):
|
||||
audio.pauseHandle(self.music)
|
||||
|
||||
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.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))
|
||||
#else:
|
||||
#songitem.setBackgroundColor(QtGui.QColor(255, 128, 128))
|
||||
self.musicItems.addItem(songitem)
|
||||
|
||||
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
|
||||
for song in musicList:
|
||||
_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:
|
||||
webAO_bucket = webAO_bucket.replace("base/", "")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user