r00t Δημοσ. 13 Αυγούστου 2003 Δημοσ. 13 Αυγούστου 2003 Χαιρετώ, Αν έχει ασχοληθεί κανείς ή ξέρει Perl/Tk θα εκτιμούσα ιδιαίτερως να με διαφωτίσει. Σε MacosX (δεν έχει σημασία, είναι σαν Unix) τρέχω v5.8.0 built for darwin και ΤΚ για δημιουργία GUI. Αυτό που θέλω να κάνω είναι το εξής : Έχω πολλά scripts που γίνονται εκτελέσιμα από terminal, δηλαδή perl scriptname.pl και μετά από 30 - 40 λεπτά δημιουργούνε μέσα στο ίδιο directory ένα αρχείο .log το οποίο διαβάζω μετά εγώ και βλέπω τα αποτελέσματα. Προσπαθώ όμως να κάνω ένα application με Perl/Tk το οποίο με κάποιους widgets ( εδώ έχω κολλήσει ,με ποιούς; ) θα εισάγω κάθε script μέσα σε ένα πεδίο, θα φτιάξω ένα κουμπάκι start/stop και αυτό θα τρέχει. όταν τελειώσει, θα πρέπει να μπορώ να το δω (δηλαδή κάπου πρέπει να έχω κάποιο status) . Για να καταλάβατε καλύτερα, Script -------Status----Start/Stop----------View log script1.pl Running script2.pl Failed script3.pl Ready script4.pl Running Καμεία ιδέα κανείς
dominant Δημοσ. 15 Αυγούστου 2003 Δημοσ. 15 Αυγούστου 2003 Hi root Prokeite na asxolei8o kai ego me Perl/Tk entos kapoion hmeron. 8elo episeis na ftiakso ena application. Mazeuo siga siga plhrofories, apo Google kurios. Xoris na exo asxoli8ei entatika, h na exo ftiaksei diko mou script pou na paragei visual enviroment, nomizo pos h dhmourgia tou einai aplh(apo kati samples pou exo koitaksei) I8ela na se rotiso se proth fash gia widgets.
r00t Δημοσ. 15 Αυγούστου 2003 Μέλος Δημοσ. 15 Αυγούστου 2003 Hello, Βασικά βρήκα άκρια......TK:TableMatrix. Αν πάς στο CPAN θα δεις πολλά modules και αρκετά παραδείγματα, αλλά κλασσικά είναι τοποθετημένα με πολύ geeky λογική και άντε να βγάλεις άκρια. Αν θες κάποια βοήθεια, ρώτα, όχι ότι έγινα ο super - duper - Perl/TK monk αλλά ... Επίσης ορίστε και μερικά ενδιάφέροντα links. http://personal.riverusers.com/~swilhelm/gtkperl-tutorial/index.html http://www.perlmonks.org/ http://w4.lns.cornell.edu/~pvhp/ptk/doc/ http://perl.about.com/library/weekly/aa030500a.htm http://tmml.sourceforge.net/doc/tk/colors.html To μοναδικό forum που μου απαντήσανε. comp.lang.perl.tk άσχετο αλλά δεν υπάρχουν register Έλληνες Perl προγραμματιστές.....
dominant Δημοσ. 15 Αυγούστου 2003 Δημοσ. 15 Αυγούστου 2003 To usenet einai o kateksoxin topos sunantiseis ton Perl programmer. Exeis ftiaksei kanena sample gui? Could you share your code? An den kano la8os uparxei kai ena book tou O'reilly gia Perl Tk/Tcl(dior8ose me an kano la8os)
r00t Δημοσ. 18 Αυγούστου 2003 Μέλος Δημοσ. 18 Αυγούστου 2003 Λοιπόν έχουμε και λέμε, O φίλτατος o'reilly έχει βιβλίο αλλά δυστυχώς δεν το βρήκα σε pdf στα γνωστά κατατόπια. Παρόλα αυτά κατάφερα και έκανα κάτι. Ο κώδικας που βλέπεις παρακάτω κάνει τα περισσότερα ( έχω βγάλει κάποια sensitive πραγματάκια για λόγους ασφαλείας) από αυτά που ζήτησα να με βοηθήσετε. Χρησιμοποιώ το widget Notebook και αυτό κάνει τα 3 tabs. To πρώτο tab είναι απλά για να έχει χώρο για text editing, Το 2ο και το 3ο tab είναι σχεδόν το ίδιο πράγμα, μόνο που το 2ο είναι ένας έτοιμος widget και απλά τον χρησιμοποιώ ενώ στο 3ο tab έχω κάνει ένα δικό μου, παρόμοιο με το 2o τab. Για να σου δουλέψει ο κώδικας μου, θα πρέπει να έχεις Perl/Tk installed και τα modules τα οποία χρησιμοποιώ. Αν τον τρέξεις πες μου το σε παρακαλώ γιατί θέλω βοήθεια σε 2 σημεία. > use Tk; use English; #require Tk; use Cwd; require Tk::FileSelect; require Tk::Dialog; #use Tk::TableMatrix::SpreadsheetHideRows; require Tk::HList; use diagnostics -verbose; use Tk::Columns; use Tk::DialogBox; use Tk::NoteBook; #use Data::Dumper; # convenient Dumper command.... #use Tk::Dialog; # esp. Dialog box for display help use Tk::ROText; # and Read-only text box for output panes #use Tk::Balloon; # and balloon help #################################################################### ## MAIN WINDOW # #################################################################### my $main = MainWindow->new(); $main -> title ('My TK_app '); $main -> geometry ('800x600'); ### A notebook consisted of 3 pages ######## my $notebook = $main->NoteBook(-dynamicgeometry =>'true', -ipadx => 20, -ipady => 6); $notebook->pack(-expand => "yes", -fill => "both", -padx => 3, -pady => 3, -side => "top"); #This puts the notebook over the status line. # Divide the working area into 3 tabs so the navigation of the user # is easier my $Config_p = $notebook->add("config" , -label => "Config" , -underline => 0); my $Tc_p = $notebook->add("Tc" , -label => "Test cases",-underline => 0); my $Viewlog_p = $notebook->add("Viewlog", -label => "Logs" , -underline => 0); ## 1ST TAB ################## $input_text_area = $Config_p ->Scrolled('Text', -wrap => "none", -scrollbars => "se", -width => 40, -height => 25, -background => 'WhiteSmoke'); $input_text_area->pack(-side =>"top", -expand => 1, -fill => 'both'); $input_text_area->focus(); # gets focus on startup ## 2ST TAB ################## my $l_Window = $Tc_p->TableEdit ( '-file' => 'test.dat', ); $l_Window->Item ( 'Entry', '-name' => 'Date', '-default' => sub {localtime();}, ); $l_Window->Item ( 'Entry', '-bg' => 'white', '-relief' => 'sunken', '-name' => 'Internet Address', '-expression' => [ '^[0-9]{1,3}?$', '^[0-9]{1,3}?\.$', '^[0-9]{1,3}?\.[0-9]{1,3}?$', '^[0-9]{1,3}?\.[0-9]{1,3}?\.$', '^[0-9]{1,3}?\.[0-9]{1,3}?\.[0-9]{1,3}?$', '^[0-9]{1,3}?\.[0-9]{1,3}?\.[0-9]{1,3}?\.$', '^[0-9]{1,3}?\.[0-9]{1,3}?\.[0-9]{1,3}?\.[0-9]{1,3}?$', ], ); $l_Window->pack ('-expand' => 'true', '-fill' => 'both'); $l_Window->GeometryRequest (400, 200); ################## 3RD TAB ################## $inputfr = $Viewlog_p->Frame(-relief=>'groove', -label=>'Test cases panel', -borderwidth=>3, #-bg=>red, )->pack(-side=>'top', -anchor=>'nw', -fill=>'both', ); $incol1fr = $inputfr->Frame(#-relief=>'groove', -borderwidth=>2, #-bg=>'blue', )->pack(-side=>'left', -anchor=>'nw', -fill=>'both', ); $incol2fr = $inputfr->Frame(#-relief=>'groove', -borderwidth=>2, #-bg=>'green', )->pack(-side=>'left', -anchor=>'nw', -fill=>'both', ); $incol3fr = $inputfr->Frame(#-relief=>'groove', -borderwidth=>2, #-bg =>'black' )->pack(-side=>'left', -anchor=>'nw', -fill=>'both', ); # Annotation File # $incol1fr->Label(-text=>'Please select your testcase file (*.pl)', )->pack(-side=>'top', -anchor=>'ne', -pady=>3, ); $testfile_e = $incol2fr->Entry(-state=>'normal', -textvariable=> \$testfile, -width=>60, )->pack(-side=>'top', -anchor=>'nw', -pady=>3, ); $incol3fr->Button(-text=>'Browse', -command=> [ \&selectsinglefile, \$testfile_e , \$main] , -borderwidth=>1, -padx=> 0, -pady=> 0, )->pack(-side=>'top', -anchor=>'nw', ); ############## ANOTHER BUTTON BAR ######################### my $but_frame = $Viewlog_p->Frame(); $but_frame->pack(-side => 'bottom', -anchor => "sw", -expand => 0, -fill => 'x', -padx => 0); sub button { my ($this, $text, $command) = @_; my $button = $this->Button(-text => $text, -command => $command); $button->configure(-underline => '0'); # Alt-firstchar as hotkey $button->pack(-side => 'left'); return $button; } button($but_frame, "Insert", "sub {add_lines(); }" ); button($but_frame, "Delete", "sub {del_lines(); }" ); ###################### Columns *****************################### my $Columns = $Viewlog_p -> Columns ( '-columnlabels' => [qw (No File Date Status Action log )], #'-command' => sub {printf ("Selected [%s]\n", join ('|', @_));}, #'-image' => $l_MainWindow->Pixmap ('-file' => 'mini-doc.xpm'), '-width' => '20', '-height' => '60', '-sortcommand' => '$a cmp $b', '-listforeground' => 'blue4', '-listbackground' => 'beige', '-buttonbackground' => 'gray', '-buttonforeground' => 'black', '-selectmode' => 'extended', '-sort' => 'true', #'-zoom' => 'true', ); $Columns->pack ('-anchor' => 'sw', '-expand' => 'false', '-side' => 'top', '-fill' => 'both', # '-after' => ' ', #'-side '=>'bottom', #'-fill' => 'both', ); $Columns->insert ('0', '1',$testfile_e,sub {localtime();},'Running','Start','Not ready'); MainLoop; sub selectsinglefile { my $entryblankref = shift; my $entryblank = $$entryblankref; my $mwref = shift; my $mw = $$mwref; my $filetypes = [ ['Perl test cases ', ['.pl']], ['All files', ['*']]]; my $file = $mw->getOpenFile(-title => "Please choose a configuration file", -filetypes => $filetypes, -defaultextension => ".pl"); # Prompt the user that no file has been selected #return $fail_dialog->Show() if ! -f $filename; if (defined $file and $file ne '') { $entryblank->delete(0, 'end'); $entryblank->insert(0, $file); $entryblank->xview('end'); } } sub add_lines { #$Columns->insert ('end', ['List', 'Row', 'Contents']); #$Columns->insert ('end', {'column1' => 'List', 'column2' => 'Row', 'column3' => 'Contents'}); #$Columns->insert ('1','Test' 1,1,1,1,1); $Columns->insert ('0', 'This is a test'); } sub del_lines { $Columns->delete (0, 'end'); }
dominant Δημοσ. 18 Αυγούστου 2003 Δημοσ. 18 Αυγούστου 2003 Katarxin 8elo na se rotiso poio IDE xrisimopoeis? Exo TK installed, exo perl 5.6 ActviePerl. To script 8a to trekso otan pao sto mhxanima mou, dhl se 2-3 meres kai 8a sou po apotelesmata. Diavazo perl apo Learning Perl, to pasignosto tou O'reilly kai exo epishs to Programming Perl gia na ma8o ta vasika grhgora grhgora kai na epekta8o se DBI kai Tk. Exeis vrei kanena kalo tutorial? Exo kai ego merika links 8a st doso se 2-3 meres.
r00t Δημοσ. 19 Αυγούστου 2003 Μέλος Δημοσ. 19 Αυγούστου 2003 Hello και πάλι, Δεν χρησιμοποιώ IDE, δεν μου αρέσει ο προγραμματισμός με IDE, (άσε που δεν έχω βρει τίποτα της προκοπής). Οπότε vi τerminal και ξερό ψωμί. Όσο αφορά tutorials, όταν κάνεις "make install" έχει παραδείγματα για τους περισσότερους widgets, δηλαδή το πως θα χειριστείς τα Tk extensions της Perl. Για το πλήρες, αρκετά καλογραμμένο documentation θα κοιτάξεις στο CPAN για τα υπόλοιπα usenet. Στα window$ χρησιμοποιείς cygwin ή κάτι σχετικό ;
dominant Δημοσ. 19 Αυγούστου 2003 Δημοσ. 19 Αυγούστου 2003 Cygwin : mexri tora oxi, alla apoti epsaksa fenete endiaferon. Mporeis olo to application na to kaneis executable arxeio?
r00t Δημοσ. 19 Αυγούστου 2003 Μέλος Δημοσ. 19 Αυγούστου 2003 Να σου πω την αλήθεια για Windows νομίζω πως είναι πιο εύκολο, αλλά το εργαλείο (λογισμικό) που σου κάνει όλη τη δουλειά, δεν είναι free αν θυμάμαι καλά. Επειδή εγώ δουλεύω σε Mac OSX, το οποίο βασίζεται σε Kernel FreeBSD, δεν με πολυενδιαφέρει να κάνω κάτι τέτοιο, αλλά για να βάλω τα επιπλέον modules, χρειάστηκα gcc και Perl 5.8, νομίζω οτι υπάρχουν αντίστοιχες απαιτήσεις για Windows. Καλή συνέχεια. ΥΓ: Η τρέχουσα έκδοση από αυτό που έχω κάνει post, διαφέρει πολύ, οπότε για training, αν το δεις με προσοχή θα δεις μερικά bugs που έχω....(hint : casting). YΓ2: Πολύ καλό βιβλίο είναι του O'Reilly, Perl Cookbook με πολύ καλές συνταγές. Θα το βρεις σε Kazaa ή άλλα peer2peer μπιχλιμπίδια.
dominant Δημοσ. 20 Αυγούστου 2003 Δημοσ. 20 Αυγούστου 2003 Sumfona me AcvtiveState h teleutaia ekdosh einai 5.8 (an den kano la8os) Ego omos epesa sthn 5.6 epeidei den exei DBD::Oracle gia thn 5.8 (mono gia 5.6) To Tk package einai ensomatomeno.
dominant Δημοσ. 20 Αυγούστου 2003 Δημοσ. 20 Αυγούστου 2003 Exo provlima me to Tk::Columns > C:\PROGS>ppm PPM interactive shell (2.2.0) - type 'help' for available commands. PPM> install tk-columns Install package 'tk-columns?' (y/N): y Installing package 'tk-columns'... Error installing package 'tk-columns': Could not locate a PPD file for package tk-columns PPM> Esy pos to ensomatoses mesa?
r00t Δημοσ. 21 Αυγούστου 2003 Μέλος Δημοσ. 21 Αυγούστου 2003 Πρέπει να κατεβάσεις κάθε module που χρησιμοποιώ ή πρόκειται να χρησιμοποιήσεις και να το κάνεις compile και add στα ήδη υπάρχοντα modules. Aς πούμε για παράδειγμα : το Τκ::Column είναι module θα το βρεις στο εδώ πήγαινε στο Download και μετά θα οταν κάνεις untar,gunzip και τελικά σου βγάλει ένα folder με όλα τα περιεχόμενα. Εκεί θα δεις και το make file. Οπότε δεν ξέρω πως θα το κάνεις στα Windows αλλά σε οτιδήποτε *NIX σύστημα, βγαίνει σε terminal και δίνεις με τη σειρά. 1. perl MakeFile.PL 2. Make 3. Make install 4. Make test Μετά από αυτό θα είναι installed στη library η οποία ανάλογα με το κάθε λειτουργικό βρίσκεται σε διαφορετικό μέρος. Σε αυτό το link εντόπισα μερικές πληροφορίες για Perl modules σε windows... Kαλή τύχη
dominant Δημοσ. 22 Αυγούστου 2003 Δημοσ. 22 Αυγούστου 2003 Apo edo http://search.cpan.org/author/DKWILSON/Tk-DKW-0.03/Tk/Columns.pm katevasa to source diladi Columns.pm kai to ekana copy sto /perl/site/lib/tk an den kano la8os kai tora sto command dinontas > perldoc tk::columns perno to documentation tou, auto shmenei pos einai ready to play?
r00t Δημοσ. 22 Αυγούστου 2003 Μέλος Δημοσ. 22 Αυγούστου 2003 90 % είσαι οκ. Δεν έχω υπάρχει pc να το δοκιμάσω, θα πρέπει να σου βγάζει διαφορετικό error στο compiling. Βασικά αν σου λέει πάλι can not find καποιο_module.pm κατέβασε το από το CPAN και κάνε την ίδια διαδικασία.
dominant Δημοσ. 22 Αυγούστου 2003 Δημοσ. 22 Αυγούστου 2003 empleksa se auth th diadikasia kai etrexa na vro ka8e pm pou mou elege cannot located mexri pou kolisa epeidei den uparxei ena zitoumeno pm sthn lista mou mou edoses sto CPAN to proto mi dia8esimo, kai etsi elikse adoksa to compiling to prog sou :(
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.