Questions?

Subscribe to out mailing list Google group:

Field Widgets

Each field is represented using a proper gtk widget. Table and Mask need two different objects, a cell renderer for tables and a widget from module sqlkit.widgets.mask.miniwidgets for masks.

Cell renderers and function to represent the data are defined in sqlkit.widgets.table.columns.

Widgets defined in sqlkit.widgets.mask.miniwidgets are just interfaces (or proxies) to other gtk widgets.

Fields Representation

Field or Property Mask Table
Varchar VarcharWidget  
Text TextWidget  
Integer IntegerWidget  
Float FloatWidget  
Numeric DecimalWidget  
Date DateWidget  
Datetime DateTimeWidget  
Datetime w/ TZ DateTimeTZWidget  
Interval IntervalWidget  
Time TimeWidget  
Time w/ timezone TimeTZWidget  
Boolean BooleanWidget  
Boolean with null BooleanNullWidget  
Enum (varchar or integer with render=’enum’) EnumWidget  
Image (varchar with render=’image’) ImageWidget  
ForeignKey ForeignKeyWidget  
relation (o2m/m2m) CollectionWidget. This is just a SqlTable that represents the related field  
class sqlkit.widgets.mask.miniwidgets.Widget(gtkwidget, field)

A proxy between the field and a real gtk widget

__init__(gtkwidget, field)

setup all what is needed in the widget: completion if any and much more for complex cases as CollectionWidget

Parameters:
  • gtkwidget – the gtk widget used to display the data
  • field – the field from sqlkit.fields
set_value(value, shown=False, initial=False)

Set the value in the widget

Parameters:
  • value – the value to be set
  • shown – (boolean) only memaningfull for foreign key. if True, the displayed value is returned also in any case. The difference is only for ForeignKey The displayed value may be used for completion purpouses
  • initial – not used by miniwidget. Needed for compatibility with tablewidgets where it needs to propagate to master’s set_value
get_value(shown=False)

Return the displayed value

Parameter:shown – (boolean) return the shown value or the real value (only meaningful for foreign keys)
set_editable(editable)
set the widget editability if the fields is not editable, the widget cannot be editable
add_completion()

add completion bindings and liststore

This adds completion capabilities to varchar fields and to foreign keys. You can add it to other widgets as well provided you also use completion’s set_values method to provide values to be used in completion.

class sqlkit.widgets.mask.miniwidgets.VarcharWidget(*args)
class sqlkit.widgets.mask.miniwidgets.TextWidget(*args)
class sqlkit.widgets.mask.miniwidgets.IntegerWidget(*args)
class sqlkit.widgets.mask.miniwidgets.FloatWidget(*args)
class sqlkit.widgets.mask.miniwidgets.DecimalWidget(*args)
class sqlkit.widgets.mask.miniwidgets.DateWidget(*args)
A widget that uses DateEdit widget to represent a date. A button that pops a calendar is provided to pick a date
class sqlkit.widgets.mask.miniwidgets.DateTimeWidget(*args)
A timezone unaware widget to set datetime. Very poor widget indeed. Uses DateTimeEdit.
class sqlkit.widgets.mask.miniwidgets.DateTimeTZWidget(*args)
A timezone aware widget to set datetime. Should have a TimeZone chooser but does not yet
class sqlkit.widgets.mask.miniwidgets.IntervalWidget(gtkwidget, field)
class sqlkit.widgets.mask.miniwidgets.TimeWidget(gtkwidget, field)
A timezone unaware widget to set time. Very poor widget indeed.
class sqlkit.widgets.mask.miniwidgets.TimeTZWidget(gtkwidget, field)
A timezone aware widget to set time. Should have a TimeZone chooser but does not yet
class sqlkit.widgets.mask.miniwidgets.BooleanWidget(*args)

Null value is not admittable

A boolean widget can be represented via CheckButton (default) or radio button (just use r=field_name when setting layout). In the latter case you can safely group widgets toghether with normal gtk tools .set.group() to gain a switch between different alternatives:

m.SqlMask(..., layout='r=male, r=female')
m.widgets['r=female'].set_group(m.widgets['r=male'])
class sqlkit.widgets.mask.miniwidgets.BooleanNullWidget(*args)
This gtkwidget is placed in inconsinstent state to represent NULL
class sqlkit.widgets.mask.miniwidgets.EnumWidget(gtkwidget, field)
A proxy for a ComboBox
class sqlkit.widgets.mask.miniwidgets.ImageWidget(gtkwidget, field)
A proxy for Image Viewer to represent fields that hold file name as images
class sqlkit.widgets.mask.miniwidgets.ForeignKeyWidget(*args)

A ComboBoxEntry that displays a represention of the referenced record rather that the referece. I.e.: it shows last_name/first_name of a director rather than the id of the record in the directors’ table.

It also enforces the foreign key constraint. Completion occurs on the foreign (referenced) table according to what is detailed in Completion documentation.

class sqlkit.widgets.mask.miniwidgets.CollectionWidget(*args)

A SqlTable widget that represents a collection of records. This is used to represent a property that in turn holds a relation. E.g.: director.movies movies being a list. The contructor setups a SqlTable that has relationship_leader pointing to the main SqlMask.

It maintains the same session so that a single commit will save parent and children.

Signals

value-set:

a signal emitted each time a value is set (via method Widget.set_value). This signal does not trigger a general change in value as would be for entries a changed signal. Callback function:

value_set_cb(widget, value, initial):
Parameters:
  • widget – the Miniwidget that issued the signal
  • value – the value that is being set
  • initial – (boolean) True if the value is set with initial=True

Colors

You can change default color for not nullable object globally:

from sqlkit.widgets.mask import miniwidgets
miniwidgets.NOT_NULL_COLOR = gtk.gdk.color_parse('green')

You can change the foreground of unsensitive widgets setting NOT_EDITABLE_COLOR

Image Viewer

class sqlkit.layout.image_widget.ImageWidget

Image Widget suitable for basic image viewing. Inherits from VBox

sb(txt)
Push info on Status Bar
scale_pixbuf(pixbuf, w=None, h=None)

scale pixbuf image with the same ratio so that it fits into self.w/self.h

Parameters:
  • pixbuf – a gtk.gdk.Pixbuf object
  • w – the desired width
  • h – the desired height
set_image(image_path)

set rendered image

Parameter:image_path – the path of the image
set_pixbuf(pixbuf)

Set the image via the pixbuf

Parameter:pixbuf – the gtk.gdk.Pixbuf
set_stock(stock_id, size=<enum GTK_ICON_SIZE_DIALOG of type GtkIconSize>)

Set the image via the stock-id

Parameters:
  • stock-id – a stock-id
  • size – the desired image (default: ICON_SIZE_DIALOG)
show_image(action=None)
Open another window that will show the same image with at a different zooming. Setup callback to keep the new window updated by the first one.

Properties

imageViewer has the following properties:

image:the image path currently rendered
scale:possible values AUTOREDUCTION, SCALE. If True the image should autoscale. If value is AUTOREDUCTION the image is never enlarged over its natural size
width:the with of the gtk.Image widget
height:the height og the gtk.Image widget
scale_factor:the current scale factor between render image and thumbnail

Signals

ImageViewer has the following signals:

image-selected:

The image has been selected for upload. Callback:

on_image_selected(widget, filename, new_filename):
Parameters:
  • widget – the widget that issued the signal
  • fielname – the filename that has been selected
  • new_filename – a preferred filename as suggested by the user if any
image-displayed:
 

The image has been displayed

on_image_displayed(widget, pixbuf_full, pixbuf):
Parameters:
  • widget – the widget that issued the signal
  • pixbuf_full – the pixbuf rendered from the file
  • pixbuf – the scaled pixbuf
image-deleted:

the image has been deleted

on_image_deleted(widget, filename):
Parameters:
  • widget – the widget that issued the signal
  • fielname – the filename that has been deleted

DateEdit

class sqlkit.layout.dateedit.DateEdit

basic gtk widget to edit data

set_date(new_date, from_focus_out=False)
new_date is a datetime.date object. Can be set by:
  • do_set_property
  • focus_out_event
  • popup click
class sqlkit.layout.dateedit.DateTimeEdit