Changeset 357

Show
Ignore:
Timestamp:
09/10/07 15:25:52 (6 years ago)
Author:
bjourne
Message:

Make GtkImageToolDragger take a constructor property so that it
becomes subclassable properly. Add a Python test for it and change the
defs so that a correct Python constructor is generated.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gtkimageview/src/gtkimagetooldragger.c

    r337 r357  
    185185} 
    186186 
     187enum 
     188{ 
     189    PROP_IMAGE_VIEW = 1 
     190}; 
     191 
     192static void 
     193gtk_image_tool_dragger_set_property (GObject      *object, 
     194                                     guint         prop_id, 
     195                                     const GValue *value, 
     196                                     GParamSpec   *pspec) 
     197{ 
     198    GtkImageToolDragger *dragger = GTK_IMAGE_TOOL_DRAGGER (object); 
     199    if (prop_id == PROP_IMAGE_VIEW) 
     200        dragger->view = g_value_get_object (value); 
     201    else 
     202        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); 
     203} 
     204 
    187205static void 
    188206gtk_image_tool_dragger_class_init (GtkImageToolDraggerClass *klass) 
     
    190208    GObjectClass *object_class = (GObjectClass *) klass; 
    191209    object_class->finalize = gtk_image_tool_dragger_finalize; 
     210    object_class->set_property = gtk_image_tool_dragger_set_property; 
     211 
     212    GParamSpec *pspec = 
     213        g_param_spec_object ("view", 
     214                             "Image View", 
     215                             "Image View to navigate", 
     216                             GTK_TYPE_IMAGE_VIEW, 
     217                             G_PARAM_CONSTRUCT_ONLY | G_PARAM_WRITABLE); 
     218    g_object_class_install_property (object_class, PROP_IMAGE_VIEW, pspec); 
    192219} 
    193220 
     
    212239gtk_image_tool_dragger_new (GtkImageView *view) 
    213240{ 
    214     GtkImageToolDragger *dragger = (GtkImageToolDragger *) 
    215         g_object_new (GTK_TYPE_IMAGE_TOOL_DRAGGER, NULL); 
    216     dragger->view = view; 
    217     return GTK_IIMAGE_TOOL (dragger); 
    218 
    219  
     241    g_return_val_if_fail (view, NULL); 
     242    gpointer data = g_object_new (GTK_TYPE_IMAGE_TOOL_DRAGGER, 
     243                                  "view", view, 
     244                                  NULL); 
     245    return GTK_IIMAGE_TOOL (data); 
     246
     247 
  • pygtkimageview/src/gtkimageview.defs

    r355 r357  
    254254  (is-constructor-of "GtkImageToolDragger") 
    255255  (return-type "GtkIImageTool*") 
    256   (parameter
    257     '("GtkImageView*" "view") 
     256  (propertie
     257   '("view") 
    258258  ) 
    259259) 
  • pygtkimageview/tests/test_module.py

    r350 r357  
    8484    check_class(gtkimageview.ImageToolSelector, [gtkimageview.ImageView()]) 
    8585 
     86def test_dragger_subclass_with_signals(): 
     87    ''' 
     88    Ensure that a subclass of ImageToolDragger which adds a signal to 
     89    the class works as expected. 
     90    ''' 
     91    check_class(gtkimageview.ImageToolDragger, [gtkimageview.ImageView()]) 
     92 
    8693def test_min_max_zoom_functions(): 
    8794    '''