Re: [Vala] Why is there no access to instance data defined in constructor?



Sure, just notice the variable "testje". In method on_mouse_movement,
the variable is NOT 12:

using Gtk;
using Goo;
using Gdk;

public class ScrapItem {

    public static bool ItemDrag = false;
    public double testje = 12;

        public ScrapItem (Canvas canvas, string GraphItem, int x, int y, int
height, int width) {


                Gdk.Pixbuf pixbuf;
                CanvasItem root;
                CanvasImage scrap_item;
                CanvasRect scrap_item_border;
                CanvasGroup scrap_item_group;

                pixbuf = new Gdk.Pixbuf.from_file(GraphItem);           

                root = canvas.get_root_item();

        this.testje = 12;
        stdout.printf("%f\n", this.testje);

                scrap_item_group = CanvasGroup.create(root);
                scrap_item = CanvasImage.create(scrap_item_group,pixbuf,x,y);
                
                scrap_item.scale_to_fit = true;
                scrap_item.height = height;
                scrap_item.width = width;
                
                scrap_item_border =
CanvasRect.create(scrap_item_group,scrap_item.x,scrap_item.y,scrap_item.width,scrap_item.height);
                scrap_item_border.stroke_color = "black";

                scrap_item.button_press_event.connect(on_button_pressed);
                scrap_item.button_release_event.connect(on_button_released);
                scrap_item.motion_notify_event.connect(on_mouse_movement);

                scrap_item.enter_notify_event.connect(()
                =>      {
                                scrap_item_border.stroke_color = "grey";
                                return true;                                    
                        });

                scrap_item.leave_notify_event.connect(()
                =>      {
                                scrap_item_border.stroke_color = "black";
                                return true;                                    
                        });
        }

    private bool on_button_pressed(Goo.CanvasItem Item,
Gdk.EventButton EventButton) {
        if (EventButton.button == 1)
            this.ItemDrag = true;
        return true;
    }

    private bool on_button_released(Goo.CanvasItem Item,
Gdk.EventButton EventButton) {
        this.ItemDrag = false;
        return true;
    }

    private bool on_mouse_movement(Goo.CanvasItem Item,
Gdk.EventMotion EventMotion) {

        CanvasItem Group;
        double x = 0, y = 0;

        Group = Item.get_parent();

        if (this.ItemDrag == true) {

//           this.testje is empty !?!
             stdout.printf("%f %f %f - %f %f\n", this.testje, x, y,
EventMotion.x, EventMotion.y);
             Group.translate(EventMotion.x, EventMotion.y);
        }

        x = EventMotion.x;
        y = EventMotion.y;

        return false;
    }

}


public class CanvasSample : Gtk.Window
{
    private const int SIZE = 30;

    public CanvasSample ()
    {
        this.title = "Canvas Vala Demo";
        this.destroy.connect (Gtk.main_quit);
        set_default_size (600, 600);
                                
                var canvas = new Canvas();
                var bg = new ScrapItem(canvas,"/home/fred/dev/vala/training/test3/paper.jpg",0,0,600,600);
                var ScrapItem1 = new
ScrapItem(canvas,"/home/fred/dev/vala/training/test3/photo1.jpg",30,30,300,300);
                var ScrapItem2 = new
ScrapItem(canvas,"/home/fred/dev/vala/training/test3/photo2.jpg",60,60,300,300);

                add (canvas);
    }

    static int main (string[] args)
    {
        Gtk.init (ref args);

        var canvas_sample = new CanvasSample ();
        canvas_sample.show_all();

        Gtk.main ();

        return 0;
    }
}


Greetz,
Fred



2011/7/25 Luca Bruno <lethalman88 gmail com>:
On Mon, Jul 25, 2011 at 01:55:41PM +0200, Fred van Zwieten wrote:
Hi all,

Warning: vala noob.

I have a instance variable and gave it a value in the class constructor.

The variable is accessible in other methods in the same class (i.e.
this.foo) but it doesn't have the value set in the constructor. Why
not? This is also true for initial value assignment (public int foo =
12)

When I set it in another method (not the constructor) all is well.

Hi, can you show a test case please?

--
http://www.debian.org - The Universal Operating System




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]