private void ReloadImage()
    {
        this.imageMatrix = this.image.Pixels;
        this.seamCarver  = null;
        this.Title       = "Algoritmi za slike";
        if (seamCarverThread != null)
        {
            seamCarverThread.Abort();
            seamCarverThread.Join();
        }
        seamCarverThread = new Thread(runSeamCarvingThread);
        seamCarverThread.Start();

        if (radioSeam.Active)
        {
            State = ProgramState.SeamCarving;
        }
        else if (radioStegano.Active)
        {
            State = ProgramState.Steganography;
        }
        else if (radioSifra.Active)
        {
            State = ProgramState.Cryptography;
        }
    }
    private void runSeamCarvingThread()
    {
        // assignment is atomic
        this.Title      = "Algoritmi za slike (Seam carving precompute u toku...)";
        this.seamCarver = new Algorithms.SeamCarving(this.imageMatrix);
        this.Title      = "Algoritmi za slike";

        if (radioHor.Active)
        {
            selektor.Adjustment.Upper = image.Pixbuf.Width;
            selektor.Adjustment.Value = image.Pixbuf.Width;
            lblSeam.Text = "Širina:";
        }
        else
        {
            selektor.Adjustment.Upper = image.Pixbuf.Height;
            selektor.Adjustment.Value = image.Pixbuf.Height;
            lblSeam.Text = "Visina:";
        }

        EnableSeamCarving();
    }