Example #1
0
class StatisticsPanel(QWidget):
    _MAX_STAT_ROW = 3

    def __init__(self, parent: QWidget = None):
        super().__init__(parent)
        self.spinner = QtWaitingSpinner(parent=self, centerOnParent=True,
                                        disableParentWhenSpinning=True)

        self.spinner.setInnerRadius(15)
        self.layout = QGridLayout()
        self.layout.setHorizontalSpacing(2)
        self.layout.setVerticalSpacing(4)
        self.setLayout(self.layout)

    def setStatistics(self, stat: Dict[str, object]) -> None:
        item: QLayoutItem = self.layout.takeAt(0)
        while item:
            item.widget().deleteLater()
            self.layout.removeItem(item)
            item = self.layout.takeAt(0)
        r: int = 0
        c: int = 0
        for k, v in stat.items():
            self.layout.addWidget(QLabel('{}:'.format(k), self), r, c, 1, 1,
                                  alignment=Qt.AlignLeft)
            self.layout.addWidget(QLabel('{}'.format(str(v)), self), r, c + 1, 1, 1,
                                  alignment=Qt.AlignLeft)
            r += 1
            if r % StatisticsPanel._MAX_STAT_ROW == 0:
                self.layout.setColumnMinimumWidth(c + 2, 5)  # separator
                c += 3
                r = 0
Example #2
0
   def __init__(self, parent=None):
      super(Cramolayout, self).__init__(parent)
      layout = QGridLayout()
      # layout.setColumnStretch(1, 3)
      # layout.setRowStretch(1, 3)
      layout.setColumnMinimumWidth(0, 100)
      layout.setColumnMinimumWidth(1, 100)
      layout.setColumnMinimumWidth(2, 200)
      layout.setColumnMinimumWidth(3, 100)

      self.btn_get_dtm = QPushButton("DTM file")
      self.btn_get_dtm.clicked.connect(self.get_dtm)
      layout.addWidget(self.btn_get_dtm, 0, 0)

      self.dtm_line = QLineEdit()
      layout.addWidget(self.dtm_line, 0, 1, 1, 3)

      self.start_btn = QPushButton("Create txt")
      self.start_btn.clicked.connect(self.start_time)
      self.start_btn.clicked.connect(self.create_txt)
      self.start_btn.clicked.connect(self.end_time)
      self.start_btn.clicked.connect(self.msgbox)
      layout.addWidget(self.start_btn, 1, 0, 1, 4)

      self.setWindowTitle("DTM coordinate")
      self.setLayout(layout)
Example #3
0
def build(win):
    win.setFixedSize(624, 468)
    win.setStyleSheet("QMainWindow {background-image: url(:/background)}")

    layout_buttons = QGridLayout()
    # layout_buttons.setHorizontalSpacing(25)  # win 25, mac 37
    win.muppets = []
    for i in range(6):
        win.muppets.append(MuppetButton(f":/b{i+1}", f":/b{i+1}a", i))
        layout_buttons.addWidget(win.muppets[i], 0, i)
        # layout_buttons.setColumnMinimumWidth(i, 91)  # win 91, mac 98
        win.muppets[i].sound = _set_sound_source(f"s{i+1}")
        win.muppets[i].signal.connect(win.muppet_pressed(i))

    # central widget
    win.central_widget = QWidget()
    central_layout = QVBoxLayout()
    central_layout.addWidget(win.central_widget)
    win.setCentralWidget(win.central_widget)

    # muppets widget
    win.buttons_widget = QWidget()
    win.buttons_widget.setFixedSize(QSize(624, 130))
    win.buttons_widget.setLayout(layout_buttons)
    win.buttons_widget.setParent(win.central_widget)
    win.buttons_widget.move(0, 225)

    # ui play widget
    win.play_widget = QWidget()
    layout_play = QVBoxLayout()
    win.play_widget.setLayout(layout_play)
    win.play_widget.setParent(win.central_widget)
    win.play_widget.move(112, 348)
    win.play_button = UIButton('PLAY!', (400, 80))
    win.play_button.clicked.connect(win.play_button_pressed)
    layout_play.addWidget(win.play_button)

    # ui levels widget
    win.levels_widget = QWidget()
    layout_levels = QGridLayout()
    win.levels_widget.setLayout(layout_levels)
    win.levels_widget.setParent(win.central_widget)
    win.levels_widget.move(112, 348)
    win.level_buttons = []
    win.level_buttons.append(UIButton('Easy!', (190, 80)))
    win.level_buttons.append(UIButton('Hard!', (190, 80)))
    win.level_buttons[0].clicked.connect(win.level_button_pressed(0))
    win.level_buttons[1].clicked.connect(win.level_button_pressed(1))
    layout_levels.addWidget(win.level_buttons[0], 0, 0)
    layout_levels.addWidget(win.level_buttons[1], 0, 1, Qt.AlignRight)
    layout_levels.setColumnMinimumWidth(1, 200)
    layout_levels.setColumnMinimumWidth(0, 200)
    win.levels_widget.hide()

    # sounds start & failure
    win.start = _set_sound_source('start')
    win.end = _set_sound_source('end')

    win.muppets[0].sound.play()
Example #4
0
    def __init__(self, tool, sliders):
        QWidget.__init__(self)
        self.tool = tool
        self.sliders = sliders

        layout = QGridLayout()
        layout.setColumnMinimumWidth(1, 300)
        layout.setColumnMinimumWidth(2, 100)

        for n, slider in enumerate(sliders):
            layout.addWidget(slider.name_label, n, 0)
            layout.addWidget(slider.slider, n, 1)
            layout.addWidget(slider.offset_edit, n, 2)

        self.setLayout(layout)
Example #5
0
    def __init__(self):
        super().__init__()

        self.setTitle("Paramètres")
        self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Maximum)
        
        # Main layout
        main_layout = QHBoxLayout(self)
        main_layout.setSpacing(20)

        left_layout = QFormLayout()
        left_layout.setHorizontalSpacing(20)
        left_layout.setVerticalSpacing(14)

        self._threshold_sbox = QSpinBox()
        self._threshold_sbox.setRange(1, 99)
        self._threshold_sbox.setSuffix(" %")
        self._threshold_sbox.setMaximumWidth(250)
        left_layout.addRow("Seuil de détection :", self._threshold_sbox)

        self._devices_list = QComboBox()
        self._devices_list.setMaximumWidth(250)
        self._setDevicesList()

        left_layout.addRow("Processeur à utiliser :", self._devices_list)

        morphotype_layout = QGridLayout()
        morphotype_layout.setSpacing(5)

        morphotype_layout.addWidget(QLabel("Morphotypes à détecter :"), 0, 0, 1, 4)

        self._tab_cbox = {}
        for k,m in Loader.SpongesMorphotypes().items():
            sponge_cbox = QCheckBox(m.name())
            self._tab_cbox[k] = sponge_cbox

            x = k%2 + 1
            y = k//2 + 1
            morphotype_layout.addWidget(sponge_cbox, x, y)

        morphotype_layout.setColumnMinimumWidth(0, 15)
        morphotype_layout.setColumnStretch(0, 0)

        main_layout.addLayout(left_layout)
        main_layout.addLayout(morphotype_layout)

        self.setLayout(main_layout)
Example #6
0
	def __init__(self, parent, header):
		super(HeaderWidget, self).__init__(parent)
		layout = QGridLayout()
		layout.setContentsMargins(0, 0, 0, 0)
		layout.setVerticalSpacing(1)
		row = 0
		col = 0
		for field in header.fields:
			name = field[0]
			value = field[1]
			fieldType = ""
			if len(field) > 2:
				fieldType = field[2]
			layout.addWidget(QLabel(name + ": "), row, col * 3)
			if isinstance(value, list):
				for i in range(0, len(value)):
					if fieldType == "ptr":
						label = ClickableAddressLabel(value[i])
					elif fieldType == "code":
						label = ClickableCodeLabel(value[i])
					else:
						label = QLabel(value[i])
						label.setFont(binaryninjaui.getMonospaceFont(self))
					layout.addWidget(label, row, col * 3 + 1)
					row += 1
			else:
				if fieldType == "ptr":
					label = ClickableAddressLabel(value)
				elif fieldType == "code":
					label = ClickableCodeLabel(value)
				else:
					label = QLabel(value)
					label.setFont(binaryninjaui.getMonospaceFont(self))
				layout.addWidget(label, row, col * 3 + 1)
				row += 1
			if (header.columns > 1) and (row >= header.rows_per_column) and ((col + 1) < header.columns):
				row = 0
				col += 1
		for col in range(1, header.columns):
			layout.setColumnMinimumWidth(col * 3 - 1, UIContext.getScaledWindowSize(20, 20).width())
		layout.setColumnStretch(header.columns * 3 - 1, 1)
		self.setLayout(layout)
Example #7
0
    def __init__(self, parent=None):
        super(Form, self).__init__(parent)

        # Create widgets
        self.title = QLabel("Junkfile", self)
        self.title.setStyleSheet(
            "color:#072120; font-weight: bold; font-size: 16px;")
        self.title.setAlignment(Qt.AlignCenter | Qt.AlignCenter)

        self.instruction = QLabel("Choose a directory folder:", self)

        self.edit = QLineEdit("Path...")
        self.edit.setReadOnly(True)

        self.button = QPushButton("Open ...")

        self.copy = QCheckBox("Would you like to make a copy?")

        self.arrange = QPushButton("Arrange")

        # Create layout
        layout = QGridLayout()
        layout.setColumnMinimumWidth(0, 400)
        # add widgets
        layout.addWidget(self.title, 0, 0, 1, 0, Qt.AlignCenter)
        layout.addWidget(self.instruction, 1, 0)
        layout.addWidget(self.edit, 2, 0)
        layout.addWidget(self.button, 2, 1)
        layout.addWidget(self.copy, 3, 0)
        layout.addWidget(self.arrange, 3, 1)

        # Set dialog layout
        self.setLayout(layout)

        # Add button to get directory path
        self.button.clicked.connect(self.openDirectoryDialog)

        # add button to execute Junkfile
        self.arrange.clicked.connect(self.runJunkfile)
Example #8
0
    def createGridLayout(self):
        from fresnel import interact

        # Top grid with sceneview and diffraction pattern
        self.tophorizontalGroupBox = QGroupBox()
        toplayout = QGridLayout()

        # Add the SceneView widget
        self.view = interact.SceneView(self.scene)
        self.view.rendering.connect(self.update_camera)
        toplayout.addWidget(self.view, 0, 0)

        # Add the diffraction widget
        dynamic_canvas = FigureCanvas(Figure(figsize=(15, 15)))
        toplayout.addWidget(dynamic_canvas, 0, 1)
        self.diffract_ax = dynamic_canvas.figure.add_subplot(111)
        self.diffract_ax.axis("off")
        self.diffract_ax.set_axis_off()
        self.plot_diffract(self.view.scene.camera)

        self.tophorizontalGroupBox.setLayout(toplayout)

        # Bottom grid with camera, buttons, zoom, sigma
        self.bothorizontalGroupBox = QGroupBox()
        botlayout = QGridLayout()

        # Camera printout
        self.label = QLabel()
        self.label.setText(self.camera_text(self.view.scene.camera))
        # widget, row, col, rowspan, colspan
        botlayout.addWidget(self.label, 0, 0, 2, 1)

        # Buttons
        self.button100 = QPushButton("100")
        self.button100.setMaximumSize(QSize(100,40))
        botlayout.addWidget(self.button100, 0, 1, 2, 1)

        self.button110 = QPushButton("110")
        self.button110.setMaximumSize(QSize(100,40))
        botlayout.addWidget(self.button110, 0, 2, 2, 1)

        self.button111 = QPushButton("111")
        self.button111.setMaximumSize(QSize(100,40))
        botlayout.addWidget(self.button111, 0, 3, 2, 1)

        # Connect buttons to moving the camera
        # thanks to this wonderful answer https://stackoverflow.com/a/57167056/11969403
        self.button100.clicked.connect(lambda: self.move_camera((1,0,0)))
        self.button110.clicked.connect(lambda: self.move_camera((1,1,0)))
        self.button111.clicked.connect(lambda: self.move_camera((1,1,1)))

        # Add space between buttons and slider
        botlayout.setColumnMinimumWidth(4,350)

        # Zoom slider
        zlabel = QLabel("Zoom")
        zlabel.setAlignment(Qt.AlignCenter)
        botlayout.addWidget(zlabel, 0, 5)

        self.zooms = [i for i in range(1, self.d.N) if self.d.N % i == 0]
        self.zoomslider = QSlider(Qt.Horizontal)
        self.zoomslider.setMinimum(0)
        self.zoomslider.setMaximum(len(self.zooms)-1)
        self.zoomslider.setValue(self.zooms.index(self.d.zoom))
        self.zoomslider.valueChanged.connect(self.change_zoom)
        self.zoomslider.setMaximumSize(QSize(600,30))
        botlayout.addWidget(self.zoomslider, 1, 5)

        botlayout.setColumnMinimumWidth(6,50)

        self.bothorizontalGroupBox.setLayout(botlayout)
Example #9
0
    def init_ui(self):
        # Menu grid layout and its settings
        grid = QGridLayout(self)
        grid.setColumnMinimumWidth(4, 260)
        grid.setColumnStretch(4, 0)
        for i in [1, 2, 3, 5]:
            grid.setColumnMinimumWidth(i, 75)
            grid.setColumnStretch(i, 0)
        for i in [0, 6]:
            grid.setColumnStretch(i, 1)
        grid.setRowMinimumHeight(1, 360)
        grid.setRowMinimumHeight(2, 25)
        for i in [0, 3]:
            grid.setRowStretch(i, 1)

        # Widgets
        self.tabw = QTabWidget(self)
        grid.addWidget(self.tabw, 1, 1, 1, 5)
        self.tabs = {}
        self.tabs['pile'] = QWidget(self)
        self.pilegrid = QGridLayout(self.tabs['pile'])
        self.pilegrid.setRowStretch(6, 1)
        self.tabw.addTab(self.tabs['pile'], 'Sandpile')
        self.tabs['visl'] = QWidget(self)
        self.vslgrid = QGridLayout(self.tabs['visl'])
        self.tabw.addTab(self.tabs['visl'], 'Visual')

        self.pilegrid.addWidget(QLabel('Seed:', self.tabs['pile']), 0, 0, 1, 1)
        self.pilegrid.addWidget(QLabel('Type:', self.tabs['pile']), 2, 0, 1, 1)

        self.seedfield = QLineEdit(self.tabs['pile'])
        self.pilegrid.addWidget(self.seedfield, 1, 0, 1, 4)

        self.buttons = {}
        self.buttons['cont'] = QPushButton('Continue', self)

        def func1():
            self.root.toggle_menu()
            self.root.toggle_pause()

        self.buttons['cont'].clicked.connect(func1)
        grid.addWidget(self.buttons['cont'], 2, 1, 1, 1)
        self.buttons['rest'] = QPushButton('Restart', self)

        def func2():
            self.root.restart_pile()
            func1()

        self.buttons['rest'].clicked.connect(func2)
        grid.addWidget(self.buttons['rest'], 2, 2, 1, 1)
        self.buttons['roll'] = QPushButton('Reset', self)

        def func3():
            txt = self.seedfield.text()
            try:
                seed = eval(txt)
            except:
                seed = [[8]]
            self.root.reroll_pile(piletype=self.piletype, seed=seed)
            func1()

        self.buttons['roll'].clicked.connect(func3)
        grid.addWidget(self.buttons['roll'], 2, 3, 1, 1)
        self.buttons['clsm'] = QPushButton('Close Menu', self)
        self.buttons['clsm'].clicked.connect(self.root.toggle_menu)
        grid.addWidget(self.buttons['clsm'], 2, 5, 1, 1)

        self.typeradios = {}
        for i, key in enumerate(['o4i', 'o4f', 'o8i', 'o8f']):
            b = QRadioButton(key, self.tabs['pile'])
            self.typeradios[key] = b
            self.pilegrid.addWidget(b, 3, i, 1, 1)
        for i, key in enumerate(['t4i', 't4f', 't8f']):
            b = QRadioButton(key, self.tabs['pile'])
            self.typeradios[key] = b
            self.pilegrid.addWidget(b, 4, i, 1, 1)
        for i, key in enumerate(['t6hi', 't6hf', 't6vi', 't6vf']):
            b = QRadioButton(key, self.tabs['pile'])
            self.typeradios[key] = b
            self.pilegrid.addWidget(b, 5, i, 1, 1)
        for k in self.typeradios:
            b = self.typeradios[k]
            b.clicked.connect(self.set_piletype)

        self.vslgrid.addWidget(QLabel('Timed delay:', self.tabs['visl']), 0, 0,
                               1, 1)
        self.vslgrid.addWidget(QLabel('Frames per step:', self.tabs['visl']),
                               1, 0, 1, 1)
        self.vslgrid.setRowStretch(2, 1)
        self.vslgrid.setColumnStretch(2, 1)

        self.tdspinbox = QSpinBox(self.tabs['visl'])
        self.tdspinbox.setMinimum(10)
        self.tdspinbox.valueChanged.connect(self.set_td)
        self.vslgrid.addWidget(self.tdspinbox, 0, 1, 1, 1)

        self.fpsspinbox = QSpinBox(self.tabs['visl'])
        self.fpsspinbox.setMinimum(1)
        self.fpsspinbox.setMaximum(300)
        self.fpsspinbox.valueChanged.connect(self.set_fps)
        self.vslgrid.addWidget(self.fpsspinbox, 1, 1, 1, 1)
Example #10
0
    def __init__(self, parent=None):
        super(Cramolayout, self).__init__(parent)
        layout = QGridLayout()
        # layout.setColumnStretch(1, 3)
        # layout.setRowStretch(1, 3)
        layout.setColumnMinimumWidth(0, 100)
        layout.setColumnMinimumWidth(1, 100)
        layout.setColumnMinimumWidth(2, 100)
        layout.setColumnMinimumWidth(3, 100)

        self.btn_get_dtm = QPushButton("DTM file")
        self.btn_get_dtm.clicked.connect(self.get_dtm)
        layout.addWidget(self.btn_get_dtm, 0, 0)

        self.dtm_line = QLineEdit()
        layout.addWidget(self.dtm_line, 0, 1, 1, 3)

        self.btn_get_shp = QPushButton("shp file")
        self.btn_get_shp.clicked.connect(self.get_column_names)
        layout.addWidget(self.btn_get_shp, 1, 0)

        self.shp_line = QLineEdit()
        layout.addWidget(self.shp_line, 1, 1, 1, 3)

        self.lblName = QLabel('Id', self)
        self.lblName.setStyleSheet("font: 9pt Myriad Pro")
        layout.addWidget(self.lblName, 3, 0)

        self.lblName = QLabel('Crater size', self)
        self.lblName.setStyleSheet("font: 9pt Myriad Pro")
        layout.addWidget(self.lblName, 3, 1)

        self.lblName = QLabel('X coord', self)
        self.lblName.setStyleSheet("font: 9pt Myriad Pro")
        layout.addWidget(self.lblName, 3, 2)

        self.lblName = QLabel('Y coord', self)
        self.lblName.setStyleSheet("font: 9pt Myriad Pro")
        layout.addWidget(self.lblName, 3, 3)

        self.id_box = QComboBox()
        layout.addWidget(self.id_box, 4, 0)

        self.size_box = QComboBox()
        layout.addWidget(self.size_box, 4, 1)

        self.x_coord_box = QComboBox()
        layout.addWidget(self.x_coord_box, 4, 2)

        self.y_coord_box = QComboBox()
        layout.addWidget(self.y_coord_box, 4, 3)

        self.chk_size = QCheckBox('Radius', self)
        self.chk_size.toggle()
        layout.addWidget(self.chk_size, 5, 1)

        self.chk_unit = QCheckBox('Size in meters', self)
        self.chk_unit.toggle()
        layout.addWidget(self.chk_unit, 6, 1)

        self.start_btn = QPushButton("Start cramo")
        # self.start_btn.clicked.connect(self.choose_parameters)
        self.start_btn.clicked.connect(self.create_for_txt_file)
        self.start_btn.clicked.connect(self.start_cramo)
        layout.addWidget(self.start_btn, 7, 0, 1, 4)

        # self.textEdit = QTextEdit(self)
        # self.textEdit.setStyleSheet("font: 9pt Myriad Pro")
        # layout.addWidget(self.start_btn, 8, 0)

        self.setWindowTitle("easyCramo V2")
        self.setLayout(layout)
Example #11
0
class auctionPage(QWidget):
    def __init__(self, fantasyFootball, role):
        super(auctionPage, self).__init__()

        self.fantasyFootball = fantasyFootball
        self.role = role

        self.externalLayout = QHBoxLayout()
        self.externalLayout.addWidget(self.sxGroupBox())
        self.externalLayout.addWidget(self.dxGroupBox())
        self.setLayout(self.externalLayout)

    def sxGroupBox(self):
        self.sxGroupBox = QGroupBox('new Player')

        self.auctionLayout = QVBoxLayout()
        self.auctionLayout.addWidget(self.createRandomGroup())
        self.auctionLayout.addWidget(self.createContendentButtonsGroup())
        self.auctionLayout.addWidget(self.createUtilityButtonsGroup())
        self.sxGroupBox.setLayout(self.auctionLayout)

        return self.sxGroupBox

    def dxGroupBox(self):
        self.dxGroupBox = QGroupBox('Teams')

        self.teamListLayout = QGridLayout()
        i = 0
        self.listWidgetCol = {}
        self.removeButtonList = {}

        for contender in self.fantasyFootball.contendersTeams.contendersNames:
            self.titleList = QLabel(contender)

            self.listWidgetCol[contender] = QListWidget()

            i_button = 0
            for singlePlayer in self.fantasyFootball.contendersTeams.contendersTeams[
                    contender].iterrows():
                print('singlePlayer = ', singlePlayer)
                playerToAdd = singlePlayer[1]
                playerName = playerToAdd.get(key='Nome')
                playerRole = playerToAdd.get(key='R')
                finalString = playerRole + ' ' + playerName
                self.listWidgetCol[contender].addItem(finalString)

            self.removeButtonList[contender] = (QPushButton('Remove Selected'))
            self.removeButtonList[contender].setEnabled(False)
            self.removeButtonList[contender].clicked.connect(
                lambda x=False, contender=contender: self.removeFromContender(
                    x, contender))

            print('i', i)

            self.teamListLayout.setColumnMinimumWidth(i, 130)
            # self.teamListLayout.setColumnMinimumWidth(i+1,1)

            self.teamListLayout.addWidget(self.titleList, 0, i)

            self.teamListLayout.addWidget(self.listWidgetCol[contender], 1, i)
            self.teamListLayout.addWidget(self.removeButtonList[contender], 2,
                                          i)

            i += 1

        self.dxGroupBox.setLayout(self.teamListLayout)
        return self.dxGroupBox

    def removeFromContender(self, isClicked, contender):

        itemSelected = self.listWidgetCol[contender].selectedItems()
        print(itemSelected)
        print(itemSelected)
        print(itemSelected)
        print(itemSelected)
        if itemSelected:
            print("ECCOLO")
            # self.listWidgetCol[contender].takeTopLevelItem(itemSelected)
            # self.fantasyFootball.backOne()

        # else:
        #     self.
        # for item in listItems:
        #     itemIndex=self.listA.indexOfTopLevelItem(item)
        #     self.listA.takeTopLevelItem(itemIndex)
        # print '\n\t Number of items remaining', self.listA.topLevelItemCount()

        # check if is possible to return player or we are in another role aution
        # if (len(self.fantasyFootball.contendersTeams.contendersTeams[contender]) == 0):
        #     self.reintegrateButton.setEnabled(False)
        # else:
        #     self.reintegrateButton.setEnabled(True)
        #     self.fantasyFootball.backOne()

        #     lastContender = self.historyInsertion[len(self.historyInsertion)-1]
        #     # remove last item insert
        #     self.listWidgetCol[lastContender].takeItem(self.listA.row(item))
        #     self.listWidgetCol[lastContender].item((QStringList.size()-1)).setSelected(True)

    # def createsingleListView(self):
    #     print('p')
    #     self.test = QLabel('dfizuvhp')
    #     return self.test

    def setRole(self, role):
        self.role = role

    # _________METHODS TO CREATE GUI GROUPS___________________
    def createRandomGroup(self):
        self.randomGroup = QGroupBox('random player')

        self.randomButton = QPushButton()
        self.randomButton.setText('random ' + self.role)
        self.randomPlayerName = QLabel('')
        self.randomPlayerTeam = QLabel('')
        self.randomPlayerQuote = QLabel('')

        self.vBox = QVBoxLayout()
        self.vBox.addWidget(self.randomButton)
        self.vBox.addWidget(self.randomPlayerName)
        self.vBox.addWidget(self.randomPlayerTeam)
        self.vBox.addWidget(self.randomPlayerQuote)

        self.randomGroup.setLayout(self.vBox)

        self.randomButton.clicked.connect(self.randomButtonAction)
        return self.randomGroup

    def createContendentButtonsGroup(self):
        self.contendentGroup = QGroupBox('insert player in contender teams')
        self.GBox = QVBoxLayout()
        print('createContendentButtonsGroup')

        self.buttonDict = {}
        # buttonL non utilizzato, potrebbe servire?
        self.buttonL = []
        for name in self.fantasyFootball.contendersTeams.contendersNames:
            self.buttonDict[name] = QPushButton(name)
            self.buttonDict[name].setEnabled(False)

            self.GBox.addWidget(self.buttonDict[name])

            self.buttonL.append(self.buttonDict[name])

            self.buttonDict[name].clicked.connect(
                lambda x=False, i=name: self.insertPlayerInTeam(x, i))
        self.contendentGroup.setLayout(self.GBox)
        return self.contendentGroup

    def createUtilityButtonsGroup(self):
        self.utilityGroup = QGroupBox('')

        self.backToRole = QPushButton()
        self.backToRole.setText('back to roles')

        self.hBox = QHBoxLayout()
        self.hBox.addWidget(self.backToRole)

        self.utilityGroup.setLayout(self.hBox)

        # self.backToRole.clicked.connect is implement in page 0

        return self.utilityGroup

    # SLOT utility buttons
    def reintegrateAction(self):
        # check if is possible to return player or we are in another role aution

        lastContender = self.historyInsertion[len(self.historyInsertion) - 1]
        # remove last item insert
        self.listWidgetCol[lastContender].takeItem(self.listA.row(item))
        self.listWidgetCol[lastContender].item(
            (QStringList.size() - 1)).setSelected(True)
        # self.listWidgetCol[contender].remove

    # if self.fantasyFootball.checkRole(self.role):
    #     self.reintegrateButton.setEnabled(True)

    #     self.fantasyFootball.backOne(self.role)

    def discardsButtonAction(self):
        self.fantasyFootball.discardRejected()

    # SLOT click teamName
    # check if rejected in ok
    def insertPlayerInTeam(self, isClicked, name):
        # reset random playerView
        self.randomPlayerName.setText('')
        self.randomPlayerTeam.setText('')
        self.randomPlayerQuote.setText('')

        # setButton disable or enable
        for button in self.buttonDict.values():
            button.setEnabled(False)
        self.randomButton.setEnabled(True)

        self.fantasyFootball.addPlayerToTeam(name, self.singlePlayer)
        print('________ALL REMAIN PLAYER TEST WITH GOALKEEPER____________')
        print(self.fantasyFootball.roleLists.goalkeeperDF)
        print('________ALL CONTENDER TEAMS____________')
        print(self.fantasyFootball.contendersTeams.contendersTeams)

        playerToAdd = self.singlePlayer.iloc[0, 2]
        self.listWidgetCol[name].addItem(playerToAdd)

    # SLOT click random button
    def randomButtonAction(self):
        # check if possible to turn back a player or not and set right button visibility
        print(self.fantasyFootball.checkRole(self.role))
        print(self.role)
        print(len(self.fantasyFootball.contendersTeams.historyInsertion))
        print(len(self.fantasyFootball.contendersTeams.historyInsertion))
        print(len(self.fantasyFootball.contendersTeams.historyInsertion))
        print(len(self.fantasyFootball.contendersTeams.historyInsertion))
        print(len(self.fantasyFootball.contendersTeams.historyInsertion))

        # setButton disable or enable
        for button in self.buttonDict.values():
            button.setEnabled(True)
        self.randomButton.setEnabled(False)

        # if rolePlayerDF is empty
        if ((self.role == 'goalkeeper'
             and self.fantasyFootball.roleLists.goalkeeperDF.empty)
                or (self.role == 'midfielder'
                    and self.fantasyFootball.roleLists.midfielderDF.empty)
                or (self.role == 'defender'
                    and self.fantasyFootball.roleLists.defenderDF.empty)
                or (self.role == 'forward'
                    and self.fantasyFootball.roleLists.forwardDF.empty)):
            self.randomPlayerName.setText('no more ' + self.role +
                                          ' to choose')
            self.randomPlayerTeam.setText('')
            self.randomPlayerQuote.setText('')
        else:
            self.singlePlayer = self.fantasyFootball.randomPick(self.role)
            # toPrint = name + squadra + quota iniziale
            toPrint = []
            # name
            toPrint.append(self.singlePlayer.iloc[0, 2])
            # team
            toPrint.append(self.singlePlayer.iloc[0, 3])
            # quote
            toPrint.append(str(self.singlePlayer.iloc[0, 5]))

            self.randomPlayerName.setText('Name:  ' + toPrint[0])
            self.randomPlayerTeam.setText('Team:  ' + toPrint[1])
            self.randomPlayerQuote.setText('Quote:  ' + toPrint[2])
Example #12
0
class ConsolePanel(QDialog):
    def __init__(self, parent=None):
        super().__init__(parent=parent, f=Qt.Window)
        self.setWindowTitle(self.tr("Console"))
        self.init_ui()
        self.normal_msg = QMessageBox(self)
        self.normal_msg.setWindowTitle(self.tr("Warning"))
        self.normal_msg.setText(
            self.
            tr("Close this window will terminate the work of other windows, are you sure to close it?"
               ))
        self.normal_msg.setStandardButtons(QMessageBox.Close
                                           | QMessageBox.Cancel)
        self.normal_msg.setDefaultButton(QMessageBox.Cancel)

    def init_ui(self):
        self.dataset_generator = RandomDatasetGenerator(parent=self)
        self.dataset_viewer = GrainSizeDatasetViewer(parent=self)
        self.pca_resolver = PCAResolverPanel(parent=self)
        self.hc_resolver = HCResolverPanel(parent=self)
        self.emma_resolver = EMMAResolverPanel(parent=self)
        self.ssu_resolver = SSUResolverPanel(parent=self)
        self.ssu_tester = SSUAlgorithmTesterPanel(parent=self)
        # self.setting_window = AppSettingPanel(parent=self)
        self.abount_window = AboutPanel(parent=self)

        self.main_layout = QGridLayout(self)
        self.main_layout.setRowMinimumHeight(0, 120)
        self.main_layout.setRowMinimumHeight(1, 120)
        self.main_layout.setColumnMinimumWidth(0, 160)
        self.main_layout.setColumnMinimumWidth(1, 160)
        self.main_layout.setColumnMinimumWidth(2, 160)
        self.main_layout.setColumnMinimumWidth(3, 160)

        self.dataset_generator_button = QToolButton()
        self.dataset_generator_button.setSizePolicy(
            QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding)
        self.dataset_generator_button.setIcon(qta.icon("fa.random"))
        self.dataset_generator_button.setIconSize(QSize(64, 64))
        self.dataset_generator_button.setText(self.tr("Dataset Generator"))
        self.dataset_generator_button.setToolButtonStyle(
            Qt.ToolButtonTextUnderIcon)
        self.dataset_generator_button.clicked.connect(
            lambda: self.dataset_generator.show())
        self.dataset_viewer_button = QToolButton()
        self.dataset_viewer_button.setSizePolicy(QSizePolicy.MinimumExpanding,
                                                 QSizePolicy.MinimumExpanding)
        self.dataset_viewer_button.setIcon(qta.icon("fa.table"))
        self.dataset_viewer_button.setIconSize(QSize(64, 64))
        self.dataset_viewer_button.setText(self.tr("Dataset Viewer"))
        self.dataset_viewer_button.setToolButtonStyle(
            Qt.ToolButtonTextUnderIcon)
        self.dataset_viewer_button.clicked.connect(
            lambda: self.dataset_viewer.show())
        self.pca_resolver_button = QToolButton()
        self.pca_resolver_button.setSizePolicy(QSizePolicy.MinimumExpanding,
                                               QSizePolicy.MinimumExpanding)
        self.pca_resolver_button.setIcon(qta.icon("fa.exchange"))
        self.pca_resolver_button.setIconSize(QSize(64, 64))
        self.pca_resolver_button.setText(self.tr("PCA Resolver"))
        self.pca_resolver_button.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
        self.pca_resolver_button.clicked.connect(
            lambda: self.pca_resolver.show())
        self.hc_resolver_button = QToolButton()
        self.hc_resolver_button.setSizePolicy(QSizePolicy.MinimumExpanding,
                                              QSizePolicy.MinimumExpanding)
        self.hc_resolver_button.setIcon(qta.icon("fa.sitemap"))
        self.hc_resolver_button.setIconSize(QSize(64, 64))
        self.hc_resolver_button.setText(self.tr("HC Resolver"))
        self.hc_resolver_button.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
        self.hc_resolver_button.clicked.connect(
            lambda: self.hc_resolver.show())
        self.emma_resolver_button = QToolButton()
        self.emma_resolver_button.setSizePolicy(QSizePolicy.MinimumExpanding,
                                                QSizePolicy.MinimumExpanding)
        self.emma_resolver_button.setIcon(qta.icon("fa.cubes"))
        self.emma_resolver_button.setIconSize(QSize(64, 64))
        self.emma_resolver_button.setText(self.tr("EMMA Resolver"))
        self.emma_resolver_button.setToolButtonStyle(
            Qt.ToolButtonTextUnderIcon)
        self.emma_resolver_button.clicked.connect(
            lambda: self.emma_resolver.show())
        self.ssu_resolver_button = QToolButton()
        self.ssu_resolver_button.setSizePolicy(QSizePolicy.MinimumExpanding,
                                               QSizePolicy.MinimumExpanding)
        self.ssu_resolver_button.setIcon(qta.icon("fa.puzzle-piece"))
        self.ssu_resolver_button.setIconSize(QSize(64, 64))
        self.ssu_resolver_button.setText(self.tr("SSU Resolver"))
        self.ssu_resolver_button.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
        self.ssu_resolver_button.clicked.connect(
            lambda: self.ssu_resolver.show())
        self.ssu_tester_button = QToolButton()
        self.ssu_tester_button.setSizePolicy(QSizePolicy.MinimumExpanding,
                                             QSizePolicy.MinimumExpanding)
        self.ssu_tester_button.setIcon(qta.icon("fa.flask"))
        self.ssu_tester_button.setIconSize(QSize(64, 64))
        self.ssu_tester_button.setText(self.tr("SSU Tester"))
        self.ssu_tester_button.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
        self.ssu_tester_button.clicked.connect(lambda: self.ssu_tester.show())
        # self.setting_button = QToolButton()
        # self.setting_button.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding)
        # self.setting_button.setIcon(qta.icon("fa.gears"))
        # self.setting_button.setIconSize(QSize(64, 64))
        # self.setting_button.setText(self.tr("Setting"))
        # self.setting_button.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
        # self.setting_button.clicked.connect(lambda: self.setting_window.show())
        self.about_button = QToolButton()
        self.about_button.setSizePolicy(QSizePolicy.MinimumExpanding,
                                        QSizePolicy.MinimumExpanding)
        self.about_button.setIcon(qta.icon("fa.info-circle"))
        self.about_button.setIconSize(QSize(64, 64))
        self.about_button.setText(self.tr("About"))
        self.about_button.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
        self.about_button.clicked.connect(lambda: self.abount_window.show())

        self.main_layout.addWidget(self.dataset_generator_button, 0, 0)
        self.main_layout.addWidget(self.dataset_viewer_button, 0, 1)
        self.main_layout.addWidget(self.pca_resolver_button, 0, 2)
        self.main_layout.addWidget(self.hc_resolver_button, 0, 3)
        self.main_layout.addWidget(self.emma_resolver_button, 1, 0)
        self.main_layout.addWidget(self.ssu_resolver_button, 1, 1)
        self.main_layout.addWidget(self.ssu_tester_button, 1, 2)
        self.main_layout.addWidget(self.about_button, 1, 3)

    def closeEvent(self, event: QCloseEvent):
        res = self.normal_msg.exec_()
        if res == QMessageBox.Close:
            event.accept()
        else:
            event.ignore()
Example #13
0
class ProcessWidget(BlinkBackgroundWidget):
    actionRequested = Signal(str, str)
    process_state_changed = Signal(str, str)

    def __init__(self, process_data: ProcessData, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self._awaiting_response = False
        self._process_data: ProcessData = process_data

        self.setSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Minimum)
        self.layout = QGridLayout()
        self.layout.setColumnMinimumWidth(0, 50)
        # self.layout.setColumnStretch(0, 1)
        self.layout.setContentsMargins(4, 4, 4, 4)
        self.layout.setVerticalSpacing(2)

        self.btn_restart = QPushButton(self, text="Restart")
        self.btn_start_stop = QPushButton(self, text="Start/Stop")
        self.btn_start_stop.setObjectName("btn_start_stop")
        self.btn_start_stop.setMinimumWidth(60)
        self.btn_restart.setMinimumWidth(60)
        self.txt_command = QLabel(self, text=process_data.command)
        self.txt_command.setSizePolicy(QSizePolicy.MinimumExpanding,
                                       QSizePolicy.Minimum)
        # self.txt_command.setPlaceholderText("Your command")

        self.lbl_uid = QLabel(self, text=process_data.uid)
        self.lbl_uid.setStyleSheet("font-weight: bold")
        self.lbl_state = QLabel(self, text=process_data.state_info())

        self.layout.addWidget(self.lbl_uid, 0, 0, 1, 2)
        self.layout.addWidget(self.lbl_state, 0, 2, 1, 1)
        self.layout.addWidget(self.txt_command, 1, 2)
        self.layout.addWidget(self.btn_start_stop, 1, 0)
        self.layout.addWidget(self.btn_restart, 1, 1)
        self.setLayout(self.layout)

        self.btn_start_stop.setIcon(self.style().standardIcon(
            QStyle.SP_MediaPlay))
        self.btn_restart.setIcon(self.style().standardIcon(
            QStyle.SP_BrowserReload))

        self.btn_start_stop.clicked.connect(self._start_stop_clicked)
        self.btn_restart.clicked.connect(
            lambda: self.request_action("restart"))

        self.update_state(process_data.state, process_data.exit_code, True)

    def get_command_text(self):
        return self.txt_command.text()

    def _start_stop_clicked(self):
        action = "stop" if self._process_data.is_in_state(
            ProcessData.STARTED) else "start"
        self.request_action(action)

    def request_action(self, action: str):
        logger.debug("Requesting action: %s", action)
        self._disable_buttons(True)
        self.actionRequested.emit(self._process_data.uid, action)

    @Slot(str)
    def on_action_completed(self, action_response: str):
        logger.debug("Action completed: %s", action_response)
        self._set_button_ui(
            self._process_data.state)  # make sure the conform to state

    def _disable_buttons(self, disable=True):
        self.btn_start_stop.setDisabled(disable)
        self.btn_restart.setDisabled(disable)

    def on_update_process_data(self, process_data: ProcessData):
        logger.debug("Process data updated: %s", process_data)
        self.update_state(process_data.state, process_data.exit_code)
        self.txt_command.setText(process_data.command)

    def update_state(self, state: str, exit_code: int, state_changed=False):
        self._process_data.exit_code = exit_code
        self._set_button_ui(state)

        if self._process_data.state != state or state_changed:
            self._process_data.state = state
            self.lbl_state.setText(self._process_data.state_info())

            self.change_bg_color_with_blink(
                get_color_for_process(self._process_data))
            self.process_state_changed.emit(self._process_data.uid, state)

    def _set_button_ui(self, state: str):
        is_running = state == ProcessData.STARTED
        self.btn_start_stop.setDisabled(False)

        if is_running:
            self.btn_start_stop.setText("Stop")
            self.btn_start_stop.setIcon(self.style().standardIcon(
                QStyle.SP_MediaStop))
        elif state in (ProcessData.INITIALIZED, ProcessData.ENDED):
            self.btn_start_stop.setText("Start")
            self.btn_start_stop.setIcon(self.style().standardIcon(
                QStyle.SP_MediaPlay))
        else:
            self.btn_start_stop.setDisabled(True)
        self.btn_restart.setDisabled(not is_running)