RE: wxSashWindows

2009-09-10 Thread Steve Cookson
Hi Johan,

What you say is true, but for me I was looking for a multi-panel fixed form,
However I'm not sure that I chose the right path anymore.  I feel that using

Fixed sizes in sash windows defeats the point of sizers in widgets.  I
wonder
whether I should just have used a GridBagSizer with embedded panels.

I guess I'm not sure that this is right yet.

What do others think?

Regards

Steve


-Original Message-
From: Johan Vromans [mailto:jvrom...@squirrel.nl] 
Sent: 09 September 2009 03:32
To: wxperl-users@perl.org
Subject: Re: wxSashWindows

Steve Cookson steve.cook...@sca-uk.com writes:

 Having spent ages trying to get wxSashWindow to work, I decided to post an

 example on http://wxperl.pvoice.org/w/index.php/SashWindow,

Thanks a lot for that!

It took me some time to find out the fun of the SashWindow. Maybe
making some of the sashes visible would be an improvement?

Also, nothing seem to happen when the sashes are moved.

-- Johan



wxSashWindows

2009-09-08 Thread Steve Cookson
Hi,

Has anyone managed to get wxSashWindows to work?  I managed to find
a version written in wxRuby on google, but it was full of SashLayoutWindows
commands, which don't appear in wxPerl.

I played around with it for a while (scroll down for a working version).

The alternative, if I want to have multiple windows, seems to be multiple 
WindowSplitters?

What do you think? Do you use SashWindows or WindowSplitter?

Regards

Steve

PS Here is some sample code.  

#!/usr/bin/perl -w -- 

use Wx 0.15 qw[:allclasses];
use strict;

package MyFrame;

use Wx qw[:everything];
use base qw(Wx::Frame);
use strict;

sub new {
 my( $self, $parent, $id, $title, $pos, $size, $style, $name ) = @_;
 $parent = undef  unless defined $parent;
 $id = -1 unless defined $id;
 $title  =  unless defined $title;
 $pos= wxDefaultPosition  unless defined $pos;
 $size   = wxDefaultSize  unless defined $size;
 $name   =  unless defined $name;

 $style = wxDEFAULT_FRAME_STYLE 
  unless defined $style;

 $self = $self-SUPER::new( $parent, $id, $title, $pos,
Wx::Size-new(1300,768), $style, $name );

# Create some layout windows

# A red window at the top like a toolbar
 $self-{topwin} = Wx::SashWindow-new($self, -1, [0,0], Wx::Size-new(1000,
30), wxNO_BORDER );
 $self-{topwin}-SetBackgroundColour(Wx::Colour-new(255, 0, 0));
# $self-{topwin}-SetSashVisible(wxSASH_BOTTOM, 1);

# A blue window at the bottom like a statusbar
 $self-{bottomwin} = Wx::SashWindow-new($self, -1, [0,630],
Wx::Size-new(1000, 30),wxNO_BORDER);
 $self-{bottomwin}-SetBackgroundColour(Wx::Colour-new(0, 0, 255));
# $self-{bottomwin}-SetSashVisible(wxSASH_TOP, 1);

# A green window to the left of the client window
 $self-{leftwin1} = Wx::SashWindow-new($self, -1, [0,30],
Wx::Size-new(120, 300),wxNO_BORDER);
 $self-{leftwin1}-SetBackgroundColour(Wx::Colour-new(0, 255, 0));
# $self-{leftwin1}-SetSashVisible(wxSASH_RIGHT, 1);


 $self-{text_window}  = Wx::TextCtrl-new($self-{leftwin1}, -1, ,
wxDefaultPosition,wxDefaultSize,wxSUNKEN_BORDER);
 $self-{text_window}-SetValue(A sub window);

# Another window to the left (turquoise) of the client window
 $self-{leftwin2} = Wx::SashWindow-new($self, -1, [0,330],
Wx::Size-new(120, 300),wxNO_BORDER);
 $self-{leftwin2}-SetBackgroundColour(Wx::Colour-new(0, 255, 255));
# $self-{leftwin2}-SetSashVisible(wxSASH_RIGHT, 1);


# White will occupy the space not used by the Layout Algorithm
 $self-{remaining_space} = Wx::Panel-new($self, -1, [120,30],
Wx::Size-new(880, 600), wxSUNKEN_BORDER);
 $self-{remaining_space}-SetBackgroundColour(Wx::Colour-new(255, 255,
255));

# end wxGlade
 return $self;

}

1;

package main;

unless(caller){
 local *Wx::App::OnInit = sub{1};
 my $app = Wx::App-new();
 Wx::InitAllImageHandlers();

 my $frame_1 = MyFrame-new();

 $app-SetTopWindow($frame_1);
 $frame_1-Show(1);
 $app-MainLoop();
}

 

 

 

 

 
Blank Bkgrd.gif

RE: wxSashWindows

2009-09-08 Thread Steve Cookson
Hi Guys,

Having spent ages trying to get wxSashWindow to work, I decided to post an 
example on http://wxperl.pvoice.org/w/index.php/SashWindow, with apologies 
to the wxPython website I borrowed and mutilated it from. wxSashWindow in
Python 
relies heavily on wxSashLayoutWindow, which is not implemented in wxPerl,
instead 
I have used the position and size parameters in the creator to position the
panes. 
In my actual application, I have created a scrolling body by embedding a 
ScrollingWindow pane within the wxSashWindow. 

I'd be grateful if anyone got the chance to have a look at it and provide
advice and criticism.

Maybe I've misunderstood the whole thing about layout!

Anyhow feedback welcome.

Regards

Steve

PS This is what I posted on the Perl Wiki.

#!/usr/bin/perl -w -- 



use Wx 0.15 qw[:allclasses];

use strict;



package MyFrame;



use Wx qw[:everything];

use base qw(Wx::Frame);

use strict;



sub new {

my( $self, $parent, $id, $title, $pos, $size, $style, $name ) = @_;

$parent = undef  unless defined $parent;

$id = -1 unless defined $id;

$title  =  unless defined $title;

$pos= wxDefaultPosition  unless defined $pos;

$size   = wxDefaultSize  unless defined $size;

$name   =  unless defined $name;



$style = wxDEFAULT_FRAME_STYLE 

unless defined $style;



$self = $self-SUPER::new( $parent, $id, $title, $pos,
Wx::Size-new(1300,768), $style, $name );



# Create some layout windows



# A red window at the top like a toolbar

$self-{topwin} = Wx::SashWindow-new($self, -1, [0,0],
Wx::Size-new(1000, 30), wxNO_BORDER );

$self-{topwin}-SetBackgroundColour(Wx::Colour-new(255, 0, 0));

#   $self-{topwin}-SetSashVisible(wxSASH_BOTTOM, 1);



# A blue window at the bottom like a statusbar

$self-{bottomwin} = Wx::SashWindow-new($self, -1, [0,630],
Wx::Size-new(1000, 30),wxNO_BORDER);

$self-{bottomwin}-SetBackgroundColour(Wx::Colour-new(0, 0, 255));

#   $self-{bottomwin}-SetSashVisible(wxSASH_TOP, 1);



# A green window to the left of the client window

$self-{leftwin1} = Wx::SashWindow-new($self, -1, [0,30],
Wx::Size-new(120, 300),wxNO_BORDER);

$self-{leftwin1}-SetBackgroundColour(Wx::Colour-new(0, 255, 0));

#   $self-{leftwin1}-SetSashVisible(wxSASH_RIGHT, 1);





# Another window to the left (turquoise) of the client window

$self-{leftwin2} = Wx::SashWindow-new($self, -1, [0,330],
Wx::Size-new(120, 300),wxNO_BORDER);

$self-{leftwin2}-SetBackgroundColour(Wx::Colour-new(0, 255,
255));

#   $self-{leftwin2}-SetSashVisible(wxSASH_RIGHT, 1);





# White will occupy the space not used by the Layout Algorithm

$self-{remaining_space} = Wx::Panel-new($self, -1, [120,30],
Wx::Size-new(880, 600), wxSUNKEN_BORDER);

$self-{remaining_space}-SetBackgroundColour(Wx::Colour-new(255,
255, 255));



#

#   Video tab - right-hand pane.

#

$self-{Ctl_Lbl} = Wx::StaticText-new($self-{remaining_space},
wxID_ANY, Label, wxDefaultPosition, wxDefaultSize, );

$self-{Ctl_Ref_0_Txt} = Wx::TextCtrl-new($self-{remaining_space},
wxID_ANY, , wxDefaultPosition, wxDefaultSize, wxTE_READONLY);

$self-{Ctl_Description_Txt} =
Wx::TextCtrl-new($self-{remaining_space}, wxID_ANY, Name,
wxDefaultPosition, wxDefaultSize, wxTE_READONLY);

$self-{Ctl_Change_Btn} = Wx::Button-new($self-{remaining_space},
wxID_ANY, Button);

#

#   Sizers

#

$self-{Ctl_Sizer_1b} = Wx::BoxSizer-new(wxHORIZONTAL);

$self-{Ctl_Sizer_2} = Wx::BoxSizer-new(wxHORIZONTAL);

$self-{remaining_space}-SetSizer($self-{Ctl_Sizer_1b});

$self-{Ctl_Sizer_2}-Add($self-{Ctl_Lbl}, 0, wxALL, 5);

$self-{Ctl_Sizer_2}-Add($self-{Ctl_Ref_0_Txt}, 0, wxALL, 5);

$self-{Ctl_Sizer_2}-Add($self-{Ctl_Description_Txt}, 0, wxALL,
5);

$self-{Ctl_Sizer_2}-Add($self-{Ctl_Change_Btn}, 0, wxALL, 5);

$self-{Ctl_Sizer_1b}-Add($self-{Ctl_Sizer_2}, 1, wxEXPAND, 0);

#   $self-{Ctl_Sizer_1b}-Fit($self);

$self-{Ctl_Sizer_1b}-Layout();

# end wxGlade

return $self;



}



1;



package main;



unless(caller){

local *Wx::App::OnInit = sub{1};

my $app = Wx::App-new();

Wx::InitAllImageHandlers();



my $frame_1 = MyFrame-new();



$app-SetTopWindow($frame_1);

$frame_1-Show(1);

$app-MainLoop();

}




 
Regards

Steve
 

  _  

From: Steve Cookson [mailto:steve.cook...@sca-uk.com] 
Sent: 08 September 2009 14:42
To: wxperl-users@perl.org
Subject: wxSashWindows



Hi,

Has anyone managed to get wxSashWindows to work?  I managed to find
a version written in wxRuby on google, but it was full of SashLayoutWindows
commands, which don't appear in wxPerl.

I played around with it for a while (scroll down for a working version).

The alternative