Example #1
0
    def on_delete_images_button_clicked(self):
        """Stops running containers. Works with multiple table rows."""
        rows = self.__table.selectionModel().selectedRows()

        if rows.__len__() == 0:
            self.__table.show_warning_dialog(
                'Please select at least one image to interact with it.')

        while True:
            rows = self.__table.selectionModel().selectedRows()

            if rows.__len__() < 1:
                break

            row = rows[0]
            row_number = row.row()
            image_id = self.__table.item(row_number, 2).text()
            image_name = self.__table.item(row_number, 0).text()
            command = subprocess.Popen(['docker rmi ' + image_id],
                                       stdout=subprocess.PIPE,
                                       shell=True)
            (out, err) = command.communicate()

            if err is not None:
                self.__table.show_err_dialog(err)

            self.__table.removeRow(row_number)
            ApplicationStatusBox.prepend_status_text('Deleted image: ' +
                                                     image_name + '\n')
Example #2
0
 def on_refresh_images_list_button_clicked(self):
     self.setCursor(QCursor(Qt.BusyCursor))
     app = QApplication.instance()
     self.__table.setup_table()
     app.processEvents()
     self.setCursor(QCursor(Qt.ArrowCursor))
     ApplicationStatusBox.prepend_status_text('Images list refreshed. \n')
 def on_refresh_button_clicked(self):
     self.setCursor(QCursor(Qt.BusyCursor))
     app = QApplication.instance()
     self.__table.setup_table(self.__show_all_checkbox.isChecked())
     app.processEvents()
     self.setCursor(QCursor(Qt.ArrowCursor))
     ApplicationStatusBox.prepend_status_text('Containers list refreshed. \n')
Example #4
0
 def __init__(self, *__args):
     super().__init__(*__args)
     self.application_status_box = ApplicationStatusBox()
     self.application_status_box.append('Welcome to Control Dock!')
     self.setWidget(self.application_status_box)
     self.setMaximumHeight(150)
     self.setWindowTitle('Status')
     self.setObjectName('application_status_widget')
     self.setAllowedAreas(Qt.BottomDockWidgetArea)
     self.setFloating(True)
    def on_show_all_containers_checkbox_clicked(self):
        """Show all containers checkbox action"""
        show_all = False

        if self.__show_all_checkbox.isChecked():
            show_all = True

        self.setCursor(QCursor(Qt.BusyCursor))
        self.__table.setup_table(show_all)
        self.setCursor(QCursor(Qt.ArrowCursor))

        # Add status text
        ApplicationStatusBox.prepend_status_text('Containers list refreshed. \n')
    def create_ui(self):
        """Creates UI."""
        self.setLayout(self.__layout)
        self.__table.setup_table()
        self.__containers_actions.create_ui()
        self.__layout.addWidget(self.__table, 0)
        self.__layout.addWidget(self.__show_all_checkbox, 1)
        self.__layout.addLayout(self.__containers_actions, 1)

        # Define button actions
        self.__show_all_checkbox.clicked.connect(self.on_show_all_containers_checkbox_clicked)
        self.__containers_actions.stop_button.clicked.connect(self.on_stop_button_clicked)
        self.__containers_actions.delete_button.clicked.connect(self.on_delete_button_clicked)
        self.__containers_actions.start_button.clicked.connect(self.on_start_button_clicked)
        self.__containers_actions.refresh_button.clicked.connect(self.on_refresh_button_clicked)
        self.__containers_actions.open_shell_button.clicked.connect(self.on_open_shell_button_clicked)
        self.__containers_actions.restart_button.clicked.connect(self.on_restart_button_clicked)

        # Add status text
        ApplicationStatusBox.prepend_status_text('Containers list is loaded. \n')
    def on_open_shell_button_clicked(self):
        """Starts shell sessions in the selected containers."""
        self.setCursor(QCursor(Qt.BusyCursor))
        app = QApplication.instance()
        rows = self.__table.selectionModel().selectedRows()

        if rows.__len__() == 0:
            warning_dialog = WarningDialog()
            warning_dialog.create('Please select at least one container to interact with it.')

        for i in range(0, rows.__len__()):
            row = rows[i]
            row_number = row.row()
            container_id = self.__table.item(row_number, 0).text()
            container_name = self.__table.item(row_number, 6).text()
            cmd = ['x-terminal-emulator', '-e', 'docker exec -it ' + container_id + ' bash']
            subprocess.call(cmd)
            ApplicationStatusBox.prepend_status_text('Terminal session opened in  container: ' + container_name + '\n')

        app.processEvents()
        self.setCursor(QCursor(Qt.ArrowCursor))
    def containers_operation(self, operation=STOP_CONTAINER):
        """Stops running containers. Works with multiple table rows.

        Keyword arguments:
            operation (str): Operation command."""
        rows = self.selectionModel().selectedRows()

        if rows.__len__() == 0:
            self.show_warning_dialog(
                'Please select at least one container to interact with it.')

        while True:
            rows = self.selectionModel().selectedRows()

            if rows.__len__() < 1:
                break

            row = rows[0]
            row_number = row.row()
            container_id = self.item(row_number, 0).text()
            container_name = self.item(row_number, 6).text()

            if container_name is None:
                container_name = container_id

            command = subprocess.Popen([operation + container_id],
                                       stdout=subprocess.PIPE,
                                       shell=True)
            (out, err) = command.communicate()

            if err is not None:
                self.show_err_dialog(err)

            self.removeRow(row_number)
            ApplicationStatusBox.prepend_status_text(
                self.OPERATION_TEXT[operation] + container_name + '\n')