Source code for stdcomQtPjanice

import sys, re
import argparse

try:
    from PyQt5.QtSvg import QSvgWidget
except ImportError:
    QSvgWidget = None


try :
    from pjanicesimple import *
    from stdcomQt import *
    from stdcomutilitywidgets import *

except:
    from stdcomQt.pjanicesimple import *
    from stdcomQt.stdcomQt import *
    from stdcomQt.stdcomutilitywidgets import *

from PyQt5.QtWidgets import QDialog, QApplication, QTabWidget, QTableWidgetItem, QCheckBox
from PyQt5.QtCore import QSettings, QVariant, Qt, QEvent
from PyQt5.Qt import pyqtSlot, pyqtSignal

[docs]class pjanicesimpleGeneric(QWidget): """ Stec Pjanice Widget, but with trees not list. """ sigSelectedNewData = pyqtSignal(str, list) sigNewNameSelected = pyqtSignal(str) sigNewNameDescSelected = pyqtSignal(str,str) sigRightMouseClick = pyqtSignal() sigLeftMouseClick = pyqtSignal() selected = False cBridge = None currentSub = None suspectTable = False def __init__(self, cBridge: stecQSocket = None, parent = None): """ :param cBridge: or None, this will create one. :param parent: or None """ super().__init__(parent) self.ui = Ui_pJaniceSimple() self.ui.setupUi(self) self.show() if cBridge is None : self.cBridge = stecQSocket() else: self.cBridge = cBridge self.show() self.treeViewTags = StecTreeMorph(self.ui.treeWidgetUI, ["Stec"], self) self.treeViewTags.newTextSignal.connect(self.slotSelected) self.ui.tableWidgetData.itemChanged.connect(self.on_any_itemChanged) self.alternativeIgnore = None tags = self.cBridge.getNames() if tags is not None or len(tags) > 0: self.treeViewTags.AddNames(tags) self.cBridge.sigNewNames.connect(self.slotNames)
[docs] def mousePressEvent(self, event): super().mousePressEvent( event) if event.button() == QtCore.Qt.RightButton: self.sigRightMouseClick.emit() else: self.sigLeftMouseClick.emit()
[docs] def getcBridge(self): """ return the current cBridge, the stdcomPyQt which is the qt version of the stdcom """ return self.cBridge
def newDesc(self, name, desc): print(name, desc)
[docs] def newData(self, name, data): """ Internal use :param name: :param data: :return: """ self.ui.tableWidgetData.clear() self.ui.tableWidgetData.setRowCount(len(data)) self.ui.tableWidgetData.setColumnCount(1) self.suspectTable = True for i in range(0, len(data)): d = QTableWidgetItem(str(data[i])) self.ui.tableWidgetData.setItem(i, 0, d) self.suspectTable = False self.sigSelectedNewData.emit(name,data)
[docs] @pyqtSlot(str, str) def slotDesc(self, name, desc): """ internal use """ self.treeViewTags.AddDesc(name, desc) if name == self.currentSub: self.ui.plainTextEditDesc.clear() self.ui.plainTextEditDesc.insertPlainText(desc) self.sigNewNameDescSelected.emit(name, desc)
[docs] @pyqtSlot(list) def slotNames(self, names): """ internal use """ self.treeViewTags.AddNames(names)
[docs] @pyqtSlot(str, str) def slotSelected(self, name, desc): """ selected slot, it tree item is clicked """ self.ui.tableWidgetData.clear() if self.currentSub is not None : if name != self.currentSub.Name() : self.currentSub.deleteLater() self.currentSub = None if self.currentSub is None : self.currentSub = Subscriber(name, self.cBridge,self.newData, self.newDesc ) self.ui.lineEditTag.setText(name) self.ui.plainTextEditDesc.clear() desc = self.currentSub.Desc() self.ui.plainTextEditDesc.clear() if desc is not None and desc != "": self.ui.plainTextEditDesc.insertPlainText(desc) self.sigNewNameDescSelected.emit(name,desc) else: self.ui.plainTextEditDesc.insertPlainText("Needs to Be Made Malcolm Proof") self.sigNewNameSelected.emit(name)
[docs] @pyqtSlot(QTableWidgetItem) def on_any_itemChanged(self, itm: QTableWidgetItem): """ when any item is clicked """ c = itm.column() r = itm.row() if self.suspectTable is False: if self.currentSub is not None: Data = self.currentSub.Data() print("Changed R/C ", r, "/", c, itm.text()) if Data is not None and r < len(Data): Data[r] = itm.text() self.currentSub.UpdateData(Data)
[docs] @pyqtSlot() def addRow(self): """ adds a row to table """ rows = self.ui.tableWidgetLiveTags.rowCount() self.ui.tableWidgetLiveTags.setRowCount(rows + 1)
@pyqtSlot() def reset(self, ip : str = "localhost", port: int = 4897): self.cBridge.SlotNewHost(ip, port) self.treeViewTags.clear() tags = self.cBridge.getNames() if tags is None or len(tags) == 0: tags = ["Stec"] else: self.treeViewTags.AddNames(tags)
if __name__ == "__main__": """ bumped version """ my_parser = argparse.ArgumentParser( description= "Version " + stdcomQtVersion + " Stec Pjanice Python Version") # Add the arguments my_parser.add_argument('-p','--project', metavar='project', required=False) args = my_parser.parse_args() nextProject = args.project app = QApplication(sys.argv) window = pjanicesimpleGeneric() cBridge = window.getcBridge() window.setWindowTitle("Stec PJanice Viewer") window.show() # IMPORTANT!!!!! Windows are hidden by default. # Start the event loop. app.exec_() if cBridge != None: cBridge.quit()