Merge pull request #285 from coreemu/menubar

Menubar
This commit is contained in:
bharnden 2019-09-23 11:41:10 -07:00 committed by GitHub
commit 00353e6727
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 966 additions and 6 deletions

View file

@ -1,6 +1,7 @@
import logging import logging
import tkinter as tk import tkinter as tk
import coretk.menuaction as action
from coretk.graph import CanvasGraph from coretk.graph import CanvasGraph
from coretk.images import Images from coretk.images import Images
@ -25,16 +26,637 @@ class Application(tk.Frame):
self.master.tk.call("wm", "iconphoto", self.master._w, image) self.master.tk.call("wm", "iconphoto", self.master._w, image)
self.pack(fill=tk.BOTH, expand=True) self.pack(fill=tk.BOTH, expand=True)
def create_file_menu(self):
"""
Create file menu
:return: nothing
"""
file_menu = tk.Menu(self.menubar)
file_menu.add_command(
label="New", command=action.file_new, accelerator="Ctrl+N", underline=0
)
file_menu.add_command(
label="Open...", command=action.file_open, accelerator="Ctrl+O", underline=0
)
file_menu.add_command(label="Reload", command=action.file_reload, underline=0)
file_menu.add_command(
label="Save", command=action.file_save, accelerator="Ctrl+S", underline=0
)
file_menu.add_command(label="Save As XML...", command=action.file_save_as_xml)
file_menu.add_command(label="Save As imn...", command=action.file_save_as_imn)
file_menu.add_separator()
file_menu.add_command(
label="Export Python script...", command=action.file_export_python_script
)
file_menu.add_command(
label="Execute XML or Python script...",
command=action.file_execute_xml_or_python_script,
)
file_menu.add_command(
label="Execute Python script with options...",
command=action.file_execute_python_script_with_options,
)
file_menu.add_separator()
file_menu.add_command(
label="Open current file in editor...",
command=action.file_open_current_file_in_editor,
)
file_menu.add_command(label="Print...", command=action.file_print, underline=0)
file_menu.add_command(
label="Save screenshot...", command=action.file_save_screenshot
)
file_menu.add_separator()
file_menu.add_command(
label="/home/ncs/.core/configs/sample1.imn",
command=action.file_example_link,
)
file_menu.add_separator()
file_menu.add_command(label="Quit", command=self.master.quit, underline=0)
self.menubar.add_cascade(label="File", menu=file_menu, underline=0)
def create_edit_menu(self):
"""
Create edit menu
:return: nothing
"""
edit_menu = tk.Menu(self.menubar)
edit_menu.add_command(
label="Undo", command=action.edit_undo, accelerator="Ctrl+Z", underline=0
)
edit_menu.add_command(
label="Redo", command=action.edit_redo, accelerator="Ctrl+Y", underline=0
)
edit_menu.add_separator()
edit_menu.add_command(
label="Cut", command=action.edit_cut, accelerator="Ctrl+X", underline=0
)
edit_menu.add_command(
label="Copy", command=action.edit_copy, accelerator="Ctrl+C", underline=0
)
edit_menu.add_command(
label="Paste", command=action.edit_paste, accelerator="Ctrl+V", underline=0
)
edit_menu.add_separator()
edit_menu.add_command(
label="Select all", command=action.edit_select_all, accelerator="Ctrl+A"
)
edit_menu.add_command(
label="Select Adjacent",
command=action.edit_select_adjacent,
accelerator="Ctrl+J",
)
edit_menu.add_separator()
edit_menu.add_command(
label="Find...", command=action.edit_find, accelerator="Ctrl+F", underline=0
)
edit_menu.add_command(label="Clear marker", command=action.edit_clear_marker)
edit_menu.add_command(label="Preferences...", command=action.edit_preferences)
self.menubar.add_cascade(label="Edit", menu=edit_menu, underline=0)
def create_canvas_menu(self):
"""
Create canvas menu
:return: nothing
"""
canvas_menu = tk.Menu(self.menubar)
canvas_menu.add_command(label="New", command=action.canvas_new)
canvas_menu.add_command(label="Manage...", command=action.canvas_manage)
canvas_menu.add_command(label="Delete", command=action.canvas_delete)
canvas_menu.add_separator()
canvas_menu.add_command(label="Size/scale...", command=action.canvas_size_scale)
canvas_menu.add_command(label="Wallpaper...", command=action.canvas_wallpaper)
canvas_menu.add_separator()
canvas_menu.add_command(
label="Previous", command=action.canvas_previous, accelerator="PgUp"
)
canvas_menu.add_command(
label="Next", command=action.canvas_next, accelerator="PgDown"
)
canvas_menu.add_command(
label="First", command=action.canvas_first, accelerator="Home"
)
canvas_menu.add_command(
label="Last", command=action.canvas_last, accelerator="End"
)
self.menubar.add_cascade(label="Canvas", menu=canvas_menu, underline=0)
def create_show_menu(self, view_menu):
"""
Create the menu items in View/Show
:param tkinter.Menu view_menu: the view menu
:return: nothing
"""
show_menu = tk.Menu(view_menu)
show_menu.add_command(label="All", command=action.sub_menu_items)
show_menu.add_command(label="None", command=action.sub_menu_items)
show_menu.add_separator()
show_menu.add_command(label="Interface Names", command=action.sub_menu_items)
show_menu.add_command(label="IPv4 Addresses", command=action.sub_menu_items)
show_menu.add_command(label="IPv6 Addresses", command=action.sub_menu_items)
show_menu.add_command(label="Node Labels", command=action.sub_menu_items)
show_menu.add_command(label="Annotations", command=action.sub_menu_items)
show_menu.add_command(label="Grid", command=action.sub_menu_items)
show_menu.add_command(label="API Messages", command=action.sub_menu_items)
view_menu.add_cascade(label="Show", menu=show_menu)
def create_view_menu(self):
"""
Create view menu
:return: nothing
"""
view_menu = tk.Menu(self.menubar)
self.create_show_menu(view_menu)
view_menu.add_command(
label="Show hidden nodes", command=action.view_show_hidden_nodes
)
view_menu.add_command(label="Locked", command=action.view_locked)
view_menu.add_command(label="3D GUI...", command=action.view_3d_gui)
view_menu.add_separator()
view_menu.add_command(
label="Zoom in", command=action.view_zoom_in, accelerator="+"
)
view_menu.add_command(
label="Zoom out", command=action.view_zoom_out, accelerator="-"
)
self.menubar.add_cascade(label="View", menu=view_menu, underline=0)
def create_experimental_menu(self, tools_menu):
"""
Create experimental menu item and the sub menu items inside
:param tkinter.Menu tools_menu: tools menu
:return: nothing
"""
experimental_menu = tk.Menu(tools_menu)
experimental_menu.add_command(
label="Plugins...", command=action.sub_menu_items, underline=0
)
experimental_menu.add_command(
label="ns2immunes converter...", command=action.sub_menu_items, underline=0
)
experimental_menu.add_command(
label="Topology partitioning...", command=action.sub_menu_items
)
tools_menu.add_cascade(
label="Experimental", menu=experimental_menu, underline=0
)
def create_random_menu(self, topology_generator_menu):
"""
Create random menu item and the sub menu items inside
:param tkinter.Menu topology_generator_menu: topology generator menu
:return: nothing
"""
random_menu = tk.Menu(topology_generator_menu)
# list of number of random nodes to create
nums = [1, 5, 10, 15, 20, 30, 40, 50, 75, 100]
for i in nums:
the_label = "R(" + str(i) + ")"
random_menu.add_command(label=the_label, command=action.sub_menu_items)
topology_generator_menu.add_cascade(
label="Random", menu=random_menu, underline=0
)
def create_grid_menu(self, topology_generator_menu):
"""
Create grid menu item and the sub menu items inside
:param tkinter.Menu topology_generator_menu: topology_generator_menu
:return: nothing
"""
grid_menu = tk.Menu(topology_generator_menu)
# list of number of nodes to create
nums = [1, 5, 10, 15, 20, 25, 30, 35, 40, 50, 60, 70, 80, 90, 100]
for i in nums:
the_label = "G(" + str(i) + ")"
grid_menu.add_command(label=the_label, command=action.sub_menu_items)
topology_generator_menu.add_cascade(label="Grid", menu=grid_menu, underline=0)
def create_connected_grid_menu(self, topology_generator_menu):
"""
Create connected grid menu items and the sub menu items inside
:param tkinter.Menu topology_generator_menu: topology generator menu
:return: nothing
"""
grid_menu = tk.Menu(topology_generator_menu)
for i in range(1, 11, 1):
i_n_menu = tk.Menu(grid_menu)
for j in range(1, 11, 1):
i_j_label = str(i) + " X " + str(j)
i_n_menu.add_command(label=i_j_label, command=action.sub_menu_items)
i_n_label = str(i) + " X N"
grid_menu.add_cascade(label=i_n_label, menu=i_n_menu)
topology_generator_menu.add_cascade(
label="Connected Grid", menu=grid_menu, underline=0
)
def create_chain_menu(self, topology_generator_menu):
"""
Create chain menu item and the sub menu items inside
:param tkinter.Menu topology_generator_menu: topology generator menu
:return: nothing
"""
chain_menu = tk.Menu(topology_generator_menu)
# number of nodes to create
nums = list(range(2, 25, 1)) + [32, 64, 128]
for i in nums:
the_label = "P(" + str(i) + ")"
chain_menu.add_command(label=the_label, command=action.sub_menu_items)
topology_generator_menu.add_cascade(label="Chain", menu=chain_menu, underline=0)
def create_star_menu(self, topology_generator_menu):
"""
Create star menu item and the sub menu items inside
:param tkinter.Menu topology_generator_menu: topology generator menu
:return: nothing
"""
star_menu = tk.Menu(topology_generator_menu)
for i in range(3, 26, 1):
the_label = "C(" + str(i) + ")"
star_menu.add_command(label=the_label, command=action.sub_menu_items)
topology_generator_menu.add_cascade(label="Star", menu=star_menu, underline=0)
def create_cycle_menu(self, topology_generator_menu):
"""
Create cycle menu item and the sub items inside
:param tkinter.Menu topology_generator_menu: topology generator menu
:return: nothing
"""
cycle_menu = tk.Menu(topology_generator_menu)
for i in range(3, 25, 1):
the_label = "C(" + str(i) + ")"
cycle_menu.add_command(label=the_label, command=action.sub_menu_items)
topology_generator_menu.add_cascade(label="Cycle", menu=cycle_menu, underline=0)
def create_wheel_menu(self, topology_generator_menu):
"""
Create wheel menu item and the sub menu items inside
:param tkinter.Menu topology_generator_menu: topology generator menu
:return: nothing
"""
wheel_menu = tk.Menu(topology_generator_menu)
for i in range(4, 26, 1):
the_label = "W(" + str(i) + ")"
wheel_menu.add_command(label=the_label, command=action.sub_menu_items)
topology_generator_menu.add_cascade(label="Wheel", menu=wheel_menu, underline=0)
def create_cube_menu(self, topology_generator_menu):
"""
Create cube menu item and the sub menu items inside
:param tkinter.Menu topology_generator_menu: topology generator menu
:return: nothing
"""
cube_menu = tk.Menu(topology_generator_menu)
for i in range(2, 7, 1):
the_label = "Q(" + str(i) + ")"
cube_menu.add_command(label=the_label, command=action.sub_menu_items)
topology_generator_menu.add_cascade(label="Cube", menu=cube_menu, underline=0)
def create_clique_menu(self, topology_generator_menu):
"""
Create clique menu item and the sub menu items inside
:param tkinter.Menu topology_generator_menu: topology generator menu
:return: nothing
"""
clique_menu = tk.Menu(topology_generator_menu)
for i in range(3, 25, 1):
the_label = "K(" + str(i) + ")"
clique_menu.add_command(label=the_label, command=action.sub_menu_items)
topology_generator_menu.add_cascade(
label="Clique", menu=clique_menu, underline=0
)
def create_bipartite_menu(self, topology_generator_menu):
"""
Create bipartite menu item and the sub menu items inside
:param tkinter.Menu topology_generator_menu: topology_generator_menu
:return: nothing
"""
bipartite_menu = tk.Menu(topology_generator_menu)
temp = 24
for i in range(1, 13, 1):
i_n_menu = tk.Menu(bipartite_menu)
for j in range(i, temp, 1):
i_j_label = "K(" + str(i) + " X " + str(j) + ")"
i_n_menu.add_command(label=i_j_label, command=action.sub_menu_items)
i_n_label = "K(" + str(i) + " X N)"
bipartite_menu.add_cascade(label=i_n_label, menu=i_n_menu)
temp = temp - 1
topology_generator_menu.add_cascade(
label="Bipartite", menu=bipartite_menu, underline=0
)
def create_topology_generator_menu(self, tools_menu):
"""
Create topology menu item and its sub menu items
:param tkinter.Menu tools_menu: tools menu
:return: nothing
"""
topology_generator_menu = tk.Menu(tools_menu)
self.create_random_menu(topology_generator_menu)
self.create_grid_menu(topology_generator_menu)
self.create_connected_grid_menu(topology_generator_menu)
self.create_chain_menu(topology_generator_menu)
self.create_star_menu(topology_generator_menu)
self.create_cycle_menu(topology_generator_menu)
self.create_wheel_menu(topology_generator_menu)
self.create_cube_menu(topology_generator_menu)
self.create_clique_menu(topology_generator_menu)
self.create_bipartite_menu(topology_generator_menu)
tools_menu.add_cascade(
label="Topology generator", menu=topology_generator_menu, underline=0
)
def create_tools_menu(self):
"""
Create tools menu
:return: nothing
"""
tools_menu = tk.Menu(self.menubar)
tools_menu.add_command(
label="Auto rearrange all",
command=action.tools_auto_rearrange_all,
underline=0,
)
tools_menu.add_command(
label="Auto rearrange selected",
command=action.tools_auto_rearrange_selected,
underline=0,
)
tools_menu.add_separator()
tools_menu.add_command(
label="Align to grid", command=action.tools_align_to_grid, underline=0
)
tools_menu.add_separator()
tools_menu.add_command(label="Traffic...", command=action.tools_traffic)
tools_menu.add_command(
label="IP addresses...", command=action.tools_ip_addresses, underline=0
)
tools_menu.add_command(
label="MAC addresses...", command=action.tools_mac_addresses, underline=0
)
tools_menu.add_command(
label="Build hosts file...",
command=action.tools_build_hosts_file,
underline=0,
)
tools_menu.add_command(
label="Renumber nodes...", command=action.tools_renumber_nodes, underline=0
)
self.create_experimental_menu(tools_menu)
self.create_topology_generator_menu(tools_menu)
tools_menu.add_command(label="Debugger...", command=action.tools_debugger)
self.menubar.add_cascade(label="Tools", menu=tools_menu, underline=0)
def create_observer_widgets_menu(self, widget_menu):
"""
Create observer widget menu item and create the sub menu items inside
:param tkinter.Menu widget_menu: widget_menu
:return: nothing
"""
observer_widget_menu = tk.Menu(widget_menu)
observer_widget_menu.add_command(label="None", command=action.sub_menu_items)
observer_widget_menu.add_command(
label="processes", command=action.sub_menu_items
)
observer_widget_menu.add_command(
label="ifconfig", command=action.sub_menu_items
)
observer_widget_menu.add_command(
label="IPv4 routes", command=action.sub_menu_items
)
observer_widget_menu.add_command(
label="IPv6 routes", command=action.sub_menu_items
)
observer_widget_menu.add_command(
label="OSPFv2 neighbors", command=action.sub_menu_items
)
observer_widget_menu.add_command(
label="OSPFv3 neighbors", command=action.sub_menu_items
)
observer_widget_menu.add_command(
label="Listening sockets", command=action.sub_menu_items
)
observer_widget_menu.add_command(
label="IPv4 MFC entries", command=action.sub_menu_items
)
observer_widget_menu.add_command(
label="IPv6 MFC entries", command=action.sub_menu_items
)
observer_widget_menu.add_command(
label="firewall rules", command=action.sub_menu_items
)
observer_widget_menu.add_command(
label="IPsec policies", command=action.sub_menu_items
)
observer_widget_menu.add_command(
label="docker logs", command=action.sub_menu_items
)
observer_widget_menu.add_command(
label="OSPFv3 MDR level", command=action.sub_menu_items
)
observer_widget_menu.add_command(
label="PIM neighbors", command=action.sub_menu_items
)
observer_widget_menu.add_command(label="Edit...", command=action.sub_menu_items)
widget_menu.add_cascade(label="Observer Widgets", menu=observer_widget_menu)
def create_adjacency_menu(self, widget_menu):
"""
Create adjacency menu item and the sub menu items inside
:param tkinter.Menu widget_menu: widget menu
:return: nothing
"""
adjacency_menu = tk.Menu(widget_menu)
adjacency_menu.add_command(label="OSPFv2", command=action.sub_menu_items)
adjacency_menu.add_command(label="OSPFv3", command=action.sub_menu_items)
adjacency_menu.add_command(label="OSLR", command=action.sub_menu_items)
adjacency_menu.add_command(label="OSLRv2", command=action.sub_menu_items)
widget_menu.add_cascade(label="Adjacency", menu=adjacency_menu)
def create_widgets_menu(self):
"""
Create widget menu
:return: nothing
"""
widget_menu = tk.Menu(self.menubar)
self.create_observer_widgets_menu(widget_menu)
self.create_adjacency_menu(widget_menu)
widget_menu.add_command(label="Throughput", command=action.widgets_throughput)
widget_menu.add_separator()
widget_menu.add_command(
label="Configure Adjacency...", command=action.widgets_configure_adjacency
)
widget_menu.add_command(
label="Configure Throughput...", command=action.widgets_configure_throughput
)
self.menubar.add_cascade(label="Widgets", menu=widget_menu, underline=0)
def create_session_menu(self):
"""
Create session menu
:return: nothing
"""
session_menu = tk.Menu(self.menubar)
session_menu.add_command(
label="Start", command=action.session_start, underline=0
)
session_menu.add_command(
label="Change sessions...",
command=action.session_change_sessions,
underline=0,
)
session_menu.add_separator()
session_menu.add_command(
label="Node types...", command=action.session_node_types, underline=0
)
session_menu.add_command(
label="Comments...", command=action.session_comments, underline=0
)
session_menu.add_command(
label="Hooks...", command=action.session_hooks, underline=0
)
session_menu.add_command(
label="Reset node positions",
command=action.session_reset_node_positions,
underline=0,
)
session_menu.add_command(
label="Emulation servers...",
command=action.session_emulation_servers,
underline=0,
)
session_menu.add_command(
label="Options...", command=action.session_options, underline=0
)
self.menubar.add_cascade(label="Session", menu=session_menu, underline=0)
def create_help_menu(self):
"""
Create help menu
:return: nothing
"""
help_menu = tk.Menu(self.menubar)
help_menu.add_command(
label="Core Github (www)", command=action.help_core_github
)
help_menu.add_command(
label="Core Documentation (www)", command=action.help_core_documentation
)
help_menu.add_command(label="About", command=action.help_about)
self.menubar.add_cascade(label="Help", menu=help_menu)
def bind_menubar_shortcut(self):
"""
Bind hot keys to matching command
:return: nothing
"""
self.bind_all("<Control-n>", action.file_new_shortcut)
self.bind_all("<Control-o>", action.file_open_shortcut)
self.bind_all("<Control-s>", action.file_save_shortcut)
self.bind_all("<Control-z>", action.edit_undo_shortcut)
self.bind_all("<Control-y>", action.edit_redo_shortcut)
self.bind_all("<Control-x>", action.edit_cut_shortcut)
self.bind_all("<Control-c>", action.edit_copy_shortcut)
self.bind_all("<Control-v>", action.edit_paste_shortcut)
self.bind_all("<Control-a>", action.edit_select_all_shortcut)
self.bind_all("<Control-j>", action.edit_select_adjacent_shortcut)
self.bind_all("<Control-f>", action.edit_find_shortcut)
self.bind_all("<Prior>", action.canvas_previous_shortcut)
self.bind_all("<Next>", action.canvas_next_shortcut)
self.bind_all("<Home>", action.canvas_first_shortcut)
self.bind_all("<End>", action.canvas_last_shortcut)
self.bind_all("<Control-Shift-plus>", action.view_zoom_in_shortcut)
self.bind_all("<Control-minus>", action.view_zoom_out_shortcut)
def create_menu(self): def create_menu(self):
self.master.option_add("*tearOff", tk.FALSE) self.master.option_add("*tearOff", tk.FALSE)
self.menubar = tk.Menu(self.master) self.menubar = tk.Menu(self.master)
file_menu = tk.Menu(self.menubar) self.create_file_menu()
file_menu.add_command(label="Open") self.create_edit_menu()
file_menu.add_command(label="Exit", command=self.master.quit) self.create_canvas_menu()
self.menubar.add_cascade(label="File", menu=file_menu) self.create_view_menu()
help_menu = tk.Menu(self.menubar) self.create_tools_menu()
self.menubar.add_cascade(label="Help", menu=help_menu) self.create_widgets_menu()
self.create_session_menu()
self.create_help_menu()
self.master.config(menu=self.menubar) self.master.config(menu=self.menubar)
self.bind_menubar_shortcut()
def create_widgets(self): def create_widgets(self):
image = Images.get("switch") image = Images.get("switch")

338
coretk/coretk/menuaction.py Normal file
View file

@ -0,0 +1,338 @@
"""
The actions taken when each menubar option is clicked
"""
import logging
import webbrowser
def sub_menu_items():
logging.debug("Click on sub menu items")
def file_new():
logging.debug("Click file New")
def file_new_shortcut(event):
logging.debug("Shortcut for file new shortcut")
def file_open():
logging.debug("Click file Open")
def file_open_shortcut(event):
logging.debug("Shortcut for file open")
def file_reload():
logging.debug("Click file Reload")
def file_save():
logging.debug("Click file save")
def file_save_shortcut(event):
logging.debug("Shortcut for file save")
def file_save_as_xml():
logging.debug("Click save as XML")
def file_save_as_imn():
logging.debug("Click save as imn")
def file_export_python_script():
logging.debug("Click file export python script")
def file_execute_xml_or_python_script():
logging.debug("Execute XML or Python script")
def file_execute_python_script_with_options():
logging.debug("Click execute Python script with options")
def file_open_current_file_in_editor():
logging.debug("Click file open current in editor")
def file_print():
logging.debug("Click file Print")
def file_save_screenshot():
logging.debug("Click file save screenshot")
def file_example_link():
logging.debug("Click file example link")
def edit_undo():
logging.debug("Click edit undo")
def edit_undo_shortcut(event):
logging.debug("Shortcut for edit undo")
def edit_redo():
logging.debug("Click edit redo")
def edit_redo_shortcut(event):
logging.debug("Shortcut for edit redo")
def edit_cut():
logging.debug("Click edit cut")
def edit_cut_shortcut(event):
logging.debug("Shortcut for edit cut")
def edit_copy():
logging.debug("Click edit copy")
def edit_copy_shortcut(event):
logging.debug("Shortcut for edit copy")
def edit_paste():
logging.debug("Click edit paste")
def edit_paste_shortcut(event):
logging.debug("Shortcut for edit paste")
def edit_select_all():
logging.debug("Click edit select all")
def edit_select_all_shortcut(event):
logging.debug("Shortcut for edit select all")
def edit_select_adjacent():
logging.debug("Click edit select adjacent")
def edit_select_adjacent_shortcut(event):
logging.debug("Shortcut for edit select adjacent")
def edit_find():
logging.debug("CLick edit find")
def edit_find_shortcut(event):
logging.debug("Shortcut for edit find")
def edit_clear_marker():
logging.debug("Click edit clear marker")
def edit_preferences():
logging.debug("Click preferences")
def canvas_new():
logging.debug("Click canvas new")
def canvas_manage():
logging.debug("Click canvas manage")
def canvas_delete():
logging.debug("Click canvas delete")
def canvas_size_scale():
logging.debug("Click canvas size/scale")
def canvas_wallpaper():
logging.debug("CLick canvas wallpaper")
def canvas_previous():
logging.debug("Click canvas previous")
def canvas_previous_shortcut(event):
logging.debug("Shortcut for canvas previous")
def canvas_next():
logging.debug("Click canvas next")
def canvas_next_shortcut(event):
logging.debug("Shortcut for canvas next")
def canvas_first():
logging.debug("CLick canvas first")
def canvas_first_shortcut(event):
logging.debug("Shortcut for canvas first")
def canvas_last():
logging.debug("CLick canvas last")
def canvas_last_shortcut(event):
logging.debug("Shortcut canvas last")
def view_show():
logging.debug("Click view show")
def view_show_hidden_nodes():
logging.debug("Click view show hidden nodes")
def view_locked():
logging.debug("Click view locked")
def view_3d_gui():
logging.debug("CLick view 3D GUI")
def view_zoom_in():
logging.debug("Click view zoom in")
def view_zoom_in_shortcut(event):
logging.debug("Shortcut view zoom in")
def view_zoom_out():
logging.debug("Click view zoom out")
def view_zoom_out_shortcut(event):
logging.debug("Shortcut view zoom out")
def tools_auto_rearrange_all():
logging.debug("Click tools, auto rearrange all")
def tools_auto_rearrange_selected():
logging.debug("CLick tools auto rearrange selected")
def tools_align_to_grid():
logging.debug("Click tools align to grid")
def tools_traffic():
logging.debug("Click tools traffic")
def tools_ip_addresses():
logging.debug("Click tools ip addresses")
def tools_mac_addresses():
logging.debug("Click tools mac addresses")
def tools_build_hosts_file():
logging.debug("Click tools build hosts file")
def tools_renumber_nodes():
logging.debug("Click tools renumber nodes")
def tools_experimental():
logging.debug("Click tools experimental")
def tools_topology_generator():
logging.debug("Click tools topology generator")
def tools_debugger():
logging.debug("Click tools debugger")
def widgets_observer_widgets():
logging.debug("Click widgets observer widgets")
def widgets_adjacency():
logging.debug("Click widgets adjacency")
def widgets_throughput():
logging.debug("Click widgets throughput")
def widgets_configure_adjacency():
logging.debug("Click widgets configure adjacency")
def widgets_configure_throughput():
logging.debug("Click widgets configure throughput")
def session_start():
logging.debug("Click session start")
def session_change_sessions():
logging.debug("Click session change sessions")
def session_node_types():
logging.debug("Click session node types")
def session_comments():
logging.debug("Click session comments")
def session_hooks():
logging.debug("Click session hooks")
def session_reset_node_positions():
logging.debug("Click session reset node positions")
def session_emulation_servers():
logging.debug("Click session emulation servers")
def session_options():
logging.debug("Click session options")
def help_core_github():
webbrowser.open_new("https://github.com/coreemu/core")
def help_core_documentation():
webbrowser.open_new("http://coreemu.github.io/core/")
def help_about():
logging.debug("Click help About")