Example #1
0
 def build_args_from_prefs(self):
     fake_args = []
     fake_args.append(
         bb_prefs.get_def_string(bb_prefs.SECTION_MAIN, "pppd_config", ""))
     password = base64.b64decode(
         bb_prefs.get_def_string(bb_prefs.SECTION_MAIN, "password", ""))
     if len(password) > 0:
         fake_args.append("-P")
         fake_args.append(password)
     verb = bb_prefs.get_def_bool(bb_prefs.SECTION_MAIN, "verbose", False)
     if verb:
         fake_args.append("-v")
     vverb = bb_prefs.get_def_bool(bb_prefs.SECTION_MAIN, "veryverbose",
                                   False)
     if vverb:
         fake_args.append("--veryverbose")
     data_mode = bb_prefs.get_def_bool(bb_prefs.SECTION_MAIN, "data_mode",
                                       False)
     if data_mode:
         fake_args.append("-m")
     pppd = bb_prefs.get_def_string(bb_prefs.SECTION_MAIN, "pppd_path",
                                    "/usr/bin/pppd")
     if pppd != "/usr/bin/pppd":
         fake_args.append("-p")
         fake_args.append(pppd)
     device = bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "device",
                                      "")
     if device != "":
         fake_args.append("-d")
         fake_args.append(device)
     interface = bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP,
                                         "interface", "")
     if interface != "":
         fake_args.append("-i")
         fake_args.append(interface)
     bus = bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "bus", "")
     if bus != "":
         fake_args.append("-b")
         fake_args.append(bus)
     rp = bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "readpt", "")
     if rp != "":
         fake_args.append("-w")
         fake_args.append(rp)
     wp = bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "writept", "")
     if wp != "":
         fake_args.append("-x")
         fake_args.append(wp)
     mrp = bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "modem_readpt",
                                   "")
     if mrp != "":
         fake_args.append("-y")
         fake_args.append(mrp)
     mwp = bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP,
                                   "modem_writept", "")
     if mwp != "":
         fake_args.append("-z")
         fake_args.append(mwp)
     return fake_args
	def build_args_from_prefs(self):
		fake_args=[]
		fake_args.append(bb_prefs.get_def_string(bb_prefs.SECTION_MAIN, "pppd_config", ""))
		password=base64.b64decode(bb_prefs.get_def_string(bb_prefs.SECTION_MAIN, "password", ""))
		if len(password) > 0:
			fake_args.append("-P")
			fake_args.append(password)
		verb=bb_prefs.get_def_bool(bb_prefs.SECTION_MAIN, "verbose", False)
		if verb:
			fake_args.append("-v")
		vverb=bb_prefs.get_def_bool(bb_prefs.SECTION_MAIN, "veryverbose", False)
		if vverb:
			fake_args.append("--veryverbose")
		data_mode=bb_prefs.get_def_bool(bb_prefs.SECTION_MAIN, "data_mode", False)
		if data_mode:
			fake_args.append("-m")
		pppd=bb_prefs.get_def_string(bb_prefs.SECTION_MAIN, "pppd_path", "/usr/bin/pppd")
		if pppd != "/usr/bin/pppd":
			fake_args.append("-p")
			fake_args.append(pppd)
		device=bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "device", "")
		if device != "":
			fake_args.append("-d")
			fake_args.append(device)
		interface=bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "interface", "")
		if interface != "":
			fake_args.append("-i")
			fake_args.append(interface)
		bus=bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "bus", "")
		if bus != "":
			fake_args.append("-b")
			fake_args.append(bus)
		rp=bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "readpt", "")
		if rp != "":
			fake_args.append("-w")
			fake_args.append(rp)
		wp=bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "writept", "")
		if wp != "":
			fake_args.append("-x")
			fake_args.append(wp)
		mrp=bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "modem_readpt", "")
		if mrp != "":
			fake_args.append("-y")
			fake_args.append(mrp)
		mwp=bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "modem_writept", "")
		if mwp != "":
			fake_args.append("-z")
			fake_args.append(mwp)
		return fake_args
	def onStart(self, event):
		if self.bbtether!=None and self.bbtether.is_running():
			dlg = wx.MessageDialog(self, "The modem is already Connected.", "Warning!", wx.OK | wx.ICON_INFORMATION)
			dlg.ShowModal()
			dlg.Destroy()
			return
		# ask config to use
		pppdconf=bb_prefs.get_def_string(bb_prefs.SECTION_MAIN, "pppd_config", "")
		# if none picked yet, ask and save in prefs for next time
		if pppdconf == "":
			choices=get_ppp_confs()
			choices.append("--Do not start PPPD--")
			evt=pickEvent(caption="PPP config to use (EX: tmobile) see conf/ folder.",choices=choices,default=pppdconf)
			pppconf=self.onPick(evt)
			print "pppconf:"+str(pppconf)
			if pppconf==None:
				# cancelled
				return
			if pppconf == "--Do not start PPPD--":
				pppconf=""
			bb_prefs.set(bb_prefs.SECTION_MAIN,"pppd_config",pppconf)
			bb_prefs.save_prefs()

		fake_args=self.build_args_from_prefs()
		bb_messenging.log("Will run bbtether with args: "+str(fake_args))
		
		(options,args)=bb_tether.parse_cmd(fake_args)
		self.bbtether = BBTetherThread(options, args)
		self.bbtether.start()
Example #4
0
    def onStart(self, event):
        if self.bbtether != None and self.bbtether.is_running():
            dlg = wx.MessageDialog(self, "The modem is already Connected.",
                                   "Warning!", wx.OK | wx.ICON_INFORMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return
        # ask config to use
        pppdconf = bb_prefs.get_def_string(bb_prefs.SECTION_MAIN,
                                           "pppd_config", "")
        # if none picked yet, ask and save in prefs for next time
        if pppdconf == "":
            choices = get_ppp_confs()
            choices.append("--Do not start PPPD--")
            evt = pickEvent(
                caption="PPP config to use (EX: tmobile) see conf/ folder.",
                choices=choices,
                default=pppdconf)
            pppconf = self.onPick(evt)
            print "pppconf:" + str(pppconf)
            if pppconf == None:
                # cancelled
                return
            if pppconf == "--Do not start PPPD--":
                pppconf = ""
            bb_prefs.set(bb_prefs.SECTION_MAIN, "pppd_config", pppconf)
            bb_prefs.save_prefs()

        fake_args = self.build_args_from_prefs()
        bb_messenging.log("Will run bbtether with args: " + str(fake_args))

        (options, args) = bb_tether.parse_cmd(fake_args)
        self.bbtether = BBTetherThread(options, args)
        self.bbtether.start()
	def __init__(self):
		global icon
		wx.Frame.__init__(self,None,-1,"Berry4All Preferences")
		self.SetIcon(get_icon())
		self.Bind(wx.EVT_CLOSE, self.onQuit)
		
		mainpanel=wx.Panel(self)
		nb=wx.Notebook(mainpanel)
		basic=wx.Panel(nb)

		basicsizer=wx.FlexGridSizer(cols=2, hgap=5, vgap=5)
		basicsizer.AddGrowableCol(1)
		
		passwordl=wx.StaticText(basic,-1,"Device Password:"******"password", "")
		passwords=base64.b64decode(passwords)
		self.password=wx.TextCtrl(basic,-1,passwords,size=(200,-1),style=wx.TE_PASSWORD)
		basicsizer.Add(passwordl, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
		basicsizer.Add(self.password, 0, wx.EXPAND)
		verbosel=wx.StaticText(basic,-1,"Verbose logging")
		verboses=bb_prefs.get_def_bool(bb_prefs.SECTION_MAIN, "verbose", True)
		self.verbose=wx.CheckBox(basic,-1,"")
		self.verbose.SetValue(verboses)
		basicsizer.Add(verbosel, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
		basicsizer.Add(self.verbose, 0, 0)
		sverbosel=wx.StaticText(basic,-1,"Extra Verbose !")
		sverboses=bb_prefs.get_def_bool(bb_prefs.SECTION_MAIN, "veryverbose", False)
		self.sverbose=wx.CheckBox(basic,-1,"")
		self.sverbose.SetValue(sverboses)
		basicsizer.Add(sverbosel, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
		basicsizer.Add(self.sverbose, 0, 0)
		basic.SetSizer(basicsizer)
		nb.AddPage(basic,"General")
		
		modem=wx.Panel(nb)
		modemsizer=wx.FlexGridSizer(cols=2, hgap=5, vgap=5)
		modemsizer.AddGrowableCol(1)
		pppdconfl=wx.StaticText(modem,-1,"PPPD Config:")
		self.pppdchoices=get_ppp_confs()
		self.pppdchoices.append("--Do not start PPPD--")
		self.pppdconf=wx.Choice(modem,-1,choices=self.pppdchoices)
		selection=bb_prefs.get_def_string(bb_prefs.SECTION_MAIN, "pppd_config", "")
		self.pppdconf.SetSelection(self.pppdconf.FindString(selection))
		modemsizer.Add(pppdconfl, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
		modemsizer.Add(self.pppdconf, 0, wx.EXPAND)
		modemsizer.AddSpacer((1,1))
		pppdconft=wx.StaticText(modem,-1,"(Conf. files are in bbtether/conf/)")
		modemsizer.Add(pppdconft,0,0)
		pppdl=wx.StaticText(modem,-1,"PPPD path:")
		pppds=bb_prefs.get_def_string(bb_prefs.SECTION_MAIN, "pppd_path", "/usr/bin/pppd")
		self.pppd=wx.TextCtrl(modem,-1,pppds)
		modemsizer.Add(pppdl, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
		modemsizer.Add(self.pppd, 0, wx.EXPAND)
		datal=wx.StaticText(modem,-1,"Use Data Only Mode:")
		datas=bb_prefs.get_def_bool(bb_prefs.SECTION_MAIN, "data_mode", False)
		self.datamode=wx.CheckBox(modem,-1,"")
		self.datamode.SetValue(datas)
		modemsizer.Add(datal, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
		modemsizer.Add(self.datamode, 0, wx.EXPAND)
		modem.SetSizer(modemsizer)
		nb.AddPage(modem,"Modem")
		
		usb=wx.Panel(nb)

		usbmainsizer=wx.BoxSizer(wx.VERTICAL)
		usbmainsizer.Add(wx.StaticText(usb,-1,"Leave blank, unless you know what you are doing."),0,0)
		usbmainsizer.Add(wx.StaticLine(usb,size=(-1,15)),0,wx.EXPAND)

		usbsizer=wx.FlexGridSizer(cols=2, hgap=5, vgap=5)
		usbsizer.AddGrowableCol(1)
		devicel=wx.StaticText(usb,-1,"Device:")
		devices=bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "device", "")
		self.device=wx.TextCtrl(usb,-1,str(devices),size=(40,-1))
		usbsizer.Add(devicel, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
		usbsizer.Add(self.device, 0, 0)
		interfacel=wx.StaticText(usb,-1,"Interface:")
		interfaces=bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "interface", "")
		self.interface=wx.TextCtrl(usb,-1,str(interfaces),size=(40,-1))
		usbsizer.Add(interfacel, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
		usbsizer.Add(self.interface, 0, 0)
		busl=wx.StaticText(usb,-1,"Bus:")
		buss=bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "bus", "")
		self.bus=wx.TextCtrl(usb,-1,str(buss),size=(40,-1))
		usbsizer.Add(busl, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
		usbsizer.Add(self.bus, 0, 0)
		rpl=wx.StaticText(usb,-1,"Data read point(Ex: 0x83):")
		rps=bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "readpt", "")
		self.rp=wx.TextCtrl(usb,-1,str(rps),size=(40,-1))
		usbsizer.Add(rpl, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
		usbsizer.Add(self.rp, 0, 0)
		wpl=wx.StaticText(usb,-1,"Data write point:(Ex: 0x4)")
		wps=bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "writept", "")
		self.wp=wx.TextCtrl(usb,-1,str(wps),size=(40,-1))
		usbsizer.Add(wpl, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
		usbsizer.Add(self.wp, 0, 0)
		mrpl=wx.StaticText(usb,-1,"Modem read point:(Ex: 0x85)")
		mrps=bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "modem_readpt", "")
		self.mrp=wx.TextCtrl(usb,-1,str(mrps),size=(40,-1))
		usbsizer.Add(mrpl, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
		usbsizer.Add(self.mrp, 0, 0)
		mwpl=wx.StaticText(usb,-1,"Modem write point:(Ex: 0x6)")
		mwps=bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "modem_writept", "")
		self.mwp=wx.TextCtrl(usb,-1,str(mwps),size=(40,-1))
		usbsizer.Add(mwpl, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
		usbsizer.Add(self.mwp, 0, 0)

		usbmainsizer.Add(usbsizer,0,wx.EXPAND)
		usb.SetSizer(usbmainsizer)
		nb.AddPage(usb,"USB")

		bottomsizer=wx.BoxSizer(wx.HORIZONTAL)
		save=wx.Button(mainpanel,-1,"Save")
		cancel=wx.Button(mainpanel,-1,"Cancel")
		bottomsizer.Add(cancel,0)
		# expandable spacer in middle so i get a button on left and one on right
		bottomsizer.AddSpacer((1,1),wx.EXPAND)
		bottomsizer.Add(save,0,wx.ALIGN_RIGHT)
		
		mainsizer=wx.BoxSizer(wx.VERTICAL)
		mainsizer.Add(nb, 1, wx.EXPAND)
		mainsizer.Add(bottomsizer, 0, wx.EXPAND)
		mainpanel.SetSizer(mainsizer)
		mainsizer.SetSizeHints(self)
		self.CenterOnScreen()
		
		# Button events:
		cancel.Bind(wx.EVT_BUTTON, self.onQuit)
		save.Bind(wx.EVT_BUTTON, self.onSave)
Example #6
0
    def __init__(self):
        global icon
        wx.Frame.__init__(self, None, -1, "Berry4All Preferences")
        self.SetIcon(get_icon())
        self.Bind(wx.EVT_CLOSE, self.onQuit)

        mainpanel = wx.Panel(self)
        nb = wx.Notebook(mainpanel)
        basic = wx.Panel(nb)

        basicsizer = wx.FlexGridSizer(cols=2, hgap=5, vgap=5)
        basicsizer.AddGrowableCol(1)

        passwordl = wx.StaticText(basic, -1, "Device Password:"******"password",
                                            "")
        passwords = base64.b64decode(passwords)
        self.password = wx.TextCtrl(basic,
                                    -1,
                                    passwords,
                                    size=(200, -1),
                                    style=wx.TE_PASSWORD)
        basicsizer.Add(passwordl, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
        basicsizer.Add(self.password, 0, wx.EXPAND)
        verbosel = wx.StaticText(basic, -1, "Verbose logging")
        verboses = bb_prefs.get_def_bool(bb_prefs.SECTION_MAIN, "verbose",
                                         True)
        self.verbose = wx.CheckBox(basic, -1, "")
        self.verbose.SetValue(verboses)
        basicsizer.Add(verbosel, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
        basicsizer.Add(self.verbose, 0, 0)
        sverbosel = wx.StaticText(basic, -1, "Extra Verbose !")
        sverboses = bb_prefs.get_def_bool(bb_prefs.SECTION_MAIN, "veryverbose",
                                          False)
        self.sverbose = wx.CheckBox(basic, -1, "")
        self.sverbose.SetValue(sverboses)
        basicsizer.Add(sverbosel, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
        basicsizer.Add(self.sverbose, 0, 0)
        basic.SetSizer(basicsizer)
        nb.AddPage(basic, "General")

        modem = wx.Panel(nb)
        modemsizer = wx.FlexGridSizer(cols=2, hgap=5, vgap=5)
        modemsizer.AddGrowableCol(1)
        pppdconfl = wx.StaticText(modem, -1, "PPPD Config:")
        self.pppdchoices = get_ppp_confs()
        self.pppdchoices.append("--Do not start PPPD--")
        self.pppdconf = wx.Choice(modem, -1, choices=self.pppdchoices)
        selection = bb_prefs.get_def_string(bb_prefs.SECTION_MAIN,
                                            "pppd_config", "")
        self.pppdconf.SetSelection(self.pppdconf.FindString(selection))
        modemsizer.Add(pppdconfl, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
        modemsizer.Add(self.pppdconf, 0, wx.EXPAND)
        modemsizer.AddSpacer((1, 1))
        pppdconft = wx.StaticText(modem, -1,
                                  "(Conf. files are in bbtether/conf/)")
        modemsizer.Add(pppdconft, 0, 0)
        pppdl = wx.StaticText(modem, -1, "PPPD path:")
        pppds = bb_prefs.get_def_string(bb_prefs.SECTION_MAIN, "pppd_path",
                                        "/usr/bin/pppd")
        self.pppd = wx.TextCtrl(modem, -1, pppds)
        modemsizer.Add(pppdl, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
        modemsizer.Add(self.pppd, 0, wx.EXPAND)
        datal = wx.StaticText(modem, -1, "Use Data Only Mode:")
        datas = bb_prefs.get_def_bool(bb_prefs.SECTION_MAIN, "data_mode",
                                      False)
        self.datamode = wx.CheckBox(modem, -1, "")
        self.datamode.SetValue(datas)
        modemsizer.Add(datal, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
        modemsizer.Add(self.datamode, 0, wx.EXPAND)
        modem.SetSizer(modemsizer)
        nb.AddPage(modem, "Modem")

        usb = wx.Panel(nb)

        usbmainsizer = wx.BoxSizer(wx.VERTICAL)
        usbmainsizer.Add(
            wx.StaticText(usb, -1,
                          "Leave blank, unless you know what you are doing."),
            0, 0)
        usbmainsizer.Add(wx.StaticLine(usb, size=(-1, 15)), 0, wx.EXPAND)

        usbsizer = wx.FlexGridSizer(cols=2, hgap=5, vgap=5)
        usbsizer.AddGrowableCol(1)
        devicel = wx.StaticText(usb, -1, "Device:")
        devices = bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "device",
                                          "")
        self.device = wx.TextCtrl(usb, -1, str(devices), size=(40, -1))
        usbsizer.Add(devicel, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
        usbsizer.Add(self.device, 0, 0)
        interfacel = wx.StaticText(usb, -1, "Interface:")
        interfaces = bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP,
                                             "interface", "")
        self.interface = wx.TextCtrl(usb, -1, str(interfaces), size=(40, -1))
        usbsizer.Add(interfacel, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
        usbsizer.Add(self.interface, 0, 0)
        busl = wx.StaticText(usb, -1, "Bus:")
        buss = bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "bus", "")
        self.bus = wx.TextCtrl(usb, -1, str(buss), size=(40, -1))
        usbsizer.Add(busl, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
        usbsizer.Add(self.bus, 0, 0)
        rpl = wx.StaticText(usb, -1, "Data read point(Ex: 0x83):")
        rps = bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "readpt", "")
        self.rp = wx.TextCtrl(usb, -1, str(rps), size=(40, -1))
        usbsizer.Add(rpl, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
        usbsizer.Add(self.rp, 0, 0)
        wpl = wx.StaticText(usb, -1, "Data write point:(Ex: 0x4)")
        wps = bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP, "writept", "")
        self.wp = wx.TextCtrl(usb, -1, str(wps), size=(40, -1))
        usbsizer.Add(wpl, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
        usbsizer.Add(self.wp, 0, 0)
        mrpl = wx.StaticText(usb, -1, "Modem read point:(Ex: 0x85)")
        mrps = bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP,
                                       "modem_readpt", "")
        self.mrp = wx.TextCtrl(usb, -1, str(mrps), size=(40, -1))
        usbsizer.Add(mrpl, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
        usbsizer.Add(self.mrp, 0, 0)
        mwpl = wx.StaticText(usb, -1, "Modem write point:(Ex: 0x6)")
        mwps = bb_prefs.get_def_string(bb_prefs.SECTION_USER_EP,
                                       "modem_writept", "")
        self.mwp = wx.TextCtrl(usb, -1, str(mwps), size=(40, -1))
        usbsizer.Add(mwpl, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL)
        usbsizer.Add(self.mwp, 0, 0)

        usbmainsizer.Add(usbsizer, 0, wx.EXPAND)
        usb.SetSizer(usbmainsizer)
        nb.AddPage(usb, "USB")

        bottomsizer = wx.BoxSizer(wx.HORIZONTAL)
        save = wx.Button(mainpanel, -1, "Save")
        cancel = wx.Button(mainpanel, -1, "Cancel")
        bottomsizer.Add(cancel, 0)
        # expandable spacer in middle so i get a button on left and one on right
        bottomsizer.AddSpacer((1, 1), wx.EXPAND)
        bottomsizer.Add(save, 0, wx.ALIGN_RIGHT)

        mainsizer = wx.BoxSizer(wx.VERTICAL)
        mainsizer.Add(nb, 1, wx.EXPAND)
        mainsizer.Add(bottomsizer, 0, wx.EXPAND)
        mainpanel.SetSizer(mainsizer)
        mainsizer.SetSizeHints(self)
        self.CenterOnScreen()

        # Button events:
        cancel.Bind(wx.EVT_BUTTON, self.onQuit)
        save.Bind(wx.EVT_BUTTON, self.onSave)