#!/usr/bin/env python
############################################################################
#
# MODULE:    g.gui.iclass
# AUTHOR(S): Anna Petrasova
# PURPOSE:   Example GUI application
# COPYRIGHT: (C) 2012-2014 by the GRASS Development Team
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
############################################################################

#%module
#% description: Example GUI application which displays raster map and further information
#% keyword: example
#% keyword: GUI
#% keyword: raster
#%end
#%option G_OPT_R_INPUT
#% description: Name of raster map to load
#% required: no
#%end

import os
import sys
import wx

import grass.script.core as gcore

if __name__ == '__main__':
    wxbase = os.path.join(os.getenv('GISBASE'), 'etc', 'gui', 'wxpython')
    if wxbase not in sys.path:
        sys.path.append(wxbase)

from core.globalvar import CheckWxVersion
from core.giface import StandaloneGrassInterface
from core.utils import _, GuiModuleMain
from core.settings import UserSettings
from example.frame import ExampleMapFrame


def main():
    options, flags = gcore.parser()
    if options['input']:
        map_name = gcore.find_file(name=options['input'], element='cell')['fullname']
        if not map_name:
            gcore.fatal(_("Raster map <{raster}> not found").format(raster=options['input']))

    # define display driver (avoid 'no graphics device selected' error at start up)
    driver = UserSettings.Get(group='display', key='driver', subkey='type')
    if driver == 'png':
        os.environ['GRASS_RENDER_IMMEDIATE'] = 'png'
    else:
        os.environ['GRASS_RENDER_IMMEDIATE'] = 'cairo'

    # launch application
    app = wx.App()
    if not CheckWxVersion([2, 9]):
        wx.InitAllImageHandlers()

    # show main frame
    giface = StandaloneGrassInterface()
    frame = ExampleMapFrame(parent=None, giface=giface)
    if options['input']:
        giface.WriteLog(_("Loading raster map <{raster}>...").format(raster=map_name))
        frame.SetLayer(map_name)

    frame.Show()
    app.MainLoop()

if __name__ == '__main__':
    GuiModuleMain(main)
