#!/usr/bin/perl -w ############################################################################# ## Name: samples/dialog/dialog.pl ## Purpose: Dialog wxPerl sample ## Author: Mattia Barbon ## Modified by: ## Created: 12/11/2000 ## RCS-ID: $Id: dialog.pl 2057 2007-06-18 23:03:00Z mbarbon $ ## Copyright: (c) 2000, 2004, 2006 Mattia Barbon ## Licence: This program is free software; you can redistribute it and/or ## modify it under the same terms as Perl itself ############################################################################# use Wx; package MyDialog; use strict; use base qw(Wx::Dialog); use Wx::Event qw(EVT_CLOSE EVT_BUTTON); use Wx qw(wxDefaultSize wxDefaultValidator); sub new { my( $class, $label ) = @_; my $this = $class->SUPER::new( undef, -1, $label, [-1, -1], [250, 110] ); $this->SetIcon( Wx::GetWxPerlIcon() ); # absolute positioning is bad my $ct = $this->{celsius} = Wx::TextCtrl->new( $this, -1, '0', [20, 20], [100, -1] ); my $cb = Wx::Button->new( $this, -1, 'To Fahrenheit', [130, 20] ); my $ft = $this->{fahrenheit} = Wx::TextCtrl->new( $this, -1, '32', [20, 50], [100, -1] ); my $fb = Wx::Button->new( $this, -1, 'To Celsius', [130, 50] ); EVT_BUTTON( $this, $cb, \&CelsiusToFahrenheit ); EVT_BUTTON( $this, $fb, \&FahrenheitToCelsius ); EVT_CLOSE( $this, \&OnClose ); return $this; } sub CelsiusToFahrenheit { my( $this, $event ) = @_; $this->fahrenheit->SetValue( ( $this->celsius->GetValue / 100.0 ) * 180 + 32 ); } sub FahrenheitToCelsius { my( $this, $event ) = @_; $this->celsius->SetValue( ( ( $this->fahrenheit->GetValue - 32 ) / 180.0 ) * 100 ); } sub OnClose { my( $this, $event ) = @_; $this->Destroy; } sub fahrenheit { $_[0]->{fahrenheit} } sub celsius { $_[0]->{celsius} } package main; my $app = Wx::SimpleApp->new; my $dialog = MyDialog->new( "wxPerl dialog sample" ); $dialog->Show; $app->MainLoop;