Moderne Apps in WxPerl



Ähnliche Dokumente
GUI-Applikationen schnell und einfach mit Wx::XRC

WxPerl ohne Hürden. WxPerl. Eine Einleitung für Programmierer.

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Was meinen die Leute eigentlich mit: Grexit?

! " # $ " % & Nicki Wruck worldwidewruck

Stadt radio Orange Dein Fenster auf Orange 94.0

mit dem TeXnicCenter von Andreas Both

Vorkurs C++ Programmierung

präsentiert: Ventildeckel lackieren

Jeunesse Autopiloten

Graphic Coding. Klausur. 9. Februar Kurs A

Magento MultiStore einrichten unter ispcp

WordPress lokal mit Xaamp installieren

Fülle das erste Bild "Erforderliche Information für das Google-Konto" vollständig aus und auch das nachfolgende Bild.

Informatik Java-Programmierkurs im Rahmen der Berufs- u. Studienorientierung für Schüler. Joliot-Curie-Gymnasium GR 2010 Nico Steinbach

iteratec GmbH

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Einrichten einer mehrsprachigen Webseite mit Joomla (3.3.6)

LISP. Eine Einführung

Informationen Zur Ticketregistrierung

1 Lizenzkey Wo finde ich den Lizenzkey? Lizenzkey hochladen Nameserver einrichten 4

Java: Vererbung. Teil 3: super()

Professionelle Seminare im Bereich MS-Office

Konvertieren von Settingsdateien

Leitfaden E-Books Apple. CORA E-Books im ibook Store kaufen. Liebe Leserinnen und Leser, vielen Dank für Ihr Interesse an unseren CORA E-Books.

Lektion Sicher surfen. Internetanschluss für alle von 9 bis 99 Jahren. Deze iconen tonen aan voor wie het document is

Robert R. Agular Thomas Kobert. 5. Auflage HTML. Inklusive CD-ROM

AW: AW: AW: AW: Kooperationsanfrage anwalt.de

Übung - Arbeiten mit Android

Verkaufsguide. Für die Closed-Beta-Version

BFV Widget Kurzdokumentation

VIP-Programm. Herzlich Willkommen!

Unterrichtsformalitäten für Mathematik, 3. Klasse

ecwid ist eine E-Commerce Plattform, die Ihnen ermöglicht einen Onlineshop zu erstellen und ihn in Ihre Webseite einzubinden.

Go-Mobile-Strategien für Early Birds und Late Risers Benno Bartels, Enterprise Application Day, web mobile specialists

5. Tutorium zu Programmieren

Senioren helfen Junioren

Bedienungsanleitung Installation / Erstnutzung ipad App Münchner Merkur / Heimatzeitungen (Eingabefelder / Buttons sind mit roten Pfeilen markiert)

Installation des Add-Ins für Lineare Algebra in Microsoft Excel

Schritt-für-Schritt-Anleitung So verschlüsseln Sie Ihr -Konto in Outlook 2003

Primarschule Birmensdorf PIA Anleitungen Word. Bevor du mit Schreiben beginnen kannst, musst du dein Word- Dokument einrichten.

Online Termine in die eigene Facebook Seite integrieren

Bildbearbeitung mit dem Programm REGISTAX 5.1 bei Planeten

Schritt-für-Schritt-Anleitung So verschlüsseln Sie Ihr -Konto in Windows Live Mail

Die Bürgermeister App. Mein Bürgermeister hört mich per App.

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Ihr müsst drei Caches finden. Ihr beginnt mit Cache 1. In jedem Cache findet Ihr eine Internet-Adresse und einen Hinweis auf das nächste Cache.

Einfache Animation erstellen mit PhotoImpact

CLX.ScanPackage Quick Install Guide und Erste Schritte

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Gehen Sie Ihren Weg zielgenau!

Voraussetzung. Anleitung. Gehen Sie auf Start Einstellungen und suchen Sie hier den Eintrag Datenverbindungen oder Verbindungen. Öffnen Sie diesen.

DeltaVision Computer Software Programmierung Internet Beratung Schulung

Eine eigene Seite auf Facebook-Fanseiten einbinden und mit einem Tab verbinden.

Rechnen in Euro und Cent

Übungen Programmieren 1 Felix Rohrer. Übungen

Woche 1: Was ist NLP? Die Geschichte des NLP.

Die Beitrags-Ordnung vom Verein

Erfolg beginnt im Kopf

Grundsätze Teamentwicklung

Autor Jutta Pukies. Alle Rechte auf dieser Anleitung Köln

Entwicklung und Stärkung der persönlichen Kompetenzen!

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Catch Me If You Can! Grundlagenstudie zur Parallelnutzung mehrerer Screens und deren Auswirkungen auf Aufmerksamkeit, Involvement und Werbewahrnehmung

changenow THE PLAN Die 7 Brillen der Vergangenheit

Gimp Kurzanleitung. Offizielle Gimp Seite:

SMARTtill Server mit Manager

Nicht ohne mein Handy! Mobil?

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Michaela Knirsch-Wagner

Deine Meinung ist wichtig. Informationen für Kinder und Jugendliche zur Anhörung

Die Wirtschaftskrise aus Sicht der Kinder

Eine gute Fee ist heute zu Ihnen gekommen. Sie haben 10 Wünsche frei.

ICT-Cloud.com XenApp 6.5 Configuration Teil 2

Welchen Weg nimmt Ihr Vermögen. Unsere Leistung zu Ihrer Privaten Vermögensplanung. Wir machen aus Zahlen Werte

Grafische Benutzeroberfläche mit Glade und Python

CLIQ Solo. Einfache und flexible Sicherheit - die Sie selbst aktualisieren können

SUB-ID- VERWALTUNG MIT GPP SETUP-GUIDE FÜR PUBLISHER

Excel Funktionen durch eigene Funktionen erweitern.

Deutsches Rotes Kreuz. Kopfschmerztagebuch von:

AusBlick 1 Internetrecherche

MUNIN - Langzeitmonitoring

Arbeiten mit UMLed und Delphi

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

Access und die andern (Office) Programme. Armin Hess

DAVID: und David vom Deutschlandlabor. Wir beantworten Fragen zu Deutschland und den Deutschen.

DAVID: und David vom Deutschlandlabor. Wir beantworten Fragen zu Deutschland und den Deutschen.

219 Millionen. für das Familienzentrum Goldach

Workshop. Zeitmanagement Hamburg, 24. November 2004

Die Post hat eine Umfrage gemacht

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Schritt-für-Schritt-Anleitung So verschlüsseln Sie Ihr -Konto in Outlook Express

Transkript:

Moderne Apps in WxPerl

Moderne Apps in WxPerl

Moderne Kunst

Wir [sind] modern!

Moderne Zeiten

Verloren in der Moderne

brauchen wir das?

modern = einfach + funktional

Wenn Perl ein Auto wäre:

Was ich modern meine:

Audacity

Kephra: wie Editoren sein sollen

native crossplattform

native crossplattform

native crossplattform

Schön

einfacher Harmonograph

Echter Harmonograph

Hözernes Buch

Blackburn 1844

http://wxformbuilder.org/

Wx::XRC FBP

Wx::XRC

lass uns endlich coden Erich Schubert

Wirklich alles coden?... später Nicht alles ist so einfach wie: use Wx; Wx::SimpleApp->new->MainLoop;

XRC einbinden use Wx::XRC; Wx::InitAllImageHandlers(); my $xr = Wx::XmlResource->new(); $xr->initallhandlers(); $xr->load('share/harmonograph.xrc');

Irgendetwas laden use Wx::XRC; Wx::InitAllImageHandlers(); my $xr = Wx::XmlResource->new(); $xr->initallhandlers(); $xr->load('share/harmonograph.xrc'); my $frame = $xr->loadframe (undef, 'MyFrame1');

Widgets finden use Wx::XRC; Wx::InitAllImageHandlers(); my $xr = Wx::XmlResource->new(); $xr->initallhandlers(); $xr->load('share/harmonograph.xrc'); my $frame = $xr->loadframe (undef, 'MyFrame1'); my $slider = $frame->findwindow('m_slider1');

Adam Kennedy: FBP

Widgets finden my %wx; $wx{ $_ } = $frame->findwindow($_) for qw(m_slider1 m_slider2...);

Widgets finden my %wx; tie $wx{ $_ }, 'Tie::Wx', $frame->findwindow($_) for qw(m_slider1 m_slider2...);

package Tie::Wx; sub TIESCALAR { my $class = shift; my $wx = shift; die "$wx is no Wx widget" unless substr(ref $wx, 0, 4) eq 'Wx::'; return bless { w => $wx, }, $class; } sub FETCH { $_[0]->{'w'}->GetValue } sub STORE { $_[0]->{'w'}->SetValue($_[1]) }

Wozu das ganze? $app{'text'.$_}->setvalue ($app{'slider'.$_}->getvalue) for 1..7;

Wozu das ganze? $app{'text'.$_}->setvalue ($app{'slider'.$_}->getvalue) for 1..7; $app{'text'.$_} = $app{'slider'.$_} for 1..7;

OOP Class::Accessor::Fast MooseX::NonMoose

Anfangswerte setzen sub set_defaults { my $which = shift; my @label = qw(x Y X Y Betrag Reibung Dauer); my @ranges = ( [1,1,27],[1,1,27], [0,$amp, $amp*2], [0,$amp, $amp*2], [0,1,20],[0,0,100],[0,12,35], ); if ($which == -1){ for my $nr (1..7){ $app{'label'.$nr}->setlabel( $label[$nr-1].' : ' ); $app{'slider'.$nr}->setrange(@{$ranges[$nr-1]}[0,2]); $app{'keinerot'}->setvalue(1); set_defaults($nr); } } elsif ($which > 0 and $which < 8){ $app{'text'.$which}->setvalue($ranges[$which-1][1]); $app{'slider'.$which}->setvalue($ranges[$which-1][1]);

Fallen normale API - Tücken

Alles ist ein Objekt Seiteneffekt von C++ Oft umständlich für Perler Klassen und Methoden sind CamelCase Makros sind Uppercase Konstanten auch nur wx-präfix nicht

Parameter - Reihenfolge Wx::Window->new ( $elternwidget, # coderef $id, # programmweit, $inhalt, # wert, text, klicked etc $pos, # [ $x, $y ] Wx::Point->new( $x, $y ) $groesse, # [ $x, $y ] Wx::Size->new( $b, $h ) $stil, # benannte Konstanten $name, );

Mach irgendetwas Wert = -1 Wx::Window->new ( $elternwidget, # coderef, (undef) $id, # programmweit, -1 aka wxid_any $inhalt, # wert, text, klicked etc $pos, # [ -1, -1 ] $groesse, # [ -1, -1 ] $stil, # -1 = wxdefault_frame_style $name, );

Parameter - Gruppen my @def_par = ( $panel, -1, '', [ -1, -1], [ -1, -1] ) ; Wx::TextCtrl->new( @def_par, wxinteressant );

Konstanten use Wx;

Konstanten use Wx; use Wx qw/ wxall /;

Konstanten use Wx; use Wx qw/ wxall /; use Wx qw/ :everything /;

Konstanten use Wx; use Wx qw/ wxall /; use Wx qw/ :everything /; wxall => &Wx::wxALL;

Konstanten use Wx; use Wx qw/ wxall /; use Wx qw/ :everything /; wxall => &Wx::wxALL; use Wx::Events qw/ :everything /; Wx::Event::EVT_CHECKBOX( $cb, -1, sub { } );

Sizer - Konstanten my $std_al = wxalign_center_vertical wxall; my $sizer_al = wxall wxgrow ; my $last_al = wxleft wxright wxexpand ;

Rückgabewerte package Harmonograph; use base qw(wx::app); sub OnInit {... 1; }

Hilfe $widget->settooltip( 'Ich erklär dir mal die Welt' );

Tastaturbinding $hframe->setacceleratortable ( Wx::AcceleratorTable->new ( [wxaccel_ctrl, ord 'w', wxid_close], [wxaccel_normal, 27, wxid_close], )); wxnullacceleratortable

Logging...

Bildbearbeitung Wx::PaintDC->new( ); EVT_PAINT( $self, sub { my( $self, $event ) = @_;

Bildbearbeitung $dc->clear(); my $brush = Wx::Brush->new( wxgreen, wxsolid ); $dc->setbrush( ); # grünes Rechteck als Hintergrund $dc->drawrectangle( 0, 0, $x, $y ); $dc->settextforeground( wxblue ); # 3 Grad geneigter Text $dc->drawrotatedtext( "schräg", 30, 40, 3 ); $dc->setpen( Wx::Pen->new( $orange, 1, wxsolid ) ); # Kreisbogen von 30 Grad bis 130 # auf einer 120x120 grossen "Ellipse" $dc->drawellipticarc( 90, 90, 120, 120, 30, 130 );

AUI use Wx::AUI; Wx::Notebook => Wx::AuiNotebook

AUI use Wx::AUI; Wx::Notebook => Wx::AuiNotebook $manager = Wx::AuiManager->new(); $manager->setmanagedwindow( $frame );

AUI use Wx::AUI; Wx::Notebook => Wx::AuiNotebook $manager = Wx::AuiManager->new(); $manager->setmanagedwindow( $frame ); # package...; our $manager

AUI $manager = Wx::AuiManager->new(); $manager->setmanagedwindow( $frame ); $manager->addpane( # wie AddPanel $widget, # oder $panel Wx::AuiPaneInfo->new->( Konstanten ), # Floatable, Movable, Resizable ); $manager->update; # ganz wichtig

AUI Introspektion $manager->update; # ganz wichtig my $pane = $manager->getpane( $widget ); $pane->is..." ; # Floatable, Movable, Resizable

AUI Marshalling my $string = $manager->savepaneinfo ( $auiinfo ); #... anderswo, andere Zeit $manager->loadpaneinfo ( $string, Wx::AuiPaneInfo->new() ); $manager->update; # ganz wichtig

AUI Marshalling my $string = $manager->saveperspective(); #... anderswo, andere Zeit $manager->loadperspective($string, 1); # 1 spart das $manager->update;

WxPerl::MenuMaker [ ] { }, name => 'file_open', icon => 'kephra.ico', tooltip => 'Öffnen', longhelp => 'Was ich schon ', associate => 'file_open', Menu => [... ],

wxperl::constructors wxperl::frame->new ( $parent, $title, id => -1, position => Wx::wxDefaultPosition(), size => Wx::wxDefaultSize(), style => Wx::wxDEFAULT_FRAME_STYLE(), name => wxframenamestr, );

Wx::GCL panel ( line ( label X: blue slider 0 1 100 text ) seperator button Cancel button Ok )

Wx::Docular

Dicker Klopper

Es gäbe der Beispiele mehr

URL's search.cpan.org/~mbarbon/wx/ wxperl.sf.net wxperl.info Wiki docs.wxwidgets.org/trunk gute Doku CPAN> install Wx::Demo www.wxperl.co.uk - binäre Pakete wxformbuilder.org

meine URL www.himmelblauergarten.de/vortraege/perl.html wiki.perl-community.de/main/herbertbreunung wiki.perl-community.de/wissensbasis/wxperltafel de.perl.org search.cpan.org/~lichtkind/

Danke www.himmelblauergarten.de/vortraege/perl.html wiki.perl-community.de/main/herbertbreunung wiki.perl-community.de/wissensbasis/wxperltafel de.perl.org search.cpan.org/~lichtkind/