Exemplo n.º 1
0
    def perform_3D_request(self, *args):
        """Tries to open selected files, then creates 3D Layer and switches to 3D mode"""

        # Get Data
        self.drape_dataset = self.raster_open_by_name(self.drape_fileSelectWin.get_filename())
        self.DEM_dataset = self.raster_open_by_name(self.DEM_fileSelectWin.get_filename())
        mesh_lod = self.lod_spin_button.get_value_as_int()
        hscale = float(self.scale_value.get_text())

        if (self.drape_dataset is not None) and (self.DEM_dataset is not None):
            # Get Current View & Prefs
            view = self.view_manager.get_active_view()
            if view is None:
                return

            options = []
            if gview.get_preference('_gcp_warp_mode') is not None \
               and gview.get_preference('_gcp_warp_mode') == 'no':
                options.append(('raw','yes'))

            # Set Current View to 3D Mode
            view.set_mode(gvconst.MODE_3D)
            view.height_scale(hscale)
            options.append(('mesh_lod',str(mesh_lod)))


            # For each band create layer and mesh
            for band_index in range(1,1+min(3,self.drape_dataset.RasterCount)):
                band = self.drape_dataset.GetRasterBand(band_index)
            
                interp = band.GetRasterColorInterpretation()
                
                # Create Drape Raster
                drape_raster = gview.GvRaster(dataset=self.drape_dataset, real=band_index)
                drape_raster.set_name(str(self.drape_fileSelectWin.get_filename()))
                gview.undo_register(drape_raster)

                # Create Drape Raster Layer
                drape_raster_layer = gview.GvRasterLayer(drape_raster, options)

                if interp == gdal.GCI_RedBand:
                    drape_raster_layer.texture_mode_set(1,(1.0,0.0,0.0,1.0))
                    drape_raster_layer.blend_mode_set(gview.RL_BLEND_ADD,1,1)
                elif interp == gdal.GCI_GreenBand:
                    drape_raster_layer.texture_mode_set(1,(0.0,1.0,0.0,1.0))
                    drape_raster_layer.blend_mode_set(gview.RL_BLEND_ADD,1,1)
                elif interp == gdal.GCI_BlueBand:
                    drape_raster_layer.texture_mode_set(1,(0.0,0.0,1.0,1.0))
                    drape_raster_layer.blend_mode_set(gview.RL_BLEND_ADD,1,1)

                # Add to view
                view.add_layer(drape_raster_layer)

                # Create DEM Raster and Add as Height
                DEM_raster = gview.GvRaster(dataset=self.DEM_dataset)
                DEM_raster.set_name(str(self.DEM_fileSelectWin.get_filename()))
                drape_raster_layer.add_height(DEM_raster)

            # Clean up File Dialog Window
            self.file_dialog_3D.destroy()
Exemplo n.º 2
0
    def open_cb(self, *args):
        if gview.get_preference('save_recent_directory') == 'on':
            recent_dir = gview.get_preference('recent_directory')
        else:
            recent_dir = None

        filename = pgufilesel.GetFileName(title = "Select output file", \
  default_filename = recent_dir)
        if filename is None:
            return
        self.open_entry.set_text(filename)
Exemplo n.º 3
0
    def open_cb(self, *args):
        if gview.get_preference('save_recent_directory') == 'on':
	    recent_dir = gview.get_preference('recent_directory')
	else:
	    recent_dir = None
            
        filename = pgufilesel.GetFileName(title = "Select output file", \
		default_filename = recent_dir)
        if filename is None:
            return
        self.open_entry.set_text(filename)
Exemplo n.º 4
0
    def __init__(self, interactive=False, default_ogrfs = None):
        gtk.Window.__init__(self)
        self.set_title('Label Edit Tool')
        gview.app.sel_manager.subscribe( 'active-layer-changed',
                                         self.gui_update )
        gview.app.sel_manager.subscribe( 'selection-changed',
                                         self.gui_update )
        gview.app.sel_manager.subscribe( 'subselection-changed',
                                         self.gui_update )

        if default_ogrfs is None:
            font =pgufont.XLFDFontSpec()
            default_font = gview.get_preference('label-font')
            if default_font is None:
                font.set_font_part('Family', 'Sans')
                font.set_font_part('Size', 12)
            else:
                font.parse_font_spec(default_font)

            color = gview.get_preference('label-color')

            if color is None:
                color = "#88FF88"
            else:
                try:
                    color = color.replace("(", "")
                    color = color.replace(")", "")
                    r, g, b, a = color.split(",")
                    r = float(r)
                    g = float(g)
                    b = float(b)
                    a = float(a)
                    color = ( r, g, b, a )
                    color = gvogrfs.gv_to_ogr_color( color )
                except:
                    color = "#88FF88"
            default_ogrfs = 'LABEL(t:"",f:"%s",c:%s)' % (font, color)


        self.default_ogrfs = default_ogrfs
        self.selected_shape = None
        self.layer = None
        self.interactive = interactive
        self.create_gui()
        self.show()

        self.edit_mode = 0

        self.view = gview.app.view_manager.get_active_view()
        self.key_sig = self.view.connect('key-press-event', self.key_press_cb)
        self.connect('delete-event', self.close)

        self.gui_update()
Exemplo n.º 5
0
    def file_open_by_name(self, filename, *args):
        if filename[len(filename)-4:] == '.shp':
            self.file_open_shape_by_name(filename)
            return
        
        if filename[len(filename)-4:] == '.SHP':
            self.file_open_shape_by_name(filename)
            return
        
        dataset = gdal.Open(filename)
        if dataset is None:
            GtkExtra.message_box('Error',
                      'Unable to open '+filename,
                      ('OK',) )
            return

        self.files.append(dataset)

        for band_index in range(1,1+min(3,dataset.RasterCount)):
            band = dataset.GetRasterBand(band_index)
            
            interp = band.GetRasterColorInterpretation()
            if interp == gdal.GCI_PaletteIndex:
                raster = gview.GvRaster(dataset=dataset,sample=gview.SMSample,
                                        real=band_index)
            else:
                raster = gview.GvRaster(dataset=dataset,real=band_index)
            
            raster.set_name(filename)
            gview.undo_register(raster)
            
            view = self.view_manager.get_active_view()
            if view is None:
                return
            
            options = []
            if gview.get_preference('gcp_warp_mode') is not None \
               and gview.get_preference('gcp_warp_mode') == 'no':
                options.append(('raw','yes'))
                
            raster_layer = gview.GvRasterLayer(raster, options)
                
            if interp == gdal.GCI_RedBand:
                raster_layer.texture_mode_set(1,(1.0,0.0,0.0,1.0))
                raster_layer.blend_mode_set(gview.RL_BLEND_ADD,1,1)
            elif interp == gdal.GCI_GreenBand:
                raster_layer.texture_mode_set(1,(0.0,1.0,0.0,1.0))
                raster_layer.blend_mode_set(gview.RL_BLEND_ADD,1,1)
            elif interp == gdal.GCI_BlueBand:
                raster_layer.texture_mode_set(1,(0.0,0.0,1.0,1.0))
                raster_layer.blend_mode_set(gview.RL_BLEND_ADD,1,1)
                
            view.add_layer(raster_layer)
Exemplo n.º 6
0
    def open_cb(self, *args):
        if gview.get_preference('save_recent_directory') == 'on':
	    recent_dir = gview.get_preference('recent_directory')
	else:
	    recent_dir = None

        filename=pgufilesel.GetFileName(title="Open raw image file",
                                        default_filename=recent_dir)
        if filename is None:
            return
        self.open_entry.set_text(filename)
        self.bytes_label.set_text(str(os.stat(filename)[ST_SIZE]))
Exemplo n.º 7
0
    def open_cb(self, *args):
        if gview.get_preference('save_recent_directory') == 'on':
	    recent_dir = gview.get_preference('recent_directory')
	else:
	    recent_dir = None
            
        filename=pgufilesel.GetFileName(title="Open raw image file",
                                        default_filename=recent_dir)
        if filename is None:
            return
        self.open_entry.set_text(filename)
        self.bytes_label.set_text(str(os.stat(filename)[ST_SIZE]))
Exemplo n.º 8
0
    def __init__(self, interactive=FALSE, default_ogrfs=None):
        GtkWindow.__init__(self)
        self.set_title('Label Edit Tool')
        gview.app.sel_manager.subscribe('active-layer-changed',
                                        self.gui_update)
        gview.app.sel_manager.subscribe('selection-changed', self.gui_update)
        gview.app.sel_manager.subscribe('subselection-changed',
                                        self.gui_update)

        if default_ogrfs is None:
            font = pgufont.XLFDFontSpec()
            default_font = gview.get_preference('label-font')
            if default_font is None:
                font.set_font_part('Family', 'fixed')
            else:
                font.parse_font_spec(default_font)

            color = gview.get_preference('label-color')

            if color is None:
                color = "#88FF88"
            else:
                try:
                    color = string.replace(color, "(", "")
                    color = string.replace(color, ")", "")
                    r, g, b, a = string.split(color, ",")
                    r = float(r)
                    g = float(g)
                    b = float(b)
                    a = float(a)
                    color = (r, g, b, a)
                    color = gvogrfs.gv_to_ogr_color(color)
                except:
                    color = "#88FF88"
            default_ogrfs = 'LABEL(t:"",f:"%s",c:%s)' % (font, color)

        self.default_ogrfs = default_ogrfs
        self.selected_shape = None
        self.layer = None
        self.interactive = interactive
        self.create_gui()
        self.show()

        self.edit_mode = 0

        self.view = gview.app.view_manager.get_active_view()
        self.key_sig = self.view.connect('key-press-event', self.key_press_cb)
        self.connect('delete-event', self.close)

        self.gui_update()
Exemplo n.º 9
0
def tempnam(tdir=None, basename=None, extension=None):
    import os.path
    import gview

    if tdir is None:
        plotfile = gview.get_preference('gvplot_tempfile')
        if plotfile is not None and len(plotfile) > 0:
            if os.path.isdir(plotfile):
                tdir = plotfile
            elif os.path.isdir(os.path.dirname(plotfile)):
                tdir = os.path.dirname(plotfile)
            else:
                tdir = get_tempdir()
        else:
            tdir = get_tempdir()

    if basename is None:
        try:
            pgu.pnm = pgu.pnm + 1
        except:
            pgu.pnm = 1
        basename = 'OBJ_' + str(pgu.pnm)

    if extension is None:
        extension = 'tmp'

    return os.path.join(tdir, basename + '.' + extension)
Exemplo n.º 10
0
def tempnam( tdir = None, basename = None, extension = None ):
    import os.path
    import gview

    if tdir is None:
        plotfile = gview.get_preference('gvplot_tempfile')
        if plotfile is not None and len(plotfile) > 0:
            if os.path.isdir(plotfile):
                tdir = plotfile
            elif os.path.isdir(os.path.dirname(plotfile)):
                tdir = os.path.dirname(plotfile)
            else:
                tdir = get_tempdir()
        else:
            tdir = get_tempdir()

    if basename is None:
        try:
            pgu.pnm = pgu.pnm + 1
        except:
            pgu.pnm = 1
        basename = 'OBJ_' + str(pgu.pnm)

    if extension is None:
        extension = 'tmp'

    return os.path.join(tdir,basename + '.' + extension)        
Exemplo n.º 11
0
def GetBrowseCommand():
    if gview.get_preference('html_browser'):
        return gview.get_preference('html_browser')

    # On NT we don't try to find executables, so that we will default
    # to using gv_launch_url().
    if os.name == "nt":
        return ''

    exe_names = ['netscape', 'mozilla', 'mosaic', 'gnome-help-browser' ]
    for name in exe_names:
        full_path = gvutils.FindExecutable(name)
        if (full_path is not None) and (full_path != ''):
            return full_path

    return ''
Exemplo n.º 12
0
    def __init__(self):
        GtkWindow.__init__(self)

        self.layer = None
        self.teardown_id = None
        self.changed_id = None
        self.resizing = FALSE
        self.resize_count = 0

        self.set_title('Legend: Empty')
        self.set_policy(TRUE, TRUE, FALSE)
        self.set_usize(300, 300)
        self.viewarea = gview.GvViewArea()
        back_color = gview.get_preference('legend-background-color')
        if back_color is None:
            back_color = (1.0, 1.0, 1.0, 1.0)
        else:
            back_color = color_string_to_tuple(back_color)

        self.viewarea.set_background_color(back_color)
        self.shapes = gview.GvShapes()
        self.vlayer = gview.GvShapesLayer(self.shapes)
        self.viewarea.add_layer(self.vlayer)
        self.add(self.viewarea)

        self.connect('delete-event', self.close)
        self.show_all()

        self.viewarea.fit_extents(0, self.viewarea.get_height(),
                                  self.viewarea.get_width(),
                                  -self.viewarea.get_height())

        self.changing_view_state = 0
        self.viewarea.connect('view-state-changed', self.view_state_cb)
Exemplo n.º 13
0
    def __init__(self):
        GtkWindow.__init__(self)

        self.layer = None
        self.teardown_id = None
        self.changed_id = None
        self.resizing = FALSE
        self.resize_count = 0
        
        self.set_title('Legend: Empty')
        self.set_policy(TRUE,TRUE,FALSE)
        self.set_usize(300, 300)
        self.viewarea = gview.GvViewArea()
        back_color = gview.get_preference('legend-background-color')
        if back_color is None:
            back_color = (1.0, 1.0, 1.0, 1.0 )
        else:
            back_color = color_string_to_tuple(back_color)

        self.viewarea.set_background_color( back_color )
        self.shapes = gview.GvShapes()
        self.vlayer = gview.GvShapesLayer(self.shapes)
        self.viewarea.add_layer( self.vlayer )
        self.add( self.viewarea )

        self.connect( 'delete-event', self.close )
        self.show_all()

        self.viewarea.fit_extents(0,
                                  self.viewarea.get_height(),
                                  self.viewarea.get_width(),
                                  -self.viewarea.get_height() )

        self.changing_view_state = 0
        self.viewarea.connect('view-state-changed', self.view_state_cb )
Exemplo n.º 14
0
def GetBrowseCommand():
    if gview.get_preference('html_browser'):
        return gview.get_preference('html_browser')

    # On NT we don't try to find executables, so that we will default
    # to using gv_launch_url().
    if os.name == "nt":
        return ''

    exe_names = ['netscape', 'mozilla', 'mosaic', 'gnome-help-browser' ]
    for name in exe_names:
        full_path = gvutils.FindExecutable(name)
        if (full_path is not None) and (full_path != ''):
            return full_path

    return ''
Exemplo n.º 15
0
    def create_raster_prefs(self):
        
        self.ttp = gtk.GtkVBox(spacing=10)
        self.ttp.set_border_width(10)
        self.notebook.append_page( self.ttp, gtk.GtkLabel('Raster'))

        # Warp with GCPs
        box = gtk.GtkHBox(spacing=3)
        self.ttp.pack_start(box, expand=FALSE)
        box.pack_start(gtk.GtkLabel('Display Georeferenced:'),expand=FALSE)
        
        self.gcp_warp_om = \
               gvutils.GvOptionMenu(('Yes','No'), self.set_gcp_warp_mode)
        box.pack_start(self.gcp_warp_om,expand=FALSE)

        if gview.get_preference('gcp_warp_mode') is not None \
           and gview.get_preference('gcp_warp_mode') == 'no':
            self.gcp_warp_om.set_history(1)
Exemplo n.º 16
0
    def find_gnuplot( self ):
        import gview
        exe = gview.get_preference('gnuplot')
        if exe is not None:
            if os.path.isfile(exe):
                return exe
            else:
                gvutils.warning( 'Disregarding gnuplot preference "%s", executable not found.' % exe )

        exe = gvutils.FindExecutable( 'gnuplot' )
        if exe is None:
            exe = gvutils.FindExecutable( 'pgnuplot.exe' )
        if exe is None:
            exe = gvutils.FindExecutable( 'wgnupl32.exe' )
        if exe is None:
            exe = gvutils.FindExecutable( 'wgnuplot.exe' )

        return exe
Exemplo n.º 17
0
def load_ramp_config_file():
    """
    Reads in ramp files specified in the ramp config file
    in the ramps directory and creates ramps for them

    This allows for ordering of the ramps in the config
    file and for specifying separators
    """
    import os
    import os.path
    import string
    ramps = []
    ramp_dir = gview.get_preference('ramp_directory')
    if ramp_dir is None:
        ramp_dir = os.path.join(gview.home_dir, 'ramps')
    if os.path.isdir(ramp_dir):
        config_path = os.path.join(ramp_dir, 'ramps.cfg')
        if os.path.isfile(config_path):
            #load config file and parse ramps ...
            config = open(config_path)
            lines = config.readlines()
            for line in lines:
                ramp_file = string.strip(line)
                if ramp_file == '<separator>':
                    ramps.append(gtk.GtkHSeparator())
                else:
                    ramp_file = os.path.join(ramp_dir, ramp_file)
                    if os.path.isfile(ramp_file):
                        ramp = ColorRamp()
                        try:
                            ramp.deserialize(ramp_file)
                            ramps.append(ramp)
                            ramp.show()
                        except:
                            print 'invalid ramp file %s' % ramp_file
                    else:
                        print 'not a file (%s)' % ramp_file
        else:
            print 'no ramps.cfg file, loading ramps directly'
            return load_ramps()
    else:
        print 'no default ramp files in ', ramp_dir
    return ramps
Exemplo n.º 18
0
def load_ramp_config_file():
    """
    Reads in ramp files specified in the ramp config file
    in the ramps directory and creates ramps for them

    This allows for ordering of the ramps in the config
    file and for specifying separators
    """
    import os
    import os.path
    import string
    ramps = []
    ramp_dir = gview.get_preference('ramp_directory')
    if ramp_dir is None:
        ramp_dir = os.path.join(gview.home_dir,'ramps')
    if os.path.isdir(ramp_dir):
        config_path = os.path.join(ramp_dir, 'ramps.cfg')
        if os.path.isfile(config_path):
            #load config file and parse ramps ...
            config = open(config_path)
            lines = config.readlines()
            for line in lines:
                ramp_file = string.strip(line)
                if ramp_file == '<separator>':
                    ramps.append(gtk.GtkHSeparator())
                else:
                    ramp_file = os.path.join(ramp_dir, ramp_file)
                    if os.path.isfile(ramp_file):
                        ramp = ColorRamp()
                        try:
                            ramp.deserialize(ramp_file)
                            ramps.append(ramp)
                            ramp.show()
                        except:
                            print 'invalid ramp file %s' % ramp_file
                    else:
                        print 'not a file (%s)' % ramp_file
        else:
            print 'no ramps.cfg file, loading ramps directly'
            return load_ramps()
    else:
        print 'no default ramp files in ', ramp_dir
    return ramps
Exemplo n.º 19
0
    def find_gnuplot(self):
        import gview
        exe = gview.get_preference('gnuplot')
        if exe is not None:
            if os.path.isfile(exe):
                return exe
            else:
                gvutils.warning(
                    'Disregarding gnuplot preference "%s", executable not found.'
                    % exe)

        exe = gvutils.FindExecutable('gnuplot')
        if exe is None:
            exe = gvutils.FindExecutable('pgnuplot.exe')
        if exe is None:
            exe = gvutils.FindExecutable('wgnupl32.exe')
        if exe is None:
            exe = gvutils.FindExecutable('wgnuplot.exe')

        return exe
Exemplo n.º 20
0
def load_ramps():
    """reads in all the ramp files in the ramps directory and creates ramps for them"""
    import os
    import os.path
    ramps = []
    ramp_dir = gview.get_preference('ramp_directory')
    if ramp_dir is None:
        ramp_dir = os.path.join(gview.home_dir,'ramps')
    if os.path.isdir(ramp_dir):
        files = os.listdir(ramp_dir)
        for file in files:
            ramp_file = os.path.join(ramp_dir, file)
            if os.path.isfile(ramp_file):
                ramp = ColorRamp()
                try:
                    ramp.deserialize(ramp_file)
                    ramps.append(ramp)
                except:
                    print 'invalid ramp file %s' % ramp_file
    else:
        print 'no default ramp files in ', ramp_dir
    return ramps
Exemplo n.º 21
0
def load_ramps():
    """reads in all the ramp files in the ramps directory and creates ramps for them"""
    import os
    import os.path
    ramps = []
    ramp_dir = gview.get_preference('ramp_directory')
    if ramp_dir is None:
        ramp_dir = os.path.join(gview.home_dir, 'ramps')
    if os.path.isdir(ramp_dir):
        files = os.listdir(ramp_dir)
        for file in files:
            ramp_file = os.path.join(ramp_dir, file)
            if os.path.isfile(ramp_file):
                ramp = ColorRamp()
                try:
                    ramp.deserialize(ramp_file)
                    ramps.append(ramp)
                except:
                    print 'invalid ramp file %s' % ramp_file
    else:
        print 'no default ramp files in ', ramp_dir
    return ramps
Exemplo n.º 22
0
    def set_ogrfs(self, ogrfs_obj, layer=None, fontlist=None, shape_obj=None):

        if layer is not None:
            self.layer = layer

        if ogrfs_obj is None:
            ogrfs_obj = gvogrfs.OGRFeatureStylePart()
            font = pgufont.XLFDFontSpec()
            default_font = gview.get_preference('default-font')
            if default_font is None:
                font.set_font_part('Family', 'fixed')
            else:
                font.parse_font_spec(default_font)
            if self.enable_offsets:
                dx = self.x_offset.get_value_as_float()
                dy = self.y_offset.get_value_as_float()
            ogrfs_obj.parse('LABEL(t:"",f:"%s",c:#88FF88)' % font)

        self.ogrfs_obj = ogrfs_obj
        self.shape_obj = shape_obj

        self.gui_update()
Exemplo n.º 23
0
    def create_tracking_tool_prefs(self):
        self.ttp = gtk.GtkVBox(spacing=10)
        self.ttp.set_border_width(10)
        self.notebook.append_page( self.ttp, gtk.GtkLabel('Tracking Tool'))

        # Coordinate
        box = gtk.GtkHBox(spacing=3)
        self.ttp.pack_start(box, expand=FALSE)
        box.pack_start(gtk.GtkLabel('Coordinate:'),expand=FALSE)

        self.coord_om = gvutils.GvOptionMenu(
            ('Off','Raster Pixel/Line','Georeferenced','Geodetic (lat/long)'),
            self.set_coordinate_mode)
        box.pack_start(self.coord_om,expand=FALSE)

        if gview.get_preference('_coordinate_mode') is not None:
            if gview.get_preference('_coordinate_mode') == 'raster':
                self.coord_om.set_history(1)
            elif gview.get_preference('_coordinate_mode') == 'georef':
                self.coord_om.set_history(2)
            elif gview.get_preference('_coordinate_mode') == 'latlong':
                self.coord_om.set_history(3)
            else:
                self.coord_om.set_history(0)
        else:
                self.coord_om.set_history(2)
            
        # Raster Value
        box = gtk.GtkHBox(spacing=3)
        self.ttp.pack_start(box, expand=FALSE)
        box.pack_start(gtk.GtkLabel('Pixel Value:'),expand=FALSE)

        self.pixel_mode_om = \
            gvutils.GvOptionMenu(('On','Off'), self.set_pixel_mode)
        box.pack_start(self.pixel_mode_om,expand=FALSE)

        if gview.get_preference('_pixel_mode') is not None \
           and gview.get_preference('_pixel_mode') == 'off':
            self.pixel_mode_om.set_history(1)
        else:
            self.pixel_mode_om.set_history(0)
Exemplo n.º 24
0
    def __init__(self, title=None, cwd=None, dialog_type=FILE_OPEN, filter=None, app=None, multiselect=0):
        gtk.GtkWindow.__init__(self)

        if dialog_type >= FILE_OPEN and dialog_type <= DIRECTORY_SELECT:
            self.dialog_type = dialog_type
        else:
            self.dialog_type = FILE_OPEN

        self.filter = None #current filter
        self.filters = {} #active filter objects
        self.filter_keys = [] #ordered list of the names of the filters
        
        self.file_selection = []
        
        self.multiselect = multiselect
                
        self.set_border_width(5)
        self.set_policy(as=gtk.FALSE, ag=gtk.FALSE, autos=gtk.TRUE)
        self.drives = None

        if title == None:
            if dialog_type == FILE_OPEN:
                title = nls.get('filedlg-title-open-file', 'Open File ...')
            elif dialog_type == FILE_SAVE:
                title = nls.get('filedlg-title-save-file', 'Save File ...')
            elif dialog_type == DIRECTORY_SELECT:
                title = nls.get('filedlg-title-select-directory', 'Select Directory ...')
        self.set_title(title)

        #setup the current working directory
        if cwd is None or not os.path.exists(cwd):
            cwd = gview.get_preference('working-directory')
            if cwd is None:
                cwd = os.getcwd()
        self.cwd = cwd
        
        #widgets
        vbox = gtk.GtkVBox(spacing=5)
        if dialog_type == FILE_OPEN or dialog_type == DIRECTORY_SELECT:
            lbl = gtk.GtkLabel(nls.get('filedlg-label-open-from', 'Open From:'))
        elif dialog_type == FILE_SAVE:
            lbl = gtk.GtkLabel(nls.get('filedlg-label-save-in', 'Save In:'))
        self.opt_menu = gtk.GtkOptionMenu()
        self.opt_menu.set_menu(gtk.GtkMenu())
        hbox = gtk.GtkHBox()
        hbox.pack_start(lbl, expand=gtk.FALSE)
        hbox.pack_start(self.opt_menu)
        vbox.pack_start(hbox, expand = gtk.FALSE)

        self.list_directory = gtk.GtkCList()
        scr_directories = gtk.GtkScrolledWindow()
        scr_directories.add(self.list_directory)
        self.list_directory.connect('button-press-event', self.directory_selected_cb)

        if dialog_type == DIRECTORY_SELECT:
            self.list_files = None
            vbox.pack_start(scr_directories)
        else:
            self.list_files = gtk.GtkCList()
            if self.multiselect:
                self.list_files.set_selection_mode( gtk.SELECTION_EXTENDED )
            scr_files = gtk.GtkScrolledWindow()
            scr_files.add(self.list_files)
            self.list_files.connect('button-press-event', self.file_clicked_cb)
            self.list_files.connect('select-row', self.file_selected_cb )
            self.list_files.connect('unselect-row', self.file_unselected_cb )
            pane = gtk.GtkHPaned()
            scr_directories.set_usize(100, -1)
            scr_files.set_usize(100, -1)
            pane.add1(scr_directories)
            pane.add2(scr_files)
            pane.set_position(200)
            vbox.pack_start(pane)

        widget = None
        if dialog_type == FILE_SAVE:
            self.txt_filename = gtk.GtkEntry()
            widget = self.txt_filename            
        
        elif dialog_type == FILE_OPEN:
            combo = gtk.GtkCombo()
            combo.set_value_in_list(gtk.FALSE, gtk.FALSE)
            combo.disable_activate()
            if app is not None:
                rfl = app.get_rfl()
                rfl.insert(0, '')
                combo.set_popdown_strings( rfl )
            self.txt_filename = combo.entry
            widget = combo
            
        if widget is not None:
            table = gtk.GtkTable(rows=2, cols=2)
            lbl = gtk.GtkLabel(nls.get('filedlg-label-file-name', 'File Name:'))
            self.txt_filename.connect('focus-out-event', self.map_path_cb)
            self.txt_filename.connect('key-press-event', self.map_path_cb)

            table.attach(lbl, 0, 1, 0, 1)
            table.attach(widget, 1, 2, 0, 1)
            lbl = gtk.GtkLabel(nls.get('filedlg-label-filter-extension', 'Filter extension:'))
            self.cmb_filter = pguCombo()
            self.set_filter(filter)
            self.cmb_filter.entry.connect('changed', self.filter_cb)
            table.attach(lbl, 0, 1, 1, 2)
            table.attach(self.cmb_filter, 1, 2, 1, 2)
            vbox.pack_start(table, expand=gtk.FALSE)

        if dialog_type == FILE_SAVE:
            self.ok_button = gtk.GtkButton(nls.get('filedlg-button-ok', 'OK'))
        elif dialog_type == FILE_OPEN:
            self.ok_button = gtk.GtkButton(nls.get('filedlg-button-open', 'Open'))
        elif dialog_type == DIRECTORY_SELECT:
            self.ok_button = gtk.GtkButton(nls.get('filedlg-button-ok', 'OK'))

        self.cancel_button = gtk.GtkButton(nls.get('filedlg-button-cancel', 'Cancel'))

        self.ok_button.connect('clicked', self.remove_grab)
        self.ok_button.connect('clicked', self.update_cwd)
        self.cancel_button.connect('clicked', self.remove_grab)
        btn_box = gtk.GtkHButtonBox()
        btn_box.pack_start(self.ok_button)
        btn_box.pack_start(self.cancel_button)
        vbox.pack_start(btn_box, expand=gtk.FALSE)

        self.add(vbox)
        self.show_all()
        
        #make modal
        gtk.grab_add(self)


        self.ok_button.set_flags(gtk.CAN_DEFAULT)
        self.ok_button.grab_default()

        self.set_usize(400, 400)
        self.menu_update = gtk.FALSE

        while gtk.events_pending():
            gtk.mainiteration(FALSE)

        self.refresh_directory()
        self.connect('delete-event', self.quit)
        self.ok_button.connect('clicked', self.quit)
        self.cancel_button.connect('clicked', self.quit)
        self.publish('quit')
        
        self.add_events(gtk.GDK.KEY_PRESS_MASK)
        self.connect('key-press-event', self.key_press_cb)

        self.result = 'cancel'
Exemplo n.º 25
0
    def __init__(self):
        GtkWindow.__init__(self)
        self.set_title('Layers')
        self.set_usize(250, 500)
        self.set_border_width(3)
        self.set_policy(TRUE, TRUE, FALSE)
        self.connect('delete-event', self.close)
        shell = GtkVBox(spacing=3)
        self.add(shell)
        gvhtml.set_help_topic(self, "layerdlg.html")

        # View chooser menu
        hbox = GtkHBox(spacing=3)
        shell.pack_start(hbox, expand=FALSE)
        hbox.pack_start(GtkLabel('View:'), expand=FALSE, padding=3)
        viewopt = GtkOptionMenu()
        hbox.pack_start(viewopt)
        viewmenu = GtkMenu()
        viewopt.set_menu(viewmenu)

        # Do we want to include a thumbnail?  This is buggy on some platforms.
        if gview.get_preference('layer_thumbnail') is None \
           or gview.get_preference('layer_thumbnail') == 'off':
            self.thumbnail = FALSE
        else:
            self.thumbnail = TRUE

        self.updating = FALSE

        # Layer list
        layerbox = GtkScrolledWindow()
        shell.pack_start(layerbox)
        if self.thumbnail:
            layerlist = GtkCList(cols=3)
        else:
            layerlist = GtkCList(cols=2)

        layerbox.add_with_viewport(layerlist)
        layerlist.set_shadow_type(SHADOW_NONE)
        layerlist.set_selection_mode(SELECTION_SINGLE)
        layerlist.set_row_height(THUMB_H + 4)
        layerlist.set_column_width(0, EYE_W)
        if self.thumbnail:
            layerlist.set_column_width(1, THUMB_W + 4)
        layerlist.connect('select-row', self.layer_selected)
        layerlist.connect('button-press-event', self.list_clicked)

        # Option buttons
        opts = (('new.xpm', 'New layer', self.new_layer),
                ('raise.xpm', 'Raise layer', self.raise_layer),
                ('lower.xpm', 'Lower layer', self.lower_layer),
                ('delete.xpm', 'Delete layer', self.delete_layer))
        butbox = GtkHBox(spacing=1)
        shell.pack_start(butbox, expand=FALSE)
        for opt in opts:
            but = GtkButton()
            butbox.pack_start(but)
            but.add(
                GtkPixmap(self, os.path.join(gview.home_dir, 'pics', opt[0])))
            tooltips.set_tip(but, opt[1])
            but.connect('clicked', opt[2])

        self.connect('realize', self.realize)

        shell.show_all()
        self.viewopt = viewopt
        self.viewmenu = viewmenu
        self.layerlist = layerlist
        self.views = {}
        self.menuitems = {}
        self.selected_view = None

        self.eye_pixmap = \
            GtkPixmap(self,os.path.join(gview.home_dir,'pics','eye.xpm'))

        # Publish signals
        self.publish('active-view-changed')
        self.publish('deleted-layer')
Exemplo n.º 26
0
    def __init__(self):
        gtk.Window.__init__(self)
        self.set_title('Layers')
        self.set_size_request(250, 500)
        self.set_border_width(3)
        self.set_resizable(True)
        self.connect('delete-event',self.close)
        shell = gtk.VBox(spacing=3)
        self.add(shell)
        gvhtml.set_help_topic(self, "layerdlg.html" );

        # View chooser menu
        hbox = gtk.HBox(spacing=3)
        shell.pack_start(hbox, expand=False)
        hbox.pack_start(gtk.Label('View:'), expand=False, padding=3)
        viewopt = gtk.OptionMenu()
        hbox.pack_start(viewopt)
        viewmenu = gtk.Menu()
        viewopt.set_menu(viewmenu)

        # Do we want to include a thumbnail?  This is buggy on some platforms.
        # Note: GTK2 PORT - Thumbnails in tree view not tested
        if gview.get_preference('layer_thumbnail') is None \
           or gview.get_preference('layer_thumbnail') == 'off':
            self.thumbnail = False
        else:
            self.thumbnail = True

        self.updating = False

        #
        # Layer list model
        #
        if self.thumbnail:
           self.list_store = gtk.ListStore( gtk.gdk.Pixbuf, gtk.gdk.Pixbuf, 
                                            gobject.TYPE_STRING)
        else:
           self.list_store = gtk.ListStore( gtk.gdk.Pixbuf, gobject.TYPE_STRING)

        #
        # Layer list view
        #
        self.make_tree_view(self.list_store)

        layerbox = gtk.ScrolledWindow()
        shell.pack_start(layerbox)
        layerbox.add_with_viewport(self.tree_view)

        self.tree_view.get_selection().set_mode(gtk.SELECTION_SINGLE)

        self.tree_view.connect('button-press-event', self.list_pressed)
        self.tree_view.connect('button-release-event', self.list_released)

        # Option buttons
        opts = (('new.xpm', 'New layer', self.new_layer),
                ('raise.xpm', 'Raise layer', self.raise_layer),
                ('lower.xpm', 'Lower layer', self.lower_layer),
                ('delete.xpm','Delete layer', self.delete_layer))
        butbox = gtk.HBox(spacing=1)
        shell.pack_start(butbox, expand=False)
        for opt in opts:
            but = gtk.Button()
            butbox.pack_start(but)

            img = gtk.Image()
            img.set_from_file(os.path.join(gview.home_dir,'pics',opt[0]))
            img.show()
            but.add(img)

            # This works too...
            #pixmap = gtk.gdk.pixmap_create_from_xpm(self.window, None, 
            #    os.path.join(gview.home_dir,'pics',opt[0]))
            #img = gtk.Image()
            #img.set_from_pixmap(pixmap[0], pixmap[1])
            #img.show()
            #but.add(img)

            # tooltips.set_tip(but, opt[1])
            but.connect('clicked', opt[2])

        self.connect('realize', self.realize)

        shell.show_all()
        self.viewopt = viewopt
        self.viewmenu = viewmenu
        self.views = {}
        self.menuitems = {}
        self.selected_view = None

        path =  os.path.join(gview.home_dir,'pics','eye.xpm')
        self.eye_pixbuf = gtk.gdk.pixbuf_new_from_file(path)

        # Publish signals
        self.publish('active-view-changed')
        self.publish('deleted-layer')
Exemplo n.º 27
0
    def __init__(self):
        GtkWindow.__init__(self)
        self.set_title('Layers')
        self.set_usize(250, 500)
        self.set_border_width(3)
        self.set_policy(TRUE,TRUE,FALSE)
        self.connect('delete-event',self.close)
        shell = GtkVBox(spacing=3)
        self.add(shell)
        gvhtml.set_help_topic(self, "layerdlg.html" );

        # View chooser menu
        hbox = GtkHBox(spacing=3)
        shell.pack_start(hbox, expand=FALSE)
        hbox.pack_start(GtkLabel('View:'), expand=FALSE, padding=3)
        viewopt = GtkOptionMenu()
        hbox.pack_start(viewopt)
        viewmenu = GtkMenu()
        viewopt.set_menu(viewmenu)

        # Do we want to include a thumbnail?  This is buggy on some platforms.
        if gview.get_preference('layer_thumbnail') is None \
           or gview.get_preference('layer_thumbnail') == 'off':
            self.thumbnail = FALSE
        else:
            self.thumbnail = TRUE

        self.updating = FALSE

        # Layer list
        layerbox = GtkScrolledWindow()
        shell.pack_start(layerbox)
        if self.thumbnail:
            layerlist = GtkCList(cols=3)
        else:
            layerlist = GtkCList(cols=2)
            
        layerbox.add_with_viewport(layerlist)
        layerlist.set_shadow_type(SHADOW_NONE)
        layerlist.set_selection_mode(SELECTION_SINGLE)
        layerlist.set_row_height(THUMB_H + 4)
        layerlist.set_column_width(0, EYE_W)
        if self.thumbnail:
            layerlist.set_column_width(1, THUMB_W + 4)
        layerlist.connect('select-row', self.layer_selected)
        layerlist.connect('button-press-event', self.list_clicked)

        # Option buttons
        opts = (('new.xpm', 'New layer', self.new_layer),
                ('raise.xpm', 'Raise layer', self.raise_layer),
                ('lower.xpm', 'Lower layer', self.lower_layer),
                ('delete.xpm','Delete layer', self.delete_layer))
        butbox = GtkHBox(spacing=1)
        shell.pack_start(butbox, expand=FALSE)
        for opt in opts:
            but = GtkButton()
            butbox.pack_start(but)        
            but.add(GtkPixmap(self,os.path.join(gview.home_dir,'pics',opt[0])))
            tooltips.set_tip(but, opt[1])
            but.connect('clicked', opt[2])

        self.connect('realize', self.realize)

        shell.show_all()
        self.viewopt = viewopt
        self.viewmenu = viewmenu
        self.layerlist = layerlist
        self.views = {}
        self.menuitems = {}
        self.selected_view = None

        self.eye_pixmap = \
            GtkPixmap(self,os.path.join(gview.home_dir,'pics','eye.xpm'))

        # Publish signals
        self.publish('active-view-changed')
        self.publish('deleted-layer')
Exemplo n.º 28
0
    def __init__(self, view):
        GtkWindow.__init__(self)
        self.set_title('Print')
        self.connect('delete-event', self.close)
        self.view = view

        gvhtml.set_help_topic(self, "gvprint.html")

        self.command = gview.get_preference('print_command')
        if self.command is None:
            self.command = 'lpr'

        self.filename = 'openev.ps'

        cgroup = GtkVBox(spacing=6)
        cgroup.set_border_width(10)
        self.add(cgroup)

        table = GtkTable()
        table.n_columns = 2
        table.n_rows = 4
        cgroup.add(table)

        # Setup Driver Option Menu
        driver_label = GtkLabel('Driver:')
        driver_label.set_alignment(0, 0.5)
        table.attach(driver_label, 0, 1, 0, 1)
        if os.name == "nt":
            self.driver = gvutils.GvOptionMenu(
                ('PostScript', 'TIFF', 'PNG', 'Windows Print Driver', 'GIF'),
                self.update_cb)
        else:
            self.driver = gvutils.GvOptionMenu(
                ('PostScript', 'TIFF', 'PNG', '', 'GIF'), self.update_cb)
        table.attach(self.driver, 1, 2, 0, 1)

        # Setup Device Option Menu
        device_label = GtkLabel('Device:')
        device_label.set_alignment(0, 0.5)
        table.attach(device_label, 0, 1, 1, 2)
        self.device = gvutils.GvOptionMenu(('File', 'Spool to Printer'),
                                           self.device_cb)
        table.attach(self.device, 1, 2, 1, 2)

        # Setup File/Command entry.
        self.file_label = GtkLabel('File:')
        self.file_label.set_alignment(0, 0.5)
        table.attach(self.file_label, 0, 1, 2, 3)
        self.file = GtkEntry(maxlen=40)
        table.attach(self.file, 1, 2, 2, 3)

        # Setup Output Type
        self.output_label = GtkLabel('Output Type:')
        self.output_label.set_alignment(0, 0.5)
        table.attach(self.output_label, 0, 1, 3, 4)
        self.output = gvutils.GvOptionMenu(('Greyscale', 'Color'), None)
        table.attach(self.output, 1, 2, 3, 4)

        # Setup Paper Type
        self.paper_label = GtkLabel('Paper:')
        self.paper_label.set_alignment(0, 0.5)
        table.attach(self.paper_label, 0, 1, 4, 5)
        sizes = []
        for entry in paper_sizes:
            sizes.append(entry[0])
        self.paper = gvutils.GvOptionMenu(sizes, self.update_cb)
        table.attach(self.paper, 1, 2, 4, 5)

        # Setup Scale slider
        self.scale_label = GtkLabel('Scale:')
        self.scale_label.set_alignment(0, 0.5)
        table.attach(self.scale_label, 0, 1, 5, 6)
        self.scale_adjustment = GtkAdjustment(1, 0, 1.25, 0.05, 0.05, 0.05)
        self.scale_slider = GtkHScale(self.scale_adjustment)
        table.attach(self.scale_slider, 1, 2, 5, 6)

        # Setup Resolution spinner
        resolution_label = GtkLabel('Resolution:')
        resolution_label.set_alignment(0, 0.5)
        table.attach(resolution_label, 0, 1, 6, 7)
        self.resolution_adjustment = GtkAdjustment(1, 0, 10, 0.1, 0.1, 0.1)
        self.resolution_spinner = \
            GtkSpinButton(self.resolution_adjustment,climb_rate=0.1,digits=1)
        self.resolution_spinner.connect("changed", self.resolution_cb)
        table.attach(self.resolution_spinner, 1, 2, 6, 7)

        # Setup Size entries
        size_label = GtkLabel('Image size:')
        size_label.set_alignment(0, 0.5)
        table.attach(size_label, 0, 1, 7, 8)
        size_box = GtkHBox(spacing=5)
        self.xsize_entry = GtkEntry()
        self.xsize_entry.connect('activate', self.resolution_cb)
        self.xsize_entry.connect('leave-notify-event', self.resolution_cb)
        size_box.pack_start(self.xsize_entry)
        size_box.pack_start(GtkLabel('x'))
        self.ysize_entry = GtkEntry()
        self.ysize_entry.connect('activate', self.resolution_cb)
        self.ysize_entry.connect('leave-notify-event', self.resolution_cb)
        size_box.pack_start(self.ysize_entry)
        table.attach(size_box, 1, 2, 7, 8)

        # Add Print, and Close button(s)
        btn_box = GtkHBox(spacing=10)

        but = GtkButton('Print')
        but.connect('clicked', self.print_cb)
        btn_box.pack_start(but)

        but = GtkButton('Close')
        but.connect('clicked', self.close)
        btn_box.pack_start(but)

        table.attach(btn_box, 0, 2, 8, 9)

        # Initialize values.
        if gview.get_preference('print_driver') is not None:
            self.driver.set_history(int(gview.get_preference('print_driver')))
        elif os.name == 'nt':
            self.driver.set_history(DR_WINPRINT)

        if gview.get_preference('print_device') is not None:
            self.device.set_history(int(gview.get_preference('print_device')))

        if self.device.get_history() == 0:
            self.set_default_filename()
        else:
            self.file.set_text(self.command)

        if gview.get_preference('print_paper') is not None:
            self.paper.set_history(int(gview.get_preference('print_paper')))

        if gview.get_preference('print_output') is not None:
            self.output.set_history(int(gview.get_preference('print_output')))

        if gview.get_preference('print_resolution') is not None:
            resolution = float(gview.get_preference('print_resolution'))
            self.resolution_adjustment.set_value(resolution)
            width = int(self.view.get_width() * resolution + 0.5)
            height = int(self.view.get_height() * resolution + 0.5)
            self.xsize_entry.set_text(str(width))
            self.ysize_entry.set_text(str(height))

        self.set_paper_size()
        self.scale_adjustment.set_value(1.0)

        # Show
        table.set_row_spacings(6)
        table.show_all()
        self.update_cb()
        cgroup.show()
        self.show()
Exemplo n.º 29
0
    def __init__(self, view):
        GtkWindow.__init__(self)
        self.set_title("Print")
        self.connect("delete-event", self.close)
        self.view = view

        gvhtml.set_help_topic(self, "gvprint.html")

        self.command = gview.get_preference("print_command")
        if self.command is None:
            self.command = "lpr"

        self.filename = "openev.ps"

        cgroup = GtkVBox(spacing=6)
        cgroup.set_border_width(10)
        self.add(cgroup)

        table = GtkTable()
        table.n_columns = 2
        table.n_rows = 4
        cgroup.add(table)

        # Setup Driver Option Menu
        driver_label = GtkLabel("Driver:")
        driver_label.set_alignment(0, 0.5)
        table.attach(driver_label, 0, 1, 0, 1)
        if os.name == "nt":
            self.driver = gvutils.GvOptionMenu(
                ("PostScript", "TIFF", "PNG", "Windows Print Driver", "GIF"), self.update_cb
            )
        else:
            self.driver = gvutils.GvOptionMenu(("PostScript", "TIFF", "PNG", "", "GIF"), self.update_cb)
        table.attach(self.driver, 1, 2, 0, 1)

        # Setup Device Option Menu
        device_label = GtkLabel("Device:")
        device_label.set_alignment(0, 0.5)
        table.attach(device_label, 0, 1, 1, 2)
        self.device = gvutils.GvOptionMenu(("File", "Spool to Printer"), self.device_cb)
        table.attach(self.device, 1, 2, 1, 2)

        # Setup File/Command entry.
        self.file_label = GtkLabel("File:")
        self.file_label.set_alignment(0, 0.5)
        table.attach(self.file_label, 0, 1, 2, 3)
        self.file = GtkEntry(maxlen=40)
        table.attach(self.file, 1, 2, 2, 3)

        # Setup Output Type
        self.output_label = GtkLabel("Output Type:")
        self.output_label.set_alignment(0, 0.5)
        table.attach(self.output_label, 0, 1, 3, 4)
        self.output = gvutils.GvOptionMenu(("Greyscale", "Color"), None)
        table.attach(self.output, 1, 2, 3, 4)

        # Setup Paper Type
        self.paper_label = GtkLabel("Paper:")
        self.paper_label.set_alignment(0, 0.5)
        table.attach(self.paper_label, 0, 1, 4, 5)
        sizes = []
        for entry in paper_sizes:
            sizes.append(entry[0])
        self.paper = gvutils.GvOptionMenu(sizes, self.update_cb)
        table.attach(self.paper, 1, 2, 4, 5)

        # Setup Scale slider
        self.scale_label = GtkLabel("Scale:")
        self.scale_label.set_alignment(0, 0.5)
        table.attach(self.scale_label, 0, 1, 5, 6)
        self.scale_adjustment = GtkAdjustment(1, 0, 1.25, 0.05, 0.05, 0.05)
        self.scale_slider = GtkHScale(self.scale_adjustment)
        table.attach(self.scale_slider, 1, 2, 5, 6)

        # Setup Resolution spinner
        resolution_label = GtkLabel("Resolution:")
        resolution_label.set_alignment(0, 0.5)
        table.attach(resolution_label, 0, 1, 6, 7)
        self.resolution_adjustment = GtkAdjustment(1, 0, 10, 0.1, 0.1, 0.1)
        self.resolution_spinner = GtkSpinButton(self.resolution_adjustment, climb_rate=0.1, digits=1)
        self.resolution_spinner.connect("changed", self.resolution_cb)
        table.attach(self.resolution_spinner, 1, 2, 6, 7)

        # Setup Size entries
        size_label = GtkLabel("Image size:")
        size_label.set_alignment(0, 0.5)
        table.attach(size_label, 0, 1, 7, 8)
        size_box = GtkHBox(spacing=5)
        self.xsize_entry = GtkEntry()
        self.xsize_entry.connect("activate", self.resolution_cb)
        self.xsize_entry.connect("leave-notify-event", self.resolution_cb)
        size_box.pack_start(self.xsize_entry)
        size_box.pack_start(GtkLabel("x"))
        self.ysize_entry = GtkEntry()
        self.ysize_entry.connect("activate", self.resolution_cb)
        self.ysize_entry.connect("leave-notify-event", self.resolution_cb)
        size_box.pack_start(self.ysize_entry)
        table.attach(size_box, 1, 2, 7, 8)

        # Add Print, and Close button(s)
        btn_box = GtkHBox(spacing=10)

        but = GtkButton("Print")
        but.connect("clicked", self.print_cb)
        btn_box.pack_start(but)

        but = GtkButton("Close")
        but.connect("clicked", self.close)
        btn_box.pack_start(but)

        table.attach(btn_box, 0, 2, 8, 9)

        # Initialize values.
        if gview.get_preference("print_driver") is not None:
            self.driver.set_history(int(gview.get_preference("print_driver")))
        elif os.name == "nt":
            self.driver.set_history(DR_WINPRINT)

        if gview.get_preference("print_device") is not None:
            self.device.set_history(int(gview.get_preference("print_device")))

        if self.device.get_history() == 0:
            self.set_default_filename()
        else:
            self.file.set_text(self.command)

        if gview.get_preference("print_paper") is not None:
            self.paper.set_history(int(gview.get_preference("print_paper")))

        if gview.get_preference("print_output") is not None:
            self.output.set_history(int(gview.get_preference("print_output")))

        if gview.get_preference("print_resolution") is not None:
            resolution = float(gview.get_preference("print_resolution"))
            self.resolution_adjustment.set_value(resolution)
            width = int(self.view.get_width() * resolution + 0.5)
            height = int(self.view.get_height() * resolution + 0.5)
            self.xsize_entry.set_text(str(width))
            self.ysize_entry.set_text(str(height))

        self.set_paper_size()
        self.scale_adjustment.set_value(1.0)

        # Show
        table.set_row_spacings(6)
        table.show_all()
        self.update_cb()
        cgroup.show()
        self.show()
Exemplo n.º 30
0
    def prepare_legend(self):
        
        if self.resizing:
            return
      
        if self.layer.get_property('Class_sn') is not None:
            self.Class_sn = int(self.layer.get_property('Class_sn'))

        #remove any existing shapes
        self.shapes.delete_shapes(range(len(self.shapes)))

        samp_x_size = gview.get_preference('legend-sample-x-size')
        if samp_x_size is None:
            samp_x_size = 20
        else:
            samp_x_size = int(samp_x_size)

        samp_y_size = gview.get_preference('legend-sample-y-size')
        if samp_y_size is None:
            samp_y_size = 20
        else:
            samp_y_size = int(samp_y_size)


        title_font = pgufont.XLFDFontSpec()
        font_spec = gview.get_preference('legend-title-font')
        if font_spec is None:
            title_font.set_font_part('Family', 'times')
            title_font.set_font_part('Pixel Size', '20')
        else:
            title_font.parse_font_spec(font_spec)


        title_font_color = gview.get_preference('legend-title-font-color')
        if title_font_color is None:
            title_font_color =  (0.0, 0.0, 0.0, 1.0)
        else:
            title_font_color = color_string_to_tuple(title_font_color)
        title_ogr_color = gv_to_ogr_color(title_font_color)

        label_font = pgufont.XLFDFontSpec()
        font_spec = gview.get_preference('legend-label-font')
        if font_spec is None:
            label_font.set_font_part('Family', 'times')
            label_font.set_font_part('Pixel Size', '14')
        else:
            label_font.parse_font_spec(font_spec)

        label_font_color = gview.get_preference('legend-label-font-color')
        if label_font_color is None:
            label_font_color = (0.0, 0.0, 0.0, 1.0)
        else:
            label_font_color = color_string_to_tuple(label_font_color)
        label_ogr_color = gv_to_ogr_color(label_font_color)

        #handle large fonts in the sample text
        try:
            gdk_font = load_font(str(label_font))
        except:
            # get a default font if preferred one
            # can't be loaded.
            gdk_font = load_font('*')
            
        h = gdk_font.height("Wj")
        samp_offset = max(samp_y_size, h) + 10

        #handle multi-line text for the title.
        try:
            gdk_title_font = load_font(str(title_font))
        except:
            gdk_title_font = load_font('*')

        lines = string.split(self.classification.title, '\\n')

        x_offset = 10  #start title 10 pixels in from left edge
        col_offset = 30 #space columns apart
        y_offset = 35  #start title 35 pixels down from top edge
        title_width = 0
        max_height = 0

        #resize the window appropriately

        title_height = y_offset
        title_width = 0
        for idx in range(len(lines)):
            line = lines[idx]
            title_height = title_height + gdk_title_font.height(line)
            title_width = max(title_width, gdk_title_font.width(line))

        title_height = title_height + 10
        title_width = x_offset + title_width + 10

        cols = int (self.classification.count / 8)
        samps = min( 8, self.classification.count )

        samp_height = samps * (samp_offset) + 10
        samp_width = x_offset

        for i in range( cols + 1):
            idx = 8 * i
            col_width = 0
            while idx < self.classification.count and idx < 8 * (i + 1):
                name = self.classification.name[idx]
                width = samp_x_size + 20 + gdk_font.width(name)
                col_width = max(col_width, width)
                idx = idx + 1
            samp_width = samp_width + col_width + col_offset
        samp_width = samp_width + 10

        total_width = max(title_width, samp_width)
        total_height = title_height + samp_height

        self.resizing = TRUE

        if (self.get_window().width < total_width) or \
           (self.get_window().height < total_height):
            self.resize_count = self.resize_count + 1
            if self.resize_count < 2:
                self.set_usize(total_width, total_height)

        self.resizing = FALSE

        for idx in range(len(lines)):
            line = lines[idx]
            w = gdk_title_font.width(line)
            h = gdk_title_font.height(line)
            title_width = max(title_width, w)

            samp_text = gview.GvShape()
            samp_text.add_node( x_offset, y_offset )
            samp_text.set_property( '_gv_ogrfs',
                                'LABEL(c:' + title_ogr_color + \
                                ',f:"' + str(title_font) + '",' \
                                + 't:"' + line + '")' )

            self.shapes.append(samp_text)
            y_offset = y_offset + h

        if ((len(lines[0]) > 6) and (lines[0][:6] != 'Legend') and
            (lines[0][:6] != 'legend')):
            self.set_title('Legend: ' + lines[0] + '...')
        else:
            self.set_title(lines[0] + '...')
            
        y_offset = y_offset + 10
        title_offset = y_offset

        max_width = 0
        max_height = 0

        for class_id in range(self.classification.count):
            color = self.classification.get_color( class_id )
            symbol = self.classification.get_symbol( class_id )
            scale = self.classification.get_scale( class_id )
            if symbol is not None:
                samp = gview.GvShape( type = gview.GVSHAPE_POINT )
                samp.add_node( x_offset + (samp_x_size/2), 
                               y_offset + (samp_y_size/2) )
                ogrfs_color = '#%02x%02x%02x%02x' % (int(color[0] * 255.999),
                                                 int(color[1] * 255.999),
                                                 int(color[2] * 255.999),
                                                 int(color[3] * 255.999))
                ogrfs = "SYMBOL(id:%s,c:%s,s:%s)" % (symbol, ogrfs_color, 
                                              scale)
                samp.set_property( "_gv_ogrfs", ogrfs )
            else:
                samp = gview.GvShape( type = gview.GVSHAPE_AREA )
                samp.add_node( x_offset, y_offset )
                samp.add_node( x_offset+samp_x_size, y_offset )
                samp.add_node( x_offset+samp_x_size, y_offset+samp_y_size )
                samp.add_node( x_offset, y_offset+samp_y_size )
                samp.add_node( x_offset, y_offset )

                color = '%f %f %f %f' % color

                samp.set_property( '_gv_color', color )
                samp.set_property( '_gv_fill_color', color )

            self.shapes.append( samp )

            name = self.classification.name[class_id]
            samp_text = gview.GvShape()
            samp_text.add_node( x_offset+samp_x_size+10, y_offset + 17 )
            font = str(label_font)
            samp_text.set_property( '_gv_ogrfs',
                      'LABEL(c:' + label_ogr_color + \
                      ',f:"'+font+'",t:"'+name+'")'  )
            self.shapes.append( samp_text )

            this_width = samp_x_size + 20 + gdk_font.width(name)
            if max_width < this_width:
                max_width = this_width

            y_offset = y_offset + samp_offset

            if y_offset+samp_offset > self.viewarea.get_height():
                max_height = max(max_height, y_offset + samp_offset)
                y_offset = title_offset
                x_offset = x_offset + col_offset + max_width
                max_width = 0

        self.vlayer.changed()
Exemplo n.º 31
0
    def gui_update(self, *args):

        self.updating = TRUE

        # Update the field list.
        fnlist = ['disabled']
        if self.layer is not None:
            schema = self.layer.get_parent().get_schema()
            for item in schema:
                fnlist.append(item[0])

        if fnlist != self.old_list:
            self.label_field.set_popdown_strings(fnlist)
            self.old_list = fnlist

        self.label_field.entry.delete_text(0, -1)

        if self.ogrfs_obj is None:
            self.label_field.entry.insert_text('disabled')
            self.label_color.set_color((0.5, 1.0, 0.5, 1.0))
            if self.enable_offsets:
                self.x_offset.set_value(0.0)
                self.y_offset.set_value(0.0)
        else:
            font = pgufont.XLFDFontSpec()
            font_spec = self.ogrfs_obj.parms['f'].value
            if font_spec is not None:
                font.parse_font_spec(font_spec)
            else:
                default_font = gview.get_preference('default-font')
                if default_font is None:
                    font.set_font_part('Family', 'fixed')
                else:
                    font.parse_font_spec(default_font)
            self.label_font.set_font(str(font))

            tparm = self.ogrfs_obj.parms['t']
            if tparm.role == 'field_name':
                self.label_field.entry.insert_text(tparm.value)
                if self.shape_obj is not None:
                    text_value = self.shape_obj.get_property(tparm.value, '')
                else:
                    text_value = ''
            else:
                self.label_field.entry.insert_text('disabled')
                text_value = tparm.value

            color = self.ogrfs_obj.get_color((0.5, 1.0, 0.5, 1.0))
            self.label_color.set_color(color)

            if self.text_entry is not None:
                self.text_entry.set_text(text_value)
                #self.text_entry.set_sensitive(tparm.role != 'field_name')

            if self.enable_offsets:
                try:
                    dx = float(self.ogrfs_obj.get_parm('dx'))
                    self.x_offset.set_value(dx)
                except:
                    dx = None

                if dx is None:
                    dx = 0.0

                try:
                    dy = float(self.ogrfs_obj.get_parm('dy'))
                    self.y_offset.set_value(-dy)
                except:
                    dy = None

                if dy is None:
                    dy = 0.0

                #update the widgets

        self.updating = FALSE
Exemplo n.º 32
0
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
###############################################################################

import gtk
import gview
import os.path
from osgeo import gdal
from numpy import array, add, sqrt
from pgu import ComboText
from gvutils import create_stock_button

hisDir = gview.get_preference('histos_directory')
zooms = [10.0,5.0,2.5,1.0,0.5,0.1,0.05,0.01,0.005,0.001]

class HistogramFrame(gtk.Frame):
    def __init__(self, name, srcIdx, hisSrc, master):
        gtk.Frame.__init__(self, name)
        self.set_name(name)
        self.srcIdx = srcIdx
        self.master = master
        self.updating = True
        self.connect('destroy', self.cleanup)

        self.min = self.master.layer.min_get(srcIdx)
        self.max = self.master.layer.max_get(srcIdx)

        self.createGUI()
Exemplo n.º 33
0
    def prepare_legend(self):

        if self.resizing:
            return

        if self.layer.get_property('Class_sn') is not None:
            self.Class_sn = int(self.layer.get_property('Class_sn'))

        #remove any existing shapes
        self.shapes.delete_shapes(range(len(self.shapes)))

        samp_x_size = gview.get_preference('legend-sample-x-size')
        if samp_x_size is None:
            samp_x_size = 20
        else:
            samp_x_size = int(samp_x_size)

        samp_y_size = gview.get_preference('legend-sample-y-size')
        if samp_y_size is None:
            samp_y_size = 20
        else:
            samp_y_size = int(samp_y_size)

        title_font = pgufont.XLFDFontSpec()
        font_spec = gview.get_preference('legend-title-font')
        if font_spec is None:
            title_font.set_font_part('Family', 'times')
            title_font.set_font_part('Pixel Size', '20')
        else:
            title_font.parse_font_spec(font_spec)

        title_font_color = gview.get_preference('legend-title-font-color')
        if title_font_color is None:
            title_font_color = (0.0, 0.0, 0.0, 1.0)
        else:
            title_font_color = color_string_to_tuple(title_font_color)
        title_ogr_color = gv_to_ogr_color(title_font_color)

        label_font = pgufont.XLFDFontSpec()
        font_spec = gview.get_preference('legend-label-font')
        if font_spec is None:
            label_font.set_font_part('Family', 'times')
            label_font.set_font_part('Pixel Size', '14')
        else:
            label_font.parse_font_spec(font_spec)

        label_font_color = gview.get_preference('legend-label-font-color')
        if label_font_color is None:
            label_font_color = (0.0, 0.0, 0.0, 1.0)
        else:
            label_font_color = color_string_to_tuple(label_font_color)
        label_ogr_color = gv_to_ogr_color(label_font_color)

        #handle large fonts in the sample text
        try:
            gdk_font = load_font(str(label_font))
        except:
            # get a default font if preferred one
            # can't be loaded.
            gdk_font = load_font('*')

        h = gdk_font.height("Wj")
        samp_offset = max(samp_y_size, h) + 10

        #handle multi-line text for the title.
        try:
            gdk_title_font = load_font(str(title_font))
        except:
            gdk_title_font = load_font('*')

        lines = string.split(self.classification.title, '\\n')

        x_offset = 10  #start title 10 pixels in from left edge
        col_offset = 30  #space columns apart
        y_offset = 35  #start title 35 pixels down from top edge
        title_width = 0
        max_height = 0

        #resize the window appropriately

        title_height = y_offset
        title_width = 0
        for idx in range(len(lines)):
            line = lines[idx]
            title_height = title_height + gdk_title_font.height(line)
            title_width = max(title_width, gdk_title_font.width(line))

        title_height = title_height + 10
        title_width = x_offset + title_width + 10

        cols = int(self.classification.count / 8)
        samps = min(8, self.classification.count)

        samp_height = samps * (samp_offset) + 10
        samp_width = x_offset

        for i in range(cols + 1):
            idx = 8 * i
            col_width = 0
            while idx < self.classification.count and idx < 8 * (i + 1):
                name = self.classification.name[idx]
                width = samp_x_size + 20 + gdk_font.width(name)
                col_width = max(col_width, width)
                idx = idx + 1
            samp_width = samp_width + col_width + col_offset
        samp_width = samp_width + 10

        total_width = max(title_width, samp_width)
        total_height = title_height + samp_height

        self.resizing = TRUE

        if (self.get_window().width < total_width) or \
           (self.get_window().height < total_height):
            self.resize_count = self.resize_count + 1
            if self.resize_count < 2:
                self.set_usize(total_width, total_height)

        self.resizing = FALSE

        for idx in range(len(lines)):
            line = lines[idx]
            w = gdk_title_font.width(line)
            h = gdk_title_font.height(line)
            title_width = max(title_width, w)

            samp_text = gview.GvShape()
            samp_text.add_node(x_offset, y_offset)
            samp_text.set_property( '_gv_ogrfs',
                                'LABEL(c:' + title_ogr_color + \
                                ',f:"' + str(title_font) + '",' \
                                + 't:"' + line + '")' )

            self.shapes.append(samp_text)
            y_offset = y_offset + h

        if ((len(lines[0]) > 6) and (lines[0][:6] != 'Legend')
                and (lines[0][:6] != 'legend')):
            self.set_title('Legend: ' + lines[0] + '...')
        else:
            self.set_title(lines[0] + '...')

        y_offset = y_offset + 10
        title_offset = y_offset

        max_width = 0
        max_height = 0

        for class_id in range(self.classification.count):
            color = self.classification.get_color(class_id)
            symbol = self.classification.get_symbol(class_id)
            scale = self.classification.get_scale(class_id)
            if symbol is not None:
                samp = gview.GvShape(type=gview.GVSHAPE_POINT)
                samp.add_node(x_offset + (samp_x_size / 2),
                              y_offset + (samp_y_size / 2))
                ogrfs_color = '#%02x%02x%02x%02x' % (
                    int(color[0] * 255.999), int(color[1] * 255.999),
                    int(color[2] * 255.999), int(color[3] * 255.999))
                ogrfs = "SYMBOL(id:%s,c:%s,s:%s)" % (symbol, ogrfs_color,
                                                     scale)
                samp.set_property("_gv_ogrfs", ogrfs)
            else:
                samp = gview.GvShape(type=gview.GVSHAPE_AREA)
                samp.add_node(x_offset, y_offset)
                samp.add_node(x_offset + samp_x_size, y_offset)
                samp.add_node(x_offset + samp_x_size, y_offset + samp_y_size)
                samp.add_node(x_offset, y_offset + samp_y_size)
                samp.add_node(x_offset, y_offset)

                color = '%f %f %f %f' % color

                samp.set_property('_gv_color', color)
                samp.set_property('_gv_fill_color', color)

            self.shapes.append(samp)

            name = self.classification.name[class_id]
            samp_text = gview.GvShape()
            samp_text.add_node(x_offset + samp_x_size + 10, y_offset + 17)
            font = str(label_font)
            samp_text.set_property( '_gv_ogrfs',
                      'LABEL(c:' + label_ogr_color + \
                      ',f:"'+font+'",t:"'+name+'")'  )
            self.shapes.append(samp_text)

            this_width = samp_x_size + 20 + gdk_font.width(name)
            if max_width < this_width:
                max_width = this_width

            y_offset = y_offset + samp_offset

            if y_offset + samp_offset > self.viewarea.get_height():
                max_height = max(max_height, y_offset + samp_offset)
                y_offset = title_offset
                x_offset = x_offset + col_offset + max_width
                max_width = 0

        self.vlayer.changed()