Skip to content
Snippets Groups Projects
radarGUI_config.py 63.5 KiB
Newer Older
Ondrej Vysocky's avatar
Ondrej Vysocky committed
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'navrh.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
Ondrej Vysocky's avatar
Ondrej Vysocky committed
#
# WARNING! All changes made in this file will be lost!
import glob
import os
from src import pydot_example
from collections import OrderedDict as ordDict
from PyQt5 import QtCore, QtGui, QtWidgets
class CustomStepSpinBox(QtWidgets.QDoubleSpinBox):
    def __init__(self):
        QtWidgets.QDoubleSpinBox.__init__(self)

    def stepBy(self, steps: int):
        if steps == 1:
            self.setValue(self.value()*10)
            if self.decimals() > 0:
                self.setDecimals(self.decimals()-1)
        if steps == -1:
            if self.decimals() < 324 and (self.value()/10) % 1 != 0:  # maximum value for decimals is 323
                self.setDecimals(self.decimals()+1)
            self.setValue(self.value()/10)

Ondrej Vysocky's avatar
Ondrej Vysocky committed
class Ui_TabWidget(object):
        self.current_labels_dic = {'xLabel': None, 'funcLabel': None}
        self.data_path = ''
        self.config_path = ''
Ivo Peterek's avatar
Ivo Peterek committed
        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 = []
        self.possible_meric_parameters = []
        self.opt_settings_items_dic = {}
        self.current_opt_items_dic = {}
        self.selected_y_labels = []
        self.onlyFloat = QtGui.QDoubleValidator()
        self.all_nested_regs_selected = False
        self.save_file_path = ''
        self.tree_data_selected = dict()
Ivo Peterek's avatar
Ivo Peterek committed

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

        if 'root_' \
           'folder' in self.config_dic and self.config_dic['root_folder'][0][0] and not self.data_path:
            self.data_path = self.config_dic['root_folder'][0][0]

Ivo Peterek's avatar
Ivo Peterek committed
        for region in os.listdir(self.data_path):
            if os.path.isdir(self.data_path + "/" + region):
                if glob.glob(glob.escape(self.data_path) + '/' + region + '/*.csv'):
Ivo Peterek's avatar
Ivo Peterek committed
                    self.regions.append(region)
        self.regions = sorted(self.regions, key=lambda s: s.lower())
        csv_names = glob.glob(glob.escape(self.data_path) + '/' + self.regions[0] + '/*.csv')
        first_csv_path = csv_names[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"):
                    line[0]=line[0].split('#')[1]
                    dkey = line[0].strip()
                elif dkey and line[0] is not dkey and not line[0].startswith("# CALLTREE"):
                    self.ylabel_dic.setdefault(dkey, []).append(line[0].strip())
        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
        self.parameter_values_dic = {}

        for i in range(self.parameters_count):
            self.parameter_values_dic[i] = []

        for n, item in enumerate(csv_names):
            item = item.split('/')[-1]
            item = os.path.splitext(item)[0]
            item = item.split('_')
            for i in range(self.parameters_count):
                self.parameter_values_dic[i].append(item[i])

        for k, v in self.parameter_values_dic.items():
            if v[0].isdigit():
                self.parameter_values_dic[k] = sorted(list(set(v)), key=lambda s: int(s), reverse=True)
            else:
                self.parameter_values_dic[k] = sorted(list(set(v)), reverse=True)
        measurement_info_path = Path(self.data_path + '/measurementInfo.json')
        if measurement_info_path.exists():
            with open(measurement_info_path) as f:
                try:
                    measurement_info_file_data = json.load(f)
                    self.measurement_params = measurement_info_file_data['DataFormat'].split("_")
                except json.decoder.JSONDecodeError:
                    self.__print_error_msg('measurementInfo.json file is not in valid format')
        i = 0
        self.reg_times = {}
        for subdir, dirs, files in os.walk(self.data_path):
            if not i:
                i += 1
                continue

            with open('{}/{}'.format(subdir, files[0])) as f:
                for line in f:
                    line = line.strip()
                    if 'Runtime of function' in line:
                        tmp2 = float(line.split(',')[-1])
                        self.reg_times[subdir.split('/')[-1]] = tmp2
                        break
        TabWidget_p.setObjectName("TabWidget")
        TabWidget_p.setWindowModality(QtCore.Qt.NonModal)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
Ondrej Vysocky's avatar
Ondrej Vysocky committed
        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)
Ivo Peterek's avatar
Ivo Peterek committed
        self.tab_Regions = QtWidgets.QWidget()
        self.tab_Regions.setEnabled(True)
        self.tab_Regions.setMinimumSize(QtCore.QSize(794, 0))
Ondrej Vysocky's avatar
Ondrej Vysocky committed
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        font.setStrikeOut(False)
        font.setKerning(False)
Ivo Peterek's avatar
Ivo Peterek committed
        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(660, 520, 99, 27))
Ivo Peterek's avatar
Ivo Peterek committed
        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))
Ondrej Vysocky's avatar
Ondrej Vysocky committed
        font.setBold(True)
        font.setWeight(75)
Ivo Peterek's avatar
Ivo Peterek committed
        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))
Ondrej Vysocky's avatar
Ondrej Vysocky committed
        font = QtGui.QFont()
Ivo Peterek's avatar
Ivo Peterek committed
        font.setPointSize(11)
        self.comboBox_MainRegion.setFont(font)
        self.comboBox_MainRegion.setEditable(False)
Ivo Peterek's avatar
Ivo Peterek committed
        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)
Ondrej Vysocky's avatar
Ondrej Vysocky committed
        font.setBold(True)
        font.setWeight(75)
Ivo Peterek's avatar
Ivo Peterek committed
        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)
Ivo Peterek's avatar
Ivo Peterek committed
        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, 421))
        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, 421))
        self.frame_nested_regions.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_nested_regions.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_nested_regions.setObjectName("frame_nested_regions")
Ivo Peterek's avatar
Ivo Peterek committed
        self.label_NestedRegions = QtWidgets.QLabel(self.tab_Regions)
        self.label_NestedRegions.setGeometry(QtCore.QRect(360, 20, 150, 27))
Ondrej Vysocky's avatar
Ondrej Vysocky committed
        font = QtGui.QFont()
Ivo Peterek's avatar
Ivo Peterek committed
        font.setPointSize(11)
Ondrej Vysocky's avatar
Ondrej Vysocky committed
        font.setBold(True)
        font.setWeight(75)
Ivo Peterek's avatar
Ivo Peterek committed
        self.label_NestedRegions.setFont(font)
        self.label_NestedRegions.setObjectName("label_NestedRegions")
        self.pushButton_Regions_All = QtWidgets.QPushButton(self.tab_Regions)
        self.pushButton_Regions_All.setGeometry(QtCore.QRect(660, 480, 99, 27))
        font = QtGui.QFont()
        font.setPointSize(11)
        self.pushButton_Regions_All.setFont(font)
        self.pushButton_Regions_All.setObjectName("pushButton_Regions_All")
        self.doubleSpinBox = QtWidgets.QDoubleSpinBox(self.tab_Regions)
        self.doubleSpinBox.setGeometry(QtCore.QRect(50, 200, 121, 26))
        self.doubleSpinBox.setDecimals(8)
        self.doubleSpinBox.setObjectName("doubleSpinBox")
        self.pushButton_tree = QtWidgets.QPushButton(self.tab_Regions)
        self.pushButton_tree.setGeometry(QtCore.QRect(50, 290, 151, 27))
        font = QtGui.QFont()
        font.setPointSize(11)
        self.pushButton_tree.setFont(font)
        self.pushButton_tree.setObjectName("pushButton_tree")
        self.pushButton_filter = QtWidgets.QPushButton(self.tab_Regions)
        self.pushButton_filter.setGeometry(QtCore.QRect(50, 240, 99, 27))
        font = QtGui.QFont()
        font.setPointSize(11)
        self.pushButton_filter.setFont(font)
        self.pushButton_filter.setObjectName("pushButton_filter")
        self.label_sec = QtWidgets.QLabel(self.tab_Regions)
        self.label_sec.setGeometry(QtCore.QRect(180, 200, 31, 27))
        font = QtGui.QFont()
        font.setPointSize(11)
        font.setBold(True)
        font.setWeight(75)
        self.label_sec.setFont(font)
        self.label_sec.setObjectName("label_sec")
        self.label_filter = QtWidgets.QLabel(self.tab_Regions)
        self.label_filter.setGeometry(QtCore.QRect(50, 170, 231, 27))
        font = QtGui.QFont()
        font.setPointSize(11)
        font.setBold(True)
        font.setWeight(75)
        self.label_filter.setFont(font)
        self.label_filter.setObjectName("label_filter")
        TabWidget_p.addTab(self.tab_Regions, "")
Ivo Peterek's avatar
Ivo Peterek committed
        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(660, 520, 99, 27))
Ivo Peterek's avatar
Ivo Peterek committed
        self.pushButton_DataParam_Next.setObjectName("pushButton_DataParam_Next")
        self.pushButton_DataParam_Prev = QtWidgets.QPushButton(self.tab_DataParameters)
        self.pushButton_DataParam_Prev.setGeometry(QtCore.QRect(560, 520, 99, 27))
Ivo Peterek's avatar
Ivo Peterek committed
        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, 711, 300))
        self.widget_parameters.setObjectName("widget_parameters")
        self.frame_parameters = QtWidgets.QFrame(self.widget_parameters)
        self.frame_parameters.setGeometry(QtCore.QRect(0, 0, 711, 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.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.frame_time_energy = QtWidgets.QFrame(self.tab_DataParameters)
        self.frame_time_energy.setGeometry(QtCore.QRect(540, 50, 221, 141))
        self.frame_time_energy.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.frame_time_energy.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_time_energy.setObjectName("frame_time_energy")
        self.lineEdit_baseline = QtWidgets.QLineEdit(self.frame_time_energy)
        self.lineEdit_baseline.setGeometry(QtCore.QRect(80, 110, 113, 25))
        self.lineEdit_baseline.setObjectName("lineEdit_baseline")
        self.comboBox_time = QtWidgets.QComboBox(self.frame_time_energy)
        self.comboBox_time.setEnabled(True)
        self.comboBox_time.setGeometry(QtCore.QRect(0, 20, 221, 25))
        self.comboBox_time.setObjectName("comboBox_time")
        self.label_Baseline = QtWidgets.QLabel(self.frame_time_energy)
        self.label_Baseline.setGeometry(QtCore.QRect(0, 110, 81, 27))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_Baseline.setFont(font)
        self.label_Baseline.setObjectName("label_Baseline")
        self.label_energy = QtWidgets.QLabel(self.frame_time_energy)
        self.label_energy.setEnabled(True)
        self.label_energy.setGeometry(QtCore.QRect(0, 50, 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.frame_time_energy)
        self.comboBox_energy.setEnabled(True)
        self.comboBox_energy.setGeometry(QtCore.QRect(0, 70, 221, 25))
        self.comboBox_energy.setObjectName("comboBox_energy")
        self.label_W = QtWidgets.QLabel(self.frame_time_energy)
        self.label_W.setGeometry(QtCore.QRect(200, 110, 31, 27))
        self.label_W.setObjectName("label_W")
        self.label_time = QtWidgets.QLabel(self.frame_time_energy)
        self.label_time.setEnabled(True)
        self.label_time.setGeometry(QtCore.QRect(0, 0, 67, 17))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label_time.setFont(font)
        self.label_time.setObjectName("label_time")
        myform_param = QtWidgets.QFormLayout()
        label_parameters_list = []
        self.lineEdit_parameters_list = []
        self.comboBox_parameters_list = []
        self.comboBox_default_vals_list = []
        self.spinBox_default_multp_list = []
        self.lineEdit_default_unit_list = []
        self.all_parameters = ['key', 'config', 'funcLabel', 'xLabel']
        self.parameters_combobox_items_dic = {}

        head_label1 = QtWidgets.QLabel()
        head_label1.setFixedWidth(150)
        head_label1.setFont(font)
        head_label2 = QtWidgets.QLabel('Role')
        head_label2.setFixedWidth(100)
        head_label2.setFont(font)
        head_label3 = QtWidgets.QLabel('Default value')
        head_label3.setFixedWidth(150)
        head_label3.setFont(font)
        head_label4 = QtWidgets.QLabel('Multiplier')
        head_label4.setFixedWidth(100)
        head_label4.setFont(font)
        head_label5 = QtWidgets.QLabel('Unit')
        head_label5.setFixedWidth(100)
        head_label5.setFont(font)
        new_row = QtWidgets.QHBoxLayout()
        new_row.addWidget(head_label1)
        new_row.addWidget(head_label2)
        new_row.addWidget(head_label3)
        new_row.addWidget(head_label4)
        new_row.addWidget(head_label5)
        myform_param.addRow(new_row)

        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])

            self.lineEdit_parameters_list.append(QtWidgets.QLineEdit())
            self.comboBox_parameters_list.append(QtWidgets.QComboBox())
            self.comboBox_default_vals_list.append(QtWidgets.QComboBox())
            self.spinBox_default_multp_list.append(CustomStepSpinBox())
            self.lineEdit_default_unit_list.append(QtWidgets.QLineEdit())

            self.parameters_combobox_items_dic[self.comboBox_parameters_list[-1]] = list(self.all_parameters)
            self.comboBox_default_vals_list[i].addItems(self.parameter_values_dic[i])
            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])
            self.lineEdit_parameters_list[i].textChanged.connect(self.__parameter_name_changed)
            if self.measurement_params and i < len(self.measurement_params):
                self.lineEdit_parameters_list[i].setText(self.measurement_params[i])
            self.lineEdit_parameters_list[i].setFixedWidth(150)
            self.comboBox_parameters_list[i].setFixedWidth(100)
            self.comboBox_default_vals_list[i].setFixedWidth(150)
            self.spinBox_default_multp_list[i].setFixedWidth(100)
            self.spinBox_default_multp_list[i].setEnabled(False)
            self.spinBox_default_multp_list[i].setValue(1)
            self.spinBox_default_multp_list[i].setDecimals(0)
            self.spinBox_default_multp_list[i].setRange(sys.float_info.min, sys.float_info.max)
            self.lineEdit_default_unit_list[i].setFixedWidth(100)
            new_row = QtWidgets.QHBoxLayout()
            new_row.addWidget(self.lineEdit_parameters_list[i])
            new_row.addWidget(self.comboBox_parameters_list[i])
            new_row.addWidget(self.comboBox_default_vals_list[i])
            new_row.addWidget(self.spinBox_default_multp_list[i])
            new_row.addWidget(self.lineEdit_default_unit_list[i])
            myform_param.addRow(new_row)
        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, "")
Ivo Peterek's avatar
Ivo Peterek committed
        self.tab_AddOptions = QtWidgets.QWidget()
        self.tab_AddOptions.setObjectName("tab_AddOptions")
        self.pushButton_AddOpts_Prev = QtWidgets.QPushButton(self.tab_AddOptions)
        self.pushButton_AddOpts_Prev.setGeometry(QtCore.QRect(410, 520, 99, 27))
Ivo Peterek's avatar
Ivo Peterek committed
        self.pushButton_AddOpts_Prev.setObjectName("pushButton_AddOpts_Prev")
        self.checkBox_DetailedInfo = QtWidgets.QCheckBox(self.tab_AddOptions)
        self.checkBox_DetailedInfo.setGeometry(QtCore.QRect(50, 20, 121, 22))
Ondrej Vysocky's avatar
Ondrej Vysocky committed
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.checkBox_DetailedInfo.setFont(font)
        self.checkBox_DetailedInfo.setObjectName("checkBox_DetailedInfo")
        self.checkBox_SmoothRunsAverage = QtWidgets.QCheckBox(self.tab_AddOptions)
        self.checkBox_SmoothRunsAverage.setGeometry(QtCore.QRect(50, 50, 181, 22))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.checkBox_SmoothRunsAverage.setFont(font)
        self.checkBox_SmoothRunsAverage.setObjectName("checkBox_SmoothRunsAverage")
        self.checkBox_GenerateOptSettingFile = QtWidgets.QCheckBox(self.tab_AddOptions)
        self.checkBox_GenerateOptSettingFile.setGeometry(QtCore.QRect(50, 110, 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.pushButton_Generate = QtWidgets.QPushButton(self.tab_AddOptions)
        self.pushButton_Generate.setGeometry(QtCore.QRect(510, 520, 99, 27))
        self.pushButton_Generate.setObjectName("pushButton_Generate")
        self.frame_opt_settings = QtWidgets.QFrame(self.tab_AddOptions)
        self.frame_opt_settings.setGeometry(QtCore.QRect(50, 150, 451, 271))
        self.frame_opt_settings.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame_opt_settings.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame_opt_settings.setObjectName("frame_opt_settings")
        self.pushButton_BrowseOptSettings = QtWidgets.QPushButton(self.frame_opt_settings)
        self.pushButton_BrowseOptSettings.setEnabled(True)
        self.pushButton_BrowseOptSettings.setGeometry(QtCore.QRect(320, 80, 99, 27))
        self.pushButton_BrowseOptSettings.setObjectName("pushButton_BrowseOptSettings")
        self.label_Role = QtWidgets.QLabel(self.frame_opt_settings)
        self.label_Role.setEnabled(True)
        self.label_Role.setGeometry(QtCore.QRect(10, 130, 241, 23))
        font.setBold(False)
        font.setWeight(50)
        self.label_Role.setFont(font)
        self.label_Role.setObjectName("label_Role")
        self.comboBox_UncoreFreq = QtWidgets.QComboBox(self.frame_opt_settings)
        self.comboBox_UncoreFreq.setEnabled(True)
        self.comboBox_UncoreFreq.setGeometry(QtCore.QRect(160, 195, 111, 27))
        self.comboBox_UncoreFreq.setEditable(False)
        self.comboBox_UncoreFreq.setObjectName("comboBox_UncoreFreq")
        self.lineEdit_OptSettingsFilePath = QtWidgets.QLineEdit(self.frame_opt_settings)
        self.lineEdit_OptSettingsFilePath.setEnabled(True)
        self.lineEdit_OptSettingsFilePath.setGeometry(QtCore.QRect(10, 80, 300, 27))
        self.lineEdit_OptSettingsFilePath.setObjectName("lineEdit_OptSettingsFilePath")
        self.comboBox_NumThreads = QtWidgets.QComboBox(self.frame_opt_settings)
        self.comboBox_NumThreads.setEnabled(True)
        self.comboBox_NumThreads.setGeometry(QtCore.QRect(160, 230, 111, 27))
        self.comboBox_NumThreads.setEditable(False)
        self.comboBox_NumThreads.setObjectName("comboBox_NumThreads")
        self.label_NumThreads = QtWidgets.QLabel(self.frame_opt_settings)
        self.label_NumThreads.setEnabled(True)
        self.label_NumThreads.setGeometry(QtCore.QRect(10, 230, 141, 27))
        font = QtGui.QFont()
        font.setBold(False)
        font.setWeight(50)
        self.label_NumThreads.setFont(font)
        self.label_NumThreads.setObjectName("label_NumThreads")
        self.label_CoreFreq = QtWidgets.QLabel(self.frame_opt_settings)
        self.label_CoreFreq.setEnabled(True)
        self.label_CoreFreq.setGeometry(QtCore.QRect(10, 160, 111, 27))
        font = QtGui.QFont()
        font.setBold(False)
        font.setWeight(50)
Ivo Peterek's avatar
Ivo Peterek committed
        self.label_CoreFreq.setFont(font)
        self.label_CoreFreq.setObjectName("label_CoreFreq")
        self.label_UncoreFreq = QtWidgets.QLabel(self.frame_opt_settings)
        self.label_UncoreFreq.setEnabled(True)
        self.label_UncoreFreq.setGeometry(QtCore.QRect(10, 195, 125, 27))
        self.label_UncoreFreq.setFont(font)
        self.label_UncoreFreq.setObjectName("label_UncoreFreq")
        self.label_PathToOptSetting = QtWidgets.QLabel(self.frame_opt_settings)
        self.label_PathToOptSetting.setEnabled(True)
        self.label_PathToOptSetting.setGeometry(QtCore.QRect(10, 50, 211, 27))
        font = QtGui.QFont()
        font.setBold(False)
        font.setWeight(50)
        self.label_PathToOptSetting.setFont(font)
        self.label_PathToOptSetting.setObjectName("label_PathToOptSetting")
        self.comboBox_CoreFreq = QtWidgets.QComboBox(self.frame_opt_settings)
        self.comboBox_CoreFreq.setEnabled(True)
        self.comboBox_CoreFreq.setGeometry(QtCore.QRect(160, 160, 111, 27))
        self.comboBox_CoreFreq.setEditable(False)
        self.comboBox_CoreFreq.setObjectName("comboBox_CoreFreq")
        self.label = QtWidgets.QLabel(self.frame_opt_settings)
        self.label.setGeometry(QtCore.QRect(10, 10, 301, 17))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.checkBox_test_csv_init = QtWidgets.QCheckBox(self.tab_AddOptions)
        self.checkBox_test_csv_init.setGeometry(QtCore.QRect(50, 80, 181, 22))
        font = QtGui.QFont()
        font.setBold(True)
        font.setWeight(75)
        self.checkBox_test_csv_init.setFont(font)
        self.checkBox_test_csv_init.setObjectName("checkBox_test_csv_init")
        self.pushButton_run = QtWidgets.QPushButton(self.tab_AddOptions)
        self.pushButton_run.setGeometry(QtCore.QRect(610, 520, 151, 27))
        self.pushButton_run.setObjectName("pushButton_run")
        TabWidget_p.addTab(self.tab_AddOptions, "")
        self.retranslateUi(TabWidget_p)
        TabWidget_p.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(TabWidget_p)
        myform = QtWidgets.QFormLayout()
        self.nested_regs_list = []

        self.nested_regs_selected_dic = ordDict()

        for i, region in enumerate(self.regions):
            self.nested_regs_list.append(QtWidgets.QCheckBox(region))
            if 'all_nested_regs' in self.config_dic and region in self.config_dic['all_nested_regs']:
                self.nested_regs_list[i].setCheckState(2)
            self.nested_regs_list[i].toggled.connect(self.__nested_region_check_changed)
            myform.addRow(self.nested_regs_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)

        self.frame_opt_settings.setEnabled(False)
        self.doubleSpinBox.setSingleStep(0.1)
        self.pushButton_Regions_Next.clicked.connect(self.__next)
        self.pushButton_DataParam_Next.clicked.connect(self.__next)
        self.pushButton_DataParam_Prev.clicked.connect(self.__previous)
        self.pushButton_AddOpts_Prev.clicked.connect(self.__previous)
        self.pushButton_Generate.clicked.connect(self.__generate_btn)
        self.pushButton_BrowseOptSettings.clicked.connect(self.__opt_settings_path)
        self.pushButton_Regions_All.clicked.connect(self.__select_all_nested_regions)
        self.pushButton_run.clicked.connect(self.__save_and_run)
        self.pushButton_tree.clicked.connect(self.__show_tree)
        self.pushButton_filter.clicked.connect(self.__filter)
Ivo Peterek's avatar
Ivo Peterek committed
        self.comboBox_MainRegion.addItems(self.regions)
        self.comboBox_MainRegion.setEditable(False)
        self.comboBox_MainRegion.activated.connect(self.__update_nested_regions)

Ivo Peterek's avatar
Ivo Peterek committed
        self.comboBox_IterationRegion.addItems(['None'] + self.regions)
        self.comboBox_IterationRegion.setEditable(False)

        self.checkBox_GenerateOptSettingFile.stateChanged.connect(self.__optChecked)
        self.checkBox_time_energy_vars.stateChanged.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)

        self.comboBox_opt_settings_list=[self.comboBox_CoreFreq, self.comboBox_UncoreFreq, self.comboBox_NumThreads]
        func_list = []
        for i, e in enumerate(self.comboBox_opt_settings_list):
            func_list.append((lambda tmp: lambda: self.__combo_opt_settings(self.comboBox_opt_settings_list[tmp]))(i))
            self.comboBox_opt_settings_list[i].activated.connect(func_list[-1])

        self.tab_widget.currentChanged.connect(self.__tab_index_changed)

        self.lineEdit_baseline.setValidator(self.onlyFloat)

        if 'main_reg' in self.config_dic and self.config_dic['main_reg'][0]:
            if self.config_dic['main_reg'][0][list(self.config_dic['main_reg'][0].keys())[0]] in self.regions:
                self.comboBox_MainRegion.setCurrentText(self.config_dic['main_reg'][0][list(self.config_dic['main_reg'][0].keys())[0]])

        if 'iter_call_region' in self.config_dic and self.config_dic['iter_call_region'] in self.regions:
            self.comboBox_IterationRegion.setCurrentText(self.config_dic['iter_call_region'])

        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)
                if 'y_label' in self.config_dic and i in self.config_dic['y_label'] and x in [item for sublist in self.config_dic['y_label'][i] for item in sublist]:
                    child.setCheckState(0, QtCore.Qt.Checked)
                else:
                    child.setCheckState(0, QtCore.Qt.Unchecked)

        if 'file_name_args_tup' in self.config_dic:
            key_num = 0
            for i in range(self.parameters_count):
                self.lineEdit_parameters_list[i].setText(self.config_dic['file_name_args_tup'][i][1])
                role = self.config_dic['file_name_args_tup'][i][0]
                self.comboBox_parameters_list[i].setCurrentText(role)
                self.__parameters_combobox(self.comboBox_parameters_list[i])
                if role == 'xLabel':
                    if 'def_x_val' in self.config_dic:
                        self.comboBox_default_vals_list[i].setCurrentText(str(self.config_dic['def_x_val']))
                    if 'x_val_unit' in self.config_dic:
                        self.lineEdit_default_unit_list[i].setText(self.config_dic['x_val_unit'])
                    if 'x_val_multiplier' in self.config_dic:
                        multiplier_string = str(self.config_dic['x_val_multiplier'])
                        decimals = multiplier_string[::-1].find('.')
                        self.spinBox_default_multp_list[i].setDecimals(decimals)
                        self.spinBox_default_multp_list[i].setValue(self.config_dic['x_val_multiplier'])
                if role == 'funcLabel':
                    if 'def_label_val' in self.config_dic:
                        self.comboBox_default_vals_list[i].setCurrentText(str(self.config_dic['def_label_val']))
                    if 'func_label_unit' in self.config_dic:
                        self.lineEdit_default_unit_list[i].setText(self.config_dic['func_label_unit'])
                    if 'label_val_multiplier' in self.config_dic:
                        multiplier_string = str(self.config_dic['label_val_multiplier'])
                        decimals = multiplier_string[::-1].find('.')
                        self.spinBox_default_multp_list[i].setDecimals(decimals)
                        self.spinBox_default_multp_list[i].setValue(self.config_dic['label_val_multiplier'])
                if role == 'key':
                    if 'def_keys_vals' in self.config_dic and self.config_dic['def_keys_vals'][key_num]:
                        self.comboBox_default_vals_list[i].setCurrentText(str(self.config_dic['def_keys_vals'][key_num]))
Ivo Peterek's avatar
Ivo Peterek committed
                    if 'keys_units' in self.config_dic and self.config_dic['keys_units'][key_num]:
                        self.lineEdit_default_unit_list[i].setText(self.config_dic['keys_units'][key_num])
        if 'time_energy_vars' in self.config_dic and self.config_dic['time_energy_vars']:
            self.checkBox_time_energy_vars.setCheckState(2)
            time_string = self.config_dic['time_energy_vars']['time'][0]+ " " +self.config_dic['time_energy_vars']['time'][1]
            if time_string in self.possible_time_vars:
                self.comboBox_time.setCurrentText(time_string)
                self.time_var = self.comboBox_time.currentText()
                self.__combo_time_energy()
            energy_string = self.config_dic['time_energy_vars']['energy'][0]+ " " +self.config_dic['time_energy_vars']['energy'][1]
            if energy_string in self.possible_energy_vars:
                self.comboBox_energy.setCurrentText(energy_string)
                self.energy_var = self.comboBox_energy.currentText()
                self.__combo_time_energy()

        if 'baseline' in self.config_dic and self.config_dic['baseline']:
            self.lineEdit_baseline.setText(str(self.config_dic['baseline']))

        if 'detailed_info' in self.config_dic and self.config_dic['detailed_info']:
            self.checkBox_DetailedInfo.setCheckState(2)

        if 'smooth_runs_average' in self.config_dic and self.config_dic['smooth_runs_average']:
            self.checkBox_SmoothRunsAverage.setCheckState(2)

        if 'test_csv_init' in self.config_dic and self.config_dic['test_csv_init']:
            self.checkBox_test_csv_init.setCheckState(2)

        if 'optim_settings_file_path' in self.config_dic and self.config_dic['optim_settings_file_path']:
            self.lineEdit_OptSettingsFilePath.setText(self.config_dic['optim_settings_file_path'])

        if 'generate_optim_settings_file' in self.config_dic and self.config_dic['generate_optim_settings_file']:
            for k, v in self.config_dic['generate_optim_settings_file'].items():
                if v == 'FREQUENCY':
                    self.comboBox_CoreFreq.setCurrentText(k)
                if v == 'UNCORE_FREQUENCY':
                    self.comboBox_UncoreFreq.setCurrentText(k)
                if v == 'NUM_THREADS':
                    self.comboBox_NumThreads.setCurrentText(k)

        self.__nested_region_check_changed()
    def retranslateUi(self, TabWidget_p):
        _translate = QtCore.QCoreApplication.translate
        TabWidget_p.setWindowTitle(_translate("TabWidget", "Radar configuration"))
Ivo Peterek's avatar
Ivo Peterek committed
        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"))
        self.pushButton_Regions_All.setText(_translate("TabWidget", "Select all"))
        self.pushButton_tree.setText(_translate("TabWidget", "Show region tree"))
        self.pushButton_filter.setText(_translate("TabWidget", "Apply filter"))
        self.label_sec.setText(_translate("TabWidget", "s"))
        self.label_filter.setText(_translate("TabWidget", "Filter nested regions by time"))
        TabWidget_p.setTabText(TabWidget_p.indexOf(self.tab_Regions), _translate("TabWidget", "Regions"))
Ivo Peterek's avatar
Ivo Peterek committed
        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_Baseline.setText(_translate("TabWidget", "Baseline"))
        self.label_energy.setText(_translate("TabWidget", "Energy"))
        self.label_W.setText(_translate("TabWidget", "W"))
        self.label_time.setText(_translate("TabWidget", "Time"))
        TabWidget_p.setTabText(TabWidget_p.indexOf(self.tab_DataParameters), _translate("TabWidget", "Data parameters"))
Ivo Peterek's avatar
Ivo Peterek committed
        self.pushButton_AddOpts_Prev.setText(_translate("TabWidget", "Previous"))
        self.checkBox_DetailedInfo.setText(_translate("TabWidget", "Detailed info"))
        self.checkBox_SmoothRunsAverage.setText(_translate("TabWidget", "Smooth runs average"))
        self.checkBox_GenerateOptSettingFile.setText(_translate("TabWidget", "Generate optimal settings file"))
        self.pushButton_Generate.setText(_translate("TabWidget", "Save config"))
        self.pushButton_BrowseOptSettings.setText(_translate("TabWidget", "Browse.."))
        self.label_Role.setText(_translate("TabWidget", "Set roles of parameters in MERIC"))
        self.label_NumThreads.setText(_translate("TabWidget", "Number of threads"))
Ivo Peterek's avatar
Ivo Peterek committed
        self.label_CoreFreq.setText(_translate("TabWidget", "Core frequency"))
        self.label_UncoreFreq.setText(_translate("TabWidget", "Uncore frequency"))
        self.label_PathToOptSetting.setText(_translate("TabWidget", "Path to optimal settings file"))
        self.label.setText(_translate("TabWidget", "Optimal settings file options"))
        self.checkBox_test_csv_init.setText(_translate("TabWidget", "CSV init test"))
Ivo Peterek's avatar
Ivo Peterek committed
        self.pushButton_run.setText(_translate("TabWidget", "Save and run RADAR"))
        TabWidget_p.setTabText(TabWidget_p.indexOf(self.tab_AddOptions), _translate("TabWidget", "Additional options"))
    def __show_tree(self):
        if len(self.regions) > 1:
            self.tree_window = pydot_example.regionTree(pathToData=self.data_path, ownData=self.tree_data_selected,
                                                        addButtonIncluded=False)
            self.tree_window.show()
        else:
            self.__print_info_msg('Unable to show region tree because there is only one region available'
                                  ' in selected measurement.')

    def __filter(self):
        threshold = float(self.doubleSpinBox.text().replace(',', '.'))

        if self.nested_regs_selected_dic:
            for check_box in self.nested_regs_list:
                region = check_box.text()
                if region == self.comboBox_MainRegion.currentText():
                    continue
                act_region_time = self.reg_times[region]
                if check_box.isChecked() and act_region_time < threshold:
                    check_box.setCheckState(False)
        else:
            for check_box in self.nested_regs_list:
                region = check_box.text()
                if region == self.comboBox_MainRegion.currentText():
                    continue
                act_region_time = self.reg_times[region]
                if act_region_time >= threshold:
                    check_box.setCheckState(2)

    def __print_error_msg(self, text):
        msg = QtWidgets.QMessageBox()
        msg.setIcon(QtWidgets.QMessageBox.Critical)
        msg.setText(text)
        msg.setWindowTitle("USER INPUT ERROR")
        msg.setStandardButtons(QtWidgets.QMessageBox.Close)
        msg.exec_()

Ivo Peterek's avatar
Ivo Peterek committed
        if "Close" in i.text():
    def __print_success_msg(self, text):
        msg = QtWidgets.QMessageBox()
        msg.setIcon(QtWidgets.QMessageBox.Information)
        msg.setText(text)
        msg.setWindowTitle("Configure file saved")
        msg.setStandardButtons( QtWidgets.QMessageBox.Close | QtWidgets.QMessageBox.Ok )
        msg.buttonClicked.connect(self.msgbtn)
    def __print_info_msg(self, text):
        msg = QtWidgets.QMessageBox()
        msg.setIcon(QtWidgets.QMessageBox.Information)
        msg.setText(text)
        msg.setWindowTitle("Unable to show region tree.")
        msg.setStandardButtons(QtWidgets.QMessageBox.Close)
        msg.exec_()
Ivo Peterek's avatar
Ivo Peterek committed
        self.tab_widget.setCurrentIndex(self.tab_widget.currentIndex() + 1)
Ivo Peterek's avatar
Ivo Peterek committed
        self.tab_widget.setCurrentIndex(self.tab_widget.currentIndex() - 1)
    def __update_nested_regions(self):
        for check_box in self.nested_regs_list:
            check_box.setEnabled(True)
            if check_box.text() == self.comboBox_MainRegion.currentText():
                check_box.setEnabled(False)
                check_box.setCheckState(False)

    def __nested_region_check_changed(self):
        self.all_nested_regs_selected = True
        self.atleast_one_reg_selected = False
        for check_box in self.nested_regs_list:
            if check_box.text() == self.comboBox_MainRegion.currentText():
                check_box.setCheckState(0)
                continue
            if not check_box.isChecked():
                self.all_nested_regs_selected = False
                self.pushButton_Regions_All.setText('Select All')
                break
        if self.all_nested_regs_selected:
            self.pushButton_Regions_All.setText('Deselect All')
        for check_box in self.nested_regs_list:
            if check_box.isChecked() and check_box.text() not in self.nested_regs_selected_dic.keys():
                self.nested_regs_selected_dic[check_box.text()] = [check_box.text()]
            if not check_box.isChecked() and check_box.text() in self.nested_regs_selected_dic.keys():
                self.nested_regs_selected_dic.pop(check_box.text())
            self.tree_data_selected['all_nested_funcs_dic'] = self.nested_regs_selected_dic

    def __select_all_nested_regions(self):
        new_state = 2
        if self.all_nested_regs_selected:
            new_state = 0
        for check_box in self.nested_regs_list:
            if check_box.text() == self.comboBox_MainRegion.currentText():
                continue
            check_box.setCheckState(new_state)

    def __opt_settings_path(self):
        dlg = QtWidgets.QFileDialog()
        dlg.setFileMode(QtWidgets.QFileDialog.Directory)
        self.lineEdit_OptSettingsFilePath.setText(str(dlg.getOpenFileName(filter='Text files (*.options)')[0]))
    def __optChecked(self):
        if self.checkBox_GenerateOptSettingFile.isChecked():
            self.frame_opt_settings.setEnabled(True)
            self.frame_opt_settings.setEnabled(False)
    def __opt_time_eneregy(self):
        if self.checkBox_time_energy_vars.isChecked():

    def __combo_time_energy(self):
        if self.time_var and self.time_var not in self.possible_energy_vars:
            self.possible_energy_vars.append(self.time_var)
        if self.energy_var and self. energy_var not in self.possible_time_vars:
            self.possible_time_vars.append(self.energy_var)
        if self.comboBox_time.currentText():
            self.time_var = self.comboBox_time.currentText()
            if self.time_var in self.possible_energy_vars:
                self.possible_energy_vars.remove(self.time_var)
        if self.comboBox_energy.currentText():
            self.energy_var = self.comboBox_energy.currentText()
            if self.energy_var in self.possible_time_vars:
                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):
        def refresh_items():
            act_time_label = self.comboBox_time.currentText()
            self.comboBox_time.clear()
            self.comboBox_time.addItems(self.possible_time_vars)
            self.comboBox_time.setCurrentIndex(self.comboBox_time.findText(act_time_label))

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

        if item.text(0) not in self.ylabel_dic.keys():
            new_item = item.parent().text(0) + ' ' + item.text(0)
            if item.checkState(column) == QtCore.Qt.Checked:
                self.possible_time_vars.append(new_item)
                self.possible_energy_vars.append(new_item)
                self.selected_y_labels.append(item)
                refresh_items()
            elif item.checkState(column) == QtCore.Qt.Unchecked:
                if item in self.selected_y_labels:
                    self.selected_y_labels.remove(item)
                if new_item in self.possible_time_vars:
                    self.possible_time_vars.remove(new_item)
                if new_item == self.time_var:
                    self.time_var = ''
                if new_item in self.possible_energy_vars:
                    self.possible_energy_vars.remove(new_item)
                if new_item == self.energy_var:
                    self.energy_var = ''
                refresh_items()
    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.parameters_combobox_items_dic.items():
                    if key == current_combo_box:
                        continue
                        self.parameters_combobox_items_dic[key].append(tmp_key)
                    self.parameters_combobox_items_dic[key].remove(current_combo_box.currentText())
                    key.addItems(self.parameters_combobox_items_dic[key])
                    key.setCurrentIndex(key.findText(act_label))
        else:
            if current_combo_box in self.current_labels_dic.values():
                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.parameters_combobox_items_dic.items():
                    if key == current_combo_box:
                        continue
                    self.parameters_combobox_items_dic[key].append(add_item)
                    key.addItems(self.parameters_combobox_items_dic[key])
                    key.setCurrentIndex(key.findText(act_label))
        for i, item in enumerate(self.comboBox_parameters_list):
            has_default_value = False
            if item in self.current_labels_dic.values() or item.currentText() == 'key':
                has_default_value = True
            self.comboBox_default_vals_list[i].setEnabled(has_default_value)
            self.lineEdit_default_unit_list[i].setEnabled(has_default_value)
            if item.currentText() == 'key':
                has_default_value = False
            self.spinBox_default_multp_list[i].setEnabled(has_default_value)

    def __parameter_name_changed(self):
        self.possible_meric_parameters = ['']
        for e in self.lineEdit_parameters_list:
            self.possible_meric_parameters.append(e.text())
    def __refresh_opt_combos(self):
        for key, val in self.opt_settings_items_dic.items():
            act_val = key.currentText()
            if act_val in self.current_opt_items_dic.keys():
                if self.current_opt_items_dic[act_val] is None and act_val != '':
                    self.current_opt_items_dic[act_val] = key
                    for key2, val2 in self.opt_settings_items_dic.items():
                        if key == key2:
                            continue
                        if act_val in val2:
                            val2.remove(act_val)
            else:
                key.setCurrentText('')

        for key, val in self.opt_settings_items_dic.items():
            act_val = key.currentText()
            key.clear()
            key.addItems(val)
            if key.findText(act_val) != -1:
                key.setCurrentIndex(key.findText(act_val))
            else:
                key.setCurrentIndex(0)

    def __tab_index_changed(self, index):
        if index == 2:
            self.opt_settings_items_dic = {}
            self.current_opt_items_dic = {}
            for e in self.comboBox_opt_settings_list:
                self.opt_settings_items_dic[e] = self.possible_meric_parameters[:]
            for e in self.possible_meric_parameters:
                self.current_opt_items_dic[e] = None
            self.__refresh_opt_combos()
            if self.first_tab_change:
                if 'generate_optim_settings_file' in self.config_dic and self.config_dic['generate_optim_settings_file']:
                    self.checkBox_GenerateOptSettingFile.setCheckState(2)
                    for k, v in self.config_dic['generate_optim_settings_file'].items():
                        if v == 'FREQUENCY':
                            self.comboBox_CoreFreq.setCurrentText(k)
                        if v == 'UNCORE_FREQUENCY':
                            self.comboBox_UncoreFreq.setCurrentText(k)
                        if v == 'NUM_THREADS':