Load topology from saved files
refs: #2911
Change-Id: Ic5b0c0713333579fd6e92c738784b3de1dda6a1d
diff --git a/bin/minindnedit b/bin/minindnedit
index bb6e030..8e945a4 100755
--- a/bin/minindnedit
+++ b/bin/minindnedit
@@ -151,8 +151,8 @@
self.fibFrame = Frame(n)
# NDN
- self.nfdFrame = NfdFrame(n)
- self.nlsrFrame = NlsrFrame(n)
+ self.nfdFrame = NfdFrame(n, self.prefValues)
+ self.nlsrFrame = NlsrFrame(n,self.prefValues)
n.add(self.propFrame, text='Properties')
n.add(self.fibFrame, text='FIB Entries')
@@ -849,7 +849,7 @@
loadedTopology = self.convertJsonUnicode(json.load(f))
# Load hosts
- hosts = loadedTopology['nodes']
+ hosts = loadedTopology['hosts']
for host in hosts:
nodeNum = host['number']
hostname = 'h'+nodeNum
@@ -859,6 +859,7 @@
host['opts']['hostname'] = hostname
if 'nodeNum' not in host['opts']:
host['opts']['nodeNum'] = int(nodeNum)
+
x = host['x']
y = host['y']
diff --git a/ndn/gui.py b/ndn/gui.py
index 653dbbc..a0b33ab 100644
--- a/ndn/gui.py
+++ b/ndn/gui.py
@@ -13,9 +13,12 @@
]
class GuiFrame(Frame):
- def __init__(self, notebook):
+ def __init__(self, notebook, prefValues, appId):
Frame.__init__(self, notebook)
+ self.prefValues = prefValues
+ self.appId = appId
+
self.row = 0
self.column = 0
@@ -38,22 +41,30 @@
self.row += 1
+ def getPreferredOrDefaultValue(self, key, defaultValue):
+ if self.appId in self.prefValues:
+ return self.prefValues[self.appId][key]
+ else:
+ return defaultValue
+
class NfdFrame(GuiFrame):
- def __init__(self, notebook):
- GuiFrame.__init__(self, notebook)
+ def __init__(self, notebook, prefValues):
+ GuiFrame.__init__(self, notebook, prefValues, "nfd")
self.frameLabel = "NFD"
# log-level
self.logLevel = StringVar(self)
- self.addDropDown("Log level:", self.logLevel, LOG_LEVELS, LOG_LEVELS[3])
+ self.addDropDown("Log level:",
+ self.logLevel,
+ LOG_LEVELS,
+ self.getPreferredOrDefaultValue("log-level", LOG_LEVELS[3]))
def getValues(self):
return {
"log-level": self.logLevel.get()
}
-
class NlsrFrame(GuiFrame):
HYPERBOLIC_STATES = [
@@ -62,44 +73,54 @@
"dry-run"
]
- def __init__(self, notebook):
- GuiFrame.__init__(self, notebook)
+ def __init__(self, notebook, prefValues):
+ GuiFrame.__init__(self, notebook, prefValues, "nlsr")
self.frameLabel = "NLSR"
# general: network
self.network = StringVar(self)
- self.addEntryBox("Network:", self.network, "/ndn/")
+ self.addEntryBox("Network:",
+ self.network,
+ self.getPreferredOrDefaultValue("network", "/ndn"))
# general: site
self.site = StringVar(self)
- self.addEntryBox("Site:", self.site, "/edu/site")
+ self.addEntryBox("Site:", self.site, self.getPreferredOrDefaultValue("site", "/edu/site"))
# general: router
self.router = StringVar(self)
- self.addEntryBox("Router:", self.router, "/%C1.Router/cs/host")
+ self.addEntryBox("Router:",
+ self.router,
+ self.getPreferredOrDefaultValue("router", "/%C1.Router/cs/host"))
# general: log-level
self.logLevel = StringVar(self)
- self.addDropDown("Log level:", self.logLevel, LOG_LEVELS, LOG_LEVELS[3])
+ self.addDropDown("Log level:",
+ self.logLevel,
+ LOG_LEVELS,
+ self.getPreferredOrDefaultValue("log-level", LOG_LEVELS[3]))
# hyperbolic: state
self.hyperbolicState = StringVar(self)
- self.addDropDown("Hyperbolic routing:", self.hyperbolicState,
- self.HYPERBOLIC_STATES, self.HYPERBOLIC_STATES[0])
+ self.addDropDown("Hyperbolic routing:",
+ self.hyperbolicState,
+ self.HYPERBOLIC_STATES,
+ self.getPreferredOrDefaultValue("hyperbolic-state", self.HYPERBOLIC_STATES[0]))
# hyperbolic: angle
self.angle = StringVar(self)
- self.addEntryBox("Angle:", self.angle, "0.0")
+ self.addEntryBox("Angle:", self.angle, self.getPreferredOrDefaultValue("angle", "0.0"))
# hyperbolic: radius
self.radius = StringVar(self)
- self.addEntryBox("Radius:", self.radius, "0.0")
+ self.addEntryBox("Radius:", self.radius, self.getPreferredOrDefaultValue("radius", "0.0"))
# fib: max-faces-per-prefix
self.maxFaces = StringVar(self)
- self.addEntryBox("Max faces per prefix:", self.maxFaces, "0")
-
+ self.addEntryBox("Max faces per prefix:",
+ self.maxFaces,
+ self.getPreferredOrDefaultValue("max-faces-per-prefix", "0"))
def getValues(self):
return {