123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- # -*- coding: utf-8 -*-
- """
- Created on Mon Nov 26 11:57:54 2012
- @author: lucadelu
- """
- import wx
- import os
- from core import globalvar, gcmd
- from grass.script import core as grass
- from rlisetup.functions import retRLiPath
- from rlisetup.wizard import RLIWizard
- class RLiSetupFrame(wx.Frame):
- def __init__(self, parent, giface = None, id=wx.ID_ANY, title=_("GRASS" \
- " GIS Setup for r.li modules"),
- style=wx.DEFAULT_FRAME_STYLE | wx.RESIZE_BORDER, **kwargs):
- ###VARIABLES
- self.parent = parent
- self.cmd = "r.li.setup"
- self.rlipath = retRLiPath()
- self.listfiles = self.ListFiles()
- ###END VARIABLES
- #init of frame
- wx.Frame.__init__(self, parent=parent, id=id, title=title,
- **kwargs)
- self.SetIcon(wx.Icon(os.path.join(globalvar.ETCICONDIR, 'grass.ico'),
- wx.BITMAP_TYPE_ICO))
- self.panel = wx.Panel(parent=self, id=wx.ID_ANY)
- #box for select configuration file
- self.confilesBox = wx.StaticBox(parent=self.panel, id=wx.ID_ANY,
- label=_('Available sampling area configuration files'))
- self.listfileBox = wx.ListBox(parent=self.panel, id=wx.ID_ANY,
- choices=self.listfiles)
- ###BUTTONS
- #definition
- self.btn_close = wx.Button(parent=self.panel, id=wx.ID_CLOSE)
- self.btn_help = wx.Button(parent=self.panel, id=wx.ID_HELP)
- self.btn_remove = wx.Button(parent=self.panel, id=wx.ID_ANY,
- label=_("Remove"))
- self.btn_remove.SetToolTipString(_('Remove a configuration file'))
- self.btn_new = wx.Button(parent=self.panel, id=wx.ID_ANY,
- label=_("Create"))
- self.btn_new.SetToolTipString(_('Create a new configuration file'))
- self.btn_rename = wx.Button(parent=self.panel, id=wx.ID_ANY,
- label=_("Rename"))
- self.btn_rename.SetToolTipString(_('Rename a configuration file'))
- #set action for button
- self.btn_close.Bind(wx.EVT_BUTTON, self.OnClose)
- self.btn_help.Bind(wx.EVT_BUTTON, self.OnHelp)
- self.btn_remove.Bind(wx.EVT_BUTTON, self.OnRemove)
- self.btn_new.Bind(wx.EVT_BUTTON, self.OnNew)
- self.btn_rename.Bind(wx.EVT_BUTTON, self.OnRename)
- self._layout()
- ###END BUTTONS
- ###SIZE FRAME
- self.SetMinSize(self.GetBestSize())
- ##Please check this because without this the size it is not the min
- self.SetClientSize(self.GetBestSize())
- ###END SIZE
- def _layout(self):
- """Set the layout"""
- sizer = wx.BoxSizer(wx.VERTICAL)
- ###CONFILES
- confilesSizer = wx.StaticBoxSizer(self.confilesBox, wx.HORIZONTAL)
- confilesSizer.Add(item=self.listfileBox, proportion=1,
- flag=wx.EXPAND)
- ###END CONFILES
- ###BUTTONS
- buttonSizer = wx.BoxSizer(wx.HORIZONTAL)
- buttonSizer.Add(item=self.btn_new, flag=wx.ALL, border=5)
- buttonSizer.Add(item=self.btn_rename, flag=wx.ALL, border=5)
- buttonSizer.Add(item=self.btn_remove, flag=wx.ALL, border=5)
- buttonSizer.Add(item=self.btn_help, flag=wx.ALL, border=5)
- buttonSizer.Add(item=self.btn_close, flag=wx.ALL, border=5)
- ###END BUTTONS
- #add to sizer
- sizer.Add(item=confilesSizer, proportion=0,
- flag=wx.ALIGN_LEFT | wx.EXPAND | wx.ALL, border=3)
- sizer.Add(item=buttonSizer, proportion=0,
- flag=wx.ALIGN_RIGHT | wx.ALL, border=3)
- #set dimension
- self.panel.SetAutoLayout(True)
- self.panel.SetSizer(sizer)
- sizer.Fit(self.panel)
- self.Layout()
- def ListFiles(self):
- """!Check the configuration files inside the path"""
- # list of configuration file
- listfiles = []
- #return all the configuration files in self.rlipath, check if there are
- #link or directory and doesn't add them
- for l in os.listdir(self.rlipath):
- if os.path.isfile(os.path.join(self.rlipath, l)):
- listfiles.append(l)
- return listfiles
- def OnClose(self, event):
- """!Close window"""
- self.Destroy()
- def OnHelp(self, event):
- """!Launches help"""
- gcmd.RunCommand('g.manual', parent = self, entry = 'wxGUI.rlisetup')
- def OnRemove(self, event):
- """!Remove configuration file from path and update the list"""
- confile = self.listfiles[self.listfileBox.GetSelections()[0]]
- self.listfileBox.Delete(self.listfileBox.GetSelections()[0])
- grass.try_remove(os.path.join(self.rlipath, confile))
- self.listfiles = self.ListFiles()
- return
- def OnNew(self, event):
- """!Remove configuration file from path and update the list"""
- RLIWizard(self)
- self.listfiles = self.ListFiles()
- self.listfileBox.Clear()
- self.listfileBox.Set(self.listfiles)
- def OnRename(self, event):
- """!Rename an existing configuration file"""
- try:
- confile = self.listfiles[self.listfileBox.GetSelections()[0]]
- except:
- gcmd.GMessage(parent=self,
- message=_("You have to select a configuration file"))
- return
- dlg = wx.TextEntryDialog(parent=self.parent,
- message=_('Set te new name for %s " \
- "configuration file') % confile,
- caption=_('Rename configuration file'))
- if dlg.ShowModal() == wx.ID_OK:
- res = dlg.GetValue()
- newname = "%s%s%s" % (self.rlipath, os.sep, res)
- os.rename(os.path.join(self.rlipath, confile), newname)
- self.listfiles = self.ListFiles()
- self.listfileBox.Clear()
- self.listfileBox.Set(self.listfiles)
|