frame.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. """
  2. @package datacatalog::frame
  3. @brief Data catalog frame class
  4. Classes:
  5. - datacatalog::DataCatalogFrame
  6. (C) 2014-2020 by Tereza Fiedlerova, and the GRASS Development Team
  7. This program is free software under the GNU General Public
  8. License (>=v2). Read the file COPYING that comes with GRASS
  9. for details.
  10. @author Tereza Fiedlerova (original author)
  11. @author Martin Landa <landa.martin gmail.com> (various improvements)
  12. @author Anna Petrasova (simplify)
  13. """
  14. import os
  15. import wx
  16. from core.globalvar import ICONDIR
  17. from datacatalog.catalog import DataCatalog
  18. from gui_core.wrap import Button
  19. class DataCatalogFrame(wx.Frame):
  20. """Frame for testing purposes only."""
  21. def __init__(self, parent, giface=None):
  22. wx.Frame.__init__(self, parent=parent,
  23. title=_('Data Catalog'))
  24. self.SetName("DataCatalog")
  25. self.SetIcon(
  26. wx.Icon(
  27. os.path.join(
  28. ICONDIR,
  29. 'grass.ico'),
  30. wx.BITMAP_TYPE_ICO))
  31. self._giface = giface
  32. self.panel = wx.Panel(self)
  33. self.catalogpanel = DataCatalog(self.panel, giface=giface)
  34. # buttons
  35. self.btnClose = Button(parent=self.panel, id=wx.ID_CLOSE)
  36. self.btnClose.SetToolTip(_("Close GRASS GIS Data Catalog"))
  37. self.btnClose.SetDefault()
  38. # events
  39. self.btnClose.Bind(wx.EVT_BUTTON, lambda evt: self.Close())
  40. self._layout()
  41. self.catalogpanel.LoadItems()
  42. def _layout(self):
  43. sizer = wx.BoxSizer(wx.VERTICAL)
  44. sizer.Add(self.catalogpanel, proportion=1, flag=wx.EXPAND)
  45. btnSizer = wx.BoxSizer(wx.HORIZONTAL)
  46. btnSizer.AddStretchSpacer()
  47. btnSizer.Add(self.btnClose)
  48. sizer.Add(btnSizer, proportion=0,
  49. flag=wx.ALL | wx.EXPAND,
  50. border=5)
  51. self.panel.SetSizer(sizer)
  52. sizer.Fit(self.panel)
  53. self.SetMinSize((450, 500))