mirror of
https://github.com/GNS3/gns3-gui.git
synced 2026-05-17 00:46:01 +03:00
Edit /etc/network/interfaces
This commit is contained in:
63
gns3/dialogs/file_editor_dialog.py
Normal file
63
gns3/dialogs/file_editor_dialog.py
Normal file
@@ -0,0 +1,63 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Copyright (C) 2016 GNS3 Technologies Inc.
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import os
|
||||
|
||||
from gns3.qt import QtWidgets
|
||||
from gns3.ui.file_editor_dialog_ui import Ui_FileEditorDialog
|
||||
|
||||
import logging
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class FileEditorDialog(QtWidgets.QDialog, Ui_FileEditorDialog):
|
||||
"""
|
||||
This dialog allow user to detect error in his GNS3 installation.
|
||||
|
||||
If you want to add a test add a method starting by check. The
|
||||
check return a tuple result and a message in case of failure.
|
||||
"""
|
||||
|
||||
def __init__(self, node, path, parent=None):
|
||||
|
||||
if parent is None:
|
||||
from gns3.main_window import MainWindow
|
||||
parent = MainWindow.instance()
|
||||
|
||||
super().__init__(parent)
|
||||
self.setupUi(self)
|
||||
|
||||
self._node = node
|
||||
self._path = path
|
||||
|
||||
self.setWindowTitle(node.name() + " " + os.path.basename(path))
|
||||
|
||||
self.uiRefreshButton.pressed.connect(self._refreshSlot)
|
||||
self.accepted.connect(self._acceptedCallback)
|
||||
|
||||
self._refreshSlot()
|
||||
|
||||
def _acceptedCallback(self):
|
||||
text = self.uiFileTextEdit.toPlainText()
|
||||
self._node.httpPost("/files" + self._path, None, body=text)
|
||||
|
||||
def _refreshSlot(self):
|
||||
self._node.httpGet("/files" + self._path, self._getCallback)
|
||||
|
||||
def _getCallback(self, result, error=False, raw_body=None, **kwargs):
|
||||
if not error:
|
||||
self.uiFileTextEdit.setText(raw_body)
|
||||
@@ -397,7 +397,7 @@ class HTTPClient(QtCore.QObject):
|
||||
"""
|
||||
self.executeHTTPQuery("GET", "/version", query, {}, timeout=5)
|
||||
|
||||
def createHTTPQuery(self, method, path, callback, body={}, context={}, downloadProgressCallback=None, showProgress=True, ignoreErrors=False, progressText=None, timeout=120):
|
||||
def createHTTPQuery(self, method, path, callback, body={}, context={}, downloadProgressCallback=None, showProgress=True, ignoreErrors=False, progressText=None, timeout=120, **kwargs):
|
||||
"""
|
||||
Call the remote server, if not connected, check connection before
|
||||
|
||||
@@ -525,6 +525,13 @@ class HTTPClient(QtCore.QObject):
|
||||
request.setRawHeader(b"Content-Type", b"application/octet-stream")
|
||||
# QT is smart and will compute the Content-Lenght for us
|
||||
return body
|
||||
elif isinstance(body, str):
|
||||
request.setRawHeader(b"Content-Type", b"application/octet-stream")
|
||||
data = QtCore.QByteArray(body.encode())
|
||||
body = QtCore.QBuffer(self)
|
||||
body.setData(data)
|
||||
body.open(QtCore.QIODevice.ReadOnly)
|
||||
return body
|
||||
else:
|
||||
return None
|
||||
|
||||
@@ -539,7 +546,7 @@ class HTTPClient(QtCore.QObject):
|
||||
request.setRawHeader(b"Authorization", auth_string.encode())
|
||||
return request
|
||||
|
||||
def executeHTTPQuery(self, method, path, callback, body, context={}, downloadProgressCallback=None, showProgress=True, ignoreErrors=False, progressText=None, timeout=5):
|
||||
def executeHTTPQuery(self, method, path, callback, body, context={}, downloadProgressCallback=None, showProgress=True, ignoreErrors=False, progressText=None, timeout=5, **kwargs):
|
||||
"""
|
||||
Call the remote server
|
||||
|
||||
@@ -714,7 +721,7 @@ class HTTPClient(QtCore.QObject):
|
||||
if status >= 400:
|
||||
callback(params, error=True, server=self, context=context)
|
||||
else:
|
||||
callback(params, server=self, context=context)
|
||||
callback(params, server=self, context=context, raw_body=body)
|
||||
# response.deleteLater()
|
||||
if status == 400:
|
||||
try:
|
||||
|
||||
@@ -348,6 +348,12 @@ class DockerVM(VM):
|
||||
"""
|
||||
return ":/symbols/docker_guest.svg"
|
||||
|
||||
def networkInterfacesPath(self):
|
||||
"""
|
||||
Return path of the /etc/network/interfaces
|
||||
"""
|
||||
return "/project-files/docker/{}/etc/network/interfaces".format(self._vm_id)
|
||||
|
||||
@staticmethod
|
||||
def symbolName():
|
||||
return "Docker container"
|
||||
|
||||
@@ -22,6 +22,7 @@ Configuration page for Docker images.
|
||||
from gns3.qt import QtWidgets
|
||||
|
||||
from ..ui.docker_vm_configuration_page_ui import Ui_dockerVMConfigPageWidget
|
||||
from ....dialogs.file_editor_dialog import FileEditorDialog
|
||||
|
||||
|
||||
class DockerVMConfigurationPage(
|
||||
@@ -32,6 +33,7 @@ class DockerVMConfigurationPage(
|
||||
|
||||
super().__init__()
|
||||
self.setupUi(self)
|
||||
self.uiNetworkConfigEditButton.released.connect(self._networkConfigEditSlot)
|
||||
|
||||
def loadSettings(self, settings, node=None, group=False):
|
||||
"""
|
||||
@@ -72,7 +74,9 @@ class DockerVMConfigurationPage(
|
||||
self.uiCategoryComboBox.setCurrentIndex(settings["category"])
|
||||
self.uiConsolePortLabel.hide()
|
||||
self.uiConsolePortSpinBox.hide()
|
||||
self.uiNetworkConfigEditButton.hide()
|
||||
else:
|
||||
self._node = node
|
||||
self.uiConsolePortSpinBox.setValue(settings["console"])
|
||||
self.uiCategoryComboBox.hide()
|
||||
self.uiCategoryLabel.hide()
|
||||
@@ -80,6 +84,12 @@ class DockerVMConfigurationPage(
|
||||
self.uiDefaultNameFormatLabel.hide()
|
||||
self.uiDefaultNameFormatLineEdit.hide()
|
||||
|
||||
def _networkConfigEditSlot(self):
|
||||
dialog = FileEditorDialog(self._node, self._node.networkInterfacesPath())
|
||||
dialog.setModal(True)
|
||||
self.stackUnder(dialog)
|
||||
dialog.show()
|
||||
|
||||
def saveSettings(self, settings, node=None, group=False):
|
||||
"""Saves the Docker container settings.
|
||||
|
||||
|
||||
@@ -24,45 +24,13 @@
|
||||
<string>General settings</string>
|
||||
</attribute>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="7" column="1">
|
||||
<widget class="QTextEdit" name="uiEnvironmentTextEdit"/>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="uiCMDLabel">
|
||||
<property name="text">
|
||||
<string>Start command:</string>
|
||||
<item row="5" column="1">
|
||||
<widget class="QSpinBox" name="uiConsolePortSpinBox">
|
||||
<property name="maximum">
|
||||
<number>65535</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="uiAdapterLabel">
|
||||
<property name="text">
|
||||
<string>Adapters:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<widget class="QLabel" name="uiEnvironmentLabel">
|
||||
<property name="text">
|
||||
<string>Environment (KEY=VALUE one by line):</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="uiNameLineEdit"/>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QLineEdit" name="uiCMDLineEdit"/>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="uiDefaultNameFormatLineEdit"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="uiDefaultNameFormatLabel">
|
||||
<property name="text">
|
||||
@@ -70,6 +38,12 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="uiDefaultNameFormatLineEdit"/>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QLineEdit" name="uiCMDLineEdit"/>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="uiNameLabel">
|
||||
<property name="text">
|
||||
@@ -77,13 +51,6 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<widget class="QSpinBox" name="uiConsolePortSpinBox">
|
||||
<property name="maximum">
|
||||
<number>65535</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QSpinBox" name="uiAdapterSpinBox">
|
||||
<property name="minimum">
|
||||
@@ -129,6 +96,39 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="1">
|
||||
<widget class="QTextEdit" name="uiEnvironmentTextEdit"/>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="uiCMDLabel">
|
||||
<property name="text">
|
||||
<string>Start command:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QLabel" name="uiAdapterLabel">
|
||||
<property name="text">
|
||||
<string>Adapters:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<widget class="QLabel" name="uiEnvironmentLabel">
|
||||
<property name="text">
|
||||
<string>Environment (KEY=VALUE one by line):</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="uiNameLineEdit"/>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<widget class="QComboBox" name="uiConsoleTypeComboBox">
|
||||
<item>
|
||||
@@ -150,6 +150,20 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="1">
|
||||
<widget class="QPushButton" name="uiNetworkConfigEditButton">
|
||||
<property name="text">
|
||||
<string>Edit</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Network configuration</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
|
||||
@@ -20,39 +20,22 @@ class Ui_dockerVMConfigPageWidget(object):
|
||||
self.tab.setObjectName("tab")
|
||||
self.gridLayout = QtWidgets.QGridLayout(self.tab)
|
||||
self.gridLayout.setObjectName("gridLayout")
|
||||
self.uiEnvironmentTextEdit = QtWidgets.QTextEdit(self.tab)
|
||||
self.uiEnvironmentTextEdit.setObjectName("uiEnvironmentTextEdit")
|
||||
self.gridLayout.addWidget(self.uiEnvironmentTextEdit, 7, 1, 1, 1)
|
||||
self.uiCMDLabel = QtWidgets.QLabel(self.tab)
|
||||
self.uiCMDLabel.setObjectName("uiCMDLabel")
|
||||
self.gridLayout.addWidget(self.uiCMDLabel, 3, 0, 1, 1)
|
||||
self.uiAdapterLabel = QtWidgets.QLabel(self.tab)
|
||||
self.uiAdapterLabel.setObjectName("uiAdapterLabel")
|
||||
self.gridLayout.addWidget(self.uiAdapterLabel, 4, 0, 1, 1)
|
||||
self.uiEnvironmentLabel = QtWidgets.QLabel(self.tab)
|
||||
self.uiEnvironmentLabel.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.uiEnvironmentLabel.setWordWrap(False)
|
||||
self.uiEnvironmentLabel.setObjectName("uiEnvironmentLabel")
|
||||
self.gridLayout.addWidget(self.uiEnvironmentLabel, 7, 0, 1, 1)
|
||||
self.uiNameLineEdit = QtWidgets.QLineEdit(self.tab)
|
||||
self.uiNameLineEdit.setObjectName("uiNameLineEdit")
|
||||
self.gridLayout.addWidget(self.uiNameLineEdit, 0, 1, 1, 1)
|
||||
self.uiCMDLineEdit = QtWidgets.QLineEdit(self.tab)
|
||||
self.uiCMDLineEdit.setObjectName("uiCMDLineEdit")
|
||||
self.gridLayout.addWidget(self.uiCMDLineEdit, 3, 1, 1, 1)
|
||||
self.uiDefaultNameFormatLineEdit = QtWidgets.QLineEdit(self.tab)
|
||||
self.uiDefaultNameFormatLineEdit.setObjectName("uiDefaultNameFormatLineEdit")
|
||||
self.gridLayout.addWidget(self.uiDefaultNameFormatLineEdit, 1, 1, 1, 1)
|
||||
self.uiDefaultNameFormatLabel = QtWidgets.QLabel(self.tab)
|
||||
self.uiDefaultNameFormatLabel.setObjectName("uiDefaultNameFormatLabel")
|
||||
self.gridLayout.addWidget(self.uiDefaultNameFormatLabel, 1, 0, 1, 1)
|
||||
self.uiNameLabel = QtWidgets.QLabel(self.tab)
|
||||
self.uiNameLabel.setObjectName("uiNameLabel")
|
||||
self.gridLayout.addWidget(self.uiNameLabel, 0, 0, 1, 1)
|
||||
self.uiConsolePortSpinBox = QtWidgets.QSpinBox(self.tab)
|
||||
self.uiConsolePortSpinBox.setMaximum(65535)
|
||||
self.uiConsolePortSpinBox.setObjectName("uiConsolePortSpinBox")
|
||||
self.gridLayout.addWidget(self.uiConsolePortSpinBox, 5, 1, 1, 1)
|
||||
self.uiDefaultNameFormatLabel = QtWidgets.QLabel(self.tab)
|
||||
self.uiDefaultNameFormatLabel.setObjectName("uiDefaultNameFormatLabel")
|
||||
self.gridLayout.addWidget(self.uiDefaultNameFormatLabel, 1, 0, 1, 1)
|
||||
self.uiDefaultNameFormatLineEdit = QtWidgets.QLineEdit(self.tab)
|
||||
self.uiDefaultNameFormatLineEdit.setObjectName("uiDefaultNameFormatLineEdit")
|
||||
self.gridLayout.addWidget(self.uiDefaultNameFormatLineEdit, 1, 1, 1, 1)
|
||||
self.uiCMDLineEdit = QtWidgets.QLineEdit(self.tab)
|
||||
self.uiCMDLineEdit.setObjectName("uiCMDLineEdit")
|
||||
self.gridLayout.addWidget(self.uiCMDLineEdit, 3, 1, 1, 1)
|
||||
self.uiNameLabel = QtWidgets.QLabel(self.tab)
|
||||
self.uiNameLabel.setObjectName("uiNameLabel")
|
||||
self.gridLayout.addWidget(self.uiNameLabel, 0, 0, 1, 1)
|
||||
self.uiAdapterSpinBox = QtWidgets.QSpinBox(self.tab)
|
||||
self.uiAdapterSpinBox.setMinimum(1)
|
||||
self.uiAdapterSpinBox.setObjectName("uiAdapterSpinBox")
|
||||
@@ -70,6 +53,23 @@ class Ui_dockerVMConfigPageWidget(object):
|
||||
self.uiCategoryLabel = QtWidgets.QLabel(self.tab)
|
||||
self.uiCategoryLabel.setObjectName("uiCategoryLabel")
|
||||
self.gridLayout.addWidget(self.uiCategoryLabel, 2, 0, 1, 1)
|
||||
self.uiEnvironmentTextEdit = QtWidgets.QTextEdit(self.tab)
|
||||
self.uiEnvironmentTextEdit.setObjectName("uiEnvironmentTextEdit")
|
||||
self.gridLayout.addWidget(self.uiEnvironmentTextEdit, 7, 1, 1, 1)
|
||||
self.uiCMDLabel = QtWidgets.QLabel(self.tab)
|
||||
self.uiCMDLabel.setObjectName("uiCMDLabel")
|
||||
self.gridLayout.addWidget(self.uiCMDLabel, 3, 0, 1, 1)
|
||||
self.uiAdapterLabel = QtWidgets.QLabel(self.tab)
|
||||
self.uiAdapterLabel.setObjectName("uiAdapterLabel")
|
||||
self.gridLayout.addWidget(self.uiAdapterLabel, 4, 0, 1, 1)
|
||||
self.uiEnvironmentLabel = QtWidgets.QLabel(self.tab)
|
||||
self.uiEnvironmentLabel.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
|
||||
self.uiEnvironmentLabel.setWordWrap(False)
|
||||
self.uiEnvironmentLabel.setObjectName("uiEnvironmentLabel")
|
||||
self.gridLayout.addWidget(self.uiEnvironmentLabel, 7, 0, 1, 1)
|
||||
self.uiNameLineEdit = QtWidgets.QLineEdit(self.tab)
|
||||
self.uiNameLineEdit.setObjectName("uiNameLineEdit")
|
||||
self.gridLayout.addWidget(self.uiNameLineEdit, 0, 1, 1, 1)
|
||||
self.uiConsoleTypeComboBox = QtWidgets.QComboBox(self.tab)
|
||||
self.uiConsoleTypeComboBox.setObjectName("uiConsoleTypeComboBox")
|
||||
self.uiConsoleTypeComboBox.addItem("")
|
||||
@@ -78,6 +78,12 @@ class Ui_dockerVMConfigPageWidget(object):
|
||||
self.uiConsoleTypeLabel = QtWidgets.QLabel(self.tab)
|
||||
self.uiConsoleTypeLabel.setObjectName("uiConsoleTypeLabel")
|
||||
self.gridLayout.addWidget(self.uiConsoleTypeLabel, 6, 0, 1, 1)
|
||||
self.uiNetworkConfigEditButton = QtWidgets.QPushButton(self.tab)
|
||||
self.uiNetworkConfigEditButton.setObjectName("uiNetworkConfigEditButton")
|
||||
self.gridLayout.addWidget(self.uiNetworkConfigEditButton, 8, 1, 1, 1)
|
||||
self.label = QtWidgets.QLabel(self.tab)
|
||||
self.label.setObjectName("label")
|
||||
self.gridLayout.addWidget(self.label, 8, 0, 1, 1)
|
||||
self.uiTabWidget.addTab(self.tab, "")
|
||||
self.verticalLayout.addWidget(self.uiTabWidget)
|
||||
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
@@ -90,9 +96,6 @@ class Ui_dockerVMConfigPageWidget(object):
|
||||
def retranslateUi(self, dockerVMConfigPageWidget):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
dockerVMConfigPageWidget.setWindowTitle(_translate("dockerVMConfigPageWidget", "Docker image configuration"))
|
||||
self.uiCMDLabel.setText(_translate("dockerVMConfigPageWidget", "Start command:"))
|
||||
self.uiAdapterLabel.setText(_translate("dockerVMConfigPageWidget", "Adapters:"))
|
||||
self.uiEnvironmentLabel.setText(_translate("dockerVMConfigPageWidget", "Environment (KEY=VALUE one by line):"))
|
||||
self.uiDefaultNameFormatLabel.setText(_translate("dockerVMConfigPageWidget", "Default name format"))
|
||||
self.uiNameLabel.setText(_translate("dockerVMConfigPageWidget", "Name:"))
|
||||
self.uiConsolePortLabel.setText(_translate("dockerVMConfigPageWidget", "Console port:"))
|
||||
@@ -101,8 +104,13 @@ class Ui_dockerVMConfigPageWidget(object):
|
||||
self.uiCategoryComboBox.setItemText(2, _translate("dockerVMConfigPageWidget", "Guest"))
|
||||
self.uiCategoryComboBox.setItemText(3, _translate("dockerVMConfigPageWidget", "Security device"))
|
||||
self.uiCategoryLabel.setText(_translate("dockerVMConfigPageWidget", "Category"))
|
||||
self.uiCMDLabel.setText(_translate("dockerVMConfigPageWidget", "Start command:"))
|
||||
self.uiAdapterLabel.setText(_translate("dockerVMConfigPageWidget", "Adapters:"))
|
||||
self.uiEnvironmentLabel.setText(_translate("dockerVMConfigPageWidget", "Environment (KEY=VALUE one by line):"))
|
||||
self.uiConsoleTypeComboBox.setItemText(0, _translate("dockerVMConfigPageWidget", "telnet"))
|
||||
self.uiConsoleTypeComboBox.setItemText(1, _translate("dockerVMConfigPageWidget", "vnc"))
|
||||
self.uiConsoleTypeLabel.setText(_translate("dockerVMConfigPageWidget", "Console type:"))
|
||||
self.uiNetworkConfigEditButton.setText(_translate("dockerVMConfigPageWidget", "Edit"))
|
||||
self.label.setText(_translate("dockerVMConfigPageWidget", "Network configuration"))
|
||||
self.uiTabWidget.setTabText(self.uiTabWidget.indexOf(self.tab), _translate("dockerVMConfigPageWidget", "General settings"))
|
||||
|
||||
|
||||
119
gns3/ui/file_editor_dialog.ui
Executable file
119
gns3/ui/file_editor_dialog.ui
Executable file
@@ -0,0 +1,119 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>FileEditorDialog</class>
|
||||
<widget class="QDialog" name="FileEditorDialog">
|
||||
<property name="windowModality">
|
||||
<enum>Qt::ApplicationModal</enum>
|
||||
</property>
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>768</width>
|
||||
<height>677</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>File editor</string>
|
||||
</property>
|
||||
<property name="modal">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="rightMargin">
|
||||
<number>12</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QTextEdit" name="uiFileTextEdit">
|
||||
<property name="html">
|
||||
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||
p, li { white-space: pre-wrap; }
|
||||
</style></head><body style=" font-family:'.SF NS Text'; font-size:13pt; font-weight:400; font-style:normal;">
|
||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="spacing">
|
||||
<number>20</number>
|
||||
</property>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="uiRefreshButton">
|
||||
<property name="text">
|
||||
<string>Refresh</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="uiOkButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources>
|
||||
<include location="../../resources/resources.qrc"/>
|
||||
</resources>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>uiOkButton</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>FileEditorDialog</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>554</x>
|
||||
<y>361</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>303</x>
|
||||
<y>194</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>uiOkButton</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>FileEditorDialog</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>508</x>
|
||||
<y>361</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>303</x>
|
||||
<y>194</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
||||
58
gns3/ui/file_editor_dialog_ui.py
Normal file
58
gns3/ui/file_editor_dialog_ui.py
Normal file
@@ -0,0 +1,58 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Form implementation generated from reading ui file '/Users/noplay/code/gns3/gns3-gui/gns3/ui/file_editor_dialog.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.5.1
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
class Ui_FileEditorDialog(object):
|
||||
def setupUi(self, FileEditorDialog):
|
||||
FileEditorDialog.setObjectName("FileEditorDialog")
|
||||
FileEditorDialog.setWindowModality(QtCore.Qt.ApplicationModal)
|
||||
FileEditorDialog.resize(768, 677)
|
||||
FileEditorDialog.setModal(False)
|
||||
self.verticalLayout = QtWidgets.QVBoxLayout(FileEditorDialog)
|
||||
self.verticalLayout.setContentsMargins(-1, -1, 12, -1)
|
||||
self.verticalLayout.setObjectName("verticalLayout")
|
||||
self.uiFileTextEdit = QtWidgets.QTextEdit(FileEditorDialog)
|
||||
self.uiFileTextEdit.setObjectName("uiFileTextEdit")
|
||||
self.verticalLayout.addWidget(self.uiFileTextEdit)
|
||||
self.horizontalLayout = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout.setSpacing(20)
|
||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.horizontalLayout.addItem(spacerItem)
|
||||
self.uiRefreshButton = QtWidgets.QPushButton(FileEditorDialog)
|
||||
self.uiRefreshButton.setObjectName("uiRefreshButton")
|
||||
self.horizontalLayout.addWidget(self.uiRefreshButton)
|
||||
self.uiOkButton = QtWidgets.QDialogButtonBox(FileEditorDialog)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.uiOkButton.sizePolicy().hasHeightForWidth())
|
||||
self.uiOkButton.setSizePolicy(sizePolicy)
|
||||
self.uiOkButton.setOrientation(QtCore.Qt.Horizontal)
|
||||
self.uiOkButton.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Save)
|
||||
self.uiOkButton.setObjectName("uiOkButton")
|
||||
self.horizontalLayout.addWidget(self.uiOkButton)
|
||||
self.verticalLayout.addLayout(self.horizontalLayout)
|
||||
|
||||
self.retranslateUi(FileEditorDialog)
|
||||
self.uiOkButton.accepted.connect(FileEditorDialog.accept)
|
||||
self.uiOkButton.rejected.connect(FileEditorDialog.reject)
|
||||
QtCore.QMetaObject.connectSlotsByName(FileEditorDialog)
|
||||
|
||||
def retranslateUi(self, FileEditorDialog):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
FileEditorDialog.setWindowTitle(_translate("FileEditorDialog", "File editor"))
|
||||
self.uiFileTextEdit.setHtml(_translate("FileEditorDialog", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
|
||||
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
|
||||
"p, li { white-space: pre-wrap; }\n"
|
||||
"</style></head><body style=\" font-family:\'.SF NS Text\'; font-size:13pt; font-weight:400; font-style:normal;\">\n"
|
||||
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>"))
|
||||
self.uiRefreshButton.setText(_translate("FileEditorDialog", "Refresh"))
|
||||
|
||||
from . import resources_rc
|
||||
Reference in New Issue
Block a user