tinc-gui: Use ArgumentParser, default to python2
[tinc] / gui / tinc-gui
index f135a01..d061a9f 100755 (executable)
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python2
 
 # tinc-gui -- GUI for controlling a running tincd
 # Copyright (C) 2009-2014 Guus Sliepen <guus@tinc-vpn.org>
@@ -25,6 +25,7 @@ import sys
 import os
 import platform
 import time
+from argparse import ArgumentParser
 from wx.lib.mixins.listctrl import ColumnSorterMixin
 from wx.lib.mixins.listctrl import ListCtrlAutoWidthMixin
 
@@ -286,46 +287,7 @@ class VPN:
                     self.pidfile = os.path.join(VPN.piddir, 'tinc.pid')
 
 
-# GUI starts here
 
-argv0 = sys.argv[0]
-del sys.argv[0]
-netname = None
-pidfile = None
-
-
-def usage(exitcode=0):
-    print('Usage: ' + argv0 + ' [options]')
-    print('\nValid options are:')
-    print('  -n, --net=NETNAME       Connect to net NETNAME.')
-    print('      --pidfile=FILENAME  Read control cookie from FILENAME.')
-    print('      --help              Display this help and exit.')
-    print('\nReport bugs to tinc@tinc-vpn.org.')
-    sys.exit(exitcode)
-
-
-while sys.argv:
-    if sys.argv[0] in ('-n', '--net'):
-        del sys.argv[0]
-        netname = sys.argv[0]
-    elif sys.argv[0] in '--pidfile':
-        del sys.argv[0]
-        pidfile = sys.argv[0]
-    elif sys.argv[0] in '--help':
-        usage(0)
-    else:
-        print(argv0 + ': unrecognized option \'' + sys.argv[0] + '\'')
-        usage(1)
-
-    del sys.argv[0]
-
-if netname is None:
-    netname = os.getenv('NETNAME')
-elif netname == '.':
-    netname = None
-
-vpn = VPN(netname, pidfile)
-vpn.connect()
 
 
 class SuperListCtrl(wx.ListCtrl, ColumnSorterMixin, ListCtrlAutoWidthMixin):
@@ -334,7 +296,7 @@ class SuperListCtrl(wx.ListCtrl, ColumnSorterMixin, ListCtrlAutoWidthMixin):
         ListCtrlAutoWidthMixin.__init__(self)
         ColumnSorterMixin.__init__(self, 16)
 
-    def get_list_ctrl(self):
+    def GetListCtrl(self):
         return self
 
 
@@ -603,16 +565,6 @@ class NetPage(wx.Notebook):
 
 
 class MainWindow(wx.Frame):
-    def on_quit(self, event):
-        app.ExitMainLoop()
-
-    def on_timer(self, event):
-        vpn.refresh()
-        self.np.nodes.refresh()
-        self.np.subnets.refresh()
-        self.np.edges.refresh()
-        self.np.connections.refresh()
-
     def __init__(self, parent, id, title):
         wx.Frame.__init__(self, parent, id, title)
 
@@ -634,21 +586,51 @@ class MainWindow(wx.Frame):
         self.SetMenuBar(menubar)
         self.Show()
 
+    def on_quit(self, event):
+        app.ExitMainLoop()
+
+    def on_timer(self, event):
+        vpn.refresh()
+        self.np.nodes.refresh()
+        self.np.subnets.refresh()
+        self.np.edges.refresh()
+        self.np.connections.refresh()
+
+
+def main(netname, pidfile):
+    global vpn, app
+
+    if netname is None:
+        netname = os.getenv('NETNAME')
+
+    vpn = VPN(netname, pidfile)
+    vpn.connect()
+
+    app = wx.App()
+    mw = MainWindow(None, -1, 'Tinc GUI')
+
+    """
+    def OnTaskBarIcon(event):
+        mw.Raise()
+    """
+
+    """
+    icon = wx.Icon("tincgui.ico", wx.BITMAP_TYPE_PNG)
+    taskbaricon = wx.TaskBarIcon()
+    taskbaricon.SetIcon(icon, 'Tinc GUI')
+    wx.EVT_TASKBAR_RIGHT_UP(taskbaricon, OnTaskBarIcon)
+    """
+
+    app.MainLoop()
+    vpn.close()
+
 
-app = wx.App()
-mw = MainWindow(None, -1, 'Tinc GUI')
+if __name__ == '__main__':
+    argparser = ArgumentParser(epilog='Report bugs to tinc@tinc-vpn.org.')
 
-"""
-def OnTaskBarIcon(event):
-    mw.Raise()
-"""
+    argparser.add_argument('-n', '--net', metavar='NETNAME', dest='netname', help='Connect to net NETNAME')
+    argparser.add_argument('-p', '--pidfile', help='Path to the pid file (containing the controlcookie)')
 
-"""
-icon = wx.Icon("tincgui.ico", wx.BITMAP_TYPE_PNG)
-taskbaricon = wx.TaskBarIcon()
-taskbaricon.SetIcon(icon, 'Tinc GUI')
-wx.EVT_TASKBAR_RIGHT_UP(taskbaricon, OnTaskBarIcon)
-"""
+    options = argparser.parse_args()
 
-app.MainLoop()
-vpn.close()
+    main(options.netname, options.pidfile)