Rename symbols: *.normal.svg to *.svg
@@ -19,6 +19,8 @@
|
||||
Dialog to change node symbols.
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
from ..qt import QtSvg, QtCore, QtGui, QtWidgets
|
||||
from ..ui.symbol_selection_dialog_ui import Ui_SymbolSelectionDialog
|
||||
|
||||
@@ -55,8 +57,8 @@ class SymbolSelectionDialog(QtWidgets.QDialog, Ui_SymbolSelectionDialog):
|
||||
self.uiSymbolListWidget.setIconSize(QtCore.QSize(64, 64))
|
||||
symbol_resources = QtCore.QResource(":/symbols")
|
||||
for symbol in symbol_resources.children():
|
||||
if symbol.endswith(".normal.svg"):
|
||||
name = symbol[:-11]
|
||||
if symbol.endswith(".svg"):
|
||||
name = os.path.splitext(symbol)[0]
|
||||
item = QtWidgets.QListWidgetItem(self.uiSymbolListWidget)
|
||||
item.setText(name)
|
||||
resource_path = ":/symbols/" + symbol
|
||||
@@ -78,7 +80,7 @@ class SymbolSelectionDialog(QtWidgets.QDialog, Ui_SymbolSelectionDialog):
|
||||
current = self.uiSymbolListWidget.currentItem()
|
||||
if current:
|
||||
name = current.text()
|
||||
path = ":/symbols/{}.normal.svg".format(name)
|
||||
path = ":/symbols/{}.svg".format(name)
|
||||
renderer = QtSvg.QSvgRenderer(path)
|
||||
renderer.setObjectName(path)
|
||||
for item in self._items:
|
||||
@@ -89,7 +91,7 @@ class SymbolSelectionDialog(QtWidgets.QDialog, Ui_SymbolSelectionDialog):
|
||||
if self.uiSymbolListWidget.isEnabled():
|
||||
current = self.uiSymbolListWidget.currentItem()
|
||||
name = current.text()
|
||||
normal_symbol = ":/symbols/{}.normal.svg".format(name)
|
||||
normal_symbol = ":/symbols/{}.svg".format(name)
|
||||
else:
|
||||
normal_symbol = self.uiSymbolLineEdit.text()
|
||||
return normal_symbol
|
||||
|
||||
@@ -1424,10 +1424,10 @@ class GraphicsView(QtWidgets.QGraphicsView):
|
||||
node.error_signal.connect(self._main_window.uiConsoleTextEdit.writeError)
|
||||
node.warning_signal.connect(self._main_window.uiConsoleTextEdit.writeWarning)
|
||||
node.server_error_signal.connect(self._main_window.uiConsoleTextEdit.writeServerError)
|
||||
if QtSvg.QSvgRenderer(node_data["default_symbol"]).isValid():
|
||||
node_item = SvgNodeItem(node, node_data["default_symbol"])
|
||||
if QtSvg.QSvgRenderer(node_data["symbol"]).isValid():
|
||||
node_item = SvgNodeItem(node, node_data["symbol"])
|
||||
else:
|
||||
node_item = PixmapNodeItem(node, node_data["default_symbol"])
|
||||
node_item = PixmapNodeItem(node, node_data["symbol"])
|
||||
node_module.setupNode(node, node_data["name"])
|
||||
except ModuleError as e:
|
||||
QtWidgets.QMessageBox.critical(self, "Node creation", "{}".format(e))
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
Built-in module implementation.
|
||||
"""
|
||||
|
||||
from gns3.qt import QtGui, QtWidgets
|
||||
from gns3.qt import QtWidgets
|
||||
from gns3.servers import Servers
|
||||
from ..module import Module
|
||||
from ..module_error import ModuleError
|
||||
@@ -204,7 +204,7 @@ class Builtin(Module):
|
||||
{"class": node_class.__name__,
|
||||
"name": node_class.symbolName(),
|
||||
"categories": node_class.categories(),
|
||||
"default_symbol": node_class.defaultSymbol()}
|
||||
"symbol": node_class.defaultSymbol()}
|
||||
)
|
||||
return nodes
|
||||
|
||||
|
||||
@@ -432,17 +432,7 @@ This is a pseudo-device for external connections
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/cloud.normal.svg"
|
||||
|
||||
@staticmethod
|
||||
def hoverSymbol():
|
||||
"""
|
||||
Returns the symbol to use when the cloud is hovered.
|
||||
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/cloud.selected.svg"
|
||||
return ":/symbols/cloud.svg"
|
||||
|
||||
@staticmethod
|
||||
def symbolName():
|
||||
|
||||
@@ -87,17 +87,7 @@ class Host(Cloud):
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/computer.normal.svg"
|
||||
|
||||
@staticmethod
|
||||
def hoverSymbol():
|
||||
"""
|
||||
Returns the symbol to use when the host is hovered.
|
||||
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/computer.selected.svg"
|
||||
return ":/symbols/computer.svg"
|
||||
|
||||
@staticmethod
|
||||
def symbolName():
|
||||
|
||||
@@ -143,12 +143,15 @@ class Dynamips(Module):
|
||||
for router in settings[self.__class__.__name__]["routers"]:
|
||||
name = router.get("name")
|
||||
server = router.get("server")
|
||||
router["image"] = router.get("path", router["image"]) # for compatibility before version 1.3
|
||||
router["image"] = router.get("path", router["image"]) # for backward compatibility before version 1.3
|
||||
key = "{server}:{name}".format(server=server, name=name)
|
||||
if key in self._ios_routers or not name or not server:
|
||||
continue
|
||||
router_settings = IOS_ROUTER_SETTINGS.copy()
|
||||
router_settings.update(router)
|
||||
# for backward compatibility before version 1.4
|
||||
router_settings["symbol"] = router_settings.get("default_symbol", router_settings["symbol"])
|
||||
router_settings["symbol"] = router_settings["symbol"][:-11] + ".svg" if router_settings["symbol"].endswith("normal.svg") else router_settings["symbol"]
|
||||
self._ios_routers[key] = router_settings
|
||||
|
||||
def _saveIOSRouters(self):
|
||||
@@ -416,7 +419,7 @@ class Dynamips(Module):
|
||||
"name": node_class.symbolName(),
|
||||
"server": server,
|
||||
"categories": node_class.categories(),
|
||||
"default_symbol": node_class.defaultSymbol()}
|
||||
"symbol": node_class.defaultSymbol()}
|
||||
)
|
||||
|
||||
for ios_router in self._ios_routers.values():
|
||||
@@ -426,7 +429,7 @@ class Dynamips(Module):
|
||||
"name": ios_router["name"],
|
||||
"ram": ios_router["ram"],
|
||||
"server": ios_router["server"],
|
||||
"default_symbol": ios_router["default_symbol"],
|
||||
"symbol": ios_router["symbol"],
|
||||
"categories": [ios_router["category"]]}
|
||||
)
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ class IOSRouterWizard(VMWizard, Ui_IOSRouterWizard):
|
||||
def __init__(self, ios_routers, parent):
|
||||
|
||||
super().__init__(parent)
|
||||
self.setPixmap(QtWidgets.QWizard.LogoPixmap, QtGui.QPixmap(":/symbols/router.normal.svg"))
|
||||
self.setPixmap(QtWidgets.QWizard.LogoPixmap, QtGui.QPixmap(":/symbols/router.svg"))
|
||||
|
||||
self.uiTestIOSImagePushButton.clicked.connect(self._testIOSImageSlot)
|
||||
self.uiIdlePCFinderPushButton.clicked.connect(self._idlePCFinderSlot)
|
||||
@@ -482,7 +482,7 @@ class IOSRouterWizard(VMWizard, Ui_IOSRouterWizard):
|
||||
|
||||
if self.uiEtherSwitchCheckBox.isChecked():
|
||||
settings["startup_config"] = get_default_base_config(self._base_etherswitch_startup_config_template)
|
||||
settings["default_symbol"] = ":/symbols/multilayer_switch.normal.svg"
|
||||
settings["symbol"] = ":/symbols/multilayer_switch.svg"
|
||||
settings["disk0"] = 1 # adds 1MB disk to store vlan.dat
|
||||
settings["category"] = Node.switches
|
||||
else:
|
||||
|
||||
@@ -349,17 +349,7 @@ class ATMSwitch(Device):
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/atm_switch.normal.svg"
|
||||
|
||||
@staticmethod
|
||||
def hoverSymbol():
|
||||
"""
|
||||
Returns the symbol to use when this node is hovered.
|
||||
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/atm_switch.selected.svg"
|
||||
return ":/symbols/atm_switch.svg"
|
||||
|
||||
@staticmethod
|
||||
def symbolName():
|
||||
|
||||
@@ -295,17 +295,7 @@ class EthernetHub(Device):
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/hub.normal.svg"
|
||||
|
||||
@staticmethod
|
||||
def hoverSymbol():
|
||||
"""
|
||||
Returns the symbol to use when this node is hovered.
|
||||
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/hub.selected.svg"
|
||||
return ":/symbols/hub.svg"
|
||||
|
||||
@staticmethod
|
||||
def symbolName():
|
||||
|
||||
@@ -327,17 +327,7 @@ class EthernetSwitch(Device):
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/ethernet_switch.normal.svg"
|
||||
|
||||
@staticmethod
|
||||
def hoverSymbol():
|
||||
"""
|
||||
Returns the symbol to use when this node is hovered.
|
||||
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/ethernet_switch.selected.svg"
|
||||
return ":/symbols/ethernet_switch.svg"
|
||||
|
||||
@staticmethod
|
||||
def symbolName():
|
||||
|
||||
@@ -56,17 +56,7 @@ class EtherSwitchRouter(Router):
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/multilayer_switch.normal.svg"
|
||||
|
||||
@staticmethod
|
||||
def hoverSymbol():
|
||||
"""
|
||||
Returns the symbol to use when this node is hovered.
|
||||
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/multilayer_switch.selected.svg"
|
||||
return ":/symbols/multilayer_switch.svg"
|
||||
|
||||
@staticmethod
|
||||
def categories():
|
||||
|
||||
@@ -331,17 +331,7 @@ class FrameRelaySwitch(Device):
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/frame_relay_switch.normal.svg"
|
||||
|
||||
@staticmethod
|
||||
def hoverSymbol():
|
||||
"""
|
||||
Returns the symbol to use when this node is hovered.
|
||||
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/frame_relay_switch.selected.svg"
|
||||
return ":/symbols/frame_relay_switch.svg"
|
||||
|
||||
@staticmethod
|
||||
def symbolName():
|
||||
|
||||
@@ -997,17 +997,7 @@ class Router(VM):
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/router.normal.svg"
|
||||
|
||||
@staticmethod
|
||||
def hoverSymbol():
|
||||
"""
|
||||
Returns the symbol to use when the router is hovered.
|
||||
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/router.selected.svg"
|
||||
return ":/symbols/router.svg"
|
||||
|
||||
@staticmethod
|
||||
def categories():
|
||||
|
||||
@@ -287,7 +287,7 @@ class IOSRouterConfigurationPage(QtWidgets.QWidget, Ui_iosRouterConfigPageWidget
|
||||
self.uiPrivateConfigLineEdit.setText(settings["private_config"])
|
||||
|
||||
# load the symbol
|
||||
self.uiSymbolLineEdit.setText(settings["default_symbol"])
|
||||
self.uiSymbolLineEdit.setText(settings["symbol"])
|
||||
|
||||
# load the category
|
||||
index = self.uiCategoryComboBox.findData(settings["category"])
|
||||
@@ -540,7 +540,7 @@ class IOSRouterConfigurationPage(QtWidgets.QWidget, Ui_iosRouterConfigPageWidget
|
||||
if pixmap.isNull():
|
||||
QtWidgets.QMessageBox.critical(self, "Symbol", "Invalid file or format not supported")
|
||||
else:
|
||||
settings["default_symbol"] = symbol_path
|
||||
settings["symbol"] = symbol_path
|
||||
|
||||
settings["category"] = self.uiCategoryComboBox.itemData(self.uiCategoryComboBox.currentIndex())
|
||||
|
||||
|
||||
@@ -147,7 +147,7 @@ class IOSRouterPreferencesPage(QtWidgets.QWidget, Ui_IOSRouterPreferencesPageWid
|
||||
self._ios_routers[key].update(ios_settings)
|
||||
item = QtWidgets.QTreeWidgetItem(self.uiIOSRoutersTreeWidget)
|
||||
item.setText(0, self._ios_routers[key]["name"])
|
||||
item.setIcon(0, QtGui.QIcon(self._ios_routers[key]["default_symbol"]))
|
||||
item.setIcon(0, QtGui.QIcon(self._ios_routers[key]["symbol"]))
|
||||
item.setData(0, QtCore.Qt.UserRole, key)
|
||||
self._items.append(item)
|
||||
self.uiIOSRoutersTreeWidget.setCurrentItem(item)
|
||||
@@ -165,7 +165,7 @@ class IOSRouterPreferencesPage(QtWidgets.QWidget, Ui_IOSRouterPreferencesPageWid
|
||||
dialog.show()
|
||||
if dialog.exec_():
|
||||
# update the icon
|
||||
item.setIcon(0, QtGui.QIcon(ios_router["default_symbol"]))
|
||||
item.setIcon(0, QtGui.QIcon(ios_router["symbol"]))
|
||||
if ios_router["name"] != item.text(0):
|
||||
# rename the IOS router
|
||||
new_key = "{server}:{name}".format(server=ios_router["server"], name=ios_router["name"])
|
||||
@@ -426,7 +426,7 @@ class IOSRouterPreferencesPage(QtWidgets.QWidget, Ui_IOSRouterPreferencesPageWid
|
||||
for key, ios_router in self._ios_routers.items():
|
||||
item = QtWidgets.QTreeWidgetItem(self.uiIOSRoutersTreeWidget)
|
||||
item.setText(0, ios_router["name"])
|
||||
item.setIcon(0, QtGui.QIcon(ios_router["default_symbol"]))
|
||||
item.setIcon(0, QtGui.QIcon(ios_router["symbol"]))
|
||||
item.setData(0, QtCore.Qt.UserRole, key)
|
||||
self._items.append(item)
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ DYNAMIPS_SETTINGS = {
|
||||
IOS_ROUTER_SETTINGS = {
|
||||
"name": "",
|
||||
"image": "",
|
||||
"default_symbol": ":/symbols/router.normal.svg",
|
||||
"symbol": ":/symbols/router.svg",
|
||||
"category": Node.routers,
|
||||
"startup_config": "",
|
||||
"private_config": "",
|
||||
|
||||
@@ -103,9 +103,10 @@ class IOU(Module):
|
||||
continue
|
||||
device_settings = IOU_DEVICE_SETTINGS.copy()
|
||||
device_settings.update(device)
|
||||
if "initial_config" in device_settings:
|
||||
# transfer initial-config (post version 1.4) to startup-config
|
||||
device_settings["startup_config"] = device_settings["initial_config"]
|
||||
# for backward compatibility before version 1.4
|
||||
device_settings["symbol"] = device_settings.get("default_symbol", device_settings["symbol"])
|
||||
device_settings["symbol"] = device_settings["symbol"][:-11] + ".svg" if device_settings["symbol"].endswith("normal.svg") else device_settings["symbol"]
|
||||
device_settings["startup_config"] = device_settings.get("initial_config", device_settings["startup_config"])
|
||||
self._iou_devices[key] = device_settings
|
||||
|
||||
def _saveIOUDevices(self):
|
||||
@@ -350,7 +351,7 @@ class IOU(Module):
|
||||
"name": iou_device["name"],
|
||||
"ram": iou_device["ram"],
|
||||
"server": iou_device["server"],
|
||||
"default_symbol": iou_device["default_symbol"],
|
||||
"symbol": iou_device["symbol"],
|
||||
"categories": [iou_device["category"]]
|
||||
}
|
||||
)
|
||||
|
||||
@@ -44,7 +44,7 @@ class IOUDeviceWizard(VMWizard, Ui_IOUDeviceWizard):
|
||||
def __init__(self, iou_devices, parent):
|
||||
|
||||
super().__init__(parent)
|
||||
self.setPixmap(QtWidgets.QWizard.LogoPixmap, QtGui.QPixmap(":/symbols/multilayer_switch.normal.svg"))
|
||||
self.setPixmap(QtWidgets.QWizard.LogoPixmap, QtGui.QPixmap(":/symbols/multilayer_switch.svg"))
|
||||
|
||||
self.uiTypeComboBox.currentIndexChanged[str].connect(self._typeChangedSlot)
|
||||
|
||||
@@ -95,10 +95,10 @@ class IOUDeviceWizard(VMWizard, Ui_IOUDeviceWizard):
|
||||
|
||||
if image_type == "L2 image":
|
||||
# L2 image
|
||||
self.setPixmap(QtWidgets.QWizard.LogoPixmap, QtGui.QPixmap(":/symbols/multilayer_switch.normal.svg"))
|
||||
self.setPixmap(QtWidgets.QWizard.LogoPixmap, QtGui.QPixmap(":/symbols/multilayer_switch.svg"))
|
||||
else:
|
||||
# L3 image
|
||||
self.setPixmap(QtWidgets.QWizard.LogoPixmap, QtGui.QPixmap(":/symbols/router.normal.svg"))
|
||||
self.setPixmap(QtWidgets.QWizard.LogoPixmap, QtGui.QPixmap(":/symbols/router.svg"))
|
||||
|
||||
def initializePage(self, page_id):
|
||||
|
||||
@@ -143,7 +143,7 @@ class IOUDeviceWizard(VMWizard, Ui_IOUDeviceWizard):
|
||||
default_base_config = get_default_base_config(self._base_iou_l2_config_template)
|
||||
if default_base_config:
|
||||
startup_config = default_base_config
|
||||
default_symbol = ":/symbols/multilayer_switch.normal.svg"
|
||||
symbol = ":/symbols/multilayer_switch.svg"
|
||||
category = Node.switches
|
||||
ethernet_adapters = 4
|
||||
serial_adapters = 0
|
||||
@@ -152,7 +152,7 @@ class IOUDeviceWizard(VMWizard, Ui_IOUDeviceWizard):
|
||||
default_base_config = get_default_base_config(self._base_iou_l3_config_template)
|
||||
if default_base_config:
|
||||
startup_config = default_base_config
|
||||
default_symbol = ":/symbols/router.normal.svg"
|
||||
symbol = ":/symbols/router.svg"
|
||||
category = Node.routers
|
||||
ethernet_adapters = 2
|
||||
serial_adapters = 2
|
||||
@@ -174,7 +174,7 @@ class IOUDeviceWizard(VMWizard, Ui_IOUDeviceWizard):
|
||||
"startup_config": startup_config,
|
||||
"ethernet_adapters": ethernet_adapters,
|
||||
"serial_adapters": serial_adapters,
|
||||
"default_symbol": default_symbol,
|
||||
"symbol": symbol,
|
||||
"category": category,
|
||||
"server": server,
|
||||
}
|
||||
|
||||
@@ -698,17 +698,7 @@ class IOUDevice(VM):
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/multilayer_switch.normal.svg"
|
||||
|
||||
@staticmethod
|
||||
def hoverSymbol():
|
||||
"""
|
||||
Returns the symbol to use when this node is hovered.
|
||||
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/multilayer_switch.selected.svg"
|
||||
return ":/symbols/multilayer_switch.svg"
|
||||
|
||||
@staticmethod
|
||||
def symbolName():
|
||||
|
||||
@@ -175,7 +175,7 @@ class iouDeviceConfigurationPage(QtWidgets.QWidget, Ui_iouDeviceConfigPageWidget
|
||||
self.uiPrivateConfigLineEdit.setText(settings["private_config"])
|
||||
|
||||
# load the symbol
|
||||
self.uiSymbolLineEdit.setText(settings["default_symbol"])
|
||||
self.uiSymbolLineEdit.setText(settings["symbol"])
|
||||
|
||||
# load the category
|
||||
index = self.uiCategoryComboBox.findData(settings["category"])
|
||||
@@ -267,7 +267,7 @@ class iouDeviceConfigurationPage(QtWidgets.QWidget, Ui_iouDeviceConfigPageWidget
|
||||
if pixmap.isNull():
|
||||
QtWidgets.QMessageBox.critical(self, "Symbol", "Invalid file or format not supported")
|
||||
else:
|
||||
settings["default_symbol"] = symbol_path
|
||||
settings["symbol"] = symbol_path
|
||||
|
||||
settings["category"] = self.uiCategoryComboBox.itemData(self.uiCategoryComboBox.currentIndex())
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@ class IOUDevicePreferencesPage(QtWidgets.QWidget, Ui_IOUDevicePreferencesPageWid
|
||||
|
||||
item = QtWidgets.QTreeWidgetItem(self.uiIOUDevicesTreeWidget)
|
||||
item.setText(0, self._iou_devices[key]["name"])
|
||||
item.setIcon(0, QtGui.QIcon(self._iou_devices[key]["default_symbol"]))
|
||||
item.setIcon(0, QtGui.QIcon(self._iou_devices[key]["symbol"]))
|
||||
item.setData(0, QtCore.Qt.UserRole, key)
|
||||
self._items.append(item)
|
||||
self.uiIOUDevicesTreeWidget.setCurrentItem(item)
|
||||
@@ -171,7 +171,7 @@ class IOUDevicePreferencesPage(QtWidgets.QWidget, Ui_IOUDevicePreferencesPageWid
|
||||
dialog.show()
|
||||
if dialog.exec_():
|
||||
# update the icon
|
||||
item.setIcon(0, QtGui.QIcon(iou_device["default_symbol"]))
|
||||
item.setIcon(0, QtGui.QIcon(iou_device["symbol"]))
|
||||
if iou_device["name"] != item.text(0):
|
||||
new_key = "{server}:{name}".format(server=iou_device["server"], name=iou_device["name"])
|
||||
if new_key in self._iou_devices:
|
||||
@@ -208,7 +208,7 @@ class IOUDevicePreferencesPage(QtWidgets.QWidget, Ui_IOUDevicePreferencesPageWid
|
||||
for key, iou_device in self._iou_devices.items():
|
||||
item = QtWidgets.QTreeWidgetItem(self.uiIOUDevicesTreeWidget)
|
||||
item.setText(0, iou_device["name"])
|
||||
item.setIcon(0, QtGui.QIcon(iou_device["default_symbol"]))
|
||||
item.setIcon(0, QtGui.QIcon(iou_device["symbol"]))
|
||||
item.setData(0, QtCore.Qt.UserRole, key)
|
||||
self._items.append(item)
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ if not sys.platform.startswith("linux"):
|
||||
IOU_DEVICE_SETTINGS = {
|
||||
"name": "",
|
||||
"path": "",
|
||||
"default_symbol": ":/symbols/multilayer_switch.normal.svg",
|
||||
"symbol": ":/symbols/multilayer_switch.svg",
|
||||
"category": Node.routers,
|
||||
"image": "",
|
||||
"startup_config": "",
|
||||
|
||||
@@ -82,6 +82,9 @@ class Qemu(Module):
|
||||
continue
|
||||
vm_settings = QEMU_VM_SETTINGS.copy()
|
||||
vm_settings.update(vm)
|
||||
# for backward compatibility before version 1.4
|
||||
vm_settings["symbol"] = vm_settings.get("default_symbol", vm_settings["symbol"])
|
||||
vm_settings["symbol"] = vm_settings["symbol"][:-11] + ".svg" if vm_settings["symbol"].endswith("normal.svg") else vm_settings["symbol"]
|
||||
self._qemu_vms[key] = vm_settings
|
||||
|
||||
def _saveQemuVMs(self):
|
||||
@@ -273,7 +276,7 @@ class Qemu(Module):
|
||||
"name": qemu_vm["name"],
|
||||
"ram": qemu_vm["ram"],
|
||||
"server": qemu_vm["server"],
|
||||
"default_symbol": qemu_vm["default_symbol"],
|
||||
"symbol": qemu_vm["symbol"],
|
||||
"categories": [qemu_vm["category"]]
|
||||
}
|
||||
)
|
||||
|
||||
@@ -77,22 +77,22 @@ class QemuVMWizard(VMWizard, Ui_QemuVMWizard):
|
||||
"""
|
||||
|
||||
if vm_type == "IOSv":
|
||||
self.setPixmap(QtWidgets.QWizard.LogoPixmap, QtGui.QPixmap(":/symbols/iosv_virl.normal.svg"))
|
||||
self.setPixmap(QtWidgets.QWizard.LogoPixmap, QtGui.QPixmap(":/symbols/iosv_virl.svg"))
|
||||
self.uiNameLineEdit.setText("vIOS")
|
||||
self.uiHdaDiskImageLabel.setText("IOSv VDMK file:")
|
||||
elif vm_type == "IOSv-L2":
|
||||
self.setPixmap(QtWidgets.QWizard.LogoPixmap, QtGui.QPixmap(":/symbols/iosv_l2_virl.normal.svg"))
|
||||
self.setPixmap(QtWidgets.QWizard.LogoPixmap, QtGui.QPixmap(":/symbols/iosv_l2_virl.svg"))
|
||||
self.uiNameLineEdit.setText("vIOS-L2")
|
||||
self.uiHdaDiskImageLabel.setText("IOSv-L2 VDMK file:")
|
||||
elif vm_type == "IOS-XRv":
|
||||
self.setPixmap(QtWidgets.QWizard.LogoPixmap, QtGui.QPixmap(":/symbols/router.normal.svg"))
|
||||
self.setPixmap(QtWidgets.QWizard.LogoPixmap, QtGui.QPixmap(":/symbols/router.svg"))
|
||||
self.uiNameLineEdit.setText("IOS-XRv")
|
||||
self.uiHdaDiskImageLabel.setText("IOS-XRv VDMK file:")
|
||||
elif vm_type == "ASA 8.4(2)":
|
||||
self.setPixmap(QtWidgets.QWizard.LogoPixmap, QtGui.QPixmap(":/symbols/asa.normal.svg"))
|
||||
self.setPixmap(QtWidgets.QWizard.LogoPixmap, QtGui.QPixmap(":/symbols/asa.svg"))
|
||||
self.uiNameLineEdit.setText("ASA")
|
||||
elif vm_type == "IDS":
|
||||
self.setPixmap(QtWidgets.QWizard.LogoPixmap, QtGui.QPixmap(":/symbols/ids.normal.svg"))
|
||||
self.setPixmap(QtWidgets.QWizard.LogoPixmap, QtGui.QPixmap(":/symbols/ids.svg"))
|
||||
self.uiNameLineEdit.setText("IDS")
|
||||
self.uiHdaDiskImageLabel.setText("Disk image (hda):")
|
||||
else:
|
||||
@@ -200,17 +200,17 @@ class QemuVMWizard(VMWizard, Ui_QemuVMWizard):
|
||||
if self.uiTypeComboBox.currentText() == "IOSv":
|
||||
settings["adapters"] = 8
|
||||
settings["hda_disk_image"] = self.uiHdaDiskImageLineEdit.text()
|
||||
settings["default_symbol"] = ":/symbols/iosv_virl.normal.svg"
|
||||
settings["symbol"] = ":/symbols/iosv_virl.svg"
|
||||
settings["category"] = Node.routers
|
||||
elif self.uiTypeComboBox.currentText() == "IOSv-L2":
|
||||
settings["adapters"] = 8
|
||||
settings["hda_disk_image"] = self.uiHdaDiskImageLineEdit.text()
|
||||
settings["default_symbol"] = ":/symbols/iosv_l2_virl.normal.svg"
|
||||
settings["symbol"] = ":/symbols/iosv_l2_virl.svg"
|
||||
settings["category"] = Node.switches
|
||||
elif self.uiTypeComboBox.currentText() == "IOS-XRv":
|
||||
settings["adapters"] = 16
|
||||
settings["hda_disk_image"] = self.uiHdaDiskImageLineEdit.text()
|
||||
settings["default_symbol"] = ":/symbols/router.normal.svg"
|
||||
settings["symbol"] = ":/symbols/router.svg"
|
||||
settings["category"] = Node.routers
|
||||
elif self.uiTypeComboBox.currentText() == "ASA 8.4(2)":
|
||||
settings["adapters"] = 4
|
||||
@@ -221,14 +221,14 @@ class QemuVMWizard(VMWizard, Ui_QemuVMWizard):
|
||||
if not sys.platform.startswith("darwin"):
|
||||
settings["cpu_throttling"] = 80 # limit to 80% CPU usage
|
||||
settings["process_priority"] = "low"
|
||||
settings["default_symbol"] = ":/symbols/asa.normal.svg"
|
||||
settings["symbol"] = ":/symbols/asa.svg"
|
||||
settings["category"] = Node.security_devices
|
||||
elif self.uiTypeComboBox.currentText() == "IDS":
|
||||
settings["adapters"] = 3
|
||||
settings["hda_disk_image"] = self.uiHdaDiskImageLineEdit.text()
|
||||
settings["hdb_disk_image"] = self.uiHdbDiskImageLineEdit.text()
|
||||
settings["options"] = "-smbios type=1,product=IDS-4215"
|
||||
settings["default_symbol"] = ":/symbols/ids.normal.svg"
|
||||
settings["symbol"] = ":/symbols/ids.svg"
|
||||
settings["category"] = Node.security_devices
|
||||
else:
|
||||
settings["hda_disk_image"] = self.uiHdaDiskImageLineEdit.text()
|
||||
|
||||
@@ -330,7 +330,7 @@ class QemuVMConfigurationPage(QtWidgets.QWidget, Ui_QemuVMConfigPageWidget):
|
||||
|
||||
if not node:
|
||||
# load the symbol
|
||||
self.uiSymbolLineEdit.setText(settings["default_symbol"])
|
||||
self.uiSymbolLineEdit.setText(settings["symbol"])
|
||||
|
||||
# load the category
|
||||
index = self.uiCategoryComboBox.findData(settings["category"])
|
||||
@@ -429,7 +429,7 @@ class QemuVMConfigurationPage(QtWidgets.QWidget, Ui_QemuVMConfigPageWidget):
|
||||
if pixmap.isNull():
|
||||
QtWidgets.QMessageBox.critical(self, "Symbol", "Invalid file or format not supported")
|
||||
else:
|
||||
settings["default_symbol"] = symbol_path
|
||||
settings["symbol"] = symbol_path
|
||||
|
||||
settings["category"] = self.uiCategoryComboBox.itemData(self.uiCategoryComboBox.currentIndex())
|
||||
|
||||
|
||||
@@ -161,7 +161,7 @@ class QemuVMPreferencesPage(QtWidgets.QWidget, Ui_QemuVMPreferencesPageWidget):
|
||||
|
||||
item = QtWidgets.QTreeWidgetItem(self.uiQemuVMsTreeWidget)
|
||||
item.setText(0, self._qemu_vms[key]["name"])
|
||||
item.setIcon(0, QtGui.QIcon(self._qemu_vms[key]["default_symbol"]))
|
||||
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)
|
||||
@@ -183,7 +183,7 @@ class QemuVMPreferencesPage(QtWidgets.QWidget, Ui_QemuVMPreferencesPageWidget):
|
||||
dialog.show()
|
||||
if dialog.exec_():
|
||||
# update the icon
|
||||
item.setIcon(0, QtGui.QIcon(qemu_vm["default_symbol"]))
|
||||
item.setIcon(0, QtGui.QIcon(qemu_vm["symbol"]))
|
||||
if qemu_vm["name"] != item.text(0):
|
||||
new_key = "{server}:{name}".format(server=qemu_vm["server"], name=qemu_vm["name"])
|
||||
if new_key in self._qemu_vms:
|
||||
@@ -224,7 +224,7 @@ class QemuVMPreferencesPage(QtWidgets.QWidget, Ui_QemuVMPreferencesPageWidget):
|
||||
for key, qemu_vm in self._qemu_vms.items():
|
||||
item = QtWidgets.QTreeWidgetItem(self.uiQemuVMsTreeWidget)
|
||||
item.setText(0, qemu_vm["name"])
|
||||
item.setIcon(0, QtGui.QIcon(qemu_vm["default_symbol"]))
|
||||
item.setIcon(0, QtGui.QIcon(qemu_vm["symbol"]))
|
||||
item.setData(0, QtCore.Qt.UserRole, key)
|
||||
self._items.append(item)
|
||||
|
||||
|
||||
@@ -471,17 +471,7 @@ class QemuVM(VM):
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/qemu_guest.normal.svg"
|
||||
|
||||
@staticmethod
|
||||
def hoverSymbol():
|
||||
"""
|
||||
Returns the symbol to use when this node is hovered.
|
||||
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/qemu_guest.selected.svg"
|
||||
return ":/symbols/qemu_guest.svg"
|
||||
|
||||
@staticmethod
|
||||
def symbolName():
|
||||
|
||||
@@ -27,7 +27,7 @@ QEMU_SETTINGS = {
|
||||
|
||||
QEMU_VM_SETTINGS = {
|
||||
"name": "",
|
||||
"default_symbol": ":/symbols/qemu_guest.normal.svg",
|
||||
"symbol": ":/symbols/qemu_guest.svg",
|
||||
"category": Node.end_devices,
|
||||
"qemu_path": "",
|
||||
"hda_disk_image": "",
|
||||
|
||||
@@ -126,6 +126,9 @@ class VirtualBox(Module):
|
||||
continue
|
||||
vm_settings = VBOX_VM_SETTINGS.copy()
|
||||
vm_settings.update(vm)
|
||||
# for backward compatibility before version 1.4
|
||||
vm_settings["symbol"] = vm_settings.get("default_symbol", vm_settings["symbol"])
|
||||
vm_settings["symbol"] = vm_settings["symbol"][:-11] + ".svg" if vm_settings["symbol"].endswith("normal.svg") else vm_settings["symbol"]
|
||||
self._virtualbox_vms[key] = vm_settings
|
||||
|
||||
def _saveVirtualBoxVMs(self):
|
||||
@@ -304,7 +307,7 @@ class VirtualBox(Module):
|
||||
{"class": VirtualBoxVM.__name__,
|
||||
"name": vbox_vm["vmname"],
|
||||
"server": vbox_vm["server"],
|
||||
"default_symbol": vbox_vm["default_symbol"],
|
||||
"symbol": vbox_vm["symbol"],
|
||||
"categories": [vbox_vm["category"]]}
|
||||
)
|
||||
return nodes
|
||||
|
||||
@@ -106,7 +106,7 @@ class VirtualBoxVMConfigurationPage(QtWidgets.QWidget, Ui_virtualBoxVMConfigPage
|
||||
|
||||
if not node:
|
||||
# load the symbol
|
||||
self.uiSymbolLineEdit.setText(settings["default_symbol"])
|
||||
self.uiSymbolLineEdit.setText(settings["symbol"])
|
||||
|
||||
# load the category
|
||||
index = self.uiCategoryComboBox.findData(settings["category"])
|
||||
@@ -169,7 +169,7 @@ class VirtualBoxVMConfigurationPage(QtWidgets.QWidget, Ui_virtualBoxVMConfigPage
|
||||
if pixmap.isNull():
|
||||
QtWidgets.QMessageBox.critical(self, "Symbol", "Invalid file or format not supported")
|
||||
else:
|
||||
settings["default_symbol"] = symbol_path
|
||||
settings["symbol"] = symbol_path
|
||||
|
||||
settings["category"] = self.uiCategoryComboBox.itemData(self.uiCategoryComboBox.currentIndex())
|
||||
|
||||
|
||||
@@ -117,7 +117,7 @@ class VirtualBoxVMPreferencesPage(QtWidgets.QWidget, Ui_VirtualBoxVMPreferencesP
|
||||
|
||||
item = QtWidgets.QTreeWidgetItem(self.uiVirtualBoxVMsTreeWidget)
|
||||
item.setText(0, self._virtualbox_vms[key]["vmname"])
|
||||
item.setIcon(0, QtGui.QIcon(self._virtualbox_vms[key]["default_symbol"]))
|
||||
item.setIcon(0, QtGui.QIcon(self._virtualbox_vms[key]["symbol"]))
|
||||
item.setData(0, QtCore.Qt.UserRole, key)
|
||||
self._items.append(item)
|
||||
self.uiVirtualBoxVMsTreeWidget.setCurrentItem(item)
|
||||
@@ -135,7 +135,7 @@ class VirtualBoxVMPreferencesPage(QtWidgets.QWidget, Ui_VirtualBoxVMPreferencesP
|
||||
dialog.show()
|
||||
if dialog.exec_():
|
||||
# update the icon
|
||||
item.setIcon(0, QtGui.QIcon(vbox_vm["default_symbol"]))
|
||||
item.setIcon(0, QtGui.QIcon(vbox_vm["symbol"]))
|
||||
if vbox_vm["vmname"] != item.text(0):
|
||||
new_key = "{server}:{vmname}".format(server=vbox_vm["server"], name=vbox_vm["vmname"])
|
||||
if new_key in self._virtualbox_vms:
|
||||
@@ -172,7 +172,7 @@ class VirtualBoxVMPreferencesPage(QtWidgets.QWidget, Ui_VirtualBoxVMPreferencesP
|
||||
for key, vbox_vm in self._virtualbox_vms.items():
|
||||
item = QtWidgets.QTreeWidgetItem(self.uiVirtualBoxVMsTreeWidget)
|
||||
item.setText(0, vbox_vm["vmname"])
|
||||
item.setIcon(0, QtGui.QIcon(vbox_vm["default_symbol"]))
|
||||
item.setIcon(0, QtGui.QIcon(vbox_vm["symbol"]))
|
||||
item.setData(0, QtCore.Qt.UserRole, key)
|
||||
self._items.append(item)
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ VBOX_SETTINGS = {
|
||||
|
||||
VBOX_VM_SETTINGS = {
|
||||
"vmname": "",
|
||||
"default_symbol": ":/symbols/vbox_guest.normal.svg",
|
||||
"symbol": ":/symbols/vbox_guest.svg",
|
||||
"category": Node.end_devices,
|
||||
"adapters": 1,
|
||||
"ram": 0,
|
||||
|
||||
@@ -499,17 +499,7 @@ class VirtualBoxVM(VM):
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/vbox_guest.normal.svg"
|
||||
|
||||
@staticmethod
|
||||
def hoverSymbol():
|
||||
"""
|
||||
Returns the symbol to use when this node is hovered.
|
||||
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/vbox_guest.selected.svg"
|
||||
return ":/symbols/vbox_guest.svg"
|
||||
|
||||
@staticmethod
|
||||
def symbolName():
|
||||
|
||||
@@ -132,6 +132,9 @@ class VMware(Module):
|
||||
continue
|
||||
vm_settings = VMWARE_VM_SETTINGS.copy()
|
||||
vm_settings.update(vm)
|
||||
# for backward compatibility before version 1.4
|
||||
vm_settings["symbol"] = vm_settings.get("default_symbol", vm_settings["symbol"])
|
||||
vm_settings["symbol"] = vm_settings["symbol"][:-11] + ".svg" if vm_settings["symbol"].endswith("normal.svg") else vm_settings["symbol"]
|
||||
self._vmware_vms[key] = vm_settings
|
||||
|
||||
def _saveVMwareVMs(self):
|
||||
@@ -308,7 +311,7 @@ class VMware(Module):
|
||||
{"class": VMwareVM.__name__,
|
||||
"name": vmware_vm["name"],
|
||||
"server": vmware_vm["server"],
|
||||
"default_symbol": vmware_vm["default_symbol"],
|
||||
"symbol": vmware_vm["symbol"],
|
||||
"categories": [vmware_vm["category"]]}
|
||||
)
|
||||
return nodes
|
||||
|
||||
@@ -104,7 +104,7 @@ class VMwareVMConfigurationPage(QtWidgets.QWidget, Ui_VMwareVMConfigPageWidget):
|
||||
|
||||
if not node:
|
||||
# load the symbol
|
||||
self.uiSymbolLineEdit.setText(settings["default_symbol"])
|
||||
self.uiSymbolLineEdit.setText(settings["symbol"])
|
||||
|
||||
# load the category
|
||||
index = self.uiCategoryComboBox.findData(settings["category"])
|
||||
@@ -166,7 +166,7 @@ class VMwareVMConfigurationPage(QtWidgets.QWidget, Ui_VMwareVMConfigPageWidget):
|
||||
if pixmap.isNull():
|
||||
QtWidgets.QMessageBox.critical(self, "Symbol", "Invalid file or format not supported")
|
||||
else:
|
||||
settings["default_symbol"] = symbol_path
|
||||
settings["symbol"] = symbol_path
|
||||
|
||||
settings["category"] = self.uiCategoryComboBox.itemData(self.uiCategoryComboBox.currentIndex())
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@ class VMwareVMPreferencesPage(QtWidgets.QWidget, Ui_VMwareVMPreferencesPageWidge
|
||||
|
||||
item = QtWidgets.QTreeWidgetItem(self.uiVMwareVMsTreeWidget)
|
||||
item.setText(0, self._vmware_vms[key]["name"])
|
||||
item.setIcon(0, QtGui.QIcon(self._vmware_vms[key]["default_symbol"]))
|
||||
item.setIcon(0, QtGui.QIcon(self._vmware_vms[key]["symbol"]))
|
||||
item.setData(0, QtCore.Qt.UserRole, key)
|
||||
self._items.append(item)
|
||||
self.uiVMwareVMsTreeWidget.setCurrentItem(item)
|
||||
@@ -134,7 +134,7 @@ class VMwareVMPreferencesPage(QtWidgets.QWidget, Ui_VMwareVMPreferencesPageWidge
|
||||
dialog.show()
|
||||
if dialog.exec_():
|
||||
# update the icon
|
||||
item.setIcon(0, QtGui.QIcon(vmware_vm["default_symbol"]))
|
||||
item.setIcon(0, QtGui.QIcon(vmware_vm["symbol"]))
|
||||
if vmware_vm["name"] != item.text(0):
|
||||
new_key = "{server}:{name}".format(server=vmware_vm["server"], name=vmware_vm["name"])
|
||||
if new_key in self._vmware_vms:
|
||||
@@ -171,7 +171,7 @@ class VMwareVMPreferencesPage(QtWidgets.QWidget, Ui_VMwareVMPreferencesPageWidge
|
||||
for key, vmware_vm in self._vmware_vms.items():
|
||||
item = QtWidgets.QTreeWidgetItem(self.uiVMwareVMsTreeWidget)
|
||||
item.setText(0, vmware_vm["name"])
|
||||
item.setIcon(0, QtGui.QIcon(vmware_vm["default_symbol"]))
|
||||
item.setIcon(0, QtGui.QIcon(vmware_vm["symbol"]))
|
||||
item.setData(0, QtCore.Qt.UserRole, key)
|
||||
self._items.append(item)
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ VMWARE_SETTINGS = {
|
||||
|
||||
VMWARE_VM_SETTINGS = {
|
||||
"vmx_path": "",
|
||||
"default_symbol": ":/symbols/vmware_guest.normal.svg",
|
||||
"symbol": ":/symbols/vmware_guest.svg",
|
||||
"category": Node.end_devices,
|
||||
"adapters": 1,
|
||||
"adapter_type": "default",
|
||||
|
||||
@@ -430,17 +430,7 @@ class VMwareVM(VM):
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/vmware_guest.normal.svg"
|
||||
|
||||
@staticmethod
|
||||
def hoverSymbol():
|
||||
"""
|
||||
Returns the symbol to use when this node is hovered.
|
||||
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/vmware_guest.selected.svg"
|
||||
return ":/symbols/vmware_guest.svg"
|
||||
|
||||
@staticmethod
|
||||
def symbolName():
|
||||
|
||||
@@ -329,7 +329,7 @@ class VPCS(Module):
|
||||
"name": node_class.symbolName(),
|
||||
"server": server,
|
||||
"categories": node_class.categories(),
|
||||
"default_symbol": self._settings["default_symbol"]}
|
||||
"symbol": self._settings["symbol"]}
|
||||
)
|
||||
if ENABLE_CLOUD:
|
||||
nodes.append(
|
||||
@@ -337,7 +337,7 @@ class VPCS(Module):
|
||||
"name": node_class.symbolName() + " (cloud)",
|
||||
"server": "cloud",
|
||||
"categories": node_class.categories(),
|
||||
"default_symbol": self._settings["default_symbol"]}
|
||||
"symbol": self._settings["symbol"]}
|
||||
)
|
||||
return nodes
|
||||
|
||||
|
||||
@@ -23,5 +23,5 @@ VPCS_SETTINGS = {
|
||||
"vpcs_path": "",
|
||||
"use_local_server": True,
|
||||
"base_script_file": "",
|
||||
"default_symbol": ":/symbols/vpcs_guest.normal.svg",
|
||||
"symbol": ":/symbols/vpcs_guest.svg",
|
||||
}
|
||||
|
||||
@@ -450,17 +450,7 @@ class VPCSDevice(VM):
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/computer.normal.svg"
|
||||
|
||||
@staticmethod
|
||||
def hoverSymbol():
|
||||
"""
|
||||
Returns the symbol to use when this node is hovered.
|
||||
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
return ":/symbols/computer.selected.svg"
|
||||
return ":/symbols/computer.svg"
|
||||
|
||||
@staticmethod
|
||||
def symbolName():
|
||||
|
||||
11
gns3/node.py
@@ -439,17 +439,6 @@ class Node(QtCore.QObject):
|
||||
|
||||
raise NotImplementedError()
|
||||
|
||||
@staticmethod
|
||||
def hoverSymbol():
|
||||
"""
|
||||
Returns the symbol to use when the node is hovered.
|
||||
Must be overloaded.
|
||||
|
||||
:returns: symbol path (or resource).
|
||||
"""
|
||||
|
||||
raise NotImplementedError()
|
||||
|
||||
@staticmethod
|
||||
def symbolName():
|
||||
"""
|
||||
|
||||
@@ -72,12 +72,12 @@ class NodesView(QtWidgets.QTreeWidget):
|
||||
image = QtGui.QImage(32, 32, QtGui.QImage.Format_ARGB32)
|
||||
# Set the ARGB to 0 to prevent rendering artifacts
|
||||
image.fill(0x00000000)
|
||||
svg_renderer = QtSvg.QSvgRenderer(node["default_symbol"])
|
||||
svg_renderer = QtSvg.QSvgRenderer(node["symbol"])
|
||||
if svg_renderer.isValid():
|
||||
svg_renderer.render(QtGui.QPainter(image))
|
||||
else:
|
||||
#FIXME: Cannot read file '...', because: Encountered incorrectly encoded content. (line 1)
|
||||
image.load(node["default_symbol"])
|
||||
image.load(node["symbol"])
|
||||
if image.isNull():
|
||||
continue
|
||||
icon = QtGui.QIcon(QtGui.QPixmap.fromImage(image))
|
||||
|
||||
@@ -272,8 +272,7 @@
|
||||
"id": { "$ref": "#/definitions/numeric_id" },
|
||||
"device_id": { "$ref": "#/definitions/optional_uuid" },
|
||||
"label": { "$ref": "#/definitions/label" },
|
||||
"hover_symbol": { "$ref": "#/definitions/mandatory_string" },
|
||||
"default_symbol": { "$ref": "#/definitions/mandatory_string" },
|
||||
"symbol": { "$ref": "#/definitions/mandatory_string" },
|
||||
"ports": {
|
||||
"type": "array",
|
||||
"items": { "$ref": "#/definitions/port" }
|
||||
|
||||
@@ -425,7 +425,7 @@ class Topology:
|
||||
elif isinstance(item, PixmapNodeItem):
|
||||
symbol_path = item.pixmapSymbolPath()
|
||||
if symbol_path:
|
||||
node["default_symbol"] = symbol_path
|
||||
node["symbol"] = symbol_path
|
||||
if isinstance(item, LinkItem):
|
||||
if item.link() is not None:
|
||||
for link in topology["topology"]["links"]:
|
||||
@@ -713,15 +713,20 @@ class Topology:
|
||||
# load the settings
|
||||
node.load(topology_node)
|
||||
|
||||
# for backward compatibility before version 1.4
|
||||
if "default_symbol" in topology_node:
|
||||
symbol_path = topology_node["default_symbol"]
|
||||
topology_node["symbol"] = topology_node["default_symbol"]
|
||||
topology_node["symbol"] = topology_node["symbol"][:-11] + ".svg" if topology_node["symbol"].endswith("normal.svg") else topology_node["symbol"]
|
||||
|
||||
if "symbol" in topology_node:
|
||||
symbol_path = topology_node["symbol"]
|
||||
renderer = QtSvg.QSvgRenderer(symbol_path)
|
||||
if renderer.isValid():
|
||||
node_item = SvgNodeItem(node, symbol_path)
|
||||
else:
|
||||
pixmap = QtGui.QPixmap(topology_node["default_symbol"])
|
||||
pixmap = QtGui.QPixmap(topology_node["symbol"])
|
||||
if not pixmap.isNull():
|
||||
node_item = PixmapNodeItem(node, topology_node["default_symbol"])
|
||||
node_item = PixmapNodeItem(node, topology_node["symbol"])
|
||||
else:
|
||||
node_item = SvgNodeItem(node)
|
||||
else:
|
||||
|
||||
284517
gns3/ui/resources_rc.py
@@ -13,7 +13,7 @@
|
||||
height="59.253815"
|
||||
id="Andysvg"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="qemu_guest.normal.svg"
|
||||
sodipodi:docname="qemu.svg"
|
||||
sodipodi:version="0.32"
|
||||
version="1.0"
|
||||
width="65.414536"
|
||||
|
||||
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 41 KiB |
@@ -1,44 +1,44 @@
|
||||
<RCC>
|
||||
<qresource>
|
||||
<file>symbols/router.normal.svg</file>
|
||||
<file>symbols/gateway.normal.svg</file>
|
||||
<file>symbols/iosv_virl.normal.svg</file>
|
||||
<file>symbols/label_switch_router.normal.svg</file>
|
||||
<file>symbols/optical_router.normal.svg</file>
|
||||
<file>symbols/edge_label_switch_router.normal.svg</file>
|
||||
<file>symbols/router_firewall.normal.svg</file>
|
||||
<file>symbols/router.normal.awp.svg</file>
|
||||
<file>symbols/PIX_firewall.normal.svg</file>
|
||||
<file>symbols/computer.normal.svg</file>
|
||||
<file>symbols/qemu_guest.normal.svg</file>
|
||||
<file>symbols/vbox_guest.normal.svg</file>
|
||||
<file>symbols/vpcs_guest.normal.svg</file>
|
||||
<file>symbols/vmware_guest.normal.svg</file>
|
||||
<file>symbols/server.normal.svg</file>
|
||||
<file>symbols/router_netflow.normal.svg</file>
|
||||
<file>symbols/access_server.normal.svg</file>
|
||||
<file>symbols/printer.normal.svg</file>
|
||||
<file>symbols/dslam.normal.svg</file>
|
||||
<file>symbols/sip_server.normal.svg</file>
|
||||
<file>symbols/PBX.normal.svg</file>
|
||||
<file>symbols/ip_phone.normal.svg</file>
|
||||
<file>symbols/voice_access_server.normal.svg</file>
|
||||
<file>symbols/call_manager.normal.svg</file>
|
||||
<file>symbols/voice_router.normal.svg</file>
|
||||
<file>symbols/ids.normal.svg</file>
|
||||
<file>symbols/asa.normal.svg</file>
|
||||
<file>symbols/route_switch_processor.normal.svg</file>
|
||||
<file>symbols/multilayer_switch.normal.svg</file>
|
||||
<file>symbols/iosv_l2_virl.normal.svg</file>
|
||||
<file>symbols/lightweight_ap.normal.svg</file>
|
||||
<file>symbols/wlan_controller.normal.svg</file>
|
||||
<file>symbols/atm_switch.normal.svg</file>
|
||||
<file>symbols/atm_bridge.normal.svg</file>
|
||||
<file>symbols/frame_relay_switch.normal.svg</file>
|
||||
<file>symbols/ethernet_switch.normal.svg</file>
|
||||
<file>symbols/access_point.normal.svg</file>
|
||||
<file>symbols/cloud.normal.svg</file>
|
||||
<file>symbols/hub.normal.svg</file>
|
||||
<file>symbols/router.svg</file>
|
||||
<file>symbols/gateway.svg</file>
|
||||
<file>symbols/iosv_virl.svg</file>
|
||||
<file>symbols/label_switch_router.svg</file>
|
||||
<file>symbols/optical_router.svg</file>
|
||||
<file>symbols/edge_label_switch_router.svg</file>
|
||||
<file>symbols/router_firewall.svg</file>
|
||||
<file>symbols/router.awp.svg</file>
|
||||
<file>symbols/PIX_firewall.svg</file>
|
||||
<file>symbols/computer.svg</file>
|
||||
<file>symbols/qemu_guest.svg</file>
|
||||
<file>symbols/vbox_guest.svg</file>
|
||||
<file>symbols/vpcs_guest.svg</file>
|
||||
<file>symbols/vmware_guest.svg</file>
|
||||
<file>symbols/server.svg</file>
|
||||
<file>symbols/router_netflow.svg</file>
|
||||
<file>symbols/access_server.svg</file>
|
||||
<file>symbols/printer.svg</file>
|
||||
<file>symbols/dslam.svg</file>
|
||||
<file>symbols/sip_server.svg</file>
|
||||
<file>symbols/PBX.svg</file>
|
||||
<file>symbols/ip_phone.svg</file>
|
||||
<file>symbols/voice_access_server.svg</file>
|
||||
<file>symbols/call_manager.svg</file>
|
||||
<file>symbols/voice_router.svg</file>
|
||||
<file>symbols/ids.svg</file>
|
||||
<file>symbols/asa.svg</file>
|
||||
<file>symbols/route_switch_processor.svg</file>
|
||||
<file>symbols/multilayer_switch.svg</file>
|
||||
<file>symbols/iosv_l2_virl.svg</file>
|
||||
<file>symbols/lightweight_ap.svg</file>
|
||||
<file>symbols/wlan_controller.svg</file>
|
||||
<file>symbols/atm_switch.svg</file>
|
||||
<file>symbols/atm_bridge.svg</file>
|
||||
<file>symbols/frame_relay_switch.svg</file>
|
||||
<file>symbols/ethernet_switch.svg</file>
|
||||
<file>symbols/access_point.svg</file>
|
||||
<file>symbols/cloud.svg</file>
|
||||
<file>symbols/hub.svg</file>
|
||||
<file alias="icons/default.svg">icons/cancel.svg</file>
|
||||
<file>icons/configuration.svg</file>
|
||||
<file>icons/cancel.svg</file>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
width="51.358818"
|
||||
height="47.630692"
|
||||
version="1.0"
|
||||
sodipodi:docname="PBX.normal.svg"
|
||||
sodipodi:docname="PBX.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
sodipodi:docbase="X:\symbols">
|
||||
<title
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
@@ -15,8 +15,7 @@
|
||||
width="66.000435"
|
||||
height="44.5159"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="PIX_firewall.normal.svg"
|
||||
sodipodi:docname="PIX_firewall.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
sodipodi:modified="true">
|
||||
<metadata
|
||||
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 9.2 KiB |
@@ -15,8 +15,7 @@
|
||||
width="71.851372"
|
||||
height="32.285366"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="access_point.normal.svg"
|
||||
sodipodi:docname="access_point.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
sodipodi:modified="true">
|
||||
<metadata
|
||||
|
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 254 KiB |
@@ -15,8 +15,7 @@
|
||||
width="51.358818"
|
||||
height="47.630692"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="access_server.normal.svg"
|
||||
sodipodi:docname="access_server.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<metadata
|
||||
id="metadata2003">
|
||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
@@ -16,7 +16,7 @@
|
||||
width="51.604012"
|
||||
height="59.644005"
|
||||
version="1.0"
|
||||
sodipodi:docname="asa.normal.svg"
|
||||
sodipodi:docname="asa.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<title
|
||||
id="title3303">ASA</title>
|
||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
@@ -15,8 +15,7 @@
|
||||
width="72.139786"
|
||||
height="32.198273"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="atm_bridge.normal.svg"
|
||||
sodipodi:docname="atm_bridge.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<metadata
|
||||
id="metadata2003">
|
||||
|
Before Width: | Height: | Size: 8.2 KiB After Width: | Height: | Size: 8.1 KiB |
@@ -15,8 +15,7 @@
|
||||
width="51.358818"
|
||||
height="47.630692"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="sw_atm.normal.svg"
|
||||
sodipodi:docname="sw_atm.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
sodipodi:modified="true">
|
||||
<metadata
|
||||
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 5.9 KiB |
@@ -15,8 +15,7 @@
|
||||
width="66.000435"
|
||||
height="44.5159"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="edgelabel_swproc.normal.svg"
|
||||
sodipodi:docname="edgelabel_swproc.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
sodipodi:modified="true">
|
||||
<metadata
|
||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
@@ -15,8 +15,7 @@
|
||||
width="71.851372"
|
||||
height="32.285366"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="sw_standard.normal.svg"
|
||||
sodipodi:docname="sw_standard.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
sodipodi:modified="true">
|
||||
<metadata
|
||||
|
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 8.8 KiB |
@@ -15,8 +15,7 @@
|
||||
width="51.358818"
|
||||
height="47.630692"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="sw_frame_relay.normal.svg"
|
||||
sodipodi:docname="sw_frame_relay.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
sodipodi:modified="true">
|
||||
<metadata
|
||||
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
@@ -15,8 +15,7 @@
|
||||
width="65.937935"
|
||||
height="55.615818"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="gateway.normal.svg"
|
||||
sodipodi:docname="gateway.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<metadata
|
||||
id="metadata2003">
|
||||
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
@@ -15,8 +15,7 @@
|
||||
width="72.139786"
|
||||
height="32.198273"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="hub.normal.svg"
|
||||
sodipodi:docname="hub.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
sodipodi:modified="true">
|
||||
<metadata
|
||||
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.2 KiB |
@@ -16,7 +16,7 @@
|
||||
width="51.358818"
|
||||
height="47.630692"
|
||||
version="1.0"
|
||||
sodipodi:docname="ids.normal.svg"
|
||||
sodipodi:docname="ids.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<title
|
||||
id="title2849">IDS</title>
|
||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
@@ -16,7 +16,7 @@
|
||||
width="51.358818"
|
||||
height="47.630692"
|
||||
version="1.0"
|
||||
sodipodi:docname="vios_l2.normal.svg"
|
||||
sodipodi:docname="vios_l2.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
sodipodi:modified="true">
|
||||
<metadata
|
||||
|
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 9.3 KiB |
@@ -16,7 +16,7 @@
|
||||
width="65.937935"
|
||||
height="55.615818"
|
||||
version="1.0"
|
||||
sodipodi:docname="vios.normal.svg"
|
||||
sodipodi:docname="vios.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<metadata
|
||||
id="metadata2003">
|
||||
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
@@ -15,8 +15,7 @@
|
||||
width="65.937935"
|
||||
height="55.615818"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="label_switch_router.normal.svg"
|
||||
sodipodi:docname="label_switch_router.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<metadata
|
||||
id="metadata2003">
|
||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
@@ -15,8 +15,7 @@
|
||||
width="71.851372"
|
||||
height="32.285366"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="lightweight_ap.normal.svg"
|
||||
sodipodi:docname="lightweight_ap.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
sodipodi:modified="true">
|
||||
<metadata
|
||||
|
Before Width: | Height: | Size: 256 KiB After Width: | Height: | Size: 256 KiB |
@@ -15,8 +15,7 @@
|
||||
width="51.358818"
|
||||
height="47.630692"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="sw_multilayer.normal.svg"
|
||||
sodipodi:docname="sw_multilayer.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
sodipodi:modified="true">
|
||||
<metadata
|
||||
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
@@ -15,8 +15,7 @@
|
||||
width="65.937935"
|
||||
height="55.615818"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="optical_router.normal.svg"
|
||||
sodipodi:docname="optical_router.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<metadata
|
||||
id="metadata2003">
|
||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 9.5 KiB |
@@ -13,7 +13,7 @@
|
||||
height="59.253815"
|
||||
id="Andysvg"
|
||||
inkscape:version="0.48.2 r9819"
|
||||
sodipodi:docname="qemu_guest.normal.svg"
|
||||
sodipodi:docname="qemu_guest.svg"
|
||||
sodipodi:version="0.32"
|
||||
version="1.0"
|
||||
width="65.414536"
|
||||
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
@@ -16,7 +16,7 @@
|
||||
height="66.033699"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="route_swproc.normal.svg"
|
||||
sodipodi:docname="route_swproc.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
sodipodi:modified="true">
|
||||
<metadata
|
||||
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
@@ -16,7 +16,7 @@
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="awp_router_normal.svg">
|
||||
sodipodi:docname="awp_router.svg">
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
@@ -15,8 +15,7 @@
|
||||
width="66.000435"
|
||||
height="44.5159"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="rt_standard.normal.svg"
|
||||
sodipodi:docname="rt_standard.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
sodipodi:modified="true">
|
||||
<metadata
|
||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 10 KiB |
@@ -15,8 +15,7 @@
|
||||
width="66.000435"
|
||||
height="44.5159"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="rt_firewall.normal.svg"
|
||||
sodipodi:docname="rt_firewall.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
sodipodi:modified="true">
|
||||
<metadata
|
||||
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
@@ -15,8 +15,7 @@
|
||||
width="66.000435"
|
||||
height="44.5159"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="rt_netflow.normal.svg"
|
||||
sodipodi:docname="rt_netflow.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
sodipodi:modified="true">
|
||||
<metadata
|
||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
@@ -12,8 +12,7 @@
|
||||
height="69.512581"
|
||||
id="svg2"
|
||||
inkscape:version="0.45.1"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="server.normal.svg"
|
||||
sodipodi:docname="server.svg"
|
||||
sodipodi:version="0.32"
|
||||
width="49.476486"
|
||||
version="1.0"
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
@@ -13,7 +13,7 @@
|
||||
height="59.253815"
|
||||
id="Andysvg"
|
||||
inkscape:version="0.48.2 r9819"
|
||||
sodipodi:docname="vbox_guest.normal.svg"
|
||||
sodipodi:docname="vbox_guest.svg"
|
||||
sodipodi:version="0.32"
|
||||
version="1.0"
|
||||
width="65.414536"
|
||||
|
Before Width: | Height: | Size: 202 KiB After Width: | Height: | Size: 202 KiB |
@@ -13,7 +13,7 @@
|
||||
height="59.253815"
|
||||
id="Andysvg"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="vmware_guest.normal.svg"
|
||||
sodipodi:docname="vmware_guest.svg"
|
||||
sodipodi:version="0.32"
|
||||
version="1.0"
|
||||
width="65.414536"
|
||||
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
@@ -16,7 +16,7 @@
|
||||
width="51.358818"
|
||||
height="47.630692"
|
||||
version="1.0"
|
||||
sodipodi:docname="voice_access_server.normal.svg"
|
||||
sodipodi:docname="voice_access_server.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape">
|
||||
<title
|
||||
id="title22009">Voice access server</title>
|
||||
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
@@ -16,7 +16,7 @@
|
||||
width="66.000435"
|
||||
height="44.5159"
|
||||
version="1.0"
|
||||
sodipodi:docname="voice_router.normal.svg"
|
||||
sodipodi:docname="voice_router.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
sodipodi:modified="true">
|
||||
<title
|
||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
@@ -13,7 +13,7 @@
|
||||
height="59.253815"
|
||||
id="Andysvg"
|
||||
inkscape:version="0.48.5 r10040"
|
||||
sodipodi:docname="vpcs_guest.normal.svg"
|
||||
sodipodi:docname="vpcs_guest.svg"
|
||||
sodipodi:version="0.32"
|
||||
version="1.0"
|
||||
width="65.414536"
|
||||
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
@@ -15,8 +15,7 @@
|
||||
width="71.851372"
|
||||
height="32.285366"
|
||||
version="1.0"
|
||||
sodipodi:docbase="/home/grossmj/workspace/gns3-artwork/symbols"
|
||||
sodipodi:docname="wlan_controller.normal.svg"
|
||||
sodipodi:docname="wlan_controller.svg"
|
||||
inkscape:output_extension="org.inkscape.output.svg.inkscape"
|
||||
sodipodi:modified="true">
|
||||
<metadata
|
||||
|
Before Width: | Height: | Size: 255 KiB After Width: | Height: | Size: 255 KiB |