class PesterLogUserSelect(QtWidgets.QDialog): def __init__(self, config, theme, parent): QtWidgets.QDialog.__init__(self, parent) self.setModal(False) self.config = config self.theme = theme self.parent = parent self.handle = parent.profile().handle self.logpath = _datadir+"logs" self.setStyleSheet(self.theme["main/defaultwindow/style"]) self.setWindowTitle("Pesterlogs") instructions = QtWidgets.QLabel("Pick a memo or chumhandle:") if os.path.exists("%s/%s" % (self.logpath, self.handle)): chumMemoList = os.listdir("%s/%s/" % (self.logpath, self.handle)) else: chumMemoList = [] chumslist = config.chums() for c in chumslist: if not c in chumMemoList: chumMemoList.append(c) chumMemoList.sort() self.chumsBox = RightClickList(self) self.chumsBox.setStyleSheet(self.theme["main/chums/style"]) self.chumsBox.optionsMenu = QtWidgets.QMenu(self) for (i, t) in enumerate(chumMemoList): item = QtWidgets.QListWidgetItem(t) item.setForeground(QtGui.QBrush(QtGui.QColor(self.theme["main/chums/userlistcolor"]))) self.chumsBox.addItem(item) self.search = PesterLogSearchInput(theme, self) self.search.setFocus() self.cancel = QtWidgets.QPushButton("CANCEL", self, clicked=self.reject) self.ok = QtWidgets.QPushButton("OK", self, clicked=self.viewActivatedLog) self.ok.setDefault(True) layout_ok = QtWidgets.QHBoxLayout() layout_ok.addWidget(self.cancel) layout_ok.addWidget(self.ok) self.directory = QtWidgets.QPushButton("LOG DIRECTORY", self, clicked=self.openDir) layout_0 = QtWidgets.QVBoxLayout() layout_0.addWidget(instructions) layout_0.addWidget(self.chumsBox) layout_0.addWidget(self.search) layout_0.addLayout(layout_ok) layout_0.addWidget(self.directory) self.setLayout(layout_0) def selectedchum(self): return self.chumsBox.currentItem() def logSearch(self, search): found = self.chumsBox.findItems(search, QtCore.Qt.MatchStartsWith) if len(found) > 0 and len(found) < self.chumsBox.count(): self.chumsBox.setCurrentItem(found[0]) @QtCore.pyqtSlot() def viewActivatedLog(self): selectedchum = self.selectedchum().text() if not hasattr(self, 'pesterlogviewer'): self.pesterlogviewer = None if not self.pesterlogviewer: self.pesterlogviewer = PesterLogViewer(selectedchum, self.config, self.theme, self.parent) self.pesterlogviewer.rejected.connect(self.closeActiveLog) self.pesterlogviewer.show() self.pesterlogviewer.raise_() self.pesterlogviewer.activateWindow() self.accept() @QtCore.pyqtSlot() def closeActiveLog(self): self.pesterlogviewer.close() self.pesterlogviewer = None @QtCore.pyqtSlot() def openDir(self): QtGui.QDesktopServices.openUrl(QtCore.QUrl("file:///" + os.path.join(_datadir, "logs"), QtCore.QUrl.TolerantMode))
class PesterLogUserSelect(QtGui.QDialog): def __init__(self, config, theme, parent): QtGui.QDialog.__init__(self, parent) self.setModal(False) self.config = config self.theme = theme self.parent = parent self.handle = parent.profile().handle self.logpath = _datadir + "logs" self.setStyleSheet(self.theme["main/defaultwindow/style"]) self.setWindowTitle("Pesterlogs") instructions = QtGui.QLabel("Pick a memo or chumhandle:") if os.path.exists("%s/%s" % (self.logpath, self.handle)): chumMemoList = os.listdir("%s/%s/" % (self.logpath, self.handle)) else: chumMemoList = [] chumslist = config.chums() for c in chumslist: if not c in chumMemoList: chumMemoList.append(c) chumMemoList.sort() self.chumsBox = RightClickList(self) self.chumsBox.setStyleSheet(self.theme["main/chums/style"]) self.chumsBox.optionsMenu = QtGui.QMenu(self) for (i, t) in enumerate(chumMemoList): item = QtGui.QListWidgetItem(t) item.setTextColor( QtGui.QColor(self.theme["main/chums/userlistcolor"])) self.chumsBox.addItem(item) self.search = PesterLogSearchInput(theme, self) self.search.setFocus() self.cancel = QtGui.QPushButton("CANCEL", self) self.connect(self.cancel, QtCore.SIGNAL('clicked()'), self, QtCore.SLOT('reject()')) self.ok = QtGui.QPushButton("OK", self) self.ok.setDefault(True) self.connect(self.ok, QtCore.SIGNAL('clicked()'), self, QtCore.SLOT('viewActivatedLog()')) layout_ok = QtGui.QHBoxLayout() layout_ok.addWidget(self.cancel) layout_ok.addWidget(self.ok) self.directory = QtGui.QPushButton("LOG DIRECTORY", self) self.connect(self.directory, QtCore.SIGNAL('clicked()'), self, QtCore.SLOT('openDir()')) layout_0 = QtGui.QVBoxLayout() layout_0.addWidget(instructions) layout_0.addWidget(self.chumsBox) layout_0.addWidget(self.search) layout_0.addLayout(layout_ok) layout_0.addWidget(self.directory) self.setLayout(layout_0) def selectedchum(self): return self.chumsBox.currentItem() def logSearch(self, search): found = self.chumsBox.findItems(search, QtCore.Qt.MatchStartsWith) if len(found) > 0 and len(found) < self.chumsBox.count(): self.chumsBox.setCurrentItem(found[0]) @QtCore.pyqtSlot() def viewActivatedLog(self): selectedchum = self.selectedchum().text() if not hasattr(self, 'pesterlogviewer'): self.pesterlogviewer = None if not self.pesterlogviewer: self.pesterlogviewer = PesterLogViewer(selectedchum, self.config, self.theme, self.parent) self.connect(self.pesterlogviewer, QtCore.SIGNAL('rejected()'), self, QtCore.SLOT('closeActiveLog()')) self.pesterlogviewer.show() self.pesterlogviewer.raise_() self.pesterlogviewer.activateWindow() self.accept() @QtCore.pyqtSlot() def closeActiveLog(self): self.pesterlogviewer.close() self.pesterlogviewer = None @QtCore.pyqtSlot() def openDir(self): QtGui.QDesktopServices.openUrl( QtCore.QUrl("file:///" + os.path.join(_datadir, "logs"), QtCore.QUrl.TolerantMode))
class PesterMemoList(QtGui.QDialog): def __init__(self, parent, channel=""): QtGui.QDialog.__init__(self, parent) self.setModal(False) self.theme = parent.theme self.mainwindow = parent self.setStyleSheet(self.theme["main/defaultwindow/style"]) self.resize(200, 300) self.label = QtGui.QLabel("MEMOS") self.channelarea = RightClickList(self) self.channelarea.setStyleSheet(self.theme["main/chums/style"]) self.channelarea.optionsMenu = QtGui.QMenu(self) self.connect(self.channelarea, QtCore.SIGNAL('itemActivated(QListWidgetItem *)'), self, QtCore.SLOT('joinActivatedMemo(QListWidgetItem *)')) self.orjoinlabel = QtGui.QLabel("OR MAKE A NEW MEMO:") self.newmemo = QtGui.QLineEdit(channel, self) self.secretChannel = QtGui.QCheckBox("HIDDEN CHANNEL?", self) self.timelabel = QtGui.QLabel("TIMEFRAME:") self.timeslider = TimeSlider(QtCore.Qt.Horizontal, self) self.timeinput = TimeInput(self.timeslider, self) self.cancel = QtGui.QPushButton("CANCEL", self) self.connect(self.cancel, QtCore.SIGNAL('clicked()'), self, QtCore.SLOT('reject()')) self.join = QtGui.QPushButton("JOIN", self) self.join.setDefault(True) self.connect(self.join, QtCore.SIGNAL('clicked()'), self, QtCore.SLOT('checkEmpty()')) layout_ok = QtGui.QHBoxLayout() layout_ok.addWidget(self.cancel) layout_ok.addWidget(self.join) layout_0 = QtGui.QVBoxLayout() layout_0.addWidget(self.label) layout_0.addWidget(self.channelarea) layout_0.addWidget(self.orjoinlabel) layout_0.addWidget(self.newmemo) layout_0.addWidget(self.secretChannel) layout_0.addWidget(self.timelabel) layout_0.addWidget(self.timeslider) layout_0.addWidget(self.timeinput) layout_0.addLayout(layout_ok) self.setLayout(layout_0) def newmemoname(self): return self.newmemo.text() def selectedmemo(self): return self.channelarea.currentItem() def updateChannels(self, channels): for c in channels: item = QtGui.QListWidgetItem(c[1:]) item.setTextColor( QtGui.QColor(self.theme["main/chums/userlistcolor"])) item.setIcon(QtGui.QIcon(self.theme["memos/memoicon"])) self.channelarea.addItem(item) def updateTheme(self, theme): self.theme = theme self.setStyleSheet(theme["main/defaultwindow/style"]) for item in [ self.userarea.item(i) for i in range(0, self.channelarea.count()) ]: item.setTextColor(QtGui.QColor(theme["main/chums/userlistcolor"])) item.setIcon(QtGui.QIcon(theme["memos/memoicon"])) @QtCore.pyqtSlot() def checkEmpty(self): newmemo = self.newmemoname() selectedmemo = self.selectedmemo() if newmemo or selectedmemo: self.accept() @QtCore.pyqtSlot(QtGui.QListWidgetItem) def joinActivatedMemo(self, item): self.channelarea.setCurrentItem(item) self.accept()
class PesterMemoList(QtGui.QDialog): def __init__(self, parent, channel=""): QtGui.QDialog.__init__(self, parent) self.setModal(False) self.theme = parent.theme self.mainwindow = parent self.setStyleSheet(self.theme["main/defaultwindow/style"]) self.resize(200, 300) self.label = QtGui.QLabel("MEMOS") self.channelarea = RightClickList(self) self.channelarea.setStyleSheet(self.theme["main/chums/style"]) self.channelarea.optionsMenu = QtGui.QMenu(self) self.connect(self.channelarea, QtCore.SIGNAL('itemActivated(QListWidgetItem *)'), self, QtCore.SLOT('joinActivatedMemo(QListWidgetItem *)')) self.orjoinlabel = QtGui.QLabel("OR MAKE A NEW MEMO:") self.newmemo = QtGui.QLineEdit(channel, self) self.secretChannel = QtGui.QCheckBox("HIDDEN CHANNEL?", self) self.timelabel = QtGui.QLabel("TIMEFRAME:") self.timeslider = TimeSlider(QtCore.Qt.Horizontal, self) self.timeinput = TimeInput(self.timeslider, self) self.cancel = QtGui.QPushButton("CANCEL", self) self.connect(self.cancel, QtCore.SIGNAL('clicked()'), self, QtCore.SLOT('reject()')) self.join = QtGui.QPushButton("JOIN", self) self.join.setDefault(True) self.connect(self.join, QtCore.SIGNAL('clicked()'), self, QtCore.SLOT('checkEmpty()')) layout_ok = QtGui.QHBoxLayout() layout_ok.addWidget(self.cancel) layout_ok.addWidget(self.join) layout_0 = QtGui.QVBoxLayout() layout_0.addWidget(self.label) layout_0.addWidget(self.channelarea) layout_0.addWidget(self.orjoinlabel) layout_0.addWidget(self.newmemo) layout_0.addWidget(self.secretChannel) layout_0.addWidget(self.timelabel) layout_0.addWidget(self.timeslider) layout_0.addWidget(self.timeinput) layout_0.addLayout(layout_ok) self.setLayout(layout_0) def newmemoname(self): return self.newmemo.text() def selectedmemo(self): return self.channelarea.currentItem() def updateChannels(self, channels): for c in channels: item = QtGui.QListWidgetItem(c[1:]) item.setTextColor(QtGui.QColor(self.theme["main/chums/userlistcolor"])) item.setIcon(QtGui.QIcon(self.theme["memos/memoicon"])) self.channelarea.addItem(item) def updateTheme(self, theme): self.theme = theme self.setStyleSheet(theme["main/defaultwindow/style"]) for item in [self.userarea.item(i) for i in range(0, self.channelarea.count())]: item.setTextColor(QtGui.QColor(theme["main/chums/userlistcolor"])) item.setIcon(QtGui.QIcon(theme["memos/memoicon"])) @QtCore.pyqtSlot() def checkEmpty(self): newmemo = self.newmemoname() selectedmemo = self.selectedmemo() if newmemo or selectedmemo: self.accept() @QtCore.pyqtSlot(QtGui.QListWidgetItem) def joinActivatedMemo(self, item): self.channelarea.setCurrentItem(item) self.accept()