Exemple #1
0
 def ItemsToRepopulate(self) -> List:
     if self.dataType is DataType.VALVE:
         return AppGlobals.Chip().valves
     if self.dataType is DataType.PROGRAM:
         return AppGlobals.Chip().programs
     if self.dataType is DataType.PROGRAM_PRESET:
         return AppGlobals.Chip().programPresets
Exemple #2
0
    def Duplicate(self) -> 'ChipItem':
        newValve = Valve()
        newValve.position = QPointF(self._valve.position)
        newValve.name = self._valve.name
        newValve.solenoidNumber = AppGlobals.Chip().NextSolenoidNumber()

        AppGlobals.Chip().valves.append(newValve)
        AppGlobals.Instance().onChipModified.emit()
        return ValveChipItem(newValve)
Exemple #3
0
 def SyncInstances(self):
     for program in AppGlobals.Chip().programs:
         if program not in self._instances:
             self._instances[program] = ProgramInstance(program)
     for program in self._instances.copy():
         if program not in AppGlobals.Chip().programs:
             del self._instances[program]
         else:
             self._instances[program].SyncParameters()
     self.RefreshList()
Exemple #4
0
 def UpdateTitle(self):
     title = AppGlobals.Chip().path
     if title:
         title = title.stem
     else:
         title = "New Chip"
     if AppGlobals.Chip().modified:
         title += "*"
     title += " - uChip"
     self.setWindowTitle(title)
Exemple #5
0
    def LoadChip(self):
        self.viewer.RemoveAll()

        for valve in AppGlobals.Chip().valves:
            self.viewer.AddItem(ValveChipItem(valve))
        for image in AppGlobals.Chip().images:
            self.viewer.AddItem(ImageChipItem(image))
        for preset in AppGlobals.Chip().programPresets:
            self.viewer.AddItem(ProgramPresetItem(preset))

        self.viewer.Recenter()

        self.SetEditing(AppGlobals.Chip().editingMode)
Exemple #6
0
    def SaveChip(self, saveAs=False) -> bool:
        if saveAs or not AppGlobals.Chip().HasBeenSaved():

            filename, filterType = QFileDialog.getSaveFileName(
                self, "Save Chip", filter="uChip Project File (*.ucc)")
            if filename:
                AppGlobals.Chip().SaveToFile(Path(filename))
                AppGlobals.Instance().onChipSaved.emit()
                return True
            return False
        else:
            AppGlobals.Chip().SaveToFile(AppGlobals.Chip().path)
            AppGlobals.Instance().onChipSaved.emit()
            return True
Exemple #7
0
    def CloseChip(self) -> bool:
        if AppGlobals.ProgramRunner().runningPrograms:
            status = QMessageBox.question(
                self, "Confirm",
                "There is a program running. Are you sure you want to stop?")
            if status is not QMessageBox.Yes:
                return False
            AppGlobals.ProgramRunner().StopAll()

        if self._editorWindow.isVisible():
            if not self._editorWindow.RequestCloseAll():
                return False

        if AppGlobals.Chip().modified:
            ret = QMessageBox.warning(
                self, "Confirm",
                "The current chip project has been modified.\nDo you want to save changes?",
                QMessageBox.Save | QMessageBox.Discard | QMessageBox.Cancel,
                QMessageBox.Save)
            if ret is QMessageBox.Save:
                if not self.SaveChip():
                    return False
            elif ret is QMessageBox.Cancel:
                return False

        return True
Exemple #8
0
    def SelectProgramPreset(self):
        if not AppGlobals.Chip().programs:
            return

        presetSelection, confirmed = QInputDialog.getItem(
            self, "Program Preset", "Program",
            [program.name for program in AppGlobals.Chip().programs], 0, False)
        if confirmed:
            selected = [
                program for program in AppGlobals.Chip().programs
                if program.name == presetSelection
            ][0]
            newPreset = ProgramPreset(selected)
            AppGlobals.Chip().programPresets.append(newPreset)
            AppGlobals.Instance().onChipModified.emit()
            self.viewer.CenterItem(
                self.viewer.AddItem(ProgramPresetItem(newPreset)))
Exemple #9
0
    def RefreshList(self):
        self._programsList.blockSignals(True)

        self._programsList.clear()
        for program in AppGlobals.Chip().programs:
            self._programsList.addItem(
                ProgramListItem(program, self._instances[program]))

        self._programsList.blockSignals(False)
Exemple #10
0
    def Duplicate(self) -> 'ChipItem':
        newPreset = ProgramPreset(self._preset.instance.program)
        newPreset.instance = self._preset.instance.Clone()
        newPreset.position = QPointF(self._preset.position)
        newPreset.name = self._preset.name

        AppGlobals.Chip().programPresets.append(newPreset)
        AppGlobals.Instance().onChipModified.emit()
        return ProgramPresetItem(newPreset)
Exemple #11
0
    def SetEditing(self, editing):
        self.viewer.SetEditing(editing)

        self._lockButton.setVisible(editing)
        self._plusButton.setVisible(editing)
        self._editButton.setVisible(not editing)

        AppGlobals.Chip().editingMode = editing

        self.FloatWidgets()
Exemple #12
0
 def BrowseForImage(self):
     filename, filterType = QFileDialog.getOpenFileName(
         self,
         "Browse for Image",
         filter="Images (*.png *.bmp *.jpg *.jpeg *.tif *.tiff)")
     if filename:
         newImage = Image(Path(filename))
         AppGlobals.Chip().images.append(newImage)
         AppGlobals.Instance().onChipModified.emit()
         self.viewer.CenterItem(self.viewer.AddItem(
             ImageChipItem(newImage)))
Exemple #13
0
 def NewProgram(self):
     newProgram = Program()
     AppGlobals.Chip().programs.append(newProgram)
     AppGlobals.Instance().onChipModified.emit()
     for item in [
             self._programsList.item(row)
             for row in range(self._programsList.count())
     ]:
         if item.program is newProgram:
             self._programsList.setCurrentItem(item)
             self.onProgramEditRequest.emit(newProgram)
             return
Exemple #14
0
    def CheckPrograms(self):
        modified = False
        for tab in self.tabs():
            title = tab.program.name
            if tab.modified:
                modified = True
                title += "*"
            self._tabWidget.setTabText(self._tabWidget.indexOf(tab), title)
            if tab.program not in AppGlobals.Chip().programs:
                self.deleteLater()

        current: ProgramEditorTab = self._tabWidget.currentWidget()
        if current:
            title = current.program.name
            if modified:
                title += " *"
            title += " | uChip Program Editor"
            self.setWindowTitle(title)
Exemple #15
0
 def DeleteProgram(self, program: Program):
     if QMessageBox.question(
             self, "Confirm Deletion", "Are you sure you want to delete " +
             program.name + "?") is QMessageBox.Yes:
         AppGlobals.Chip().programs.remove(program)
         AppGlobals.Instance().onChipModified.emit()
Exemple #16
0
 def AddValve(self):
     newValve = Valve()
     newValve.solenoidNumber = AppGlobals.Chip().NextSolenoidNumber()
     AppGlobals.Chip().valves.append(newValve)
     AppGlobals.Instance().onChipModified.emit()
     self.viewer.CenterItem(self.viewer.AddItem(ValveChipItem(newValve)))
Exemple #17
0
 def CheckForProgram(self):
     if self.program not in AppGlobals.Chip().programs:
         self.deleteLater()
Exemple #18
0
 def RequestDelete(self):
     super().RequestDelete()
     AppGlobals.Chip().programPresets.remove(self._preset)
     AppGlobals.Instance().onChipModified.emit()
Exemple #19
0
 def RequestDelete(self):
     AppGlobals.Chip().valves.remove(self._valve)
     AppGlobals.Instance().onChipModified.emit()
Exemple #20
0
 def CheckForValve(self):
     if self._valve not in AppGlobals.Chip().valves:
         self.RemoveItem()
Exemple #21
0
 def CheckForPreset(self):
     if self._preset not in AppGlobals.Chip().programPresets:
         self.RemoveItem()