示例#1
0
 def __init__(self, parent=None):
   wx.aui.AuiMDIChildFrame. __init__(self, parent, -1, "")
   self.parent = parent
   self.dirty = False
   self.fBrowser = None
   if parent!=None:
     self.locale = ConfigObj("locale/"+self.parent.application.app_settings["locale"]+"/"+self.__class__.__name__+".properties")
   #self.ds = None
   self.SetExtraStyle(wx.WS_EX_VALIDATE_RECURSIVELY)
示例#2
0
 def init_config(self):
   home = os.getenv('USERPROFILE') or os.getenv('HOME')
   if os.path.exists(home+os.sep+".nervatura"+os.sep+"nervatura.ini")==False:
     if os.path.exists(home+os.sep+".nervatura")==False:
       os.makedirs(home+os.sep+".nervatura")
     self.user_config = ConfigObj()
     self.user_config.filename = home+os.sep+".nervatura"+os.sep+"nervatura.ini"
     self.user_config.write()
   else:
     self.user_config = ConfigObj(home+os.sep+".nervatura"+os.sep+"nervatura.ini")
   
   if self.user_config.has_key("locale")==True:
     self.application.app_settings["locale"] = str(self.user_config["locale"])
   else:
     self.application.app_settings["locale"] = str(self.application.app_config["default"]["locale"])
   self.locale = ConfigObj("locale/"+self.application.app_settings["locale"]+"/"+self.__class__.__name__+".properties")
   self.application.app_settings["codepage"] = locale.getdefaultlocale()[1]
     
   if self.user_config.has_key("url")==True:
     self.application.app_settings["url"] = str(self.user_config["url"])
   else:
     self.application.app_settings["url"] = str(self.application.app_config["connection"]["default_url"])
   
   if self.user_config.has_key("database")==True:
     self.application.app_settings["database"] = str(self.user_config["database"])
   else:
     self.application.app_settings["database"] = ""
   if self.user_config.has_key("username")==True:
     self.application.app_settings["username"] = str(self.user_config["username"])
   else:
     self.application.app_settings["username"] = ""
   self.application.app_settings["password"] = ""
   #self.application.app_settings["usergroup"] = str(self.application.app_config["default"]["usergroup"])
   self.application.app_settings["transfilter"] = int(self.application.app_config["default"]["transfilter"])
   self.application.app_settings["department"] = None
   self.application.app_settings["department_id"] = None
   
   self.application.app_settings["color"] = self.application.app_config["default"]["color"]
   self.application.app_settings["label_color"] = self.application.app_config["default"]["label_color"]
   self.application.app_settings["panel_color"] = self.application.app_config["default"]["panel_color"]
   self.application.app_settings["help_color"] = self.application.app_config["default"]["help_color"]
   self.application.app_settings["close_color"] = self.application.app_config["default"]["close_color"]
   
   self.application.app_settings["os"] = str(wx.GetOsDescription()).split(" ")[0]
   self.application.app_settings["engine"] = "sqlite"
示例#3
0
 def set_locale(self, lc_code):
     if self.application.app_settings[
             "locale"] != lc_code or self.locale == None:
         self.application.app_settings["locale"] = lc_code
         self.locale = ConfigObj("locale/" +
                                 self.application.app_settings["locale"] +
                                 "/" + self.__class__.__name__ +
                                 ".properties")
         self.application.app_settings[
             "codepage"] = locale.getdefaultlocale()[1]
     for label_id in self.locale.keys():
         label = ""
         if self.locale[label_id].__class__.__name__ == "list":
             for lst in self.locale[label_id]:
                 label = label + lst
         else:
             label = self.locale[label_id]
         cl_id = str(label_id).replace("_label",
                                       "").replace("_title", "").replace(
                                           "_headerText", "")
         if cl_id == self.__class__.__name__:
             self.SetTitle(
                 label.decode('utf-8').encode(
                     self.application.app_settings["codepage"]) + " (v" +
                 str(self.application.app_config["application"]
                     ["version"]) + ")")
         if self.__dict__.has_key(cl_id):
             if self.__dict__[cl_id].__class__.__name__ == "StaticText":
                 self.__dict__[cl_id].SetLabel(
                     label.decode('utf-8').encode(
                         self.application.app_settings["codepage"]))
             elif self.__dict__[cl_id].__class__.__name__ == "Button":
                 self.__dict__[cl_id].SetLabel(
                     self.__dict__[cl_id].keycode + " " +
                     label.decode('utf-8').encode(
                         self.application.app_settings["codepage"]))
             else:
                 pass
示例#4
0
 def set_locale(self, lc_code):
   if self.application.app_settings["locale"]!=lc_code or self.locale==None:
     self.application.app_settings["locale"] = lc_code
     self.locale = ConfigObj("locale/"+self.application.app_settings["locale"]+"/"+self.__class__.__name__+".properties")
     self.application.app_settings["codepage"] = locale.getdefaultlocale()[1]
   for label_id in self.locale.keys():
     label = ""
     if self.locale[label_id].__class__.__name__ == "list":
       for lst in self.locale[label_id]:
         label = label + lst
     else:
       label = self.locale[label_id]
     cl_id = str(label_id).replace("_label", "").replace("_title", "").replace("_headerText", "")
     if cl_id == self.__class__.__name__:
       self.SetTitle(label.decode('utf-8').encode(self.application.app_settings["codepage"])+" (v"+str(self.application.app_config["application"]["version"])+")")
     if self.__dict__.has_key(cl_id):
       if self.__dict__[cl_id].__class__.__name__=="StaticText":
         self.__dict__[cl_id].SetLabel(label.decode('utf-8').encode(self.application.app_settings["codepage"]))
       elif self.__dict__[cl_id].__class__.__name__=="Button":
         self.__dict__[cl_id].SetLabel(self.__dict__[cl_id].keycode+" "+label.decode('utf-8').encode(self.application.app_settings["codepage"]))
       else:
         pass
示例#5
0
class fChildFrame(wx.aui.AuiMDIChildFrame):
  def __init__(self, parent=None):
    wx.aui.AuiMDIChildFrame. __init__(self, parent, -1, "")
    self.parent = parent
    self.dirty = False
    self.fBrowser = None
    if parent!=None:
      self.locale = ConfigObj("locale/"+self.parent.application.app_settings["locale"]+"/"+self.__class__.__name__+".properties")
    #self.ds = None
    self.SetExtraStyle(wx.WS_EX_VALIDATE_RECURSIVELY)
    
  def getLocale(self, key):
    locStr = self.locale[key]
    if locStr.__class__.__name__ == "list":
      locStr_=""
      for lst in locStr:
        if locStr_!="":
          locStr_ = locStr_ +", "
        locStr_ = locStr_ + lst
      return locStr_.decode('utf-8').encode(self.parent.application.app_settings["codepage"])
    else:
      return locStr.decode('utf-8').encode(self.parent.application.app_settings["codepage"])
              
  def setLocale(self):
    for label_id in self.locale.keys():
      label = ""
      if self.locale[label_id].__class__.__name__ == "list":
        for lst in self.locale[label_id]:
          if label!="":
            label = label +", "
          label = label + lst
      else:
        label = self.locale[label_id]
      cl_id = str(label_id).replace("_label", "").replace("_title", "").replace("_headerText", "").replace("_toolTip", "")
      if self.__dict__.has_key(cl_id):
        if str(label_id).endswith("toolTip"):
          self.__dict__[cl_id].SetToolTip(wx.ToolTip(label.decode('utf-8').encode(self.parent.application.app_settings["codepage"])))
          continue
        if self.__dict__[cl_id].__class__.__name__=="StaticText" or self.__dict__[cl_id].__class__.__name__=="CheckBox" or \
          self.__dict__[cl_id].__class__.__name__=="HyperlinkCtrl" or self.__dict__[cl_id].__class__.__name__=="RadioButton":
          self.__dict__[cl_id].SetLabel(label.decode('utf-8').encode(self.parent.application.app_settings["codepage"]))
          continue
        if self.__dict__[cl_id].__class__.__name__=="Button":
          self.__dict__[cl_id].SetLabel(self.__dict__[cl_id].keycode+" "+label.decode('utf-8').encode(self.parent.application.app_settings["codepage"]))
          continue
  
  def showHead(self):
    if self.body.GetSizer().IsShown(self.head_panel)==True:
      show_filter=False
    else:
      show_filter=True
    self.head_panel.Show(show_filter)
    wx.CallAfter(self.Layout)
  
  def showPopMenu(self, menu, cmd=None, corY=0):
    pxmenu = self.parent.application.get_resources().LoadMenu(self.__class__.__name__+"_menu_"+menu)
    pmenu = wx.Menu()
    for pxitem in pxmenu.GetMenuItems():
      mid = pxitem.GetItemLabel()
      pitem = wx.MenuItem(pmenu, -1, str(self.getLocale(mid)))
      pitem.SetBitmap(pxitem.GetBitmap())
      pitem.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL))
      self.Bind(wx.EVT_MENU, getattr(self, "_"+mid), pitem)
      pmenu.AppendItem(pitem)
    if cmd!=None:
      pos = cmd.GetPosition()
      pos[1] = pos[1]+cmd.GetSize()[1]+corY
      self.PopupMenu(pmenu, pos)
    else:
      self.PopupMenu(pmenu)
    pmenu.Destroy()
  
  def _field_link(self,  event=None):
    item = self.dg_fields.GetTable().GetRowData(event.GetRow())
    if item.fieldtype=="urlink":
      webbrowser.open(item.value)
      return
    if item.fieldtype=="customer":
      from nwx.view.fCustomer import fCustomer  # @UnresolvedImport
      fCustomer(self.parent, int(item.value)).Show()
      return
    if item.fieldtype in("tool","trans","transitem","transmovement","transpayment","product","project","employee","place"):
      return
              
  def _cmd_help(self, event=None):
    self.parent.getHelp(self.__class__.__name__)
  
  def _cmd_close(self, event=None):
    self.Close()
            
  def _close(self, event):
    if self.dataSet["changeData"]==True:
      dlg = wx.MessageDialog(self, self.getLocale("alert_dirty_ms"), self.getLocale("alert_warning_lb"),
        wx.YES_NO | wx.ICON_INFORMATION | wx.NO_DEFAULT)
      ms = dlg.ShowModal()
      dlg.Destroy()
      if ms==wx.ID_YES:
        event.Skip()
      else:
        return
    else:
      event.Skip()
    if self.fBrowser != None:
      self.fBrowser._closeShowWindow(self)     
示例#6
0
class fLogin(Dialog):
  application = None
  login_ok = False
  user_config = ConfigObj()
  locale = ConfigObj()

  def init_config(self):
    home = os.getenv('USERPROFILE') or os.getenv('HOME')
    if os.path.exists(home+os.sep+".nervatura"+os.sep+"nervatura.ini")==False:
      if os.path.exists(home+os.sep+".nervatura")==False:
        os.makedirs(home+os.sep+".nervatura")
      self.user_config = ConfigObj()
      self.user_config.filename = home+os.sep+".nervatura"+os.sep+"nervatura.ini"
      self.user_config.write()
    else:
      self.user_config = ConfigObj(home+os.sep+".nervatura"+os.sep+"nervatura.ini")
    
    if self.user_config.has_key("locale")==True:
      self.application.app_settings["locale"] = str(self.user_config["locale"])
    else:
      self.application.app_settings["locale"] = str(self.application.app_config["default"]["locale"])
    self.locale = ConfigObj("locale/"+self.application.app_settings["locale"]+"/"+self.__class__.__name__+".properties")
    self.application.app_settings["codepage"] = locale.getdefaultlocale()[1]
      
    if self.user_config.has_key("url")==True:
      self.application.app_settings["url"] = str(self.user_config["url"])
    else:
      self.application.app_settings["url"] = str(self.application.app_config["connection"]["default_url"])
    
    if self.user_config.has_key("database")==True:
      self.application.app_settings["database"] = str(self.user_config["database"])
    else:
      self.application.app_settings["database"] = ""
    if self.user_config.has_key("username")==True:
      self.application.app_settings["username"] = str(self.user_config["username"])
    else:
      self.application.app_settings["username"] = ""
    self.application.app_settings["password"] = ""
    #self.application.app_settings["usergroup"] = str(self.application.app_config["default"]["usergroup"])
    self.application.app_settings["transfilter"] = int(self.application.app_config["default"]["transfilter"])
    self.application.app_settings["department"] = None
    self.application.app_settings["department_id"] = None
    
    self.application.app_settings["color"] = self.application.app_config["default"]["color"]
    self.application.app_settings["label_color"] = self.application.app_config["default"]["label_color"]
    self.application.app_settings["panel_color"] = self.application.app_config["default"]["panel_color"]
    self.application.app_settings["help_color"] = self.application.app_config["default"]["help_color"]
    self.application.app_settings["close_color"] = self.application.app_config["default"]["close_color"]
    
    self.application.app_settings["os"] = str(wx.GetOsDescription()).split(" ")[0]
    self.application.app_settings["engine"] = "sqlite"
      
  def __init__(self, app, parent = None):
    self.application = app
    
    self.init_config()
    Dialog.__init__(self, app.get_resources().LoadDialog(parent, self.__class__.__name__))
    #self.SetBackgroundColour(self.application.app_settings["panel_color"])
    #xrc.XRCCTRL(self, 'panel_body').SetBackgroundColour(self.application.app_settings["panel_color"])    
    self.Fit()
    self.SetAutoLayout(True)
    
    self.lb_database = xrc.XRCCTRL(self, 'lb_database')
    xrc.XRCCTRL(self, 'panel_database').SetBackgroundColour(self.application.app_settings["label_color"])
    self.lb_database.SetForegroundColour(self.application.app_settings["color"])
    self.tb_database = xrc.XRCCTRL(self, 'tb_database')
    self.tb_database.name = "database"
    self.tb_database.SetValue(self.application.app_settings["database"])
    self.tb_database.Bind(wx.EVT_TEXT, self.onTextChange)
    self.tb_database.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
    
    self.lb_username = xrc.XRCCTRL(self, 'lb_username')
    xrc.XRCCTRL(self, 'panel_username').SetBackgroundColour(self.application.app_settings["label_color"])
    self.lb_username.SetForegroundColour(self.application.app_settings["color"])
    self.tb_username = xrc.XRCCTRL(self, 'tb_username')
    self.tb_username.name = "username"
    self.tb_username.SetValue(self.application.app_settings["username"])
    self.tb_username.Bind(wx.EVT_TEXT, self.onTextChange)
    self.tb_username.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
    
    self.lb_password = xrc.XRCCTRL(self, 'lb_password')
    xrc.XRCCTRL(self, 'panel_password').SetBackgroundColour(self.application.app_settings["label_color"])
    self.lb_password.SetForegroundColour(self.application.app_settings["color"])
    self.tb_password = xrc.XRCCTRL(self, 'tb_password')
    self.tb_password.name = "password"
    self.tb_password.SetValue(self.application.app_settings["password"])
    self.tb_password.Bind(wx.EVT_TEXT, self.onTextChange)
    self.tb_password.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
    self.tb_password.SetFocus()    
    
    self.lb_language = xrc.XRCCTRL(self, 'lb_language')
    xrc.XRCCTRL(self, 'panel_language').SetBackgroundColour(self.application.app_settings["label_color"])
    self.lb_language.SetForegroundColour(self.application.app_settings["color"])
    self.tb_password = xrc.XRCCTRL(self, 'tb_password')
    self.cmb_language = xrc.XRCCTRL(self, 'cmb_language')
    self.cmb_language.name = "locale"
    for lcode in self.application.app_config["locale"].keys():
      self.cmb_language.Append(self.application.app_config["locale"][lcode].decode('utf-8').encode(self.application.app_settings["codepage"]), lcode)
      if str(self.application.app_settings["locale"])==str(lcode):
        self.cmb_language.SetStringSelection(self.application.app_config["locale"][lcode].decode('utf-8').encode(self.application.app_settings["codepage"]))
    self.cmb_language.Bind(wx.EVT_COMBOBOX, self.onSelectionChange)
    self.cmb_language.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
    
    self.lb_url = xrc.XRCCTRL(self, 'lb_url')
    xrc.XRCCTRL(self, 'panel_url').SetBackgroundColour(self.application.app_settings["label_color"])
    self.lb_url.SetForegroundColour(self.application.app_settings["color"])
    self.tb_url = xrc.XRCCTRL(self, 'tb_url')
    self.tb_url.name = "url"
    self.tb_url.SetValue(self.application.app_settings["url"])
    self.tb_url.Bind(wx.EVT_TEXT, self.onTextChange)
    self.tb_url.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
    
    self.cmd_login = xrc.XRCCTRL(self, 'cmd_login')
    self.cmd_login.name = "cmd_login"
    self.cmd_login.keycode = ""
    self.cmd_login.Bind(wx.EVT_BUTTON, self._cmd_login)
    self.cmd_login.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
    
    self.cmd_help = xrc.XRCCTRL(self, 'cmd_help')
    self.cmd_help.SetForegroundColour(self.application.app_settings["help_color"])
    self.cmd_help.name = "cmd_help"
    self.cmd_help.keycode = "[F1]"
    self.cmd_help.Bind(wx.EVT_BUTTON, self._cmd_help)
    self.cmd_help.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
    
    self.cmd_cancel = xrc.XRCCTRL(self, 'cmd_cancel')
    self.cmd_cancel.SetForegroundColour(self.application.app_settings["close_color"])
    self.cmd_cancel.name = "cmd_cancel"
    self.cmd_cancel.keycode = ""
    self.cmd_cancel.Bind(wx.EVT_BUTTON, self._cmd_cancel)
    self.cmd_cancel.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
    
    self.set_locale(self.application.app_settings["locale"])
  
  def set_locale(self, lc_code):
    if self.application.app_settings["locale"]!=lc_code or self.locale==None:
      self.application.app_settings["locale"] = lc_code
      self.locale = ConfigObj("locale/"+self.application.app_settings["locale"]+"/"+self.__class__.__name__+".properties")
      self.application.app_settings["codepage"] = locale.getdefaultlocale()[1]
    for label_id in self.locale.keys():
      label = ""
      if self.locale[label_id].__class__.__name__ == "list":
        for lst in self.locale[label_id]:
          label = label + lst
      else:
        label = self.locale[label_id]
      cl_id = str(label_id).replace("_label", "").replace("_title", "").replace("_headerText", "")
      if cl_id == self.__class__.__name__:
        self.SetTitle(label.decode('utf-8').encode(self.application.app_settings["codepage"])+" (v"+str(self.application.app_config["application"]["version"])+")")
      if self.__dict__.has_key(cl_id):
        if self.__dict__[cl_id].__class__.__name__=="StaticText":
          self.__dict__[cl_id].SetLabel(label.decode('utf-8').encode(self.application.app_settings["codepage"]))
        elif self.__dict__[cl_id].__class__.__name__=="Button":
          self.__dict__[cl_id].SetLabel(self.__dict__[cl_id].keycode+" "+label.decode('utf-8').encode(self.application.app_settings["codepage"]))
        else:
          pass
  
  def OnKeyDown(self, event):
    keycode = event.GetKeyCode()
    if keycode == wx.WXK_F1:
      self.callHelp()
    event.Skip()
  
  def onSelectionChange(self, event):
    if self.application.app_settings[event.GetEventObject().name]!=str(event.GetEventObject().GetClientData(self.cmb_language.GetSelection())):
      self.set_locale(event.GetEventObject().GetClientData(self.cmb_language.GetSelection()))
          
  def onTextChange(self, event):
    if self.application.app_settings[event.GetEventObject().name]!=str(event.GetString()):
      self.application.app_settings[event.GetEventObject().name]=str(event.GetString())
  
  def _cmd_login(self, event=None):
    self.callLogin() 
  def _cmd_help(self, event=None):
    self.callHelp()
  def _cmd_cancel(self, event=None):
    self.Close()
      
  def callLogin(self):
    try:
      conn = npiAdapter(self.application.app_settings["url"]+"/"+
          self.application.app_config["connection"]["npi_service"])
      login = conn.getLogin(self.application.app_settings["database"], 
                            self.application.app_settings["username"], 
                            self.application.app_settings["password"])
      if login=="error":
        return
      elif login["valid"]==True:
        self.user_config["locale"] = self.application.app_settings["locale"]
        self.user_config["url"] = self.application.app_settings["url"]
        self.user_config["database"] = self.application.app_settings["database"]
        self.user_config["username"] = self.application.app_settings["username"]
        self.user_config.write()
        self.application.app_settings["employee_id"] = login["employee"]["id"]
        self.application.app_settings["engine"] = login["engine"]
        self.login_ok = True
        self.Close()
      else:
        wx.MessageBox(str(login["message"]), str(self.application.app_config["application"]["name"]), wx.OK | wx.ICON_ERROR)
    except Exception, err:
      wx.MessageBox(str(err), "callLogin", wx.OK | wx.ICON_ERROR)
示例#7
0
    def init_config(self):
        home = os.getenv('USERPROFILE') or os.getenv('HOME')
        if os.path.exists(home + os.sep + ".nervatura" + os.sep +
                          "nervatura.ini") == False:
            if os.path.exists(home + os.sep + ".nervatura") == False:
                os.makedirs(home + os.sep + ".nervatura")
            self.user_config = ConfigObj()
            self.user_config.filename = home + os.sep + ".nervatura" + os.sep + "nervatura.ini"
            self.user_config.write()
        else:
            self.user_config = ConfigObj(home + os.sep + ".nervatura" +
                                         os.sep + "nervatura.ini")

        if self.user_config.has_key("locale") == True:
            self.application.app_settings["locale"] = str(
                self.user_config["locale"])
        else:
            self.application.app_settings["locale"] = str(
                self.application.app_config["default"]["locale"])
        self.locale = ConfigObj("locale/" +
                                self.application.app_settings["locale"] + "/" +
                                self.__class__.__name__ + ".properties")
        self.application.app_settings["codepage"] = locale.getdefaultlocale(
        )[1]

        if self.user_config.has_key("url") == True:
            self.application.app_settings["url"] = str(self.user_config["url"])
        else:
            self.application.app_settings["url"] = str(
                self.application.app_config["connection"]["default_url"])

        if self.user_config.has_key("database") == True:
            self.application.app_settings["database"] = str(
                self.user_config["database"])
        else:
            self.application.app_settings["database"] = ""
        if self.user_config.has_key("username") == True:
            self.application.app_settings["username"] = str(
                self.user_config["username"])
        else:
            self.application.app_settings["username"] = ""
        self.application.app_settings["password"] = ""
        #self.application.app_settings["usergroup"] = str(self.application.app_config["default"]["usergroup"])
        self.application.app_settings["transfilter"] = int(
            self.application.app_config["default"]["transfilter"])
        self.application.app_settings["department"] = None
        self.application.app_settings["department_id"] = None

        self.application.app_settings["color"] = self.application.app_config[
            "default"]["color"]
        self.application.app_settings[
            "label_color"] = self.application.app_config["default"][
                "label_color"]
        self.application.app_settings[
            "panel_color"] = self.application.app_config["default"][
                "panel_color"]
        self.application.app_settings[
            "help_color"] = self.application.app_config["default"][
                "help_color"]
        self.application.app_settings[
            "close_color"] = self.application.app_config["default"][
                "close_color"]

        self.application.app_settings["os"] = str(
            wx.GetOsDescription()).split(" ")[0]
        self.application.app_settings["engine"] = "sqlite"
示例#8
0
class fLogin(Dialog):
    application = None
    login_ok = False
    user_config = ConfigObj()
    locale = ConfigObj()

    def init_config(self):
        home = os.getenv('USERPROFILE') or os.getenv('HOME')
        if os.path.exists(home + os.sep + ".nervatura" + os.sep +
                          "nervatura.ini") == False:
            if os.path.exists(home + os.sep + ".nervatura") == False:
                os.makedirs(home + os.sep + ".nervatura")
            self.user_config = ConfigObj()
            self.user_config.filename = home + os.sep + ".nervatura" + os.sep + "nervatura.ini"
            self.user_config.write()
        else:
            self.user_config = ConfigObj(home + os.sep + ".nervatura" +
                                         os.sep + "nervatura.ini")

        if self.user_config.has_key("locale") == True:
            self.application.app_settings["locale"] = str(
                self.user_config["locale"])
        else:
            self.application.app_settings["locale"] = str(
                self.application.app_config["default"]["locale"])
        self.locale = ConfigObj("locale/" +
                                self.application.app_settings["locale"] + "/" +
                                self.__class__.__name__ + ".properties")
        self.application.app_settings["codepage"] = locale.getdefaultlocale(
        )[1]

        if self.user_config.has_key("url") == True:
            self.application.app_settings["url"] = str(self.user_config["url"])
        else:
            self.application.app_settings["url"] = str(
                self.application.app_config["connection"]["default_url"])

        if self.user_config.has_key("database") == True:
            self.application.app_settings["database"] = str(
                self.user_config["database"])
        else:
            self.application.app_settings["database"] = ""
        if self.user_config.has_key("username") == True:
            self.application.app_settings["username"] = str(
                self.user_config["username"])
        else:
            self.application.app_settings["username"] = ""
        self.application.app_settings["password"] = ""
        #self.application.app_settings["usergroup"] = str(self.application.app_config["default"]["usergroup"])
        self.application.app_settings["transfilter"] = int(
            self.application.app_config["default"]["transfilter"])
        self.application.app_settings["department"] = None
        self.application.app_settings["department_id"] = None

        self.application.app_settings["color"] = self.application.app_config[
            "default"]["color"]
        self.application.app_settings[
            "label_color"] = self.application.app_config["default"][
                "label_color"]
        self.application.app_settings[
            "panel_color"] = self.application.app_config["default"][
                "panel_color"]
        self.application.app_settings[
            "help_color"] = self.application.app_config["default"][
                "help_color"]
        self.application.app_settings[
            "close_color"] = self.application.app_config["default"][
                "close_color"]

        self.application.app_settings["os"] = str(
            wx.GetOsDescription()).split(" ")[0]
        self.application.app_settings["engine"] = "sqlite"

    def __init__(self, app, parent=None):
        self.application = app

        self.init_config()
        Dialog.__init__(
            self,
            app.get_resources().LoadDialog(parent, self.__class__.__name__))
        #self.SetBackgroundColour(self.application.app_settings["panel_color"])
        #xrc.XRCCTRL(self, 'panel_body').SetBackgroundColour(self.application.app_settings["panel_color"])
        self.Fit()
        self.SetAutoLayout(True)

        self.lb_database = xrc.XRCCTRL(self, 'lb_database')
        xrc.XRCCTRL(self, 'panel_database').SetBackgroundColour(
            self.application.app_settings["label_color"])
        self.lb_database.SetForegroundColour(
            self.application.app_settings["color"])
        self.tb_database = xrc.XRCCTRL(self, 'tb_database')
        self.tb_database.name = "database"
        self.tb_database.SetValue(self.application.app_settings["database"])
        self.tb_database.Bind(wx.EVT_TEXT, self.onTextChange)
        self.tb_database.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)

        self.lb_username = xrc.XRCCTRL(self, 'lb_username')
        xrc.XRCCTRL(self, 'panel_username').SetBackgroundColour(
            self.application.app_settings["label_color"])
        self.lb_username.SetForegroundColour(
            self.application.app_settings["color"])
        self.tb_username = xrc.XRCCTRL(self, 'tb_username')
        self.tb_username.name = "username"
        self.tb_username.SetValue(self.application.app_settings["username"])
        self.tb_username.Bind(wx.EVT_TEXT, self.onTextChange)
        self.tb_username.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)

        self.lb_password = xrc.XRCCTRL(self, 'lb_password')
        xrc.XRCCTRL(self, 'panel_password').SetBackgroundColour(
            self.application.app_settings["label_color"])
        self.lb_password.SetForegroundColour(
            self.application.app_settings["color"])
        self.tb_password = xrc.XRCCTRL(self, 'tb_password')
        self.tb_password.name = "password"
        self.tb_password.SetValue(self.application.app_settings["password"])
        self.tb_password.Bind(wx.EVT_TEXT, self.onTextChange)
        self.tb_password.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
        self.tb_password.SetFocus()

        self.lb_language = xrc.XRCCTRL(self, 'lb_language')
        xrc.XRCCTRL(self, 'panel_language').SetBackgroundColour(
            self.application.app_settings["label_color"])
        self.lb_language.SetForegroundColour(
            self.application.app_settings["color"])
        self.tb_password = xrc.XRCCTRL(self, 'tb_password')
        self.cmb_language = xrc.XRCCTRL(self, 'cmb_language')
        self.cmb_language.name = "locale"
        for lcode in self.application.app_config["locale"].keys():
            self.cmb_language.Append(
                self.application.app_config["locale"][lcode].decode(
                    'utf-8').encode(self.application.app_settings["codepage"]),
                lcode)
            if str(self.application.app_settings["locale"]) == str(lcode):
                self.cmb_language.SetStringSelection(
                    self.application.app_config["locale"][lcode].decode(
                        'utf-8').encode(
                            self.application.app_settings["codepage"]))
        self.cmb_language.Bind(wx.EVT_COMBOBOX, self.onSelectionChange)
        self.cmb_language.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)

        self.lb_url = xrc.XRCCTRL(self, 'lb_url')
        xrc.XRCCTRL(self, 'panel_url').SetBackgroundColour(
            self.application.app_settings["label_color"])
        self.lb_url.SetForegroundColour(self.application.app_settings["color"])
        self.tb_url = xrc.XRCCTRL(self, 'tb_url')
        self.tb_url.name = "url"
        self.tb_url.SetValue(self.application.app_settings["url"])
        self.tb_url.Bind(wx.EVT_TEXT, self.onTextChange)
        self.tb_url.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)

        self.cmd_login = xrc.XRCCTRL(self, 'cmd_login')
        self.cmd_login.name = "cmd_login"
        self.cmd_login.keycode = ""
        self.cmd_login.Bind(wx.EVT_BUTTON, self._cmd_login)
        self.cmd_login.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)

        self.cmd_help = xrc.XRCCTRL(self, 'cmd_help')
        self.cmd_help.SetForegroundColour(
            self.application.app_settings["help_color"])
        self.cmd_help.name = "cmd_help"
        self.cmd_help.keycode = "[F1]"
        self.cmd_help.Bind(wx.EVT_BUTTON, self._cmd_help)
        self.cmd_help.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)

        self.cmd_cancel = xrc.XRCCTRL(self, 'cmd_cancel')
        self.cmd_cancel.SetForegroundColour(
            self.application.app_settings["close_color"])
        self.cmd_cancel.name = "cmd_cancel"
        self.cmd_cancel.keycode = ""
        self.cmd_cancel.Bind(wx.EVT_BUTTON, self._cmd_cancel)
        self.cmd_cancel.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)

        self.set_locale(self.application.app_settings["locale"])

    def set_locale(self, lc_code):
        if self.application.app_settings[
                "locale"] != lc_code or self.locale == None:
            self.application.app_settings["locale"] = lc_code
            self.locale = ConfigObj("locale/" +
                                    self.application.app_settings["locale"] +
                                    "/" + self.__class__.__name__ +
                                    ".properties")
            self.application.app_settings[
                "codepage"] = locale.getdefaultlocale()[1]
        for label_id in self.locale.keys():
            label = ""
            if self.locale[label_id].__class__.__name__ == "list":
                for lst in self.locale[label_id]:
                    label = label + lst
            else:
                label = self.locale[label_id]
            cl_id = str(label_id).replace("_label",
                                          "").replace("_title", "").replace(
                                              "_headerText", "")
            if cl_id == self.__class__.__name__:
                self.SetTitle(
                    label.decode('utf-8').encode(
                        self.application.app_settings["codepage"]) + " (v" +
                    str(self.application.app_config["application"]
                        ["version"]) + ")")
            if self.__dict__.has_key(cl_id):
                if self.__dict__[cl_id].__class__.__name__ == "StaticText":
                    self.__dict__[cl_id].SetLabel(
                        label.decode('utf-8').encode(
                            self.application.app_settings["codepage"]))
                elif self.__dict__[cl_id].__class__.__name__ == "Button":
                    self.__dict__[cl_id].SetLabel(
                        self.__dict__[cl_id].keycode + " " +
                        label.decode('utf-8').encode(
                            self.application.app_settings["codepage"]))
                else:
                    pass

    def OnKeyDown(self, event):
        keycode = event.GetKeyCode()
        if keycode == wx.WXK_F1:
            self.callHelp()
        event.Skip()

    def onSelectionChange(self, event):
        if self.application.app_settings[event.GetEventObject().name] != str(
                event.GetEventObject().GetClientData(
                    self.cmb_language.GetSelection())):
            self.set_locale(event.GetEventObject().GetClientData(
                self.cmb_language.GetSelection()))

    def onTextChange(self, event):
        if self.application.app_settings[event.GetEventObject().name] != str(
                event.GetString()):
            self.application.app_settings[event.GetEventObject().name] = str(
                event.GetString())

    def _cmd_login(self, event=None):
        self.callLogin()

    def _cmd_help(self, event=None):
        self.callHelp()

    def _cmd_cancel(self, event=None):
        self.Close()

    def callLogin(self):
        try:
            conn = npiAdapter(
                self.application.app_settings["url"] + "/" +
                self.application.app_config["connection"]["npi_service"])
            login = conn.getLogin(self.application.app_settings["database"],
                                  self.application.app_settings["username"],
                                  self.application.app_settings["password"])
            if login == "error":
                return
            elif login["valid"] == True:
                self.user_config["locale"] = self.application.app_settings[
                    "locale"]
                self.user_config["url"] = self.application.app_settings["url"]
                self.user_config["database"] = self.application.app_settings[
                    "database"]
                self.user_config["username"] = self.application.app_settings[
                    "username"]
                self.user_config.write()
                self.application.app_settings["employee_id"] = login[
                    "employee"]["id"]
                self.application.app_settings["engine"] = login["engine"]
                self.login_ok = True
                self.Close()
            else:
                wx.MessageBox(
                    str(login["message"]),
                    str(self.application.app_config["application"]["name"]),
                    wx.OK | wx.ICON_ERROR)
        except Exception, err:
            wx.MessageBox(str(err), "callLogin", wx.OK | wx.ICON_ERROR)