Beispiel #1
0
    def _refreshInfo(self, docker_image):

        self.uiDockerVMInfoTreeWidget.clear()

        # fill out the General section
        section_item = self._createSectionItem("General")
        QtWidgets.QTreeWidgetItem(section_item,
                                  ["Image name:", docker_image["imagename"]])
        QtWidgets.QTreeWidgetItem(
            section_item,
            ["Default name format:", docker_image["default_name_format"]])
        # FIXME: add more configuration options
        QtWidgets.QTreeWidgetItem(
            section_item, ["CMD:", str(docker_image["startcmd"])])
        # QtWidgets.QTreeWidgetItem(
        #     section_item, ["Server:", docker_image["server"]])

        # # fill out the Network section
        # section_item = self._createSectionItem("Network")
        # QtWidgets.QTreeWidgetItem(
        #     section_item, ["Adapters:", str(docker_image["adapters"])])
        # QtWidgets.QTreeWidgetItem(
        #     section_item, ["Use any adapter:", "{}".format(
        #         docker_image["use_any_adapter"])])
        # QtWidgets.QTreeWidgetItem(
        #     section_item, ["Type:", docker_image["adapter_type"]])

        self.uiDockerVMInfoTreeWidget.expandAll()
        self.uiDockerVMInfoTreeWidget.resizeColumnToContents(0)
        self.uiDockerVMInfoTreeWidget.resizeColumnToContents(1)
Beispiel #2
0
    def __init__(self, parent):
        super().__init__(parent)
        self._notifs = []

        self.setWindowFlags(QtCore.Qt.FramelessWindowHint |
                            QtCore.Qt.WindowDoesNotAcceptFocus |
                            QtCore.Qt.SubWindow)
        # QtCore.Qt.Tool)
        # QtCore.Qt.WindowStaysOnTopHint)
        self.setAttribute(QtCore.Qt.WA_ShowWithoutActivating)  # | QtCore.Qt.WA_TranslucentBackground)

        self._layout = QtWidgets.QVBoxLayout()

        self._timer = QtCore.QTimer()
        self._timer.setInterval(1000)
        self._timer.timeout.connect(self._refreshSlot)
        self._timer.start()

        for i in range(0, MAX_ELEMENTS):
            l = QtWidgets.QLabel()
            l.setAlignment(QtCore.Qt.AlignTop)
            l.setWordWrap(True)
            l.hide()
            self._layout.addWidget(l)
        self.setLayout(self._layout)
Beispiel #3
0
    def _refreshInfo(self, ethernet_hub):

        self.uiEthernetHubInfoTreeWidget.clear()

        # fill out the General section
        section_item = self._createSectionItem("General")
        QtWidgets.QTreeWidgetItem(section_item,
                                  ["Template name:", ethernet_hub["name"]])
        QtWidgets.QTreeWidgetItem(
            section_item,
            ["Default name format:", ethernet_hub["default_name_format"]])
        try:
            QtWidgets.QTreeWidgetItem(section_item, [
                "Server:",
                ComputeManager.instance().getCompute(
                    ethernet_hub["server"]).name()
            ])
        except KeyError:
            pass
        QtWidgets.QTreeWidgetItem(
            section_item,
            ["Number of ports:",
             str(len(ethernet_hub["ports_mapping"]))])

        self.uiEthernetHubInfoTreeWidget.expandAll()
        self.uiEthernetHubInfoTreeWidget.resizeColumnToContents(0)
        self.uiEthernetHubInfoTreeWidget.resizeColumnToContents(1)
        self.uiEthernetHubsTreeWidget.setMaximumWidth(
            self.uiEthernetHubsTreeWidget.sizeHintForColumn(0) + 20)
Beispiel #4
0
    def _refreshInfo(self, cloud_node):

        self.uiCloudNodeInfoTreeWidget.clear()

        # fill out the General section
        section_item = self._createSectionItem("General")
        QtWidgets.QTreeWidgetItem(section_item,
                                  ["Template name:", cloud_node["name"]])
        QtWidgets.QTreeWidgetItem(
            section_item,
            ["Default name format:", cloud_node["default_name_format"]])
        try:
            QtWidgets.QTreeWidgetItem(section_item, [
                "Server:",
                ComputeManager.instance().getCompute(
                    cloud_node["server"]).name()
            ])
        except KeyError:
            pass

        self.uiCloudNodeInfoTreeWidget.expandAll()
        self.uiCloudNodeInfoTreeWidget.resizeColumnToContents(0)
        self.uiCloudNodeInfoTreeWidget.resizeColumnToContents(1)
        self.uiCloudNodesTreeWidget.setMaximumWidth(
            self.uiCloudNodesTreeWidget.sizeHintForColumn(0) + 20)
Beispiel #5
0
        def __init__(self):
            super().__init__()
            l1 = QtWidgets.QLabel()
            l1.setText("Hello World")

            vbox = QtWidgets.QVBoxLayout()
            vbox.addWidget(l1)
            self.setLayout(vbox)
            self.setStyleSheet("background-color:blue;")
            self._dialog = NotifDialog(self)
            log.addHandler(NotifDialogHandler(self._dialog))
            log.info("test")
Beispiel #6
0
    def _addMisingVariablesEdits(self):
        missing = [
            v for v in self._variables if v.get("value", "").strip() == ""
        ]
        for i, variable in enumerate(missing, start=0):
            nameLabel = QtWidgets.QLabel()
            nameLabel.setText(variable.get("name", ""))
            self.gridLayout.addWidget(nameLabel, i, 0)

            valueEdit = QtWidgets.QLineEdit()
            valueEdit.setText(variable.get("value", ""))
            valueEdit.textChanged.connect(
                qpartial(self.onValueChange, variable))
            self.gridLayout.addWidget(valueEdit, i, 1)
Beispiel #7
0
    def __init__(self, parent=None):

        if parent is None:
            self._main = QtWidgets.QMainWindow()
            self._main.hide()
            parent = self._main
        super().__init__(parent)
        self.setupUi(self)

        self.uiNewPushButton.clicked.connect(self._newPushButtonSlot)
        self.uiDeletePushButton.clicked.connect(self._deletePushButtonSlot)

        # Center on screen
        screen = QtWidgets.QApplication.desktop().screenGeometry()
        self.move(screen.center() - self.rect().center())

        if sys.platform.startswith("win"):
            appdata = os.path.expandvars("%APPDATA%")
            path = os.path.join(appdata, "GNS3")
        else:
            home = os.path.expanduser("~")
            path = os.path.join(home, ".config", "GNS3")
        self.profiles_path = os.path.join(path, "profiles")

        self.uiShowAtStartupCheckBox.setChecked(
            LocalConfig.instance().multiProfiles())
        self._refresh()
Beispiel #8
0
    def loadPreferences(self):
        """
        Loads the server preferences.
        """

        servers = Servers.instance()
        # load the servers settings
        servers_settings = servers.settings()
        self._populateWidgets(servers_settings)

        # load remote server preferences
        self._remote_servers.clear()
        self.uiRemoteServersTreeWidget.clear()
        for server_id, server in servers.remoteServers().items():
            protocol = server.protocol()
            host = server.host()
            port = server.port()
            user = server.user()
            self._remote_servers[server_id] = server.settings()
            item = QtWidgets.QTreeWidgetItem(self.uiRemoteServersTreeWidget)
            item.setText(0, protocol)
            item.setText(1, host)
            item.setText(2, str(port))
            item.setText(3, user)
            item.settings = server.settings()
            item.server_id = server_id

        self.uiRemoteServersTreeWidget.resizeColumnToContents(0)
Beispiel #9
0
 def _createSectionItem(self, name):
     section_item = QtWidgets.QTreeWidgetItem(self.uiDockerVMInfoTreeWidget)
     section_item.setText(0, name)
     font = section_item.font(0)
     font.setBold(True)
     section_item.setFont(0, font)
     return section_item
Beispiel #10
0
    def _addMappingSlot(self):
        """
        Adds a new mapping.
        """

        source_port = self.uiSourcePortSpinBox.value()
        source_dlci = self.uiSourceDLCISpinBox.value()
        destination_port = self.uiDestinationPortSpinBox.value()
        destination_dlci = self.uiDestinationDLCISpinBox.value()

        if source_port == destination_port:
            QtWidgets.QMessageBox.critical(self, self._node.name(), "Same source and destination ports")
            return

        source = "{port}:{dlci}".format(port=source_port, dlci=source_dlci)
        destination = "{port}:{dlci}".format(port=destination_port, dlci=destination_dlci)

        if source in self._mapping or destination in self._mapping:
            QtWidgets.QMessageBox.critical(self, self._node.name(), "Mapping already defined")
            return

        item = QtWidgets.QTreeWidgetItem(self.uiMappingTreeWidget)
        item.setText(0, source)
        item.setText(1, destination)
        self.uiMappingTreeWidget.addTopLevelItem(item)
        self.uiSourcePortSpinBox.setValue(source_port + 1)
        self.uiSourceDLCISpinBox.setValue(source_dlci + 1)
        self.uiDestinationPortSpinBox.setValue(destination_port + 1)
        self.uiDestinationDLCISpinBox.setValue(destination_dlci + 1)
        self._mapping[source] = destination
    def loadPreferences(self):
        """
        Loads the ethernet hub preferences.
        """

        self._ethernet_hubs = {}
        templates = TemplateManager.instance().templates()
        for template_id, template in templates.items():
            if template.template_type(
            ) == "ethernet_hub" and not template.builtin():
                name = template.name()
                server = template.compute_id()
                #TODO: use template id for the key
                key = "{server}:{name}".format(server=server, name=name)
                self._ethernet_hubs[key] = copy.deepcopy(template.settings())

        self._items.clear()
        for key, ethernet_hub in self._ethernet_hubs.items():
            item = QtWidgets.QTreeWidgetItem(self.uiEthernetHubsTreeWidget)
            item.setText(0, ethernet_hub["name"])
            Controller.instance().getSymbolIcon(
                ethernet_hub["symbol"], qpartial(self._setItemIcon, item))
            item.setData(0, QtCore.Qt.UserRole, key)
            self._items.append(item)

        if self._items:
            self.uiEthernetHubsTreeWidget.setCurrentItem(self._items[0])
            self.uiEthernetHubsTreeWidget.sortByColumn(
                0, QtCore.Qt.AscendingOrder)
            self.uiEthernetHubsTreeWidget.setMaximumWidth(
                self.uiEthernetHubsTreeWidget.sizeHintForColumn(0) + 20)
Beispiel #12
0
    def _addSummaryEntry(self, name, value):

        item = QtWidgets.QTreeWidgetItem(self.uiSummaryTreeWidget, [name, value])
        item.setText(0, name)
        font = item.font(0)
        font.setBold(True)
        item.setFont(0, font)
Beispiel #13
0
    def loadPreferences(self):
        """
        Loads the Docker VM preferences.
        """

        docker_module = Docker.instance()
        self._docker_containers = copy.deepcopy(docker_module.VMs())
        self._items.clear()

        for key, docker_image in self._docker_containers.items():
            item = QtWidgets.QTreeWidgetItem(self.uiDockerVMsTreeWidget)
            item.setText(0, docker_image["name"])

            Controller.instance().getSymbolIcon(
                docker_image["symbol"], qpartial(self._setItemIcon, item))

            item.setData(0, QtCore.Qt.UserRole, key)
            self._items.append(item)

        if self._items:
            self.uiDockerVMsTreeWidget.setCurrentItem(self._items[0])
            self.uiDockerVMsTreeWidget.sortByColumn(0,
                                                    QtCore.Qt.AscendingOrder)
            self.uiDockerVMsTreeWidget.setMaximumWidth(
                self.uiDockerVMsTreeWidget.sizeHintForColumn(0) + 10)
Beispiel #14
0
    def _qemuVMNewSlot(self):
        """
        Creates a new VM.
        """

        wizard = QemuVMWizard(self._qemu_vms, parent=self)
        wizard.show()
        if wizard.exec_():

            new_vm_settings = wizard.getSettings()
            key = "{server}:{name}".format(server=new_vm_settings["server"],
                                           name=new_vm_settings["name"])
            if key in self._qemu_vms:
                QtWidgets.QMessageBox.critical(
                    self, "New QEMU VM", "VM name {} already exists".format(
                        new_vm_settings["name"]))
                return
            self._qemu_vms[key] = QEMU_VM_SETTINGS.copy()
            self._qemu_vms[key].update(new_vm_settings)

            item = QtWidgets.QTreeWidgetItem(self.uiQemuVMsTreeWidget)
            item.setText(0, self._qemu_vms[key]["name"])
            item.setIcon(0, QtGui.QIcon(self._qemu_vms[key]["symbol"]))
            item.setData(0, QtCore.Qt.UserRole, key)
            self._items.append(item)
            self.uiQemuVMsTreeWidget.setCurrentItem(item)
    def loadSettings(self, settings, node, group=False):
        """
        Loads the ATM bridge settings.

        :param settings: the settings (dictionary)
        :param node: Node instance
        :param group: indicates the settings apply to a group
        """

        if not group:
            self.uiNameLineEdit.setText(settings["name"])
        else:
            self.uiNameLineEdit.setEnabled(False)

        self.uiMappingTreeWidget.clear()
        self._mapping = {}
        self._node = node

        for ethernet_port, destination in settings["mappings"].items():
            item = QtWidgets.QTreeWidgetItem(self.uiMappingTreeWidget)
            item.setText(0, ethernet_port)
            item.setText(1, destination)
            self.uiMappingTreeWidget.addTopLevelItem(item)
            self._mapping[ethernet_port] = destination

        self.uiMappingTreeWidget.resizeColumnToContents(0)
        self.uiMappingTreeWidget.resizeColumnToContents(1)
Beispiel #16
0
def main():
    app = QtWidgets.QApplication(sys.argv)

    app.setOrganizationName("GNS3")
    app.setOrganizationDomain("gns3.net")
    app.setApplicationName("GNS3")
    app.setApplicationVersion(__version__)

    # We force a full garbage collect before exit
    # for unknow reason otherwise Qt Segfault on OSX in some
    # conditions
    import gc
    gc.collect()

    # Manage Ctrl + C or kill command
    def sigint_handler(*args):
        log.info("Signal received exiting the application")
        app.closeAllWindows()

    # signal.signal(signal.SIGINT, sigint_handler)
    # signal.signal(signal.SIGTERM, sigint_handler)

    mainwindow = IOUVMConverterWizard()
    mainwindow.show()
    exit_code = mainwindow.exec_()

    # We force a full garbage collect before exit
    # for unknow reason otherwise Qt Segfault on OSX in some
    # conditions
    import gc
    gc.collect()

    sys.exit(exit_code)
    def _iouDeviceCopySlot(self):
        """
        Copies an IOU device.
        """

        item = self.uiIOUDevicesTreeWidget.currentItem()
        if item:
            key = item.data(0, QtCore.Qt.UserRole)
            copied_iou_device_settings = copy.deepcopy(self._iou_devices[key])
            new_name, ok = QtWidgets.QInputDialog.getText(
                self, "Copy IOU template", "Template name:",
                QtWidgets.QLineEdit.Normal,
                "Copy of {}".format(copied_iou_device_settings["name"]))
            if ok:
                key = "{server}:{name}".format(
                    server=copied_iou_device_settings["compute_id"],
                    name=new_name)
                if key in self._iou_devices:
                    QtWidgets.QMessageBox.critical(
                        self, "IOU template",
                        "IOU template name {} already exists".format(new_name))
                    return
                self._iou_devices[key] = IOU_DEVICE_SETTINGS.copy()
                self._iou_devices[key].update(copied_iou_device_settings)
                self._iou_devices[key]["name"] = new_name
                self._iou_devices[key].pop("template_id", None)

                item = QtWidgets.QTreeWidgetItem(self.uiIOUDevicesTreeWidget)
                item.setText(0, self._iou_devices[key]["name"])
                Controller.instance().getSymbolIcon(
                    self._iou_devices[key]["symbol"],
                    qpartial(self._setItemIcon, item))
                item.setData(0, QtCore.Qt.UserRole, key)
                self._items.append(item)
                self.uiIOUDevicesTreeWidget.setCurrentItem(item)
    def loadPreferences(self):
        """
        Loads the VirtualBox VM preferences.
        """

        self._virtualbox_vms = {}
        templates = TemplateManager.instance().templates()
        for template_id, template in templates.items():
            if template.template_type(
            ) == "virtualbox" and not template.builtin():
                vmname = template.settings()["vmname"]
                server = template.compute_id()
                #TODO: use template id for the key
                key = "{server}:{vmname}".format(server=server, vmname=vmname)
                self._virtualbox_vms[key] = copy.deepcopy(template.settings())

        self._items.clear()
        for key, vbox_vm in self._virtualbox_vms.items():
            item = QtWidgets.QTreeWidgetItem(self.uiVirtualBoxVMsTreeWidget)
            item.setText(0, vbox_vm["name"])
            Controller.instance().getSymbolIcon(
                vbox_vm["symbol"], qpartial(self._setItemIcon, item))
            item.setData(0, QtCore.Qt.UserRole, key)
            self._items.append(item)

        if self._items:
            self.uiVirtualBoxVMsTreeWidget.setCurrentItem(self._items[0])
            self.uiVirtualBoxVMsTreeWidget.sortByColumn(
                0, QtCore.Qt.AscendingOrder)
            self.uiVirtualBoxVMsTreeWidget.setMaximumWidth(
                self.uiVirtualBoxVMsTreeWidget.sizeHintForColumn(0) + 10)
    def _addMappingSlot(self):
        """
        Adds a new mapping.
        """

        ethernet_port = self.uiEthernetPortSpinBox.value()
        atm_port = self.uiATMPortSpinBox.value()
        atm_vpi = self.uiATMVPISpinBox.value()
        atm_vci = self.uiATMVCISpinBox.value()

        if ethernet_port == atm_port:
            QtWidgets.QMessageBox.critical(
                self, self._node.name(), "Same source and destination ports")
            return

        destination = "{port}:{vpi}:{vci}".format(port=atm_port,
                                                  vpi=atm_vpi,
                                                  vci=atm_vci)

        if destination in self._mapping:
            QtWidgets.QMessageBox.critical(self, self._node.name(),
                                           "Mapping already defined")
            return

        item = QtWidgets.QTreeWidgetItem(self.uiMappingTreeWidget)
        item.setText(0, str(ethernet_port))
        item.setText(1, destination)
        self.uiMappingTreeWidget.addTopLevelItem(item)
        self.uiEthernetPortSpinBox.setValue(ethernet_port + 1)
        self.uiATMPortSpinBox.setValue(atm_port + 1)
        self._mapping[ethernet_port] = destination
Beispiel #20
0
    def _showContextualMenu(self):
        """Contextual menu."""
        menu = QtWidgets.QMenu()

        change_symbol_action = QtWidgets.QAction("Change symbol", menu)
        change_symbol_action.setIcon(
            QtGui.QIcon(":/icons/node_conception.svg"))
        change_symbol_action.setEnabled(
            len(self.uiDockerVMsTreeWidget.selectedItems()) == 1)
        change_symbol_action.triggered.connect(self._changeSymbolSlot)
        menu.addAction(change_symbol_action)

        delete_action = QtWidgets.QAction("Delete", menu)
        delete_action.triggered.connect(self._dockerImageDeleteSlot)
        menu.addAction(delete_action)

        menu.exec_(QtGui.QCursor.pos())
Beispiel #21
0
    def _remoteServerAddSlot(self):
        """
        Adds a new remote server.
        """

        protocol = self.uiRemoteServerProtocolComboBox.currentText().lower()
        host = self.uiRemoteServerPortLineEdit.text().strip()
        port = self.uiRemoteServerPortSpinBox.value()
        ram_limit = self.uiRAMLimitSpinBox.value()
        user = self.uiRemoteServerUserLineEdit.text().strip()
        password = self.uiRemoteServerPasswordLineEdit.text().strip()

        if not re.match(
                r"^[a-zA-Z0-9\.{}-]+$".format(
                    "\u0370-\u1CDF\u2C00-\u30FF\u4E00-\u9FBF"), host):
            QtWidgets.QMessageBox.critical(
                self, "Remote server",
                "Invalid remote server hostname {}".format(host))
            return
        if port is None or port < 1:
            QtWidgets.QMessageBox.critical(
                self, "Remote server",
                "Invalid remote server port {}".format(port))
            return

        # check if the remote server is already defined
        for server in self._remote_servers.values():
            if server["protocol"] == protocol and server[
                    "host"] == host and server["port"] == port and server[
                        "user"] == user:
                QtWidgets.QMessageBox.critical(
                    self, "Remote server", "Remote server is already defined.")
                return

        settings = {
            "protocol": protocol,
            "host": host,
            "port": port,
            "ram_limit": ram_limit,
            "user": user,
            "password": password
        }

        # add a new entry in the tree widget
        item = QtWidgets.QTreeWidgetItem(self.uiRemoteServersTreeWidget)
        item.setText(0, protocol)
        item.setText(1, host)
        item.setText(2, str(port))
        item.setText(3, user)
        item.settings = settings
        item.server_id = uuid.uuid4()  # Create a temporary unique server id

        # keep track of this remote server
        self._remote_servers[item.server_id] = settings

        self.uiRemoteServerPortSpinBox.setValue(
            self.uiRemoteServerPortSpinBox.value() + 1)
        self.uiRemoteServersTreeWidget.resizeColumnToContents(0)
    def _refreshInfo(self, vpcs_node):
        """
        Refreshes the content of the tree widget.
        """

        self.uiVPCSInfoTreeWidget.clear()

        # fill out the General section
        section_item = self._createSectionItem("General")
        QtWidgets.QTreeWidgetItem(section_item, ["Template name:", vpcs_node["name"]])
        QtWidgets.QTreeWidgetItem(section_item, ["Template ID:", vpcs_node.get("template_id", "none")])
        QtWidgets.QTreeWidgetItem(section_item, ["Default name format:", vpcs_node["default_name_format"]])
        QtWidgets.QTreeWidgetItem(section_item, ["Console type:", vpcs_node["console_type"]])
        QtWidgets.QTreeWidgetItem(section_item, ["Auto start console:", "{}".format(vpcs_node["console_auto_start"])])
        try:
            QtWidgets.QTreeWidgetItem(section_item, ["Server:", ComputeManager.instance().getCompute(vpcs_node["compute_id"]).name()])
        except KeyError:
            pass
        if vpcs_node["base_script_file"]:
            QtWidgets.QTreeWidgetItem(section_item, ["Base script file:", vpcs_node["base_script_file"]])

        self.uiVPCSInfoTreeWidget.expandAll()
        self.uiVPCSInfoTreeWidget.resizeColumnToContents(0)
        self.uiVPCSInfoTreeWidget.resizeColumnToContents(1)
        self.uiVPCSTreeWidget.setMaximumWidth(self.uiVPCSTreeWidget.sizeHintForColumn(0) + 20)
Beispiel #23
0
    def _refreshInfo(self, docker_image):

        self.uiDockerVMInfoTreeWidget.clear()

        # fill out the General section
        section_item = self._createSectionItem("General")
        QtWidgets.QTreeWidgetItem(section_item,
                                  ["Image name:", docker_image["image"]])
        QtWidgets.QTreeWidgetItem(
            section_item, ["Server:", str(docker_image["server"])])
        QtWidgets.QTreeWidgetItem(
            section_item, ["Console type:",
                           str(docker_image["console_type"])])
        QtWidgets.QTreeWidgetItem(
            section_item,
            ["Default name format:", docker_image["default_name_format"]])
        QtWidgets.QTreeWidgetItem(
            section_item,
            ["Adapters:", str(docker_image["adapters"])])
        if docker_image["start_command"]:
            QtWidgets.QTreeWidgetItem(
                section_item,
                ["Start command:",
                 str(docker_image["start_command"])])
        if docker_image["environment"]:
            QtWidgets.QTreeWidgetItem(
                section_item,
                ["Environment:",
                 str(docker_image["environment"])])

        self.uiDockerVMInfoTreeWidget.expandAll()
        self.uiDockerVMInfoTreeWidget.resizeColumnToContents(0)
        self.uiDockerVMInfoTreeWidget.resizeColumnToContents(1)
        self.uiDockerVMsTreeWidget.setMaximumWidth(
            self.uiDockerVMsTreeWidget.sizeHintForColumn(0) + 10)
Beispiel #24
0
def MessageBox(parent,
               title,
               message,
               details="",
               icon=QtWidgets.QMessageBox.Critical):

    msgbox = QtWidgets.QMessageBox(parent)
    msgbox.setWindowTitle(title)
    msgbox.setText(message)
    msgbox.setIcon(icon)
    if details:
        msgbox.setDetailedText(details)
    msgbox.exec_()
    def _createSectionItem(self, name):
        """
        Adds a new section to the tree widget.

        :param name: section name
        """

        section_item = QtWidgets.QTreeWidgetItem(self.uiVPCSInfoTreeWidget)
        section_item.setText(0, name)
        font = section_item.font(0)
        font.setBold(True)
        section_item.setFont(0, font)
        return section_item
Beispiel #26
0
    def _refreshInfo(self, traceng_node):
        """
        Refreshes the content of the tree widget.
        """

        self.uiTraceNGInfoTreeWidget.clear()

        # fill out the General section
        section_item = self._createSectionItem("General")
        QtWidgets.QTreeWidgetItem(section_item, ["Template name:", traceng_node["name"]])
        QtWidgets.QTreeWidgetItem(section_item, ["Template ID:", traceng_node.get("template_id", "none")])
        QtWidgets.QTreeWidgetItem(section_item, ["IP address:", traceng_node["ip_address"]])
        QtWidgets.QTreeWidgetItem(section_item, ["Default name format:", traceng_node["default_name_format"]])
        try:
            QtWidgets.QTreeWidgetItem(section_item, ["Server:", ComputeManager.instance().getCompute(traceng_node["compute_id"]).name()])
        except KeyError:
            pass

        self.uiTraceNGInfoTreeWidget.expandAll()
        self.uiTraceNGInfoTreeWidget.resizeColumnToContents(0)
        self.uiTraceNGInfoTreeWidget.resizeColumnToContents(1)
        self.uiTraceNGTreeWidget.setMaximumWidth(self.uiTraceNGTreeWidget.sizeHintForColumn(0) + 20)
 def _populateRemoteServersTree(self):
     self.uiRemoteServersTreeWidget.clear()
     for compute in self._remote_computes.values():
         item = QtWidgets.QTreeWidgetItem(self.uiRemoteServersTreeWidget)
         item.setText(0, compute.name())
         item.setText(1, compute.protocol())
         item.setText(2, compute.host())
         item.setText(3, str(compute.port()))
         item.setText(4, compute.user())
         item.compute = self._remote_computes[compute.id()]
         item.compute_id = compute.id()
     self.uiRemoteServersTreeWidget.resizeColumnToContents(0)
     self._remoteServerChangedSlot()
Beispiel #28
0
    def _refreshInfo(self, cloud_node):
        """
        Refreshes the content of the tree widget.
        """

        self.uiCloudNodeInfoTreeWidget.clear()

        # fill out the General section
        section_item = self._createSectionItem("General")
        QtWidgets.QTreeWidgetItem(section_item,
                                  ["Template name:", cloud_node["name"]])
        QtWidgets.QTreeWidgetItem(
            section_item,
            ["Template ID:",
             cloud_node.get("template_id", "none")])
        if cloud_node["remote_console_type"] != "none":
            QtWidgets.QTreeWidgetItem(
                section_item,
                ["Console host:", cloud_node["remote_console_host"]])
            QtWidgets.QTreeWidgetItem(section_item, [
                "Console port:", "{}".format(cloud_node["remote_console_port"])
            ])
            if cloud_node["remote_console_type"] in ("http", "https"):
                QtWidgets.QTreeWidgetItem(section_item, [
                    "Console HTTP path:",
                    cloud_node["remote_console_http_path"]
                ])
        QtWidgets.QTreeWidgetItem(
            section_item, ["Console type:", cloud_node["remote_console_type"]])
        QtWidgets.QTreeWidgetItem(
            section_item,
            ["Default name format:", cloud_node["default_name_format"]])
        try:
            QtWidgets.QTreeWidgetItem(section_item, [
                "Server:",
                ComputeManager.instance().getCompute(
                    cloud_node["compute_id"]).name()
            ])
        except KeyError:
            pass

        self.uiCloudNodeInfoTreeWidget.expandAll()
        self.uiCloudNodeInfoTreeWidget.resizeColumnToContents(0)
        self.uiCloudNodeInfoTreeWidget.resizeColumnToContents(1)
        self.uiCloudNodesTreeWidget.setMaximumWidth(
            self.uiCloudNodesTreeWidget.sizeHintForColumn(0) + 20)
Beispiel #29
0
    def _dockerImageNewSlot(self):
        """Creates a new Docker image."""
        wizard = DockerVMWizard(self._docker_images, parent=self)
        wizard.show()
        if wizard.exec_():
            new_image_settings = wizard.getSettings()
            key = "{server}:{imagename}".format(
                server=new_image_settings["server"],
                imagename=new_image_settings["imagename"])
            self._docker_images[key] = DOCKER_CONTAINER_SETTINGS.copy()
            self._docker_images[key].update(new_image_settings)

            item = QtWidgets.QTreeWidgetItem(self.uiDockerVMsTreeWidget)
            item.setText(0, self._docker_images[key]["imagename"])
            item.setIcon(0, QtGui.QIcon(self._docker_images[key]["symbol"]))
            item.setData(0, QtCore.Qt.UserRole, key)
            self._items.append(item)
            self.uiDockerVMsTreeWidget.setCurrentItem(item)
Beispiel #30
0
    def loadPreferences(self):
        """Loads the Docker VM preferences."""

        docker_module = Docker.instance()
        self._docker_images = copy.deepcopy(docker_module.dockerImages())
        self._items.clear()

        for key, docker_image in self._docker_images.items():
            item = QtWidgets.QTreeWidgetItem(self.uiDockerVMsTreeWidget)
            item.setText(0, docker_image["imagename"])
            item.setIcon(0, QtGui.QIcon(docker_image["symbol"]))
            item.setData(0, QtCore.Qt.UserRole, key)
            self._items.append(item)

        if self._items:
            self.uiDockerVMsTreeWidget.setCurrentItem(self._items[0])
            self.uiDockerVMsTreeWidget.sortByColumn(0,
                                                    QtCore.Qt.AscendingOrder)