diff options
author | Timothy Pearson <[email protected]> | 2012-01-01 18:29:30 -0600 |
---|---|---|
committer | Timothy Pearson <[email protected]> | 2012-01-01 18:29:30 -0600 |
commit | b2af005db21bd8fd068cb79b2ae700953128af2c (patch) | |
tree | abd0ed633726bf0bbecb57d30e92836c31e02695 /PerlQt/bin/pqtsh | |
parent | c1b9383f2032d82db5eb8918dca885e37a901dde (diff) | |
download | libtqt-perl-b2af005db21bd8fd068cb79b2ae700953128af2c.tar.gz libtqt-perl-b2af005db21bd8fd068cb79b2ae700953128af2c.zip |
Move PerlQt
Diffstat (limited to 'PerlQt/bin/pqtsh')
-rwxr-xr-x | PerlQt/bin/pqtsh | 675 |
1 files changed, 0 insertions, 675 deletions
diff --git a/PerlQt/bin/pqtsh b/PerlQt/bin/pqtsh deleted file mode 100755 index ec44e43..0000000 --- a/PerlQt/bin/pqtsh +++ /dev/null @@ -1,675 +0,0 @@ -#!/usr/bin/perl - -# pqtsh : a graphical shell for PerlTQt. -# -# author: Germain Garand <[email protected]> -# license: GNU Public License v2 -# - -use utf8; -use strict 'vars'; - -package TQtShellControl; - -use TQt; -use TQt::isa qw(TQt::MainWindow); -use TQt::slots - fileOpen => [], - fileSave => [], - fileSaveAs => [], - filePrint => [], - fileExit => [], - helpExample => []; -use TQt::signals - fileNeedsEval => [TQString]; -use TQt::attributes qw( - menubar - fileMenu - helpMenu - toolBar - fileName - fileOpenAction - fileSaveAction - fileSaveAsAction - filePrintAction - fileExitAction - helpExampleAction - comboBox - sessionLog - executedLines - printer -); - -our $image0_data = -["22 22 7 1", -". c None", -"# c #000000", -"b c #292c29", -"c c #5a5d5a", -"d c #838583", -"e c #c5c2c5", -"a c #ffffff", -"......................", -"....##########........", -"....#aaaaaaa#b#.......", -"....#aaaaaaa#cb#......", -"....#aaaaaaa#dcb#.....", -"....#aaaaaaa#edcb#....", -"....#aaaaaaa#aedcb#...", -"....#aaaaaaa#######...", -"....#aaaaaaaaaaaaa#...", -"....#aaaaaaaaaaaaa#...", -"....#aaaaaaaaaaaaa#...", -"....#aaaaaaaaaaaaa#...", -"....#aaaaaaaaaaaaa#...", -"....#aaaaaaaaaaaaa#...", -"....#aaaaaaaaaaaaa#...", -"....#aaaaaaaaaaaaa#...", -"....#aaaaaaaaaaaaa#...", -"....#aaaaaaaaaaaaa#...", -"....#aaaaaaaaaaaaa#...", -"....###############...", -"......................", -"......................"]; - -our $image1_data = -["22 22 5 1", -". c None", -"# c #000000", -"c c #838100", -"a c #ffff00", -"b c #ffffff", -"......................", -"......................", -"......................", -"............####....#.", -"...........#....##.##.", -"..................###.", -".................####.", -".####...........#####.", -"#abab##########.......", -"#babababababab#.......", -"#ababababababa#.......", -"#babababababab#.......", -"#ababab###############", -"#babab##cccccccccccc##", -"#abab##cccccccccccc##.", -"#bab##cccccccccccc##..", -"#ab##cccccccccccc##...", -"#b##cccccccccccc##....", -"###cccccccccccc##.....", -"##cccccccccccc##......", -"###############.......", -"......................"]; - -our $image2_data = -["22 22 5 1", -". c None", -"# c #000000", -"a c #838100", -"b c #c5c2c5", -"c c #cdb6d5", -"......................", -".####################.", -".#aa#bbbbbbbbbbbb#bb#.", -".#aa#bbbbbbbbbbbb#bb#.", -".#aa#bbbbbbbbbcbb####.", -".#aa#bbbccbbbbbbb#aa#.", -".#aa#bbbccbbbbbbb#aa#.", -".#aa#bbbbbbbbbbbb#aa#.", -".#aa#bbbbbbbbbbbb#aa#.", -".#aa#bbbbbbbbbbbb#aa#.", -".#aa#bbbbbbbbbbbb#aa#.", -".#aaa############aaa#.", -".#aaaaaaaaaaaaaaaaaa#.", -".#aaaaaaaaaaaaaaaaaa#.", -".#aaa#############aa#.", -".#aaa#########bbb#aa#.", -".#aaa#########bbb#aa#.", -".#aaa#########bbb#aa#.", -".#aaa#########bbb#aa#.", -".#aaa#########bbb#aa#.", -"..##################..", -"......................"]; - -our $image3_data = -["22 22 88 2", -"TQt c None", -".2 c #000000", -".S c #08ff08", -"#v c #100810", -".U c #101010", -"#c c #101018", -".M c #181018", -"#e c #181818", -".A c #181820", -".L c #201820", -"#l c #202020", -".z c #202029", -"#m c #292029", -"#u c #292829", -"#n c #292831", -".R c #29ff29", -"#o c #312831", -".T c #313031", -"#p c #313039", -".Z c #31ff31", -"#q c #393039", -"#t c #393839", -".y c #393841", -"#s c #413841", -".o c #414041", -"#h c #4a4852", -".n c #5a505a", -"#r c #5a5962", -".I c #5ace5a", -"#b c #6a616a", -".p c #6a696a", -".x c #6a6973", -".Y c #6aff62", -".l c #736973", -".t c #7b717b", -".s c #7b7183", -".0 c #7bff7b", -".r c #837983", -".u c #83798b", -"#g c #83858b", -".v c #8b7994", -"#i c #8b858b", -".w c #8b8594", -"#j c #8b8d8b", -".8 c #8b8d94", -".m c #948d94", -"#k c #948d9c", -"#f c #949594", -".q c #94959c", -".J c #94c694", -"#d c #9c959c", -"#a c #9c95a4", -".k c #9c9d9c", -".N c #9c9da4", -".H c #9ccea4", -".K c #a49da4", -"#. c #a49dac", -".i c #a4a5a4", -".3 c #a4a5ac", -"## c #ac9dac", -".V c #aca5ac", -".d c #acaeac", -".j c #acaeb4", -".9 c #b4aeb4", -".# c #b4b6b4", -".a c #bdbebd", -".7 c #bdd6bd", -".c c #c5c6c5", -".5 c #cdc6cd", -".b c #cdcecd", -".4 c #cdced5", -".F c #d5ced5", -".G c #d5cede", -".h c #d5d6d5", -".E c #d5d6de", -".Q c #d5ffd5", -".B c #ded6de", -".1 c #ded6e6", -".g c #dedede", -".D c #dedee6", -".6 c #e6dee6", -".f c #e6e6e6", -".C c #e6e6ee", -".X c #e6ffe6", -".O c #eee6ee", -".e c #eeeeee", -".W c #f6f6f6", -".P c #ffffff", -"TQtTQtTQtTQtTQtTQt.#.a.b.b.b.b.c.c.a.a.d.aTQtTQtTQtTQt", -"TQtTQtTQtTQtTQtTQt.a.e.f.f.f.f.f.e.e.e.g.aTQtTQtTQtTQt", -"TQtTQtTQtTQtTQtTQt.a.c.c.c.b.b.c.c.c.c.a.cTQtTQtTQtTQt", -"TQtTQtTQtTQtTQtTQt.#.a.a.a.a.#.a.a.#.#.d.aTQtTQtTQtTQt", -"TQtTQtTQtTQtTQt.c.d.c.a.c.c.c.a.a.a.c.#TQtTQtTQtTQtTQt", -"TQtTQtTQtTQtTQt.a.a.#.a.a.a.a.a.a.c.c.#TQtTQtTQtTQtTQt", -"TQtTQtTQtTQtTQt.a.#.c.a.a.a.a.a.c.a.c.dTQtTQtTQtTQtTQt", -"TQtTQtTQtTQtTQt.c.a.a.a.a.a.a.a.a.a.a.#TQtTQtTQtTQtTQt", -"TQtTQtTQtTQtTQt.d.b.f.g.g.g.g.g.g.h.g.i.i.jTQtTQtTQt", -"TQtTQtTQt.a.k.l.#.h.b.h.b.h.b.h.g.g.m.n.o.p.#TQt", -"TQtTQt.a.q.r.s.t.t.t.t.t.t.t.u.v.w.x.y.z.A.o.i", -"TQt.a.k.B.C.D.B.E.E.E.E.F.G.H.I.J.K.o.L.L.M.y", -".a.N.O.P.P.P.P.P.P.P.P.P.Q.R.S.R.b.v.T.A.U.L", -".V.W.P.P.P.P.P.P.P.P.P.P.X.Y.Z.0.P.1.t.A.2.L", -".3.E.4.5.4.h.E.E.g.6.D.B.D.E.7.F.4.5.8.M.2.A", -".m.9.j.V.3#..3.K#.#..i#..K#.###a.q.8#b#c.2.L", -".m.j.j#..3.K.K.K.N.K.N.N.N.N#a#d#d.w#b#c.2#e", -"#f#.#..K.N.K.N.N.N#a.k#a#d#d#d#a.m#g#b.M.2#h", -".m.3.K.K#a.k#a#d#a.k#a#d#a#d.q.m.8#i.x#c#e.d", -"#f#g#i.w#j.w#i.8.w#i.8.8.m.8.m#k.8.w#b#e#fTQt", -".#.l.z.A#l.z#m#m#m#n#o#o#p#p#q#q#p#o#p#fTQtTQt", -"TQtTQt.d#r#s#s#t#p.T.T.T#u#u.z#e#e#v.o.kTQtTQtTQt"]; - - -sub NEW -{ - shift->SUPER::NEW(@_); - - my $image0 = TQt::Pixmap($image0_data); - my $image1 = TQt::Pixmap($image1_data); - my $image2 = TQt::Pixmap($image2_data); - my $image3 = TQt::Pixmap($image3_data); - my $box = VBox(this); - sessionLog = TextEdit($box, "sessionLog"); - sessionLog->setTextFormat(TQt::RichText()); - sessionLog->setReadOnly(1); - comboBox = ComboBox($box, "comboBox"); - comboBox->setEditable(1); - comboBox->setAutoCompletion(1); - this->setCentralWidget($box); - comboBox->setFocus; - this->resize(500,300); - setCaption("PerlTQt Shell"); -# fileNewAction= TQt::Action(this, "fileNewAction"); -# fileNewAction->setIconSet(TQt::IconSet($image0)); -# fileNewAction->setText(trUtf8("New")); -# fileNewAction->setMenuText(trUtf8("&New")); -# fileNewAction->setAccel(KeySequence(trUtf8("Ctrl+N"))); - fileOpenAction= TQt::Action(this, "fileOpenAction"); - fileOpenAction->setIconSet(TQt::IconSet($image1)); - fileOpenAction->setText(trUtf8("Open")); - fileOpenAction->setMenuText(trUtf8("&Open...")); - fileOpenAction->setAccel(KeySequence(trUtf8("Ctrl+O"))); - fileSaveAction= TQt::Action(this, "fileSaveAction"); - fileSaveAction->setIconSet(TQt::IconSet($image2)); - fileSaveAction->setText(trUtf8("Save")); - fileSaveAction->setMenuText(trUtf8("&Save")); - fileSaveAction->setAccel(KeySequence(trUtf8("Ctrl+S"))); - fileSaveAsAction= TQt::Action(this, "fileSaveAsAction"); - fileSaveAsAction->setText(trUtf8("Save As")); - fileSaveAsAction->setMenuText(trUtf8("Save &As...")); - fileSaveAsAction->setAccel(KeySequence(trUtf8("Ctrl+A"))); - filePrintAction= TQt::Action(this, "filePrintAction"); - filePrintAction->setIconSet(TQt::IconSet($image3)); - filePrintAction->setText(trUtf8("Print")); - filePrintAction->setMenuText(trUtf8("&Print...")); - filePrintAction->setAccel(KeySequence(trUtf8("Ctrl+P"))); - fileExitAction= TQt::Action(this, "fileExitAction"); - fileExitAction->setText(trUtf8("Exit")); - fileExitAction->setMenuText(trUtf8("E&xit")); - fileExitAction->setAccel(KeySequence(trUtf8("Ctrl+E"))); - - helpExampleAction= TQt::Action(this, "helpExampleAction"); - helpExampleAction->setText(trUtf8("Example")); - helpExampleAction->setMenuText(trUtf8("Examp&le")); - helpExampleAction->setAccel(KeySequence(trUtf8("Ctrl+L"))); - - toolBar = TQt::ToolBar("", this, DockTop()); - - toolBar->setLabel(trUtf8("Tools")); - fileOpenAction->addTo(toolBar); - fileSaveAction->addTo(toolBar); - filePrintAction->addTo(toolBar); - - - menubar= TQt::MenuBar( this, "menubar"); - - fileMenu= TQt::PopupMenu(this); -# fileNewAction->addTo(fileMenu); - fileOpenAction->addTo(fileMenu); - fileSaveAction->addTo(fileMenu); - fileSaveAsAction->addTo(fileMenu); - fileMenu->insertSeparator; - filePrintAction->addTo(fileMenu); - fileMenu->insertSeparator; - fileExitAction->addTo(fileMenu); - menubar->insertItem(trUtf8("&File"), fileMenu); - - menubar->insertSeparator; - - helpMenu= TQt::PopupMenu(this); - helpExampleAction->addTo(helpMenu); - menubar->insertItem(trUtf8("&Help"), helpMenu); - -# TQt::Object::connect(fileNewAction, TQT_SIGNAL "activated()", this, TQT_SLOT "fileNew()"); - TQt::Object::connect(fileOpenAction, TQT_SIGNAL "activated()", this, TQT_SLOT "fileOpen()"); - TQt::Object::connect(fileSaveAction, TQT_SIGNAL "activated()", this, TQT_SLOT "fileSave()"); - TQt::Object::connect(fileSaveAsAction, TQT_SIGNAL "activated()", this, TQT_SLOT "fileSaveAs()"); - TQt::Object::connect(filePrintAction, TQT_SIGNAL "activated()", this, TQT_SLOT "filePrint()"); - TQt::Object::connect(fileExitAction, TQT_SIGNAL "activated()", this, TQT_SLOT "fileExit()"); - TQt::Object::connect(helpExampleAction, TQT_SIGNAL "activated()", this, TQT_SLOT "helpExample()"); - - - executedLines = []; -} - -#sub fileNew -#{ -# print "Form1->fileNew(): Not implemented yet.\n"; -#} - -sub fileOpen -{ - my $fn = TQt::FileDialog::getOpenFileName( - ".", - "Pqtsh Session (*.pqts)", - this, - "open session", - "Choose a file to open" ); - $fn or return; - emit fileNeedsEval($fn); - -} - -sub getFileName -{ - fileName = TQt::FileDialog::getSaveFileName( - ".", - "Pqtsh Session (*.pqts)", - this, - "save session", - "Choose a filename" ); - fileName !~ /\.pqts$/ and fileName = fileName . ".pqts"; - return fileName; -} - - -sub save -{ - my $fn = shift; - open( OUT, ">$fn") or do { - TQt::MessageBox::critical( - this, - "Error" , - "Couldn't open $fn for writing: $!", - &TQt::MessageBox::Ok, - &TQt::MessageBox::NoButton ); - return - }; - for (@{ &executedLines }) - { - next if /^\s*$/; - chomp; - $_ .= ";" unless /;\s*$/; - print OUT $_, "\n" - } - close OUT -} - -sub fileSave -{ - emptySession() and return; - my $fn = fileName || getFileName(); - $fn or return; - save($fn) -} - -sub fileSaveAs -{ - emptySession() and return; - my $fn; - my ($cond, $doit); - AGAIN: - { - $fn = getFileName(); - $fn or return; - if( -e $fn ) - { - $cond++; - $doit = TQt::MessageBox::warning( - this, - "Warning" , - "File exists, overwrite ?", - &TQt::MessageBox::Yes, - &TQt::MessageBox::No ); - } - else - { $cond = 0 } - } - goto AGAIN if $cond and $doit == &TQt::MessageBox::No; - save($fn) -} - -sub filePrint -{ - my $Margin = 10; - my $pageNo = 1; - emptySession() and return; - printer = TQt::Printer unless printer; - if ( printer->setup(this) ) { - statusBar()->message( "Printing..." ); - my $p = TQt::Painter; - if( !$p->begin( printer ) ) - { - statusBar()->message( "An error occured..." ); - return - } - - $p->setFont( sessionLog->font() ); - my $yPos = 0; - my $fm = $p->fontMetrics; - my $metrics = TQt::PaintDeviceMetrics( printer ); - - for( my $i = 0 ; $i < @{ &executedLines } ; $i++ ) { - if ( $Margin + $yPos > $metrics->height() - $Margin ) { - my $msg ="Printing (page ". ++$pageNo . ")..."; - statusBar()->message( $msg ); - printer->newPage(); - $yPos = 0; - } - $p->drawText( $Margin, $Margin + $yPos, - $metrics->width(), $fm->lineSpacing(), - &ExpandTabs | &DontClip, - ${ &executedLines }[ $i ] ); - $yPos = $yPos + $fm->lineSpacing(); - } - $p->end(); - statusBar()->message( "Printing completed", 3000 ); - } else { - statusBar()->message( "Printing aborted", 3000 ); - } -} - -sub fileExit -{ - emit TQt::app()->quit() if confirmExit(); -} - -sub closeEvent -{ - my $e = shift; - if(confirmExit()) - { - $e->accept - } - else - { - $e->ignore - } -} - -sub confirmExit -{ - my $doit; - if(@{ &executedLines }) - { - $doit = TQt::MessageBox::warning( - this, - "Warning" , - "A session is opened, quit anyway ?", - &TQt::MessageBox::Yes, - &TQt::MessageBox::No ); - } - else - { return 1 } - - return (($doit == &TQt::MessageBox::No) ? 0 : 1); -} - -sub emptySession -{ - unless (@{ &executedLines }) - { - statusBar()->message("Session is empty...", 3000); - return 1; - } - 0 -} - -sub helpExample -{ - emit fileNeedsEval("__DATA__") -} - -1; - -package TQtShell; - -use TQt; -use TQt::isa qw(TQt::MainWindow); -use TQt::slots - evalInput=>[], - evalFile=>[TQString]; -use TQt::attributes qw( - shellWindow -); -use TQtShellControl; - -sub NEW -{ - shift->SUPER::NEW(@_); - - shellWindow = TQtShellControl(undef, "shellWindow"); - this->resize(350,350); - this->move(Point(10,10)); - shellWindow->move(Point(300,200)); - this->show; - shellWindow->show; - - - this->connect(shellWindow->comboBox->lineEdit, TQT_SIGNAL 'returnPressed()', TQT_SLOT 'evalInput()'); - this->{'prompt'} = '<b><font color="blue">$></font></b>'; - setCaption("MainWindow - this"); - shellWindow->sessionLog->setText("Ready.<br>"); - TQt::Object::connect(shellWindow, TQT_SIGNAL 'fileNeedsEval(TQString)', this, TQT_SLOT 'evalFile(TQString)'); -} - -sub logAppend -{ - shellWindow->sessionLog->setText( shellWindow->sessionLog->text . shift ) -} - -sub evalInput -{ - evalOneLine( shellWindow->comboBox->currentText ); -} - -sub evalOneLine -{ - my $prot = my $ln = shift; - $prot =~ s/</</gs; - $prot =~ s/>/>/gs; - logAppend( this->{'prompt'}. "$prot<br>" ); - { - no strict; - eval $ln; - } - if($@) - { - my $prot = $@ ; - $prot =~ s/</</gs; - $prot =~ s/>/>/gs; - my $c = shellWindow->sessionLog->color; - $prot =~ s/\n/<br>/gs; - logAppend('<font color="red">'.$prot.'</font><br>'); - shellWindow->sessionLog->setColor( $c ); - } - else - { - push @{ shellWindow()->{'executedLines'} }, $ln; - shellWindow->comboBox->clearEdit; - shellWindow->comboBox->setFocus; - } - shellWindow->sessionLog->scrollToBottom -} - -sub evalFile -{ - my $fn = shift; - my $fh; - if($fn eq "__DATA__") - { - $fh = \*::DATA - } - else - { - open($fh, $fn) or do { - TQt::MessageBox::warning ( - this, - "Error" , - "Couldn't open $fn: $!", - &TQt::MessageBox::Ok, - &TQt::MessageBox::NoButton ); - return - }; - } - while(<$fh>) - { - evalOneLine($_) - } - close $fh -} - -1; - -package TQt::TextHandle; - -sub TIEHANDLE { my ( $classnm, $widg, $color) = @_; - my $h = { widg => $widg, color => $color}; - bless $h, $classnm; - -} - -sub PRINT { - my $me = shift; - my $color = $me->{color}; - my $printed = join $/, @_; - $printed =~ s/</</gs; - $printed =~ s/>/>/gs; - $printed =~ s/\n/<br>/gs; - $me->{widg}->setText( $me->{widg}->text . "<font color=\"$color\">$printed</font>" ); - -} - -sub PRINTF { shift->PRINT(sprintf shift, @_); } -sub CLOSE { shift->UNTIE; } -sub UNTIE { } - - -1; - -package main; -use strict; -use TQt; -use TQtShell; -use TQt::debug; - -my $app = TQt::Application(\@ARGV); -my $w = TQtShell(undef, "mainWindow"); -my $shw = $w->shellWindow; -$app->setMainWidget($shw); -tie *STDOUT, 'TQt::TextHandle', $shw->sessionLog, 'black'; -tie *STDERR, 'TQt::TextHandle', $shw->sessionLog, 'red'; - -exit $app->exec; - -__DATA__ -statusBar()->message("Hello World !"); -use TQt::attributes qw|datetime button textedit sample vbox| ; -vbox = VBox(this); -datetime = DateTimeEdit(vbox); -textedit = TQt::TextEdit(vbox); -button = PushButton("Hello World!", vbox) ; -this->setCentralWidget(vbox); -resize(220,240); -vbox->show; -sample = TQt::PopupMenu( this ); -use TQt::slots 'there' => []; -sample->insertItem("&There", this, TQT_SLOT 'there()'); -menuBar()->insertItem("&Here", sample); -sub there { statusBar()->message("There...", 2000) }; |