<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">#!/usr/bin/env python
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from grass.script.core import *
from vrt_ui import Ui_Form
import os
from OssimPython import *

grassenv = gisenv()
rasterpath = grassenv['GISDBASE']+'/'+grassenv['LOCATION_NAME']+'/'+ \
           grassenv['MAPSET']+'/cellhd/'
vectorpath = grassenv['GISDBASE']+'/'+grassenv['LOCATION_NAME']+'/'+ \
           grassenv['MAPSET']+'/vector/'

apppath = os.path.abspath(os.path.dirname(sys.argv[0]))
vrt = apppath+str('/vrt/')
history = []


class VrtG(QWidget, Ui_Form):
    def __init__(self):
        QWidget.__init__(self)
        self.setupUi(self)
        self.raster = self.RasterList()
        rast = len(self.raster)
        numrow = rast
        self.data.setColumnCount(1)
        self.data.setRowCount(numrow)
        self.data.setEditTriggers(QTableWidget.NoEditTriggers)
        for i in range(rast):
            item = QTableWidgetItem(raster[i])
            item.setTextAlignment(Qt.AlignCenter)
            item.setCheckState(Qt.Unchecked)
            self.data.setItem(i, 0, item)
        #self.connect(self.update, SIGNAL("clicked()"),self.aggiorna)
        self.connect(self.vrt, SIGNAL("clicked()"),self.makerastervrt)
        self.connect(self.img2rr, SIGNAL("clicked()"),self.makerasterpreview)
        #self.connect(self.createhisto, SIGNAL("clicked()"),self.makerasterhisto)
        self.connect(self.imageinfo, SIGNAL("clicked()"),self.ossimimageinfo) 
        self.connect(self.gdalinfo, SIGNAL("clicked()"),self.gdalinfogui) 
        self.connect(self.grassreport, SIGNAL("clicked()"),self.makereport)
        self.connect(self.grassinfo, SIGNAL("clicked()"),self.makeinfo)
        self.connect(self.command, SIGNAL("returnPressed(void)"), self.run_command)
        self.connect(self.hist, SIGNAL("currentIndexChanged(int)"),self.readhistocommand)

    def ossimimageinfo(self):
        raster = self.raster
        rast = len(raster)
        rasterinfo = []
        for i in range(rast):
            cell = self.data.item(i, 0)
            if cell.checkState() == 2:
                input = rasterpath+str(cell.text())
                info = OssimImageInfo(input)
                info = str(info)
                title = '&lt;BR&gt;&lt;BR&gt;############# %s #############&lt;BR&gt;&lt;BR&gt;' % cell.text()
                rasterinfo.append(title) 
                rasterinfo.append(info)
        rasterinfo = str(rasterinfo)
        rasterinfo = rasterinfo.replace('\\n','&lt;BR&gt;')
        rasterinfo = rasterinfo.replace("']",'')
        rasterinfo = rasterinfo.replace("', u'",'')
        rasterinfo = rasterinfo.replace("', '",'') 
        rasterinfo = rasterinfo.replace("[u'",'') 
        self.outimageinfo.setText(rasterinfo)


    def gdalinfogui(self):
        raster = self.raster
        rast = len(raster)
        rasterinfo = []
        for i in range(rast):
            cell = self.data.item(i, 0)
            if cell.checkState() == 2:
                input = rasterpath+str(cell.text())
                info = GdalInfo(input)
                info = str(info)
                title = '&lt;BR&gt;&lt;BR&gt;############# %s #############&lt;BR&gt;&lt;BR&gt;' % cell.text()
                rasterinfo.append(title) 
                rasterinfo.append(info)
        rasterinfo = str(rasterinfo)
        rasterinfo = rasterinfo.replace('\\n','&lt;BR&gt;')
        rasterinfo = rasterinfo.replace("']",'')
        rasterinfo = rasterinfo.replace("', u'",'')
        rasterinfo = rasterinfo.replace("', '",'') 
        rasterinfo = rasterinfo.replace("[u'",'') 
        self.outimageinfo.setText(rasterinfo)



    def Greport(self,input):
        s = read_command("r.report", map=input)
        s = s.replace('\n','&lt;BR&gt;')
        #a = parse_key_val(s, '\\n')
        #a = a.keys()
        #a.sort()
        #a = str(a)
        #a = a.replace("', '",'&lt;BR&gt;')
        #a = a.replace('{','')
        #a = a.replace('}','')
        #a = '&lt;pre&gt;'+a+'&lt;/pre&gt;'
        return s


    def makereport(self):
        raster = self.raster
        rast = len(raster)
        rasterreport = []
        for i in range(rast):
            cell = self.data.item(i, 0)
            if cell.checkState() == 2:
                input = cell.text()
                report = self.Greport(input)
                title = '&lt;BR&gt;&lt;BR&gt;############# %s #############&lt;BR&gt;&lt;BR&gt;' % cell.text()
                rasterreport.append(title) 
                rasterreport.append(report)
        rasterreport = str(rasterreport)
        rasterreport = rasterreport.replace("[u'",'')
        rasterreport = rasterreport.replace("',",'')
        rasterreport = rasterreport.replace('"]','')
        rasterreport = rasterreport.replace("']",'')
        rasterreport = rasterreport.replace('",','')
        rasterreport = rasterreport.replace("u'",'')
        self.outimageinfo.setText(rasterreport)



    def Ginfo(self,input):
        s = read_command("r.info", map=input)
        s = str(s)
        s = s.replace('\n','&lt;BR&gt;')
        #a = parse_key_val(s, '\\n')
        #a = a.keys()
        #for i in range(len(a)):
        #    k = 10+i # please fix-me ... the order is not well sorted
        #    a[i]=str(k)+str(a[i])
        #a.sort()
        #a = str(a)
        #a = a.replace("', '",'&lt;BR&gt;')
        #a = a.replace('{','')
        #a = a.replace('}','')
        #a = '&lt;pre&gt;'+a+'&lt;/pre&gt;'
        return s


    def makeinfo(self):
        raster = self.raster
        rast = len(raster)
        grassinfo = []
        for i in range(rast):
            cell = self.data.item(i, 0)
            if cell.checkState() == 2:
                input = cell.text()
                infograss = self.Ginfo(input)
                title = '&lt;BR&gt;&lt;BR&gt;############# %s #############&lt;BR&gt;&lt;BR&gt;' % cell.text()
                grassinfo.append(title) 
                grassinfo.append(infograss)
        grassinfo = str(grassinfo)
        grassinfo = grassinfo.replace("[u'",'')
        grassinfo = grassinfo.replace("',",'')
        grassinfo = grassinfo.replace('"]','')
        grassinfo = grassinfo.replace("']",'')
        grassinfo = grassinfo.replace('",','')
        grassinfo = grassinfo.replace("u'",'')
        self.outimageinfo.setText(grassinfo)




    def makerastervrt(self):
        raster = self.raster
        rast = len(raster)
        for i in range(rast):
            cell = self.data.item(i, 0)
            if cell.checkState() == 2:
                input = rasterpath+str(cell.text())
                output = vrt+str(cell.text())+'.vrt'
                s = Gdal_TranslateVrt(input, output)
                print 'done' 


    def makerasterpreview(self):
        raster = self.raster
        rast = len(raster)
        for i in range(rast):
            cell = self.data.item(i, 0)
            if cell.checkState() == 2:
                input = rasterpath+str(cell.text())
                output = vrt+str(cell.text())+'.vrt'
                outputpreview = vrt+str(cell.text())+'.ovr'
                s = Gdal_TranslateVrt(input, output)
                p = OssimImg2rr(input, outputpreview)
                print 'done'

    def makerasterhisto(self):
        raster = self.raster
        rast = len(raster)
        for i in range(rast):
            cell = self.data.item(i, 0)
            if cell.checkState() == 2:
                input = rasterpath+str(cell.text())
                output = vrt+str(cell.text())+'.vrt'
                outputpreview = vrt+str(cell.text())+'.ovr'
                outputphisto = vrt+str(cell.text())+'.his'
                s = Gdal_TranslateVrt(input, output)
                p = OssimImg2rr(input, outputpreview)
                h = OssimCreateHisto(input, outputphisto)
                print 'done'
                

    def RasterList(self):
        global raster
        r = list_strings('rast')
        raster = []
        for i in r:
            rname = i.split('@', 2)[0]
            raster.append(rname)
        raster.sort()
        return raster

    def readhistocommand(self,index):
        hcmd = self.hist.itemText(index)
        self.command.setText(hcmd)

    def run_command(self):
        cmd = str(self.command.text())
        history.append(cmd)
        self.hist.addItems(history)
        stdouterr = os.popen4(cmd)[1].read()
        self.outimageinfo.append(stdouterr)
</pre></body></html>