Example #1
0
    def makingData(self, realTimeObj):
        settings = Settings.getInstance()

        if self.variable4.get() == 'Count of Photos':
            realTimeObj.countOfPhoto = int(
                self.makeDataTimeCountOfPhotosSpinboxVar.get())
            realTimeObj.countOfPhotoDone = 0
            realTimeObj.camera = self.camera
            #realTimeObj.camera = cv2.VideoCapture(settings.cameraNumber)
            realTimeObj.frames = int(self.makeDataFramesSpinboxVar.get())
            realTimeObj.before()
            while realTimeObj.countOfPhotoDone < realTimeObj.countOfPhoto:
                if realTimeObj.do:
                    realTimeObj.run()
                    realTimeObj.countOfPhotoDone += 1
                else:
                    break
            realTimeObj.logFile.close()
            realTimeObj.analysisFile.close()

        if self.variable4.get() == 'Count of Time':
            realTimeObj.frames = int(self.makeDataFramesSpinboxVar.get())
            realTimeObj.before()

            while realTimeObj.timePast() < realTimeObj.convertTimeToSeconds([
                    int(self.makeDataTimeCountOfTimeHoursSpinboxVar.get()),
                    int(self.makeDataTimeCountOfTimeMinutesSpinboxVar.get()),
                    int(self.makeDataTimeCountOfTimeSecondsSpinboxVar.get())
            ]):
                if realTimeObj.do:
                    realTimeObj.run()
                else:
                    break
            realTimeObj.logFile.close()
            realTimeObj.analysisFile.close()
Example #2
0
    def update(self):
        settings = Settings.getInstance()
        if self.checkVar.get():
            ret, frame = self.camera.getFrame()
            if ret:
                for i in range(len(settings.areasList)):
                    try:
                        cv2.rectangle(frame, (settings.areasList[i][0],
                                              settings.areasList[i][1]),
                                      (settings.areasList[i][2],
                                       settings.areasList[i][3]), (0, 255, 0),
                                      1)
                    except:
                        pass
                self.img = ImageTk.PhotoImage(
                    master=self.cameraWindow,
                    image=Image.fromarray(frame).resize((640, 480)))
                self.cameraWindow.create_image(0,
                                               0,
                                               image=self.img,
                                               anchor='nw')

        if self.checkVar.get() == 0:
            self.cameraWindow.delete("all")

        self.after(self.delay, self.update)
Example #3
0
    async def makeData(self):
        #self.progressBar.start()
        settings = Settings.getInstance()
        self.do_temp = True
        self.temperatureGetter()

        self.countOfProcess = len(settings.areasList) - 1
        threads = []
        for i in range(self.countOfProcess):
            self.makeDataList.append(MakeData(settings.areasList[i+1]))
            t = threading.Thread(target=self.makingData, args=(self.makeDataList[i],))
            threads.append(t)

        time.sleep(1)
        for i in threads:
            i.start()

        for i in threads:
            i.join()

        self.do_temp = False
        #self.progressBar.stop()

        for i in self.makeDataList:
            i.camera.release()
Example #4
0
    def __init__(self):
        """
        Context class to keep track of all shared properties
        """
        self.log = log.getLogger(self.__class__.__name__)

        self.settings = Settings()
        self.log.info('Settings File Path: {}'.format(
            self.settings.fileName()))

        self.editor = dict()
        self.server = dict()
        self.window = dict()
        self.xpqe = dict()

        self.loadSettings()
Example #5
0
 def updateAreasFromOptions(self):
     settings = Settings.getInstance()
     for i in range(1, len(settings.areasList)):
         self.listbox.insert(
             'end', '{}, {}, {}, {}'.format(settings.areasList[i][0],
                                            settings.areasList[i][1],
                                            settings.areasList[i][2],
                                            settings.areasList[i][3]))
Example #6
0
 def updateCameraParameters(self):
     self.updateSettings()
     settings = Settings.getInstance()
     self.camera.setProperty(3, settings.cameraWidth)
     self.camera.setProperty(4, settings.cameraHeight)
     self.camera.setProperty(10, settings.cameraBrightness)
     self.camera.setProperty(11, settings.cameraContrast)
     self.camera.setProperty(12, settings.cameraSaturation)
     self.camera.setProperty(14, settings.cameraGain)
Example #7
0
    def updateSettings(self):
        settings = Settings.getInstance()
        settings.left = self.left
        settings.upper = self.upper
        settings.right = self.right
        settings.lower = self.lower

        if (self.left, self.upper, self.right, self.lower) not in settings.areasList:
            settings.areasList.append((self.left, self.upper, self.right, self.lower))

        settings.countOfAreas = len(settings.areasList)
Example #8
0
    def makeDataTimeSetFromOptions(self):
        settings = Settings.getInstance()

        if self.variable4.get() == 'Count of Photos':
            if settings.countOfPhoto != None:
                self.makeDataTimeCountOfPhotosSpinboxVar.set(str(settings.countOfPhoto))

        if self.variable4.get() == 'Count of Time':
            if settings.countOfTimeH != None:
                self.makeDataTimeCountOfTimeHoursSpinboxVar.set(str(settings.countOfTimeH))
            if settings.countOfTimeM != None:
                self.makeDataTimeCountOfTimeMinutesSpinboxVar.set(str(settings.countOfTimeM))
            if settings.countOfTimeS != None:
                self.makeDataTimeCountOfTimeSecondsSpinboxVar.set(str(settings.countOfTimeS))
Example #9
0
    def deleteSelection(self):
        items = self.listbox.curselection()
        itemToDel = self.listbox.get(self.listbox.curselection())
        itemToDel = tuple(map(int,itemToDel.replace(" ", "").split(',')))

        pos = 0
        for i in items:
            idx = int(i) - pos
            self.listbox.delete(idx, idx)
            pos = pos + 1

        settings = Settings.getInstance()
        try:
            settings.areasList.remove(itemToDel)
        except:
            None
Example #10
0
    def __init__(self, *args, **kwargs):
        tk.Frame.__init__(self, *args, **kwargs)
        self.framesList = []
        self.RTopened = False
        self.OPTopened = False
        self.MDopened = False
        self.ADopened = False
        self.settings = Settings.getInstance()
        #style = ttk.Style()
        #print('Style themes on my system are ', style.theme_names())
        #style.theme_use('xpnative')
        #style.configure('TButton', background='white', padding=5)

        container = tk.Frame(self)
        container.grid(row=0, column=0)

        self.realTimeButton = ttk.Button(container,
                                         text='real time analysis',
                                         state='disabled',
                                         command=self.showRealTime)
        self.realTimeButton.grid(row=0, column=0, sticky='NEWS')

        self.optionButton = ttk.Button(container,
                                       text='options',
                                       command=self.showOptions)
        self.optionButton.grid(row=1, column=0, sticky='NEWS')

        self.makeDataButton = ttk.Button(container,
                                         text='make data',
                                         state='disabled',
                                         command=self.showMake)
        self.makeDataButton.grid(row=2, column=0, sticky='NEWS')

        self.analyzeButton = ttk.Button(container,
                                        text='analyze data',
                                        command=self.showAnalysis)
        self.analyzeButton.grid(row=3, column=0, sticky='NEWS')

        self.portTestButton = ttk.Button(container,
                                         text='test port',
                                         state='disabled',
                                         command=self.testPort)
        self.portTestButton.grid(row=4, column=0, sticky='NEWS')
Example #11
0
    def createGraphSwitchers(self):
        try:
            self.switchersContainer.grid_forget()
        except:
            pass

        settings = Settings.getInstance()
        self.switchersContainer = tk.Frame(self)
        self.switchersContainer.grid(row=1, column=4, columnspan=2, sticky='N')

        self.areasList = []

        try:
            for i in range(1, len(settings.areasList)):
                if settings.areasList[i] not in self.areasList:
                    self.areasList.append(str(settings.areasList[i]))

            self.areasList.insert(0, self.areasList[0])
            self.areasListVar = tk.StringVar(self.switchersContainer)
            self.areasListVar.set(self.areasList[0])
            self.areasGraphOptionMenu = ttk.OptionMenu(self.switchersContainer,
                                                       self.areasListVar,
                                                       *self.areasList,
                                                       command=self.drawGraph)
            self.areasGraphOptionMenu.grid(row=0, column=0)

        except:
            pass

        self.xList = ['temperature', 'time']
        self.xList.insert(0, self.xList[0])
        self.xListVar = tk.StringVar(self.switchersContainer)
        self.xListVar.set(self.xList[0])

        self.xOptionMenu = ttk.OptionMenu(self.switchersContainer,
                                          self.xListVar,
                                          *self.xList,
                                          command=self.drawGraph)
        self.xOptionMenu.grid(row=0, column=1)
Example #12
0
    def updateSettings(self):
        settings = Settings.getInstance()
        settings.cameraNumber = int(self.variable1.get())
        settings.cameraWidth = int(self.variable2.get().split('x')[0])
        settings.cameraHeight = int(self.variable2.get().split('x')[1])
        settings.cameraBrightness = int(self.defaultBrightnessVar.get())
        settings.cameraContrast = int(self.defaultContrastVar.get())
        settings.cameraSaturation = int(self.defaultSaturationVar.get())
        settings.cameraGain = int(self.defaultGainVar.get()) * 10000000
        # if self.variable3.get() == 'on':
        #     settings.cameraWhiteBalance = 1
        # else:
        #     settings.cameraWhiteBalance = 0

        settings.left = self.left
        settings.upper = self.upper
        settings.right = self.right
        settings.lower = self.lower

        if (self.left, self.upper, self.right, self.lower) not in settings.areasList:
            settings.areasList.append((self.left, self.upper, self.right, self.lower))

        settings.countOfAreas = len(settings.areasList)
Example #13
0
    async def makeData(self):
        settings = Settings.getInstance()
        self.do_temp = True
        self.do_graph = True
        self.temperatureGetter()
        self.drawGraph()
        self.countOfProcess = len(settings.areasList) - 1
        threads = []
        for i in range(self.countOfProcess):
            self.realTimeList.append(RealTime(settings.areasList[i + 1]))
            t = threading.Thread(target=self.makingData,
                                 args=(self.realTimeList[i], ))
            threads.append(t)

        time.sleep(1)
        for i in threads:
            i.start()

        for i in threads:
            i.join()

        self.do_temp = False
        self.do_graph = False
Example #14
0
 def makeDataTimeUpdateCountOfTimeS(self):
     settings = Settings.getInstance()
     settings.countOfTimeS = int(self.makeDataTimeCountOfTimeSecondsSpinboxVar.get())
Example #15
0
    def __init__(self, *args, **kwargs):
        tk.Frame.__init__(self, *args, **kwargs)

        settings = Settings.getInstance()
        self.camera = Camera(settings.cameraNumber)
        self.camera = settings.setCamProperties(self.camera)
        self.makeDataList = []
        self.TempReader = TempReader()
        self.do_temp = False
        self.temperaturePort = settings.portName

        ############  LEFT  ###############
        ################ MAKE DATA OPTIONS ###################

        self.makeDataContainer = tk.Frame(self)
        self.makeDataContainer.grid(row=0, column=0, sticky='N', columnspan=2)

        self.label11 = ttk.Label(self.makeDataContainer, text='Make Data Settings', font='Helvetica 10 bold')
        self.label11.grid(row=0, column=0, columnspan=3)

        self.label12 = ttk.Label(self.makeDataContainer, text='Making Data Time method: ')
        self.label12.grid(row=1, column=0)
        self.makeDataTimeList = ['Count of Photos', 'Count of Time']
        self.makeDataTimeList.insert(0, self.makeDataTimeList[0])
        self.variable4 = tk.StringVar(self.makeDataContainer)
        self.variable4.set(self.makeDataTimeList[0])
        self.dropdownmenu4 = ttk.OptionMenu(self.makeDataContainer, self.variable4, *self.makeDataTimeList,
                                            command=self.makeDataTimeMethodInterfaceUpdate)
        self.dropdownmenu4.grid(row=1, column=1, sticky='news')

        self.label13 = ttk.Label(self.makeDataContainer, text='Making Data Photo method: ')
        self.label13.grid(row=2, column=0)
        self.makeDataPhotoList = ['Count of Frames']
        self.makeDataPhotoList.insert(0, self.makeDataPhotoList[0])
        self.variable5 = tk.StringVar(self.makeDataContainer)
        self.variable5.set(self.makeDataPhotoList[0])
        self.dropdownmenu5 = ttk.OptionMenu(self.makeDataContainer, self.variable5, *self.makeDataPhotoList, command='')
        self.dropdownmenu5.grid(row=2, column=1, sticky='news')

        self.makeDataFramesContainer = tk.Frame(self.makeDataContainer)
        self.makeDataFramesContainer.grid(row=2, column=2)
        self.makeDataFramesSpinboxVar = tk.StringVar(self.makeDataFramesContainer)
        self.makeDataCountOfFramesSpinbox = tk.Spinbox(self.makeDataFramesContainer, from_=0, to=144,
                                                           textvariable=self.makeDataFramesSpinboxVar,
                                                           width=21, command=self.makeDataUpdateCountOfFrames)
        self.makeDataCountOfFramesSpinbox.grid(row=0, column=0)


        ############ AREA #################
        areaContainer = tk.Frame(self)
        areaContainer.grid(row=1, column=0, sticky='N', columnspan=2)

        self.label10 = ttk.Label(areaContainer, text='Area Settings', font='Helvetica 10 bold')
        self.label10.grid(row=0, column=0, columnspan=2)

        self.scrollbar = ttk.Scrollbar(areaContainer, orient='vertical')
        self.scrollbar.grid(row=1, column=2, sticky='WNS')
        self.listbox = tk.Listbox(areaContainer, selectmode='EXTENDED')
        self.listbox.grid(row=1, column=0, sticky='WE', columnspan=2)
        self.listbox.config(yscrollcommand=self.scrollbar.set)
        self.scrollbar.config(command=self.listbox.yview)

        self.addareabutton = ttk.Button(areaContainer, text='Add', command=self.addAreaFunc)
        self.addareabutton.grid(row=2, column=0, sticky='W')
        self.deletebutton = ttk.Button(areaContainer, text='Delete', command=self.deleteSelection)
        self.deletebutton.grid(row=2, column=1, sticky='W')

        ################# START/CANCEL ##################
        self.async_loop = asyncio.get_event_loop()
        startstopContainer = tk.Frame(self)
        startstopContainer.grid(row=3, column=0, sticky='N', columnspan=2)
        self.startButton = ttk.Button(startstopContainer, text='Start', command=lambda: self.do_tasks(self.async_loop))
        self.startButton.grid(row=1, column=0, sticky='W')
        self.stopButton = ttk.Button(startstopContainer, text='Cancel', command=self.cancel)
        self.stopButton.grid(row=1, column=1, sticky='W')




        ############  RIGHT  ###############
        cameraCheckContainer = tk.Frame(self)
        cameraCheckContainer.grid(row=0, column=2, rowspan=2, sticky='N')

        ### CAMERA PREVIEW CHECK ###
        self.checkVar = tk.IntVar()
        self.checkbutton = tk.Checkbutton(cameraCheckContainer, variable=self.checkVar, text='Camera Preview',
                                          command=self.checkClick)
        self.checkbutton.grid(row=0, column=0, sticky='W')

        cameraContainer = tk.Frame(cameraCheckContainer)
        cameraContainer.grid(row=1, column=0, rowspan=2, sticky='N')
        ### CAMERA PREVIEW ###
        self.cameraWindow = tk.Canvas(cameraContainer, width=640, height=480)
        self.cameraWindow.grid(row=0, column=0, columnspan=2)


        ### PROGRESS BAR ###
        self.progressBarContainer = tk.Frame(self)
        self.progressBarContainer.grid(row=4, column=0, columnspan=4)
        self.progressBar = ttk.Progressbar(self.progressBarContainer, orient='horizontal', length=1050)
        self.progressBar.grid(row=0, column=0, sticky='EW')
        self.progressBar.config(maximum=150, value=0)

        self.delayOptions = 2000
        self.delay = 18
        self.updateCameraParameters()
        self.update()
        self.makeDataTimeMethodInterfaceUpdate('')
        self.updateAreasFromOptions()
        self.makeDataFramesSetFromOptions()
        self.updateOptions()
Example #16
0
 def makeDataTimeUpdateCountOfTimeH(self):
     settings = Settings.getInstance()
     settings.countOfTimeH = int(self.makeDataTimeCountOfTimeHoursSpinboxVar.get())
Example #17
0
 def makeDataTimeUpdateCountOfTimeM(self):
     settings = Settings.getInstance()
     settings.countOfTimeM = int(self.makeDataTimeCountOfTimeMinutesSpinboxVar.get())
Example #18
0
 def makeDataUpdateCountOfFrames(self):
     settings = Settings.getInstance()
     settings.countOfFrames = int(self.makeDataFramesSpinboxVar.get())
Example #19
0
 def makeDataTimeUpdateCountOfPhoto(self):
     settings = Settings.getInstance()
     settings.countOfPhoto = int(self.makeDataTimeCountOfPhotosSpinboxVar.get())
Example #20
0
 def makeDataFramesSetFromOptions(self):
     settings = Settings.getInstance()
     if settings.countOfFrames != None:
         self.makeDataFramesSpinboxVar.set(str(settings.countOfFrames))
Example #21
0
    def makingData(self, countOfPhoto=None, timeToExecute=None, countOfFramesToAverage=None, *args, **kwargs):
        try:
            settings = Settings.getInstance()


            # time count to execute by program
            if timeToExecute != None:
                if type(timeToExecute) == list:
                    timeToExecute = self.convertListToSeconds(timeToExecute)
                else:
                    timeToExecute = timeToExecute


            # camera
            #self.camera = cv2.VideoCapture(settings.cameraNumber)
            cameraWidth = int(self.camera.getProperty(3))
            cameraHeight = int(self.camera.getProperty(4))

            # array shape
            averagedArray = np.zeros((cameraHeight, cameraWidth, 3), np.float)

            # variables
            countOfPhotoDone = 0
            countOfFramesToAverageDone = 0
            currentDate = datetime.date.today()

            # creating directory
            if not self.do:
                return

            directoryPath = self.createDirectoryForData()

            # creating log.txt
            logFile = open(directoryPath + '/' + 'log.txt', 'w')
            dataTime = time.time()

            if (countOfPhoto and countOfFramesToAverage) != None:

                while (self.do):
                    ret, frame = self.camera.getFrame()
                    arrayFromFrame = np.array(frame, dtype=np.float)
                    averagedArray = np.add(averagedArray, arrayFromFrame, casting='unsafe')
                    countOfFramesToAverageDone += 1

                    if countOfFramesToAverageDone >= countOfFramesToAverage:
                        averagedArray = np.divide(averagedArray, countOfFramesToAverage, casting='unsafe')
                        photoToSave = np.array(np.round(averagedArray), dtype=np.uint8)
                        imageNameFormat = "\image{}{}{}{}{}".format(" ", str(currentDate), "_", str(countOfPhotoDone),
                                                                    ".png")
                        fileNameAndDirectory = directoryPath + imageNameFormat
                        cv2.imwrite(fileNameAndDirectory, photoToSave)
                        im = Image.open(fileNameAndDirectory)
                        im = im.crop((self.left, self.upper, self.right, self.lower))
                        im.save(fileNameAndDirectory)
                        logFile.write('{} {} {}\n'.format(imageNameFormat[1:], str(self.currentTemp),
                                                          time.time()))
                        averagedArray = np.zeros((cameraHeight, cameraWidth, 3), np.float)
                        countOfPhotoDone += 1
                        countOfFramesToAverageDone = 0
                        continue

                    if countOfPhotoDone >= countOfPhoto:
                        break

            elif (timeToExecute and countOfFramesToAverage) != None:

                startingProgramTime = time.time()

                while (self.do):

                    ProgramTimePast = time.time() - startingProgramTime
                    ret, frame = self.camera.getFrame()
                    arrayFromFrame = np.array(frame, dtype=np.float)
                    averagedArray = np.add(averagedArray, arrayFromFrame, casting='unsafe')
                    countOfFramesToAverageDone += 1

                    if countOfFramesToAverageDone >= countOfFramesToAverage:
                        averagedArray = np.divide(averagedArray, countOfFramesToAverage, casting='unsafe')
                        photoToSave = np.array(np.round(averagedArray), dtype=np.uint8)
                        imageNameFormat = "\image{}{}{}{}{}".format(" ", str(currentDate), "_", str(countOfPhotoDone),
                                                                    ".png")
                        fileNameAndDirectory = directoryPath + imageNameFormat
                        cv2.imwrite(fileNameAndDirectory, photoToSave)
                        logFile.write('{} {} {}\n'.format(imageNameFormat[1:], str(self.currentTemp),
                                                          time.time()))
                        im = Image.open(fileNameAndDirectory)
                        im = im.crop((self.left, self.upper, self.right, self.lower))
                        im.save(fileNameAndDirectory)
                        averagedArray = np.zeros((cameraHeight, cameraWidth, 3), np.float)
                        countOfPhotoDone += 1
                        countOfFramesToAverageDone = 0
                        continue

                    if int(ProgramTimePast) >= timeToExecute:
                        break

            logFile.close()
            #self.camera.release()
            print("Making data ends successfully, made {} frames".format(countOfPhotoDone))
        except Exception as e:
            print(e)
        return
Example #22
0
 def loadConfig(self):
     Settings.loadJSON(filedialog.askopenfilename())
     self.updateAreasFromOptions()
     self.makeDataFramesSetFromOptions()
Example #23
0
import os, queue, time
import PySimpleGUI as sg

from modules.Settings import Settings
from modules.LogParser import LogParser

version = "0.1.1"

base_dir = os.path.dirname(os.path.realpath(__file__))
settings = Settings(base_dir)
msg_queue = queue.Queue()

sg.theme("LightGrey1")

msg = ""
live_update_last = time.time()
live_update_wait = 0.5  # seconds
gran_values = [i / 10 for i in range(0, 11)]
needs_update = False

tooltips = {
    "UPDATE": "Update the output to the file's current state.",
    "SAVE": "Save a comma-separated-values file for use in spreadsheets.",
    "CLEAR":
    "Clear output. Further updates will only show events that were written after clearing.",
    "FILTER":
    "Enter case-sensitive words to search for. Words on either side of the keyword OR will be parsed separately. To use OR as a search term, type \\OR.",
    "GRANULARITY":
    "Lower to reduce the amount of matches by combining similar lines.",
    "LIVE": "Continuously read the log file and update the output."
}
Example #24
0
class Context:
    def __init__(self):
        """
        Context class to keep track of all shared properties
        """
        self.log = log.getLogger(self.__class__.__name__)

        self.settings = Settings()
        self.log.info('Settings File Path: {}'.format(
            self.settings.fileName()))

        self.editor = dict()
        self.server = dict()
        self.window = dict()
        self.xpqe = dict()

        self.loadSettings()

    def loadSettings(self):
        """
        Fetch all settings into application
        :return: None
        """
        # EDITOR
        self.editor['autoClosing.brackets'] = self.settings.value(
            'editor.autoClosing.brackets', 'Always', str)
        self.editor['autoClosing.quotes'] = self.settings.value(
            'editor.autoClosing.quotes', 'Always', str)
        self.editor['editorToResultRatio'] = self.settings.value(
            'editor.editorToResultRatio', [50, 50], int)
        self.editor['font.family'] = self.settings.value(
            'editor.font.family', 'Courier New', str)
        self.editor['font.pointSize'] = self.settings.value(
            'editor.font.pointSize', 9, int)
        self.editor['font.stretch'] = self.settings.value(
            'editor.font.stretch', 0, int)
        self.editor['font.weight'] = self.settings.value(
            'editor.font.weight', 50, int)
        self.editor['result.renderCount'] = self.settings.value(
            'editor.result.renderCount', 1000, int)

        # SERVER
        self.server['autoCommit'] = self.settings.value(
            'server.autoCommit', False, bool)

        # WINDOW
        self.window['maximized'] = self.settings.value('window.maximized',
                                                       False, bool)
        self.window['position'] = self.settings.value('window.position',
                                                      [0, 0], int)
        self.window['size'] = self.settings.value('window.size', [480, 320],
                                                  int)

        # XPQE
        self.xpqe['execute.host'] = None
        self.xpqe['execute.header'] = None
        self.xpqe['execute.result'] = None
        self.xpqe['execute.server'] = None
        self.xpqe['execute.sql'] = None
        self.xpqe['execute.timestamp'] = None
        self.xpqe['execute.xsql'] = None

    def saveSettings(self):
        """
        Save settings properties
        :return: None
        """
        # EDITOR
        self.settings.setValue('editor.autoClosing.brackets',
                               self.editor['autoClosing.brackets'])
        self.settings.setValue('editor.autoClosing.quotes',
                               self.editor['autoClosing.quotes'])
        self.settings.setValue('editor.editorToResultRatio',
                               self.editor['editorToResultRatio'])
        self.settings.setValue('editor.font.family',
                               self.editor['font.family'])
        self.settings.setValue('editor.font.pointSize',
                               self.editor['font.pointSize'])
        self.settings.setValue('editor.font.stretch',
                               self.editor['font.stretch'])
        self.settings.setValue('editor.font.weight',
                               self.editor['font.weight'])
        self.settings.setValue('editor.result.renderCount',
                               self.editor['result.renderCount'])

        # SERVER
        self.settings.setValue('server.autoCommit', self.server['autoCommit'])

        # WINDOW
        self.settings.setValue('window.maximized', self.window['maximized'])
        self.settings.setValue('window.position', self.window['position'])
        self.settings.setValue('window.size', self.window['size'])
Example #25
0
 def saveConfig(self):
     self.updateSettings()
     Settings.saveJSON(filedialog.asksaveasfilename(defaultextension=".ini"))
Example #26
0
    def __init__(self, *args, **kwargs):
        tk.Frame.__init__(self, *args, **kwargs)
        self.settings = Settings.getInstance()

        ###AREA###
        self.left = None
        self.upper = None
        self.right = None
        self.lower = None

        ############  LEFT  ###############
        optionsContainer = tk.Frame(self)
        optionsContainer.grid(row=0, column=0, sticky='N', columnspan=2)

        self.label9 = ttk.Label(optionsContainer, text='Camera Options', font='Helvetica 10 bold')
        self.label9.grid(row=0, column=0, columnspan=2)

        ### DEVICE NUMBER ###
        self.label1 = ttk.Label(optionsContainer, text='Device Number: ')
        self.label1.grid(row=1, column=0)
        self.devicelist = self.getDeviceList()
        self.devicelist.insert(0, self.devicelist[0])
        self.variable1 = tk.StringVar(optionsContainer)
        self.variable1.set(self.devicelist[0])
        self.dropdownmenu1 = ttk.OptionMenu(optionsContainer, self.variable1, *self.devicelist, command=self.changeCamera)
        self.dropdownmenu1.grid(row=1, column=1, sticky ='news')

        #set camera
        self.camera = Camera(int(self.variable1.get()))

        ### RESOLUTION ###
        self.label2 = ttk.Label(optionsContainer, text='Resolution:')
        self.label2.grid(row=2, column=0)
        self.resolutionlist = ["640x480","800x600", "1280x960", "1920x1080"]
        self.resolutionlist.insert(0, self.resolutionlist[0])
        self.variable2 = tk.StringVar(optionsContainer)
        self.variable2.set(str(self.camera.getProperty(3))+"x"+str(self.camera.getProperty(4)))
        self.dropdownmenu2 = ttk.OptionMenu(optionsContainer, self.variable2, *self.resolutionlist, command=self.changeResolution)
        self.dropdownmenu2.grid(row=2, column=1, sticky ='news')

        # ### WHITE BALANCE ###
        #         # self.label3 = ttk.Label(optionsContainer, text='White Balance:')
        #         # self.label3.grid(row=3, column=0)
        #         # self.whitebalancelist = ['on','off']
        #         # self.whitebalancelist.insert(0,self.whitebalancelist[0])
        #         # self.variable3 = tk.StringVar(optionsContainer)
        #         # self.variable3.set(self.camera.getProperty(17))
        #         # self.dropdownmenu3 = ttk.OptionMenu(optionsContainer, self.variable3, *self.whitebalancelist, command=self.changeWhiteBalance)
        #         # self.dropdownmenu3.grid(row=3, column=1, sticky='news')

        ### BRIGHTNESS ###
        self.label4 = ttk.Label(optionsContainer, text='Brightness:')
        self.label4.grid(row=4, column=0)
        self.defaultBrightnessVar = tk.StringVar(optionsContainer)
        self.defaultBrightnessVar.set(self.camera.getProperty(10))
        self.spinbox1 = tk.Spinbox(optionsContainer, textvariable=self.defaultBrightnessVar, command=self.updateCameraParameters)
        self.spinbox1.grid(row=4, column=1)
        self.spinbox1.config(from_=0, to=10000, justify='right')

        ### CONTRAST ###
        self.label5 = tk.Label(optionsContainer, text='Contrast:')
        self.label5.grid(row=5, column=0)
        self.defaultContrastVar = tk.StringVar(optionsContainer)
        self.defaultContrastVar.set(self.camera.getProperty(11))
        self.spinbox2 = tk.Spinbox(optionsContainer, textvariable=self.defaultContrastVar, command=self.updateCameraParameters)
        self.spinbox2.grid(row=5, column=1)
        self.spinbox2.config(from_=0, to=10000, justify='right')

        ### SATURATION ###
        self.label6 = tk.Label(optionsContainer, text='Saturation:')
        self.label6.grid(row=6, column=0)
        self.defaultSaturationVar = tk.StringVar(optionsContainer)
        self.defaultSaturationVar.set(self.camera.getProperty(12))
        self.spinbox3 = tk.Spinbox(optionsContainer, textvariable=self.defaultSaturationVar, command=self.updateCameraParameters)
        self.spinbox3.grid(row=6, column=1)
        self.spinbox3.config(from_=0, to=10000, justify='right')

        ### GAIN ###
        self.label7 = ttk.Label(optionsContainer, text='Gain:')
        self.label7.grid(row=7, column=0)
        self.defaultGainVar = tk.StringVar(optionsContainer)
        self.defaultGainVar.set(self.camera.getProperty(14)/10000000)
        self.spinbox4 = tk.Spinbox(optionsContainer, textvariable=self.defaultGainVar, command=self.updateCameraParameters)
        self.spinbox4.grid(row=7, column=1)
        self.spinbox4.config(from_=0, to=100, justify='right')


        ############ AREA #################
        areaContainer = tk.Frame(self)
        areaContainer.grid(row=1, column=0, sticky='N', columnspan=2)

        self.label10 = ttk.Label(areaContainer, text='Area Settings', font='Helvetica 10 bold')
        self.label10.grid(row=0, column=0, columnspan=2)

        self.scrollbar = ttk.Scrollbar(areaContainer, orient='vertical')
        self.scrollbar.grid(row=1, column=2, sticky='WNS')
        self.listbox = tk.Listbox(areaContainer, selectmode='EXTENDED')
        self.listbox.grid(row=1, column=0, sticky='WE', columnspan=2)
        self.listbox.config(yscrollcommand=self.scrollbar.set)
        self.scrollbar.config(command=self.listbox.yview)

        self.addareabutton = ttk.Button(areaContainer, text='Add', command=self.addAreaFunc)
        self.addareabutton.grid(row=2, column=0, sticky='W')
        self.deletebutton = ttk.Button(areaContainer, text='Delete', command=self.deleteSelection)
        self.deletebutton.grid(row=2, column=1, sticky='W')

        ################ MAKE DATA OPTIONS ###################

        self.makeDataContainer = tk.Frame(self)
        self.makeDataContainer.grid(row=2, column=0, sticky='N', columnspan=2)

        self.label11 = ttk.Label(self.makeDataContainer, text='Make Data Settings', font='Helvetica 10 bold')
        self.label11.grid(row=0, column=0, columnspan=3)

        self.label12 = ttk.Label(self.makeDataContainer, text='Making Data Time method: ')
        self.label12.grid(row=1, column=0)
        self.makeDataTimeList = ['Count of Photos', 'Count of Time']
        self.makeDataTimeList.insert(0, self.makeDataTimeList[0])
        self.variable4 = tk.StringVar(self.makeDataContainer)
        self.variable4.set(self.makeDataTimeList[0])
        self.dropdownmenu4 = ttk.OptionMenu(self.makeDataContainer, self.variable4, *self.makeDataTimeList, command=self.makeDataTimeMethodInterfaceUpdate)
        self.dropdownmenu4.grid(row=1, column=1, sticky='news')

        self.label13 = ttk.Label(self.makeDataContainer, text='Making Data Photo method: ')
        self.label13.grid(row=2, column=0)
        self.makeDataPhotoList = ['Count of Frames']
        self.makeDataPhotoList.insert(0, self.makeDataPhotoList[0])
        self.variable5 = tk.StringVar(self.makeDataContainer)
        self.variable5.set(self.makeDataPhotoList[0])
        self.dropdownmenu5 = ttk.OptionMenu(self.makeDataContainer, self.variable5, *self.makeDataPhotoList, command='')
        self.dropdownmenu5.grid(row=2, column=1, sticky='news')

        self.makeDataFramesContainer = tk.Frame(self.makeDataContainer)
        self.makeDataFramesContainer.grid(row=2, column=2)
        self.makeDataFramesSpinboxVar = tk.StringVar(self.makeDataFramesContainer)
        self.makeDataCountOfFramesSpinbox = tk.Spinbox(self.makeDataFramesContainer, from_=0, to=144,
                                                       textvariable=self.makeDataFramesSpinboxVar,
                                                       width=21, command=self.makeDataUpdateCountOfFrames)
        self.makeDataCountOfFramesSpinbox.grid(row=0, column=0)


        ################# LOAD/SAVE ##################
        loadsaveContainer = tk.Frame(self)
        loadsaveContainer.grid(row=3, column=0, sticky='N', columnspan=2)
        self.loadButton = ttk.Button(loadsaveContainer, text='Load Config', command=self.loadConfig)
        self.loadButton.grid(row=1, column=0, sticky='W', pady=5)
        self.saveButton = ttk.Button(loadsaveContainer, text='Save Config', command=self.saveConfig)
        self.saveButton.grid(row=1, column=1, sticky='W', pady=5)

        ############# PORT #################
        self.portName = ''
        portContainer = tk.Frame(self)
        portContainer.grid(row=4, column=0, sticky='N', columnspan=2)
        self.label12 = ttk.Label(portContainer, text='Port Settings', font='Helvetica 10 bold')
        self.label12.grid(row=0, column=0, columnspan=3)
        self.portLabel = ttk.Label(portContainer, text=str(self.settings.portName))
        self.portLabel.grid(row=1, column=1, sticky='W', pady=5)
        self.portEntry = ttk.Button(portContainer, text="Enter Port Name:", command=self.portEntryMethod)
        self.portEntry.grid(row=1, column=0, sticky='W', pady=5)

        ############  RIGHT  ###############
        cameraCheckContainer = tk.Frame(self)
        cameraCheckContainer.grid(row=0, column=2, rowspan=2, sticky='N')

        ### CAMERA PREVIEW CHECK ###
        self.checkVar = tk.IntVar()
        self.checkbutton = tk.Checkbutton(cameraCheckContainer, variable=self.checkVar, text='Camera Preview', command=self.checkClick)
        self.checkbutton.grid(row=0, column=0, sticky='W')

        cameraContainer = tk.Frame(cameraCheckContainer)
        cameraContainer.grid(row=1, column=0, rowspan=2, sticky='N')
        ### CAMERA PREVIEW ###
        self.cameraWindow = tk.Canvas(cameraContainer, width=640, height=480)
        self.cameraWindow.grid(row=0, column=0, columnspan=2)


        self.delayOptions = 2000
        self.delay = 18
        self.updateCameraParameters()
        self.update()
        self.makeDataTimeMethodInterfaceUpdate('')
        self.updateAreasFromOptions()
        self.makeDataFramesSetFromOptions()
        self.updateOptions()