Skip to content
Snippets Groups Projects
radarGUI.py 36.76 KiB
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'navrh.ui'
#
# Created by: PyQt5 UI code generator 5.7
#
# WARNING! All changes made in this file will be lost!
import csv
import glob
import os

from PyQt5 import QtCore, QtGui, QtWidgets
from pathlib import Path


class Ui_TabWidget(object):
    def __init__(self):
        self.current_labels_dic = {'xLabel': None, 'funcLabel': None}
        self.tab_widget = None
        self.data_path = ''
        self.config_path = ''
        self.tab_Regions = None
        self.regions = []
        self.ylabel_dic = dict()
        self.parameters_count = 0
        self.possible_time_vars = []
        self.possible_energy_vars = []
        self.time_var = ''
        self.energy_var = ''
        self.measurement_params = []

    def setupUi(self, TabWidget_p, DataPath, ConfigPath):
        self.tab_widget = TabWidget_p
        self.data_path = DataPath
        self.config_path = ConfigPath

        for region in os.listdir(self.data_path):
            if os.path.isdir(self.data_path + "/" + region):
                if glob.glob(self.data_path + '/' + region + '/*.csv'):
                    self.regions.append(region)

        first_csv_path=glob.glob(self.data_path + '/' + self.regions[0] + '/*.csv')[0]
        dkey=''
        with open(first_csv_path) as csvfile:
            reader = csv.reader(csvfile, delimiter=',')
            for i,line in enumerate(reader):
                if line[0].startswith('#') and not line[0].startswith("# CALLTREE"):
                    dkey=line[0]
                elif dkey and line[0] is not dkey and not line[0].startswith("# CALLTREE"):
                    self.ylabel_dic.setdefault(dkey, []).append(line[0])

        for k,v in self.ylabel_dic.items():
            self.ylabel_dic[k] = sorted(list(set(v)))

        first_csv_name=first_csv_path.split('/')[-1]
        self.parameters_count = first_csv_name.count('_')+1

        measurement_info_path = Path(self.data_path + '/measurementInfo.json')
        if measurement_info_path.exists():
            with open(measurement_info_path) as f:
                for line in f:
                    if "DataFormat" in line:
                        self.measurement_params = line.split(': ')[1].split("\"")[1].split("_")
                        break

        TabWidget_p.setObjectName("TabWidget")
        TabWidget_p.setWindowModality(QtCore.Qt.NonModal)
        TabWidget_p.resize(794, 574)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(TabWidget_p.sizePolicy().hasHeightForWidth())
        TabWidget_p.setSizePolicy(sizePolicy)
        TabWidget_p.setMinimumSize(QtCore.QSize(400, 200))
        TabWidget_p.setAutoFillBackground(False)
        self.tab_Regions = QtWidgets.QWidget()
        self.tab_Regions.setEnabled(True)
        self.tab_Regions.setMinimumSize(QtCore.QSize(794, 0))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        font.setStrikeOut(False)
        font.setKerning(False)
        self.tab_Regions.setFont(font)
        self.tab_Regions.setObjectName("tab_Regions")
        self.pushButton_Regions_Next = QtWidgets.QPushButton(self.tab_Regions)
        self.pushButton_Regions_Next.setGeometry(QtCore.QRect(680, 500, 99, 27))
        font = QtGui.QFont()
        font.setPointSize(11)
        self.pushButton_Regions_Next.setFont(font)
        self.pushButton_Regions_Next.setObjectName("pushButton_Regions_Next")
        self.label_MainRegions = QtWidgets.QLabel(self.tab_Regions)
        self.label_MainRegions.setGeometry(QtCore.QRect(50, 20, 150, 27))
        font = QtGui.QFont()
        font.setPointSize(11)
        font.setBold(True)
        font.setWeight(75)
        self.label_MainRegions.setFont(font)
        self.label_MainRegions.setObjectName("label_MainRegions")
        self.comboBox_MainRegion = QtWidgets.QComboBox(self.tab_Regions)
        self.comboBox_MainRegion.setGeometry(QtCore.QRect(50, 50, 251, 27))
        font = QtGui.QFont()
        font.setPointSize(11)
        self.comboBox_MainRegion.setFont(font)
        self.comboBox_MainRegion.setEditable(False)
        self.comboBox_MainRegion.setCurrentText("")
        self.comboBox_MainRegion.setObjectName("comboBox_MainRegion")
        self.label_IterationRegion = QtWidgets.QLabel(self.tab_Regions)
        self.label_IterationRegion.setGeometry(QtCore.QRect(50, 90, 150, 27))
        font = QtGui.QFont()
        font.setPointSize(11)
        font.setBold(True)
        font.setWeight(75)
        self.label_IterationRegion.setFont(font)
        self.label_IterationRegion.setObjectName("label_IterationRegion")
        self.comboBox_IterationRegion = QtWidgets.QComboBox(self.tab_Regions)
        self.comboBox_IterationRegion.setGeometry(QtCore.QRect(50, 120, 251, 27))
        font = QtGui.QFont()
        font.setPointSize(11)
        self.comboBox_IterationRegion.setFont(font)
        self.comboBox_IterationRegion.setEditable(False)
        self.comboBox_IterationRegion.setObjectName("comboBox_IterationRegion")
        self.widget_nested_regions = QtWidgets.QWidget(self.tab_Regions)
        self.widget_nested_regions.setGeometry(QtCore.QRect(360, 50, 401, 430))
        self.widget_nested_regions.setObjectName("widget_nested_regions")
        self.frame_nested_regions = QtWidgets.QFrame(self.widget_nested_regions)
        self.frame_nested_regions.setGeometry(QtCore.QRect(0, 0, 401, 430))
        self.frame_nested_regions.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_nested_regions.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_nested_regions.setObjectName("frame_nested_regions")
        self.label_NestedRegions = QtWidgets.QLabel(self.tab_Regions)
        self.label_NestedRegions.setGeometry(QtCore.QRect(360, 20, 150, 27))
        font = QtGui.QFont()
        font.setPointSize(11)
        font.setBold(True)
        font.setWeight(75)
        self.label_NestedRegions.setFont(font)
        self.label_NestedRegions.setObjectName("label_NestedRegions")

        myform = QtWidgets.QFormLayout()
        check_list = []

        for i, region in enumerate(self.regions):
            check_list.append(QtWidgets.QCheckBox(region))
            myform.addRow(check_list[i])

        self.frame_nested_regions.setLayout(myform)
        scroll = QtWidgets.QScrollArea()
        scroll.setWidget(self.frame_nested_regions)
        scroll.setWidgetResizable(True)
        layout = QtWidgets.QVBoxLayout(self.widget_nested_regions)
        layout.addWidget(scroll)

        TabWidget_p.addTab(self.tab_Regions, "")
        self.tab_DataParameters = QtWidgets.QWidget()
        self.tab_DataParameters.setObjectName("tab_DataParameters")
        self.pushButton_DataParam_Next = QtWidgets.QPushButton(self.tab_DataParameters)
        self.pushButton_DataParam_Next.setGeometry(QtCore.QRect(680, 500, 99, 27))
        self.pushButton_DataParam_Next.setObjectName("pushButton_DataParam_Next")
        self.pushButton_DataParam_Prev = QtWidgets.QPushButton(self.tab_DataParameters)
        self.pushButton_DataParam_Prev.setGeometry(QtCore.QRect(580, 500, 99, 27))
        self.pushButton_DataParam_Prev.setObjectName("pushButton_DataParam_Prev")
        self.label_ylabel = QtWidgets.QLabel(self.tab_DataParameters)
        self.label_ylabel.setGeometry(QtCore.QRect(50, 20, 150, 27))
        font = QtGui.QFont()
        font.setPointSize(11)
        font.setBold(True)
        font.setWeight(75)
        self.label_ylabel.setFont(font)
        self.label_ylabel.setObjectName("label_ylabel")
        self.widget_parameters = QtWidgets.QWidget(self.tab_DataParameters)
        self.widget_parameters.setGeometry(QtCore.QRect(50, 210, 471, 300))
        self.widget_parameters.setObjectName("widget_parameters")
        self.frame_parameters = QtWidgets.QFrame(self.widget_parameters)
        self.frame_parameters.setGeometry(QtCore.QRect(0, 0, 471, 300))
        self.frame_parameters.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.frame_parameters.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_parameters.setObjectName("frame_parameters")
        self.label_parameters = QtWidgets.QLabel(self.tab_DataParameters)
        self.label_parameters.setGeometry(QtCore.QRect(50, 190, 150, 27))
        font = QtGui.QFont()
        font.setPointSize(11)
        font.setBold(True)
        font.setWeight(75)
        self.label_parameters.setFont(font)
        self.label_parameters.setObjectName("label_parameters")
        self.treeWidget_ylabel = QtWidgets.QTreeWidget(self.tab_DataParameters)
        self.treeWidget_ylabel.setGeometry(QtCore.QRect(50, 50, 471, 140))
        self.treeWidget_ylabel.setObjectName("treeWidget_ylabel")
        self.treeWidget_ylabel.headerItem().setText(0, "1")
        self.treeWidget_ylabel.header().setVisible(False)
        self.comboBox_time = QtWidgets.QComboBox(self.tab_DataParameters)
        self.comboBox_time.setEnabled(False)
        self.comboBox_time.setGeometry(QtCore.QRect(540, 80, 241, 25))
        self.comboBox_time.setObjectName("comboBox_time")
        self.checkBox_time_energy_vars = QtWidgets.QCheckBox(self.tab_DataParameters)
        self.checkBox_time_energy_vars.setGeometry(QtCore.QRect(540, 20, 191, 23))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.checkBox_time_energy_vars.setFont(font)
        self.checkBox_time_energy_vars.setObjectName("checkBox_time_energy_vars")
        self.label_time = QtWidgets.QLabel(self.tab_DataParameters)
        self.label_time.setEnabled(False)
        self.label_time.setGeometry(QtCore.QRect(540, 60, 67, 17))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_time.setFont(font)
        self.label_time.setObjectName("label_time")
        self.label_energy = QtWidgets.QLabel(self.tab_DataParameters)
        self.label_energy.setEnabled(False)
        self.label_energy.setGeometry(QtCore.QRect(540, 110, 67, 17))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_energy.setFont(font)
        self.label_energy.setObjectName("label_energy")
        self.comboBox_energy = QtWidgets.QComboBox(self.tab_DataParameters)
        self.comboBox_energy.setEnabled(False)
        self.comboBox_energy.setGeometry(QtCore.QRect(540, 130, 241, 25))
        self.comboBox_energy.setObjectName("comboBox_energy")

        for i in self.ylabel_dic.keys():
            parent = QtWidgets.QTreeWidgetItem(self.treeWidget_ylabel)
            parent.setText(0, i)
            parent.setFlags(parent.flags() | QtCore.Qt.ItemIsTristate | QtCore.Qt.ItemIsUserCheckable)
            for x in self.ylabel_dic[i]:
                child = QtWidgets.QTreeWidgetItem(parent)
                child.setFlags(child.flags() | QtCore.Qt.ItemIsUserCheckable)
                child.setText(0, x)
                child.setCheckState(0, QtCore.Qt.Unchecked)

        myform_param = QtWidgets.QFormLayout()
        label_parameters_list = []
        lineEdit_parameters_list = []
        self.comboBox_parameters_list = []
        self.all_parameters = ['key', 'config', 'funcLabel', 'xLabel']
        self.combobox_items_dic = {}
        for i in range(self.parameters_count):
            label_parameters_list.append(QtWidgets.QLabel('Parameter {}'.format(i+1)))
            label_parameters_list[i].setFont(font)
            myform_param.addRow(label_parameters_list[i])

            lineEdit_parameters_list.append(QtWidgets.QLineEdit())
            self.comboBox_parameters_list.append(QtWidgets.QComboBox())
            self.combobox_items_dic[self.comboBox_parameters_list[-1]] = list(self.all_parameters)

            func_list = []

            self.comboBox_parameters_list[i].addItems(self.all_parameters)
            func_list.append((lambda tmp: lambda: self.__parameters_combobox(self.comboBox_parameters_list[tmp]))(i))

            self.comboBox_parameters_list[i].activated.connect(func_list[-1])

            if self.measurement_params:
                lineEdit_parameters_list[i].setText(self.measurement_params[i])
            lineEdit_parameters_list[i].setFixedWidth(300)
            self.comboBox_parameters_list[i].setFixedWidth(100)

            myform_param.addRow(lineEdit_parameters_list[i], self.comboBox_parameters_list[i])
        self.frame_parameters.setLayout(myform_param)
        scroll = QtWidgets.QScrollArea()
        scroll.setWidget(self.frame_parameters)
        scroll.setWidgetResizable(True)
        layout = QtWidgets.QVBoxLayout(self.widget_parameters)
        layout.addWidget(scroll)

        TabWidget_p.addTab(self.tab_DataParameters, "")
        self.tab_DefaultValues = QtWidgets.QWidget()
        self.tab_DefaultValues.setObjectName("tab_DefaultValues")
        self.pushButton_DefVal_Next = QtWidgets.QPushButton(self.tab_DefaultValues)
        self.pushButton_DefVal_Next.setGeometry(QtCore.QRect(680, 500, 99, 27))
        self.pushButton_DefVal_Next.setObjectName("pushButton_DefVal_Next")
        self.pushButton_DefVal_Prev = QtWidgets.QPushButton(self.tab_DefaultValues)
        self.pushButton_DefVal_Prev.setGeometry(QtCore.QRect(580, 500, 99, 27))
        self.pushButton_DefVal_Prev.setObjectName("pushButton_DefVal_Prev")
        self.scrollArea_4 = QtWidgets.QScrollArea(self.tab_DefaultValues)
        self.scrollArea_4.setGeometry(QtCore.QRect(30, 10, 571, 281))
        self.scrollArea_4.setWidgetResizable(True)
        self.scrollArea_4.setObjectName("scrollArea_4")
        self.scrollAreaWidgetContents_4 = QtWidgets.QWidget()
        self.scrollAreaWidgetContents_4.setGeometry(QtCore.QRect(0, 0, 569, 279))
        self.scrollAreaWidgetContents_4.setObjectName("scrollAreaWidgetContents_4")
        self.textEdit_5 = QtWidgets.QTextEdit(self.scrollAreaWidgetContents_4)
        self.textEdit_5.setGeometry(QtCore.QRect(260, 40, 111, 27))
        self.textEdit_5.setObjectName("textEdit_5")
        self.comboBox_7 = QtWidgets.QComboBox(self.scrollAreaWidgetContents_4)
        self.comboBox_7.setGeometry(QtCore.QRect(130, 40, 111, 27))
        self.comboBox_7.setEditable(True)
        self.comboBox_7.setObjectName("comboBox_7")
        self.label_5 = QtWidgets.QLabel(self.scrollAreaWidgetContents_4)
        self.label_5.setGeometry(QtCore.QRect(20, 40, 101, 27))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_5.setFont(font)
        self.label_5.setObjectName("label_5")
        self.label_6 = QtWidgets.QLabel(self.scrollAreaWidgetContents_4)
        self.label_6.setGeometry(QtCore.QRect(130, 10, 111, 24))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_6.setFont(font)
        self.label_6.setAlignment(QtCore.Qt.AlignCenter)
        self.label_6.setObjectName("label_6")
        self.label_7 = QtWidgets.QLabel(self.scrollAreaWidgetContents_4)
        self.label_7.setGeometry(QtCore.QRect(260, 10, 111, 24))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_7.setFont(font)
        self.label_7.setAlignment(QtCore.Qt.AlignCenter)
        self.label_7.setObjectName("label_7")
        self.label_8 = QtWidgets.QLabel(self.scrollAreaWidgetContents_4)
        self.label_8.setGeometry(QtCore.QRect(390, 10, 111, 24))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_8.setFont(font)
        self.label_8.setAlignment(QtCore.Qt.AlignCenter)
        self.label_8.setObjectName("label_8")
        self.textEdit_6 = QtWidgets.QTextEdit(self.scrollAreaWidgetContents_4)
        self.textEdit_6.setGeometry(QtCore.QRect(390, 40, 111, 27))
        self.textEdit_6.setObjectName("textEdit_6")
        self.label_9 = QtWidgets.QLabel(self.scrollAreaWidgetContents_4)
        self.label_9.setGeometry(QtCore.QRect(20, 75, 101, 27))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_9.setFont(font)
        self.label_9.setObjectName("label_9")
        self.comboBox_8 = QtWidgets.QComboBox(self.scrollAreaWidgetContents_4)
        self.comboBox_8.setGeometry(QtCore.QRect(130, 75, 111, 27))
        self.comboBox_8.setEditable(True)
        self.comboBox_8.setObjectName("comboBox_8")
        self.textEdit_7 = QtWidgets.QTextEdit(self.scrollAreaWidgetContents_4)
        self.textEdit_7.setGeometry(QtCore.QRect(260, 75, 111, 27))
        self.textEdit_7.setObjectName("textEdit_7")
        self.textEdit_8 = QtWidgets.QTextEdit(self.scrollAreaWidgetContents_4)
        self.textEdit_8.setGeometry(QtCore.QRect(390, 75, 111, 27))
        self.textEdit_8.setObjectName("textEdit_8")
        self.label_10 = QtWidgets.QLabel(self.scrollAreaWidgetContents_4)
        self.label_10.setGeometry(QtCore.QRect(20, 110, 101, 27))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_10.setFont(font)
        self.label_10.setObjectName("label_10")
        self.comboBox_9 = QtWidgets.QComboBox(self.scrollAreaWidgetContents_4)
        self.comboBox_9.setGeometry(QtCore.QRect(130, 110, 111, 27))
        self.comboBox_9.setEditable(True)
        self.comboBox_9.setObjectName("comboBox_9")
        self.textEdit_9 = QtWidgets.QTextEdit(self.scrollAreaWidgetContents_4)
        self.textEdit_9.setGeometry(QtCore.QRect(260, 110, 111, 27))
        self.textEdit_9.setObjectName("textEdit_9")
        self.textEdit_10 = QtWidgets.QTextEdit(self.scrollAreaWidgetContents_4)
        self.textEdit_10.setGeometry(QtCore.QRect(390, 110, 111, 27))
        self.textEdit_10.setObjectName("textEdit_10")
        self.textEdit_11 = QtWidgets.QTextEdit(self.scrollAreaWidgetContents_4)
        self.textEdit_11.setGeometry(QtCore.QRect(390, 145, 111, 27))
        self.textEdit_11.setObjectName("textEdit_11")
        self.textEdit_12 = QtWidgets.QTextEdit(self.scrollAreaWidgetContents_4)
        self.textEdit_12.setGeometry(QtCore.QRect(260, 145, 111, 27))
        self.textEdit_12.setObjectName("textEdit_12")
        self.comboBox_10 = QtWidgets.QComboBox(self.scrollAreaWidgetContents_4)
        self.comboBox_10.setGeometry(QtCore.QRect(130, 145, 111, 27))
        self.comboBox_10.setEditable(True)
        self.comboBox_10.setObjectName("comboBox_10")
        self.label_11 = QtWidgets.QLabel(self.scrollAreaWidgetContents_4)
        self.label_11.setGeometry(QtCore.QRect(20, 145, 101, 27))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_11.setFont(font)
        self.label_11.setObjectName("label_11")
        self.scrollArea_4.setWidget(self.scrollAreaWidgetContents_4)
        TabWidget_p.addTab(self.tab_DefaultValues, "")
        self.tab_AddOptions = QtWidgets.QWidget()
        self.tab_AddOptions.setObjectName("tab_AddOptions")
        self.pushButton_AddOpts_Next = QtWidgets.QPushButton(self.tab_AddOptions)
        self.pushButton_AddOpts_Next.setGeometry(QtCore.QRect(680, 500, 99, 27))
        self.pushButton_AddOpts_Next.setObjectName("pushButton_AddOpts_Next")
        self.pushButton_AddOpts_Prev = QtWidgets.QPushButton(self.tab_AddOptions)
        self.pushButton_AddOpts_Prev.setGeometry(QtCore.QRect(580, 500, 99, 27))
        self.pushButton_AddOpts_Prev.setObjectName("pushButton_AddOpts_Prev")
        self.label_Baseline = QtWidgets.QLabel(self.tab_AddOptions)
        self.label_Baseline.setGeometry(QtCore.QRect(50, 20, 81, 27))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_Baseline.setFont(font)
        self.label_Baseline.setObjectName("label_Baseline")
        self.textEdit_Baseline = QtWidgets.QTextEdit(self.tab_AddOptions)
        self.textEdit_Baseline.setGeometry(QtCore.QRect(160, 20, 111, 27))
        self.textEdit_Baseline.setObjectName("textEdit_Baseline")
        self.label_W = QtWidgets.QLabel(self.tab_AddOptions)
        self.label_W.setGeometry(QtCore.QRect(280, 20, 50, 27))
        self.label_W.setObjectName("label_W")
        self.checkBox_DetailedInfo = QtWidgets.QCheckBox(self.tab_AddOptions)
        self.checkBox_DetailedInfo.setGeometry(QtCore.QRect(50, 90, 121, 22))
        self.checkBox_DetailedInfo.setObjectName("checkBox_DetailedInfo")
        self.checkBox_SmoothRunsAverage = QtWidgets.QCheckBox(self.tab_AddOptions)
        self.checkBox_SmoothRunsAverage.setGeometry(QtCore.QRect(50, 120, 181, 22))
        self.checkBox_SmoothRunsAverage.setObjectName("checkBox_SmoothRunsAverage")
        TabWidget_p.addTab(self.tab_AddOptions, "")
        self.tab_OptimSettings = QtWidgets.QWidget()
        self.tab_OptimSettings.setObjectName("tab_OptimSettings")
        self.pushButton_OptSet_Prev = QtWidgets.QPushButton(self.tab_OptimSettings)
        self.pushButton_OptSet_Prev.setGeometry(QtCore.QRect(580, 500, 99, 27))
        self.pushButton_OptSet_Prev.setObjectName("pushButton_OptSet_Prev")
        self.pushButton_OptSet_Generate = QtWidgets.QPushButton(self.tab_OptimSettings)
        self.pushButton_OptSet_Generate.setGeometry(QtCore.QRect(680, 500, 99, 27))
        self.pushButton_OptSet_Generate.setObjectName("pushButton_OptSet_Generate")
        self.label_PathToOptSetting = QtWidgets.QLabel(self.tab_OptimSettings)
        self.label_PathToOptSetting.setEnabled(False)
        self.label_PathToOptSetting.setGeometry(QtCore.QRect(50, 80, 211, 27))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_PathToOptSetting.setFont(font)
        self.label_PathToOptSetting.setObjectName("label_PathToOptSetting")
        self.pushButton_BrowseOptSettings = QtWidgets.QPushButton(self.tab_OptimSettings)
        self.pushButton_BrowseOptSettings.setEnabled(False)
        self.pushButton_BrowseOptSettings.setGeometry(QtCore.QRect(360, 110, 99, 27))
        self.pushButton_BrowseOptSettings.setObjectName("pushButton_BrowseOptSettings")
        self.checkBox_GenerateOptSettingFile = QtWidgets.QCheckBox(self.tab_OptimSettings)
        self.checkBox_GenerateOptSettingFile.setGeometry(QtCore.QRect(50, 20, 241, 27))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.checkBox_GenerateOptSettingFile.setFont(font)
        self.checkBox_GenerateOptSettingFile.setChecked(False)
        self.checkBox_GenerateOptSettingFile.setObjectName("checkBox_GenerateOptSettingFile")
        self.label_UncoreFreq = QtWidgets.QLabel(self.tab_OptimSettings)
        self.label_UncoreFreq.setEnabled(False)
        self.label_UncoreFreq.setGeometry(QtCore.QRect(50, 225, 101, 27))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_UncoreFreq.setFont(font)
        self.label_UncoreFreq.setObjectName("label_UncoreFreq")
        self.comboBox_NumThreads = QtWidgets.QComboBox(self.tab_OptimSettings)
        self.comboBox_NumThreads.setEnabled(False)
        self.comboBox_NumThreads.setGeometry(QtCore.QRect(200, 260, 111, 27))
        self.comboBox_NumThreads.setEditable(True)
        self.comboBox_NumThreads.setObjectName("comboBox_NumThreads")
        self.label_Role = QtWidgets.QLabel(self.tab_OptimSettings)
        self.label_Role.setEnabled(False)
        self.label_Role.setGeometry(QtCore.QRect(50, 160, 241, 23))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_Role.setFont(font)
        self.label_Role.setObjectName("label_Role")
        self.label_CoreFreq = QtWidgets.QLabel(self.tab_OptimSettings)
        self.label_CoreFreq.setEnabled(False)
        self.label_CoreFreq.setGeometry(QtCore.QRect(50, 190, 111, 27))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_CoreFreq.setFont(font)
        self.label_CoreFreq.setObjectName("label_CoreFreq")
        self.label_NumThreads = QtWidgets.QLabel(self.tab_OptimSettings)
        self.label_NumThreads.setEnabled(False)
        self.label_NumThreads.setGeometry(QtCore.QRect(50, 260, 141, 27))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_NumThreads.setFont(font)
        self.label_NumThreads.setObjectName("label_NumThreads")
        self.comboBox_UncoreFreq = QtWidgets.QComboBox(self.tab_OptimSettings)
        self.comboBox_UncoreFreq.setEnabled(False)
        self.comboBox_UncoreFreq.setGeometry(QtCore.QRect(200, 225, 111, 27))
        self.comboBox_UncoreFreq.setEditable(True)
        self.comboBox_UncoreFreq.setObjectName("comboBox_UncoreFreq")
        self.comboBox_CoreFreq = QtWidgets.QComboBox(self.tab_OptimSettings)
        self.comboBox_CoreFreq.setEnabled(False)
        self.comboBox_CoreFreq.setGeometry(QtCore.QRect(200, 190, 111, 27))
        self.comboBox_CoreFreq.setEditable(True)
        self.comboBox_CoreFreq.setObjectName("comboBox_CoreFreq")
        self.lineEdit_OptSettingsFilePath = QtWidgets.QLineEdit(self.tab_OptimSettings)
        self.lineEdit_OptSettingsFilePath.setEnabled(False)
        self.lineEdit_OptSettingsFilePath.setGeometry(QtCore.QRect(50, 110, 300, 27))
        self.lineEdit_OptSettingsFilePath.setObjectName("lineEdit_OptSettingsFilePath")
        TabWidget_p.addTab(self.tab_OptimSettings, "")

        self.retranslateUi(TabWidget_p)
        TabWidget_p.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(TabWidget_p)

        self.pushButton_Regions_Next.clicked.connect(self.__next)
        self.pushButton_DataParam_Next.clicked.connect(self.__next)
        self.pushButton_DefVal_Next.clicked.connect(self.__next)
        self.pushButton_AddOpts_Next.clicked.connect(self.__next)
        self.pushButton_DataParam_Prev.clicked.connect(self.__previous)
        self.pushButton_DefVal_Prev.clicked.connect(self.__previous)
        self.pushButton_AddOpts_Prev.clicked.connect(self.__previous)
        self.pushButton_OptSet_Prev.clicked.connect(self.__previous)
        self.pushButton_OptSet_Generate.clicked.connect(self.__generate)

        self.comboBox_MainRegion.addItems(self.regions)
        self.comboBox_MainRegion.setEditable(False)

        self.comboBox_IterationRegion.addItems(['None'] + self.regions)
        self.comboBox_IterationRegion.setEditable(False)

        self.checkBox_GenerateOptSettingFile.clicked.connect(self.__optChecked)
        self.checkBox_time_energy_vars.clicked.connect(self.__opt_time_eneregy)

        self.treeWidget_ylabel.itemChanged.connect(self.__tree_select)

        self.comboBox_time.activated.connect(self.__combo_time_energy)
        self.comboBox_energy.activated.connect(self.__combo_time_energy)

    def retranslateUi(self, TabWidget_p):
        _translate = QtCore.QCoreApplication.translate
        TabWidget_p.setWindowTitle(_translate("TabWidget", "Radar configuration"))
        self.pushButton_Regions_Next.setText(_translate("TabWidget", "Next"))
        self.label_MainRegions.setText(_translate("TabWidget", "Main region"))
        self.label_IterationRegion.setText(_translate("TabWidget", "Iteration region"))
        self.label_NestedRegions.setText(_translate("TabWidget", "Nested regions"))
        TabWidget_p.setTabText(TabWidget_p.indexOf(self.tab_Regions), _translate("TabWidget", "Regions"))
        self.pushButton_DataParam_Next.setText(_translate("TabWidget", "Next"))
        self.pushButton_DataParam_Prev.setText(_translate("TabWidget", "Previous"))
        self.label_ylabel.setText(_translate("TabWidget", "y label"))
        self.label_parameters.setText(_translate("TabWidget", "Parameters"))
        self.checkBox_time_energy_vars.setText(_translate("TabWidget", "Time-energy variables"))
        self.label_time.setText(_translate("TabWidget", "Time"))
        self.label_energy.setText(_translate("TabWidget", "Energy"))
        TabWidget_p.setTabText(TabWidget_p.indexOf(self.tab_DataParameters), _translate("TabWidget", "Data parameters"))
        self.pushButton_DefVal_Next.setText(_translate("TabWidget", "Next"))
        self.pushButton_DefVal_Prev.setText(_translate("TabWidget", "Previous"))
        self.label_5.setText(_translate("TabWidget", "Parameter 1"))
        self.label_6.setText(_translate("TabWidget", "Default value"))
        self.label_7.setText(_translate("TabWidget", "Unit"))
        self.label_8.setText(_translate("TabWidget", "Multiplier"))
        self.label_9.setText(_translate("TabWidget", "Parameter 2"))
        self.label_10.setText(_translate("TabWidget", "Parameter 3"))
        self.label_11.setText(_translate("TabWidget", "Parameter 4"))
        TabWidget_p.setTabText(TabWidget_p.indexOf(self.tab_DefaultValues), _translate("TabWidget", "Default values"))
        self.pushButton_AddOpts_Next.setText(_translate("TabWidget", "Next"))
        self.pushButton_AddOpts_Prev.setText(_translate("TabWidget", "Previous"))
        self.label_Baseline.setText(_translate("TabWidget", "Baseline"))
        self.label_W.setText(_translate("TabWidget", "W"))
        self.checkBox_DetailedInfo.setText(_translate("TabWidget", "Detailed info"))
        self.checkBox_SmoothRunsAverage.setText(_translate("TabWidget", "Smooth runs average"))
        TabWidget_p.setTabText(TabWidget_p.indexOf(self.tab_AddOptions), _translate("TabWidget", "Additional options"))
        self.pushButton_OptSet_Prev.setText(_translate("TabWidget", "Previous"))
        self.pushButton_OptSet_Generate.setText(_translate("TabWidget", "Generate"))
        self.label_PathToOptSetting.setText(_translate("TabWidget", "Path to optimal settings file"))
        self.pushButton_BrowseOptSettings.setText(_translate("TabWidget", "Browse.."))
        self.checkBox_GenerateOptSettingFile.setText(_translate("TabWidget", "Generate optimal settings file"))
        self.label_UncoreFreq.setText(_translate("TabWidget", "Uncore frequency"))
        self.label_Role.setText(_translate("TabWidget", "Set roles of parameters in MERIC"))
        self.label_CoreFreq.setText(_translate("TabWidget", "Core frequency"))
        self.label_NumThreads.setText(_translate("TabWidget", "Number of threads"))
        TabWidget_p.setTabText(TabWidget_p.indexOf(self.tab_OptimSettings), _translate("TabWidget", "Optimal settings"))

    def __next(self):
        self.tab_widget.setCurrentIndex(self.tab_widget.currentIndex() + 1)

    def __previous(self):
        self.tab_widget.setCurrentIndex(self.tab_widget.currentIndex() - 1)

    def __generate(self):
        dlg = QtWidgets.QFileDialog()
        save_file_path =str(dlg.getSaveFileName(filter='Text files (*.py)')[0])
        if not save_file_path.endswith('.py') and save_file_path:
            save_file_path = save_file_path + '.py'
        if not save_file_path:
            save_file_path ='Error: You must enter filename!'
        print('saving config to file: ' + save_file_path)


    def __optChecked(self):
        if self.checkBox_GenerateOptSettingFile.isChecked():
            self.label_PathToOptSetting.setEnabled(True)
            self.lineEdit_OptSettingsFilePath.setEnabled(True)
            self.pushButton_BrowseOptSettings.setEnabled(True)
            self.label_Role.setEnabled(True)
            self.label_CoreFreq.setEnabled(True)
            self.label_UncoreFreq.setEnabled(True)
            self.label_NumThreads.setEnabled(True)
            self.comboBox_CoreFreq.setEnabled(True)
            self.comboBox_UncoreFreq.setEnabled(True)
            self.comboBox_NumThreads.setEnabled(True)
        else:
            self.label_PathToOptSetting.setEnabled(False)
            self.lineEdit_OptSettingsFilePath.setEnabled(False)
            self.pushButton_BrowseOptSettings.setEnabled(False)
            self.label_Role.setEnabled(False)
            self.label_CoreFreq.setEnabled(False)
            self.label_UncoreFreq.setEnabled(False)
            self.label_NumThreads.setEnabled(False)
            self.comboBox_CoreFreq.setEnabled(False)
            self.comboBox_UncoreFreq.setEnabled(False)
            self.comboBox_NumThreads.setEnabled(False)

    def __opt_time_eneregy(self):
        if self.checkBox_time_energy_vars.isChecked():
            self.comboBox_time.setEnabled(True)
            self.comboBox_energy.setEnabled(True)
            self.label_time.setEnabled(True)
            self.label_energy.setEnabled(True)
        else:
            self.comboBox_time.setEnabled(False)
            self.comboBox_energy.setEnabled(False)
            self.label_time.setEnabled(False)
            self.label_energy.setEnabled(False)

    def __combo_time_energy(self):
        if self.time_var:
            self.possible_energy_vars.append(self.time_var)
        if self.energy_var:
            self.possible_time_vars.append(self.energy_var)
        if self.comboBox_time.currentText():
            self.time_var = self.comboBox_time.currentText()
            self.possible_energy_vars.remove(self.time_var)
        if self.comboBox_energy.currentText():
            self.energy_var = self.comboBox_energy.currentText()
            self.possible_time_vars.remove(self.energy_var)

        act_energy_label = self.comboBox_energy.currentText()
        act_time_label = self.comboBox_time.currentText()
        self.comboBox_energy.clear()
        self.comboBox_time.clear()
        self.comboBox_time.addItems(self.possible_time_vars)
        self.comboBox_energy.addItems(self.possible_energy_vars)
        self.comboBox_energy.setCurrentIndex(self.comboBox_energy.findText(act_energy_label))
        self.comboBox_time.setCurrentIndex(self.comboBox_time.findText(act_time_label))

    def __tree_select(self, item, column):
        if item.checkState(column) == QtCore.Qt.Checked and item.text(0) not in self.ylabel_dic.keys():
            self.possible_time_vars.append(item.text(0))
            self.possible_energy_vars.append(item.text(0))
            act_energy_label = self.comboBox_energy.currentText()
            act_time_label = self.comboBox_time.currentText()
            self.comboBox_energy.clear()
            self.comboBox_time.clear()
            self.comboBox_time.addItems(self.possible_time_vars)
            self.comboBox_energy.addItems(self.possible_energy_vars)
            self.comboBox_energy.setCurrentIndex(self.comboBox_energy.findText(act_energy_label))
            self.comboBox_time.setCurrentIndex(self.comboBox_time.findText(act_time_label))
        elif item.checkState(column) == QtCore.Qt.Unchecked and item.text(0) not in self.ylabel_dic.keys():
            if item.text(0) in self.possible_time_vars:
                self.possible_time_vars.remove(item.text(0))
            if item.text(0) in self.possible_energy_vars:
                self.possible_energy_vars.remove(item.text(0))
            act_energy_label = self.comboBox_energy.currentText()
            act_time_label = self.comboBox_time.currentText()
            self.comboBox_energy.clear()
            self.comboBox_time.clear()
            self.comboBox_time.addItems(self.possible_time_vars)
            self.comboBox_energy.addItems(self.possible_energy_vars)
            self.comboBox_energy.setCurrentIndex(self.comboBox_energy.findText(act_energy_label))
            self.comboBox_time.setCurrentIndex(self.comboBox_time.findText(act_time_label))






    def __parameters_combobox(self, current_combo_box):
        if current_combo_box.currentText() in ['xLabel', 'funcLabel']:
            if self.current_labels_dic[current_combo_box.currentText()] != current_combo_box:
                tmp_key = None
                if current_combo_box in self.current_labels_dic.values():
                    tmp_key = [k for k, v in self.current_labels_dic.items() if v == current_combo_box][0]
                    self.current_labels_dic[tmp_key] = None
                self.current_labels_dic[current_combo_box.currentText()] = current_combo_box
                for key, val in self.combobox_items_dic.items():
                    if key == current_combo_box:
                        continue
                    act_label = key.currentText()
                    if tmp_key is not None:
                        self.combobox_items_dic[key].append(tmp_key)
                    self.combobox_items_dic[key].remove(current_combo_box.currentText())
                    key.clear()
                    key.addItems(self.combobox_items_dic[key])
                    key.setCurrentIndex(key.findText(act_label))

        else:
            if current_combo_box in self.current_labels_dic.values():
                add_item = None
                for key, val in self.current_labels_dic.items():
                    if val == current_combo_box:
                        add_item = key
                        self.current_labels_dic[key] = None
                for key, val in self.combobox_items_dic.items():
                    if key == current_combo_box:
                        continue
                    act_label = key.currentText()
                    self.combobox_items_dic[key].append(add_item)
                    key.clear()
                    key.addItems(self.combobox_items_dic[key])
                    key.setCurrentIndex(key.findText(act_label))

if __name__ == "__main__":
    import sys

    print("Warrning: Test enviroment")
    app = QtWidgets.QApplication(sys.argv)
    TabWidget = QtWidgets.QTabWidget()
    ui = Ui_TabWidget()
    ui.setupUi(TabWidget)
    TabWidget.show()
    sys.exit(app.exec_())