From b246f548282646b83ef8f3c1f45f30b930391a69 Mon Sep 17 00:00:00 2001 From: Michael Wiebusch Date: Thu, 21 Aug 2014 14:13:56 +0200 Subject: [PATCH] added a simple gui (draft) --- user_interface/README | 1 + user_interface/gui.pl | 112 +++++++++++++++++++++++++++++++++++++++ user_interface/plot.png | Bin 4811 -> 0 bytes user_interface/plot.sh | 6 +-- user_interface/plot2.png | Bin 0 -> 5687 bytes user_interface/test3.pl | 45 ++++++++++++++++ 6 files changed, 161 insertions(+), 3 deletions(-) create mode 100644 user_interface/README create mode 100755 user_interface/gui.pl create mode 100644 user_interface/plot2.png create mode 100755 user_interface/test3.pl diff --git a/user_interface/README b/user_interface/README new file mode 100644 index 0000000..6382199 --- /dev/null +++ b/user_interface/README @@ -0,0 +1 @@ +i have added an origin repository at jspc55.1/mwiebusch/padiwa-analyzer diff --git a/user_interface/gui.pl b/user_interface/gui.pl new file mode 100755 index 0000000..8a6d441 --- /dev/null +++ b/user_interface/gui.pl @@ -0,0 +1,112 @@ +#!/usr/bin/perl -w + +use strict; +use Gtk2 '-init'; + +use constant TRUE => 1; +use constant FALSE => 0; + +my $window = Gtk2::Window->new; +$window->set_title ('FPGA based pulse width analyzer'); +$window->signal_connect (destroy => sub { Gtk2->main_quit; }); +$window->set_border_width(3); + +my $vbox = Gtk2::VBox->new(FALSE, 6); +$window->add($vbox); + +my $actions_frame = Gtk2::Frame->new('Actions'); +$vbox->pack_start($actions_frame, TRUE, TRUE, 0); +$actions_frame->set_border_width(3); + +my $plot_frame = Gtk2::Frame->new('Plot'); +$vbox->pack_start($plot_frame, TRUE, TRUE, 0); +$plot_frame->set_border_width(3); + + +my $hbox = Gtk2::HBox->new(FALSE, 6); +$actions_frame->add($hbox); +$hbox->set_border_width(3); + + + +################################################## +## buttons ## +################################################## + +my $inc_button = Gtk2::Button->new('_Click Me'); +$hbox->pack_start($inc_button, FALSE, FALSE, 0); +my $count = 1; + +my $plot_button = Gtk2::Button->new('_Plot'); +$hbox->pack_start($plot_button, FALSE, FALSE, 0); + +my $clear_button = Gtk2::Button->new('_Clear'); +$hbox->pack_start($clear_button, FALSE, FALSE, 0); + +my $quit_button = Gtk2::Button->new('_Quit'); +$hbox->pack_start($quit_button, FALSE, FALSE, 0); +$quit_button->signal_connect( clicked => sub { + Gtk2->main_quit; + }); + + +my $image = Gtk2::Image->new_from_file ("plot.png"); +# $vbox->pack_start($image, TRUE, TRUE, 0); +$plot_frame->add($image); + + + + +# my $label = Gtk2::Label->new('Clicked 0 times.'); +# $vbox->pack_start($label, TRUE, TRUE, 0); + + + +################################################## +## button functions ## +################################################## +# has to be done after we've created the label so we can get to it +$inc_button->signal_connect( clicked => \&update_clicks); +sub update_clicks { + +# $label->set_text("Clicked $count times."); + $count++; + +} + + +$plot_button->signal_connect( clicked => sub { + +# $label->set_text(qx%echo blah%); + execute("./plot.sh"); + $plot_frame->remove($image); + $image->clear; + $image = Gtk2::Image->new_from_file ("plot.png"); + $plot_frame->add($image); + $window->show_all; + +}); + +$clear_button->signal_connect( clicked => sub { + + execute("./analyzer.pl --clear"); + +}); + + + + +sub execute { + my $command = shift; + print "execute:\n$command\n"; + system($command); + print "\n\n"; + +} + + + + + +$window->show_all; +Gtk2->main; \ No newline at end of file diff --git a/user_interface/plot.png b/user_interface/plot.png index 7ca953bbaf5ed18add2a6f532d46458118a284f7..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 4811 zcma(!c|25m`{#_KW{_r(C1o312qBbh>~SNmq#`pRDNC}BtvM-DLXpa~jB-<#q_WF$ zy0T@vuFB3NTM-jwH|IU7`@X;TuirbLXU_RP&+~oedA{FgovU`XmRoqX^8f&_#p;0B zuK<990RUv-xiAWDtI9hJ(Xcys*c?SsjFO$5z41Z-07el21!iUt3eeO97@v8MB2oZM zL10v!2FC*c1qM(UWuR{!C@Ep06xLsu-1hC;H8nMDY-~I|JsAu}T3T9BQ4xY5t*xzN zV`G>KwuZ)ynHvQ?<7`JZ3q@xJqtVirg)=i~H-KpaJg_H2CSFE0-sw9YFDB-XnF0W9 zSK6n54HHqIy%QBmK^b;z7)H&36*%DI?Qr(^_3AS3@>t$)-v+W_Df9s_6FqYa=o-u( zykSRi^j3p~09Z%}reFZWGz6xh@P_>qG#djNn(dDw2#TEtMcT@;*eE-@wCyGOvJH6} ziBhsrshXM^CX*>CDOp=vOQlkWhlh=fjB52;e6ceV{0|%p1OWb58(%P0nO__LNJds> z#)s({p9gtE()SBd?2qzYY9oJW0da|b^l_r>PAR+;Ons|;=_LDpASpE zv@O43_g$sJRv)lD!`H^MKr2BXHF zHcURBAk5A?VPve4kEf#)~I?qtL=x!HSHYwIJ*_^ZdM23N z9}|4KU|~w)uc%?RmZ9Y7h^=1f?j5yijWc+#;bS15*YM`Zd3TCtkkdKHOQA8&G@Gd@ z7&;%Ii7c?qDGTtS?#z7Qk{A44w`a~;YllT-e9Ut64&C0re$Knkk6KY4u0P}vBD_`; z%$WaN#A?{#YJiK>ci6TbOj*3+KA1jIIX*DqWKuWTI6m*_VwXjM3<2Er_Di2y@aiUz z=sT!c8hI*Dd4nhB{RB2a#!yWfQIMk46DV+=psd=A(*&MPa4S$FBd0g0$@bGKg$yx4 z-1UY#0NDcWRD6Dj4vDryXB6cpD$g?)REadL9lQ~M9VF^?~rJG*VZ2nE!D{)>~%rf07-zhR3l^ouL%C0Pyh3a zG-$D#vx%U7R-b$7&Unk^hgi9A5xQ)i|@s{NUMJ}&Y* zS8!tQnWTrTze6k|V*xG!=cu$$$zXFBv{Ivlt}+tAogG&Gb{^nLNhkBto6oDGWj^w} zMOLI{n?KDq%iH2>(BT=#wSJOalmss^YG@ zMNh~eit_YFBc>6Ks^;)}x2>Y}P=`5ee~|40VavGfprQHitJb(k9^B#I05#~57Wn)q zLo3}BK16bl5(5o4gGx5A$OhA%OnD^pzXS5{>U6>%(2^EJpNH;}k#q&bERtc60x;!s zS2S>ZH>oBYoDR&pHf;Tya-&xOF2Uh5mnCt0hxUIv1<~`lPRV_74||AbTa(*6<)B&|xe!ZFigvTScF{Fznk&< zRX4f^+G+}WyG9k4ya;ozJd~TJ5@!Pk3J{)Zt+y$sS7g5TFg}aZXIe@IuU3W`@@c8! zZD1&4wytug1o&sivf*zUWCS)3*g>yJT6?fIEBe=${X06puG_^^E`Isrk#&7p6vX=+cBBXj?oHiHA;#$8 z63EVb^C1u;f&x;vNK%JMta|!y>xqC`L)uIzMBjs3O9TpE)sHhU29M0zH9+l%#}#I5 z;TbLV9D(fyE$sw{Sgay-&|;slET>>LnOx6KG9s|$^|{YsE+(?HaaDhx6K4WB8B!h> z&#e)OtW-Rk3enS;?UWRoRG{#yTt1gkwju$d%i-2UK-Z5n_&rs%h95kuyWsF^3I(>N z^IVXo$U#dcuyyiozl*@VYa75+iJl0R~^h{rGd8{UB$|1M|d>^DX+;~KGx~I?>vs3c)Q+s+Sn7Kow z(v+XP|E^kdlR1y)@?HaABae))mhDb%JDHYB}%okC+oCNq2HM9 zl!-N2P=>NA%eQ!zS2dy8Rj=;+N$uukg2}6N`bA$46-&0NDX{`$dCh+9eTnAFjHUOkzbKCHMH2P|%5GI@8t9#0m0 zZ6Je0nZlsK$!5aX43U-SW*ZSK5x=oR4We(u4OqfDQb<(&G_R`he+HMI6U%kKdX%He7U)EEIPtUG>Os#u^4) z|02-X(M5fI5N;$Rmt)vUI-vZtG{_0$n_M~=-Qu-*a(3S3&d zc3OegO_24gbk*C1NXan6Y2zs+#)%6Om@|>LBmC;O2>#na6DOeYB2=DR?NFY&kST|h z5VO+!a-u8={t3W2GnjWx@p1%-wSCJ_9MGK{&hyR!_J-*1u39DlWh9o^_bI?&!gdhv zuiE_3^_gCq#9!jzkUkM?C$ZYNNG!8tk?ho2EwEkg$Z-64raZC_S0#pF;@R(ZDp0`n1!NSj5J0S31E^|X-yngih$h zs{x}`1Dp$)Vil3(NgbM4zJoXNW9TOn{7dzXmdJ=sg3&E2?(*_+6WH54WZsos0s3W( zs79-3*X#~9KR?ekR|P0MNQf6t`qW;6yxGm4REWiuPL}t>4mngm57KRPV4rNsDYrVG z4-^errUDbmd~DWESAFe#Kq0r*by#3{x8(B{iAr6r3QoWi2wwN2R6s8M_9>6eF7 z-Y1618P}g4AHP4WRx=HbaSr^l>8MjM`lSWZo7h}*VlcehNoCFd#9gBtl|*i62RzMb z3ngw&Y?*Z~$$Yke8yI>}z#mkWUgZ{C*V}Y4sZ@7)DZndeHP1JpgwMYsPtUtXw}n0& zj*VV+CyNtIbL!PPW;j(&zJ5`BJq3>Zkz`RCHbsq%sL($whn!=6E>mmVa>Vjr%BiT* zT7IvI+6w!(3{d8%xKpbqHTA7yO%;E2*|msg+yRIF`Gc5TN?#ZAm53x}EwcpjjGae05 z)m@HmuX0;uxq=S8tYdnl8D#432`d_>jkTL)O diff --git a/user_interface/plot.sh b/user_interface/plot.sh index 66ae370..a2f5b8f 100755 --- a/user_interface/plot.sh +++ b/user_interface/plot.sh @@ -5,9 +5,9 @@ right=$2 ./analyzer.pl > out.dat cat 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 1; +use constant FALSE => 0; + +my $window = Gtk2::Window->new; +$window->set_title ('Widget Layout'); +$window->signal_connect (destroy => sub { Gtk2->main_quit; }); +$window->set_border_width(3); + +my $vbox = Gtk2::VBox->new(FALSE, 6); +$window->add($vbox); + +my $frame = Gtk2::Frame->new('Buttons'); +$vbox->pack_start($frame, TRUE, TRUE, 0); +$frame->set_border_width(3); + +my $hbox = Gtk2::HBox->new(FALSE, 6); +$frame->add($hbox); +$hbox->set_border_width(3); + +my $inc_button = Gtk2::Button->new('_Click Me'); +$hbox->pack_start($inc_button, FALSE, FALSE, 0); +my $count = 1; + +my $quit_button = Gtk2::Button->new('_Quit'); +$hbox->pack_start($quit_button, FALSE, FALSE, 0); +$quit_button->signal_connect( clicked => sub { + Gtk2->main_quit; + }); + +my $label = Gtk2::Label->new('Clicked 0 times.'); +$vbox->pack_start($label, TRUE, TRUE, 0); + +# has to be done after we've created the label so we can get to it +$inc_button->signal_connect( clicked => sub { + $label->set_text("Clicked $count times."); + $count++; + }); + +$window->show_all; +Gtk2->main; -- 2.43.0