blob: 653dbbcfd3d03f6727521df73a49f508761aaec9 [file] [log] [blame]
ashu7b6ba182015-04-17 15:02:37 -05001#!/usr/bin/env python
2
3from Tkinter import *
4
5LOG_LEVELS = [
6 "NONE",
7 "ERROR",
8 "WARN",
9 "INFO",
10 "DEBUG",
11 "TRACE",
12 "ALL"
13]
14
15class GuiFrame(Frame):
16 def __init__(self, notebook):
17 Frame.__init__(self, notebook)
18
19 self.row = 0
20 self.column = 0
21
22 def addEntryBox(self, label, variable, defaultValue=""):
23 variable.set(defaultValue)
24
25 Label(self, text=label).grid(row=self.row, sticky=E)
26 entry = Entry(self, textvariable=variable)
27 entry.grid(row=self.row, column=1)
28
29 self.row += 1
30
31 def addDropDown(self, label, variable, values, defaultValue=""):
32 variable.set(defaultValue)
33
34 Label(self, text=label).grid(row=self.row, sticky=E)
35
36 self.entry = apply(OptionMenu, (self, variable) + tuple(values))
37 self.entry.grid(row=self.row, column=1)
38
39 self.row += 1
40
41class NfdFrame(GuiFrame):
42 def __init__(self, notebook):
43 GuiFrame.__init__(self, notebook)
44
45 self.frameLabel = "NFD"
46
47 # log-level
48 self.logLevel = StringVar(self)
49 self.addDropDown("Log level:", self.logLevel, LOG_LEVELS, LOG_LEVELS[3])
50
Ashlesh Gawande3a4afb12015-07-09 09:23:30 -050051 def getValues(self):
52 return {
53 "log-level": self.logLevel.get()
54 }
55
56
ashu7b6ba182015-04-17 15:02:37 -050057class NlsrFrame(GuiFrame):
58
59 HYPERBOLIC_STATES = [
60 "off",
61 "on",
62 "dry-run"
63 ]
64
65 def __init__(self, notebook):
66 GuiFrame.__init__(self, notebook)
67
68 self.frameLabel = "NLSR"
69
70 # general: network
71 self.network = StringVar(self)
72 self.addEntryBox("Network:", self.network, "/ndn/")
73
74 # general: site
75 self.site = StringVar(self)
76 self.addEntryBox("Site:", self.site, "/edu/site")
77
78 # general: router
79 self.router = StringVar(self)
80 self.addEntryBox("Router:", self.router, "/%C1.Router/cs/host")
81
82 # general: log-level
83 self.logLevel = StringVar(self)
84 self.addDropDown("Log level:", self.logLevel, LOG_LEVELS, LOG_LEVELS[3])
85
86 # hyperbolic: state
87 self.hyperbolicState = StringVar(self)
88 self.addDropDown("Hyperbolic routing:", self.hyperbolicState,
89 self.HYPERBOLIC_STATES, self.HYPERBOLIC_STATES[0])
90
91 # hyperbolic: angle
92 self.angle = StringVar(self)
93 self.addEntryBox("Angle:", self.angle, "0.0")
94
95 # hyperbolic: radius
96 self.radius = StringVar(self)
97 self.addEntryBox("Radius:", self.radius, "0.0")
98
99 # fib: max-faces-per-prefix
100 self.maxFaces = StringVar(self)
101 self.addEntryBox("Max faces per prefix:", self.maxFaces, "0")
102
103
104 def getValues(self):
105 return {
106 "network": self.network.get(),
107 "site": self.site.get(),
108 "router": self.router.get(),
109 "log-level": self.logLevel.get(),
110 "hyperbolic-state": self.hyperbolicState.get(),
111 "angle": self.angle.get(),
112 "radius": self.radius.get(),
113 "max-faces-per-prefix": self.maxFaces.get()
114 }
115