Example #1
0
 def __init__(self, parent=None):
     super(MainWindow, self).__init__(parent)
     self.setWindowTitle('Numeron Network')
     self.setFixedSize(600, 700)
     self.window = Window(self)
     _widget = QWidget()
     _layout = QVBoxLayout(_widget)
     _layout.addWidget(self.window)
     self.setCentralWidget(_widget)
 def __init__(self, parent=None):
     super(MainWindow, self).__init__(parent)
     self.setWindowTitle('Numeron Network')
     self.setFixedSize(600, 700)
     self.window = Window(self)
     _widget = QWidget()
     _layout = QVBoxLayout(_widget)
     _layout.addWidget(self.window)
     self.setCentralWidget(_widget)
Example #3
0
 def _do_layout_(self):
     box = QVBoxLayout()
     box.setSpacing(0)
     # box.setContentsMargins(0, 0, 0, 0)
     box.addWidget(self.buttons_bar)
     box.addWidget(self.list)
     self._layout_buttons_()
     self.setLayout(box)
Example #4
0
    def _do_layout_(self):
        self._layout_buttons_()
        box = QVBoxLayout()
        box.setSpacing(0)
        box.addWidget(self.buttons_bar)
        box.addWidget(self.tree)

        self.setLayout(box)
    def init_ui(self):
        """Initialize the gui"""
        # Define layout
        hbox = {}
        vbox = QVBoxLayout()
        self.setLayout(vbox)

        # Create layout box 
        for i in range(1, 16):
            hbox[i] = QHBoxLayout()
            vbox.addLayout(hbox[i], 0)

        # Create store entry
        hbox[1].addWidget(self.create_label('Codigo', width=45))
        self.info_labels['Codigo'] = self.create_entry()
        hbox[1].addWidget(self.info_labels['Codigo'])

        # Create labels
        for lb in self.lbs:
            hbox[lb[0]].addWidget(self.create_label(lb[1], width=lb[2]))
            self.info_labels[lb[1]] = self.create_label(
                info=True, width=lb[3])
            hbox[lb[0]].addWidget(self.info_labels[lb[1]])

        # Search button
        self.btn_search = self.create_btn('Busca', width=570, func=self.search)
        hbox[7].addWidget(self.btn_search)
        
        # Create terminal entry 
        for name in (('IP1', 8), ('IP2', 10)):
            self.entry[name[0]] = self.create_entry(True)
            hbox[name[1]].addWidget(self.entry[name[0]])

        # Create SSH and VNC buttons
        for name in (8, 10):
            hbox[name].addWidget(self.create_btn('SSH', func=self.search))
            hbox[name].addWidget(self.create_btn('VNC', func=self.search))
        
        # Create ping box
        for box in (('ip1', 9), ('ip2', 11), ('router', 13), ('sw', 15)):
            self.box[box[0]] = self.create_term()
            hbox[box[1]].addWidget(self.box[box[0]])
Example #6
0
    def __init__(self, path):
        QMainWindow.__init__(self)
        self.path = path
        self.scene = ImageScene(imageUrl=path)
        self.view = ImageCanvas(self.scene)
        self.leftPanel = self.configureOverlyPanel(QWidget())
        self.editLayout = QVBoxLayout()
        self.editLayout.setSpacing(0)
        self.leftPanel.setLayout(self.editLayout)
        self.leftPanel.setVisible(False)

        self.numberIter = 1

        self.enabledOnSelection = []

        self.do_layout()

        self.scene.selectionChanged.connect(self.update_enabled)

        self.scene.on_item_edit.connect(self.showProperties)
Example #7
0
    def init_ui(self):
        """Initialize the gui"""
        # Define layout
        hbox = {}
        vbox = QVBoxLayout()
        self.setLayout(vbox)

        # Create layout box
        for i in range(1, 16):
            hbox[i] = QHBoxLayout()
            vbox.addLayout(hbox[i], 0)

        # Create store entry
        hbox[1].addWidget(self.create_label('Codigo', width=45))
        self.info_labels['Codigo'] = self.create_entry()
        hbox[1].addWidget(self.info_labels['Codigo'])

        # Create labels
        for lb in self.lbs:
            hbox[lb[0]].addWidget(self.create_label(lb[1], width=lb[2]))
            self.info_labels[lb[1]] = self.create_label(info=True, width=lb[3])
            hbox[lb[0]].addWidget(self.info_labels[lb[1]])

        # Search button
        self.btn_search = self.create_btn('Busca', width=570, func=self.search)
        hbox[7].addWidget(self.btn_search)

        # Create terminal entry
        for name in (('IP1', 8), ('IP2', 10)):
            self.entry[name[0]] = self.create_entry(True)
            hbox[name[1]].addWidget(self.entry[name[0]])

        # Create SSH and VNC buttons
        for name in (8, 10):
            hbox[name].addWidget(self.create_btn('SSH', func=self.search))
            hbox[name].addWidget(self.create_btn('VNC', func=self.search))

        # Create ping box
        for box in (('ip1', 9), ('ip2', 11), ('router', 13), ('sw', 15)):
            self.box[box[0]] = self.create_term()
            hbox[box[1]].addWidget(self.box[box[0]])
Example #8
0
    def __init__(self, centeralWidget):
        QDialog.__init__(self)

        ok = QPushButton()
        ok.setIcon(self.style().standardIcon(QStyle.SP_DialogOkButton))
        ok.setText('Ok')
        ok.clicked.connect(self.on_ok.emit)
        ok.clicked.connect(lambda: self.close())

        cancel = QPushButton()
        cancel.setIcon(self.style().standardIcon(QStyle.SP_DialogCancelButton))
        cancel.setText('Cancel')
        cancel.clicked.connect(lambda: self.close())

        buttonsLt = QHBoxLayout()
        buttonsLt.addStretch()
        buttonsLt.addWidget(ok)
        buttonsLt.addWidget(cancel)

        mainLt = QVBoxLayout()
        mainLt.addWidget(centeralWidget, Qt.AlignCenter)
        mainLt.addLayout(buttonsLt)

        self.setLayout(mainLt)
Example #9
0
    def __init__(self, parent, session):
        QDialog.__init__(self, parent)
        self.setStyleSheet('''
        QToolButton { 
            border: 1px solid rgb(51, 122, 183); 
            border-radius:5px; 
            background:rgb(222, 222, 222); 
            outline:0px;
            padding:10px;
            width: 80px;
        } 
        QToolButton:hover { background:transparent; background:rgb(51, 122, 183); color:white}
        QToolButton:pressed { background:rgb(41, 100, 153); color:white }
        QToolButton:checked { background:rgb(41, 100, 153); color:white }
        ''')

        self.setWindowTitle('Choose Template')

        self.boxLt = QHBoxLayout()
        self.boxLt.setSpacing(20)
        self.buttons = {}
        self.selected = None

        nameLt = QHBoxLayout()
        self.nameInput = QLineEdit()
        self.nameInput.setValidator(FileExistValidator(session))
        nameLt.addWidget(QLabel('File Name'))
        nameLt.addSpacing(10)
        nameLt.addWidget(self.nameInput)
        self.errorLabel = QLabel('File already exists, change name')
        self.errorLabel.setStyleSheet('color:red; font-size:8pt')
        self.errorLabel.hide()

        self.create = QPushButton('Create')
        self.create.setEnabled(False)
        self.create.clicked.connect(self.processCreation)
        blt = QHBoxLayout()
        blt.addStretch(0)
        blt.addWidget(self.create)

        lt = QVBoxLayout()
        lt.addLayout(nameLt)
        lt.addWidget(self.errorLabel)
        lt.addSpacing(20)
        lt.addLayout(self.boxLt)
        lt.addSpacing(20)
        lt.addLayout(blt)
        lt.setContentsMargins(50, 50, 50, 50)
        self.setLayout(lt)

        self.template_selected.connect(self.validateCreate)
        self.nameInput.textChanged.connect(self.validateCreate)
Example #10
0
    def do_layout(self):
        panel = QWidget()

        bar = self.layout_buttons()

        topBottom = QVBoxLayout()
        leftToRight = QHBoxLayout()
        leftToRight.addWidget(self.leftPanel)
        leftToRight.addStretch(10)
        topBottom.addStretch(1)
        topBottom.addLayout(leftToRight)
        topBottom.addStretch(1)
        self.view.setLayout(topBottom)

        lt = QVBoxLayout()
        lt.addWidget(bar)
        #lt.addLayout(leftToRight)
        lt.addWidget(self.view)
        panel.setLayout(lt)

        self.setCentralWidget(panel)
Example #11
0
class EditImageWindow(QMainWindow):
    on_saved = Signal()
    on_exit = Signal()

    editStyle = '''
        QLineEdit { border-radius:10px; border: 1px solid gray; padding-left:5px; padding-right:5px}
        QLineEdit:focus { border: 1.5px solid lightblue; padding-left:5px; padding-right:5px}
    '''

    def __init__(self, path):
        QMainWindow.__init__(self)
        self.path = path
        self.scene = ImageScene(imageUrl=path)
        self.view = ImageCanvas(self.scene)
        self.leftPanel = self.configureOverlyPanel(QWidget())
        self.editLayout = QVBoxLayout()
        self.editLayout.setSpacing(0)
        self.leftPanel.setLayout(self.editLayout)
        self.leftPanel.setVisible(False)

        self.numberIter = 1

        self.enabledOnSelection = []

        self.do_layout()

        self.scene.selectionChanged.connect(self.update_enabled)

        self.scene.on_item_edit.connect(self.showProperties)

    def nextNumber(self):
        v = self.numberIter
        self.numberIter += 1
        return v

    def update_enabled(self):
        sel = len(self.scene.selectedElements()) > 0
        for button in self.enabledOnSelection:
            button.setEnabled(sel)

    def configureOverlyPanel(self, widget):
        widget.setStyleSheet('''
                             QWidget {
                                 background-color:white;
                                 border-radius:10px;
                             }
                            ''')
        # widget.setAutoFillBackground(True)
        # widget.setAttribute()
        from pyqode.qt.QtWidgets import QGraphicsDropShadowEffect
        effect = QGraphicsDropShadowEffect()
        effect.setBlurRadius(10)
        effect.setXOffset(0)
        effect.setYOffset(0)
        widget.setGraphicsEffect(effect)
        widget.setVisible(False)
        return widget

    def showProperties(self, item):

        for i in reversed(range(self.editLayout.count())):
            self.editLayout.itemAt(i).widget().setParent(None)

        self.leftPanel.setVisible(item is not None)

        if item is None:
            return

        # close = QPushButton('x')
        # close.clicked.connect(lambda: self.scene.emptyPress())
        # l = QHBoxLayout()
        # l.addStretch(1)
        # l.addWidget(close)
        # w = QWidget()
        # w.setLayout(l)
        # self.editLayout.addWidget(w)

        from properties import PropertyWidget
        from widgets import horizontalSeparator, hoverActiveButton

        for p in item.properties():
            rowW = PropertyWidget(item.properties(), p.name)
            rowW.edit.setStyleSheet(EditImageWindow.editStyle)
            rowW.edit.setMaximumWidth(80)
            self.editLayout.addWidget(rowW)

        if isinstance(item, RectSelectionItem):
            insetInput = QLineEdit()
            insetInput.setStyleSheet(EditImageWindow.editStyle)
            insetInput.setValidator(QIntValidator())
            insetInput.setMaximumWidth(40)
            insetInput.setText('1')
            insetInput.setTextMargins(6, 0, 0, 0)
            rowLt = QHBoxLayout()
            bt = hoverActiveButton("Insert Insets")
            bt.clicked.connect(
                lambda: self.appendInsets(int(insetInput.text()), item))

            rowLt.addWidget(insetInput)
            rowLt.addStretch(10)
            rowLt.addWidget(bt)
            panel = QWidget()
            panel.setLayout(rowLt)

            self.editLayout.addWidget(horizontalSeparator())
            self.editLayout.addWidget(panel)

    def appendInsets(self, insets, item):
        p = item.pos()
        s = item.size
        item.setRect(p.x() - insets,
                     p.y() - insets,
                     s.width() + 2 * insets,
                     s.height() + 2 * insets)

    def layout_buttons(self):
        import icons

        panel = QWidget()
        panel.setObjectName('buttons-bar')

        add_rect = QPushButton()
        add_rect.setIcon(icons.get('rectangle'))
        add_rect.setToolTip('Add Rectangle')
        add_rect.clicked.connect(self.scene.addRectElement)

        add_ellipse = QPushButton()
        add_ellipse.setIcon(icons.get('ellipse'))
        add_ellipse.setToolTip('Add Ellipse')
        add_ellipse.clicked.connect(self.scene.addEllipseElement)

        add_number = QPushButton()
        add_number.setToolTip('Add number')
        add_number.setIcon(icons.get('add_number'))
        add_number.clicked.connect(lambda: self.scene.addNumberElement(self))

        add_numbered_rect = QPushButton()
        add_numbered_rect.setToolTip('Add numbered rectangle')
        add_numbered_rect.setIcon(icons.get('add_numbered_rect'))
        add_numbered_rect.clicked.connect(
            lambda: self.scene.addNumberedRectElement(self))

        duplicate_button = QPushButton()
        duplicate_button.setToolTip('Duplicate')
        duplicate_button.setIcon(icons.get('duplicate'))
        duplicate_button.setEnabled(False)
        duplicate_button.clicked.connect(
            lambda: self.scene.duplicateSelection())
        self.enabledOnSelection.append(duplicate_button)

        delete_button = QPushButton()
        delete_button.setToolTip('Delete')
        delete_button.setIcon(self.style().standardIcon(QStyle.SP_TrashIcon))
        delete_button.setEnabled(False)
        delete_button.clicked.connect(lambda: self.scene.deleteSelected())
        self.enabledOnSelection.append(delete_button)

        spacing = QLineEdit()
        spacing.setText(str(self.scene.posConstraint.spacing))
        spacing.setValidator(QIntValidator(bottom=0))
        spacing.returnPressed.connect(
            lambda: self.scene.setSpacing(int(spacing.text())))
        spacing.setMaximumWidth(30)

        xshift = QSpinBox()
        xshift.setValue(self.scene.posConstraint.xShift)
        xshift.valueChanged.connect(lambda v: self.scene.setXGridShift(v))

        yshift = QSpinBox()
        yshift.setValue(self.scene.posConstraint.yShift)
        yshift.valueChanged.connect(lambda v: self.scene.setYGridShift(v))

        lt = QHBoxLayout()
        lt.addWidget(add_rect)
        lt.addWidget(add_ellipse)
        lt.addWidget(add_number)
        lt.addWidget(add_numbered_rect)
        lt.addSpacing(20)
        lt.addWidget(duplicate_button)
        lt.addSpacing(20)
        lt.addWidget(delete_button)
        lt.addStretch()
        lt.addWidget(QLabel('Grid Spacing'))
        lt.addWidget(spacing)
        lt.addWidget(QLabel('X Grid Shift'))
        lt.addWidget(xshift)
        lt.addWidget(QLabel('Y Grid Shift'))
        lt.addWidget(yshift)

        panel.setLayout(lt)

        return panel

    def do_layout(self):
        panel = QWidget()

        bar = self.layout_buttons()

        topBottom = QVBoxLayout()
        leftToRight = QHBoxLayout()
        leftToRight.addWidget(self.leftPanel)
        leftToRight.addStretch(10)
        topBottom.addStretch(1)
        topBottom.addLayout(leftToRight)
        topBottom.addStretch(1)
        self.view.setLayout(topBottom)

        lt = QVBoxLayout()
        lt.addWidget(bar)
        #lt.addLayout(leftToRight)
        lt.addWidget(self.view)
        panel.setLayout(lt)

        self.setCentralWidget(panel)

    def closeEvent(self, event):
        if len(self.scene.userItems) > 0:
            from pyqode.qt.QtWidgets import QMessageBox
            reply = QMessageBox.question(self, 'Save changes',
                                         "Do you want to save changes?",
                                         QMessageBox.Yes,
                                         QMessageBox.No)  # QMessageBox.Cancel,
            if reply == QMessageBox.Yes:
                self.scene.renderToFile(self.path)
                self.on_saved.emit()
            elif reply == QMessageBox.Cancel:
                event.ignore()
                return
            self.on_exit.emit()
            event.accept()
Example #12
0
 def _do_layout_(self):
     lt = QVBoxLayout()
     lt.setContentsMargins(0, 0, 0, 0)
     lt.addLayout(self._build_buttons_layout_())
     lt.addWidget(self.editor)
     self.setLayout(lt)