Edit /etc/network/interfaces

This commit is contained in:
Julien Duponchelle
2016-03-25 14:45:00 +01:00
parent 932c708538
commit b013e8af50
8 changed files with 363 additions and 78 deletions

View 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)

View File

@@ -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:

View File

@@ -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"

View File

@@ -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.

View File

@@ -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>

View File

@@ -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
View 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>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'.SF NS Text'; font-size:13pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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>

View 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