From fe37e8872440699424b72219552dc7c357383f2e Mon Sep 17 00:00:00 2001 From: Oliver Bock Date: Fri, 28 Nov 2008 22:46:10 +0100 Subject: [PATCH] Initial steps taken * First rough GUI layout * Added widget for OpenGL context * Using dedicated working directories * Adjusted .gitignore --- .gitignore | 7 +- pulsatingscience.pro | 44 +++++---- src/pulsaranimationwidget.cpp | 45 +++++++++ src/pulsaranimationwidget.h | 43 ++++++++ src/pulsatingscience.cpp | 1 + src/pulsatingscience.qrc | 7 ++ src/pulsatingscience.ui | 169 ++++++++++++++++++++++++++++++-- src/resources/control-pause.png | Bin 0 -> 248 bytes src/resources/control-quit.png | Bin 0 -> 2360 bytes src/resources/control-run.png | Bin 0 -> 328 bytes src/resources/control-stop.png | Bin 0 -> 204 bytes src/resources/help-about.png | Bin 0 -> 1430 bytes src/resources/help-help.png | Bin 0 -> 2461 bytes src/resources/help-website.png | Bin 0 -> 2489 bytes 14 files changed, 288 insertions(+), 28 deletions(-) create mode 100644 src/pulsaranimationwidget.cpp create mode 100644 src/pulsaranimationwidget.h create mode 100644 src/resources/control-pause.png create mode 100644 src/resources/control-quit.png create mode 100644 src/resources/control-run.png create mode 100644 src/resources/control-stop.png create mode 100644 src/resources/help-about.png create mode 100644 src/resources/help-help.png create mode 100644 src/resources/help-website.png diff --git a/.gitignore b/.gitignore index 2635231..8f8181c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ # patterns *~ -ui_*.h # files .project @@ -10,5 +9,7 @@ PulsatingScience # folders -debug/ -release/ \ No newline at end of file +.moc/ +.ui/ +.rcc/ +.obj/ \ No newline at end of file diff --git a/pulsatingscience.pro b/pulsatingscience.pro index aaf0268..f326f32 100644 --- a/pulsatingscience.pro +++ b/pulsatingscience.pro @@ -1,29 +1,35 @@ # ############################################################################## -# Copyright (C) 2008 by Oliver Bock # -# oliver.bock[AT]aei.mpg.de # -# # -# This file is part of PulsatingScience. # -# # -# PulsatingScience is free software: you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published # -# by the Free Software Foundation, version 3 of the License. # -# # -# PulsatingScience is distributed in the hope that it will be useful, # -# but WITHOUT ANY WARRANTY; without even the implied warranty of # -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # -# GNU General Public License for more details. # -# # -# You should have received a copy of the GNU General Public License # -# along with PulsatingScience. If not, see . # -# # +# Copyright (C) 2008 by Oliver Bock # +# oliver.bock[AT]aei.mpg.de # +# # +# This file is part of PulsatingScience. # +# # +# PulsatingScience is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published # +# by the Free Software Foundation, version 3 of the License. # +# # +# PulsatingScience is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with PulsatingScience. If not, see . # +# # # ############################################################################## TEMPLATE = app TARGET = PulsatingScience QT += core \ gui \ opengl -HEADERS += src/pulsatingscience.h -SOURCES += src/pulsatingscience.cpp \ +HEADERS += src/pulsaranimationwidget.h \ + src/pulsatingscience.h +SOURCES += src/pulsaranimationwidget.cpp \ + src/pulsatingscience.cpp \ src/main.cpp FORMS += src/pulsatingscience.ui RESOURCES += src/pulsatingscience.qrc +UI_DIR = src/.ui +RCC_DIR = src/.rcc +MOC_DIR = src/.moc +OBJECTS_DIR = src/.obj \ No newline at end of file diff --git a/src/pulsaranimationwidget.cpp b/src/pulsaranimationwidget.cpp new file mode 100644 index 0000000..67aed8b --- /dev/null +++ b/src/pulsaranimationwidget.cpp @@ -0,0 +1,45 @@ +/****************************************************************************** + * Copyright (C) 2008 by Oliver Bock * + * oliver.bock[AT]aei.mpg.de * + * * + * This file is part of PulsatingScience. * + * * + * PulsatingScience is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published * + * by the Free Software Foundation, version 3 of the License. * + * * + * PulsatingScience is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with PulsatingScience. If not, see . * + * * + ******************************************************************************/ + +#include "pulsaranimationwidget.h" + +PulsarAnimationWidget::PulsarAnimationWidget(QWidget *parent) : QGLWidget(parent) +{ + +} + +PulsarAnimationWidget::~PulsarAnimationWidget() +{ + +} + +void PulsarAnimationWidget::initializeGL() +{ + +} + +void PulsarAnimationWidget::resizeGL(int w, int h) +{ + +} + +void PulsarAnimationWidget::paintGL() { + +} diff --git a/src/pulsaranimationwidget.h b/src/pulsaranimationwidget.h new file mode 100644 index 0000000..5be88b7 --- /dev/null +++ b/src/pulsaranimationwidget.h @@ -0,0 +1,43 @@ +/****************************************************************************** + * Copyright (C) 2008 by Oliver Bock * + * oliver.bock[AT]aei.mpg.de * + * * + * This file is part of PulsatingScience. * + * * + * PulsatingScience is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published * + * by the Free Software Foundation, version 3 of the License. * + * * + * PulsatingScience is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with PulsatingScience. If not, see . * + * * + ******************************************************************************/ + +#ifndef PULSARANIMATIONWIDGET_H_ +#define PULSARANIMATIONWIDGET_H_ + +#include + +class PulsarAnimationWidget : public QGLWidget +{ + Q_OBJECT + +public: + PulsarAnimationWidget(QWidget *parent); + virtual ~PulsarAnimationWidget(); + +protected: + + void initializeGL(); + + void resizeGL(int w, int h); + + void paintGL(); +}; + +#endif /* PULSARANIMATIONWIDGET_H_ */ diff --git a/src/pulsatingscience.cpp b/src/pulsatingscience.cpp index 23a2458..62072ca 100644 --- a/src/pulsatingscience.cpp +++ b/src/pulsatingscience.cpp @@ -23,6 +23,7 @@ PulsatingScience::PulsatingScience(QWidget *parent) : QMainWindow(parent) { ui.setupUi(this); + ui.menuView->addAction(ui.dockAnimControl->toggleViewAction()); } PulsatingScience::~PulsatingScience() diff --git a/src/pulsatingscience.qrc b/src/pulsatingscience.qrc index 40da103..0b97917 100644 --- a/src/pulsatingscience.qrc +++ b/src/pulsatingscience.qrc @@ -1,5 +1,12 @@ + resources/control-pause.png + resources/control-quit.png + resources/control-run.png + resources/control-stop.png + resources/help-about.png + resources/help-help.png + resources/help-website.png resources/aei-icon48.png diff --git a/src/pulsatingscience.ui b/src/pulsatingscience.ui index aafe861..8abd8c6 100644 --- a/src/pulsatingscience.ui +++ b/src/pulsatingscience.ui @@ -5,7 +5,7 @@ 0 0 - 800 + 550 600 @@ -16,21 +16,178 @@ :/icons/resources/aei-icon48.png:/icons/resources/aei-icon48.png - - + + + + + + + + + + + QDockWidget::AllDockWidgetFeatures + + + Animation Control + + + 8 + + + + + + + + + Spin Frequency: + + + + + + + Qt::Horizontal + + + + + + + + + + + + 0 0 - 800 + 550 21 + + + View + + + + + Help + + + + + + + + + Control + + + + + + + + + + - + + + + :/icons/resources/help-website.png:/icons/resources/help-website.png + + + Website + + + + + + :/icons/resources/help-about.png:/icons/resources/help-about.png + + + About + + + + + + :/icons/resources/control-quit.png:/icons/resources/control-quit.png + + + Quit + + + + + + :/icons/resources/control-run.png:/icons/resources/control-run.png + + + Run + + + + + + :/icons/resources/control-stop.png:/icons/resources/control-stop.png + + + Stop + + + + + + :/icons/resources/control-pause.png:/icons/resources/control-pause.png + + + Pause + + + + + + :/icons/resources/help-help.png:/icons/resources/help-help.png + + + Help + + + + + PulsarAnimationWidget + QWidget +
src/pulsaranimationwidget.h
+ 1 +
+
- + + + actionQuit + activated() + PulsatingScienceClass + close() + + + -1 + -1 + + + 274 + 299 + + + + diff --git a/src/resources/control-pause.png b/src/resources/control-pause.png new file mode 100644 index 0000000000000000000000000000000000000000..d17123b9d40687ae9ec12070fe1804dcce11b6d3 GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=7~!_&nvB;xSft9yA58Hl((>~}cK&|$>e9I%m@H`;(TT4AG$mew*4 z=S~R)-um993p9k>m;yieebtG#pZ`vX<=}qf3T5l6Q}Knb?}$q*``PFH?vjk!jf7ct zx00@()Y<5jq`s!`-;@Iq#Zz9^yf}GggU4sXy_KF5H9wd-DX@Uic5bORTT?^6r(}iP jGRi6v`@g5JS%E{&u2B5wpNR*hK_2jQ^>bP0l+XkK9{yG8 literal 0 HcmV?d00001 diff --git a/src/resources/control-quit.png b/src/resources/control-quit.png new file mode 100644 index 0000000000000000000000000000000000000000..1c7d8fb0ff606f3b5f8e78a7cdcbe530b2b842fe GIT binary patch literal 2360 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 TS-Hj$P=I*4`njxgN@xNA*Tj5P literal 0 HcmV?d00001 diff --git a/src/resources/control-stop.png b/src/resources/control-stop.png new file mode 100644 index 0000000000000000000000000000000000000000..603526cbfdd05c2f53d7dfff660e6e57e098819e GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7a$D;Kb?2i11Zh|kH}&M z25w;xW@MN(M*=9A~6@vd$@?2>@!qLsS3& literal 0 HcmV?d00001 diff --git a/src/resources/help-about.png b/src/resources/help-about.png new file mode 100644 index 0000000000000000000000000000000000000000..88b58ee67e04b6af1501a0b3d81bdb87904ae6d6 GIT binary patch literal 1430 zcmV;H1!?+;P)yWQ?& zjF}}#lH&3BN+=WxOioTd_xt@LckbL77#SHE({+7mUGd1WY}&tne`8ly*X7yS*=fTt z;v!3N&bhAZfA#nG|8nHWkwZ3{E&m^xmzI_mU$}7Lhd>}OpTR8oysILSNVvDR_ow>$ z`j6ksytcOXqv7GQ~AdqqW+}zxsKA-RFxBW=!kHW%2=lS#J&v`ta z>TIB|UcCb69E>sOx{h!-oN>L==`1>X_UyU3x;k%KfTKr`wly>~d?AEDrUw92RRtjg zLI@~|0!2{(Afv9Nq@?21sZ%FaRkf@EC@U-5=JWYl2_ZCLlI298ltKsro6QD`#ez(_ z1VmF))0cbq?)`KPKtn@AgWK({;GAbY2>{sbcF3{}Aq4DpJ4_~1R*et>R;$%^;J|_A z#6Tthq?($VI>wkOTl_)@aL$pRpPxMSrcIlY?Z~BlUa$8PP1Cd_0Ann#prD{6+sRV_ z%w{uGRRsWS+_*6(T|%pAn#*FbXaK-g6QGn*C6zK;$+8Sh)4&*m!{I=#S|J1oA+jV% zrX+w6f=42e@cRG|Lf~*XpePD#HXAtSIRiwa(THIf@g#s@7}3ee$>)hpa@mMd3Wvi1 ztJMmt)tWN^Aq3OY(=)oRFQyKmarf@s;iaXeNUjM8Ay8OY2)Ek}MNx82j&qK|!NK1{ zp^%;mfT5wG-~4|6140N=lSns6hGAgy=FQl*Z(mL~AaT8CW@hGkdU|>R!~uXN0K(z$ z(#pz;+|<<6Xfl~HUPnoiu&}UzD_5@I_U+p+nM^1yE=D$u5JFtMc(Lp1)vG@WAtG-8 z0N@i76Vn9+1tnguw+euiE>=Pa{C+=f-n@xmFo<9<2(QKgOac{2L?`i4)OIPu;1_;^2nROU%GUuV}5@A0f5lkMwz})7yzxPsAzX{bMsft&CQ=zRaKQ~ znx-HWye13jD(An8}y}P^n`jaP5?g=6007TzqlI;^o0w4p>R8=jmsHoWK z@pyLb*s-J3<#IU{MX>;Y%jMEM9?y0{2&I(b#*G_8hYuhAHWrJ`0EhtKSZ7H9OaL|j za01vy2&rU@?WUCOb~>G(wYRrle(~Z(aA|2tT)TGdSH_sSUejzqbhS+kfWjDaA3S*Q zlq@`1ts5ob%YfnL@f` ktdvscIuG|jK>i!`HxlZ zdvH|s70187``o>|n|)c$wY4+q z*r`QjYEi_#w6sMT0p$^#@JKK~APF&Vl594c>~8jX_jT|6^$#=}j3{HzUw7`@bH1N@ z&iVa*=SL`|_%>Ekd6y&FjL>QPa-hH`P#~2;Dv?HyU&VDRR{;jc^!FO22q!hPJh%DCUw1XV+CJny*dBCGepP(# za^lb3P`2rnU#@#WpKE6k9R&4t14$J`1r&vWj)4CalFMeEhedq5&L3z%a~3=eE6| zZ*K<4D~7^2@%p}wKfS!C`SH_K`;yqK8Q67i?e_J{%Nh_H1w3OQz948?L5lE*F%l9G z5Y$BY(@unX2EYgcBvC|0Mh2`lJ9O{A1`LjZDioY6hDVl{{aD9yCIA~Q)nYz-xch-$ z69Cv!QSi|Hi{~^T;RVLVfQbM!MMH?{;Z{s=2Pxd6LG+D8(AzhPqsLC*N%$d%)#U=CVS6qL)=cFme za}EwkgOMaa83xG70?Eq5CqBb?<4e1%o1!t#j1mY8tr~sj`Lk;uxaXE-4Qs6Djvd3` zPy!3$9t1fHJW&FVH;g^~ftC}&^lGte(MHYhK9Y*drwPEs<8jI79e4E{KUy8m)UUg* z#9pIvCb$F&NlO9~eo#?FiNlb+>c;Y)19)NvfEpZ6oZahb*Z^8R3`cN!plXxroux4!y8c22gDPzn$huKXMnuKGTX zNZIJwx7Rz882iMirD}q$dtW>ekA^R;Whmw!|>?8`r z;vjMqS&~&>J~!tM0KL;qXvr&_?{sB3jFKK81OO0@L=c~v0BZowwj6vT(fQGD4s{)W zdp7Y)K!O5r;($A{-Q$nZsKP=83!*51EJK8hsySJ=POpL+s_(Il2UTy>>*>`=`sqM1 zSw=`sps%fMMD|Y}W`M8U%`UYzO2huNda%=<=t-qCq`(27Ks*7c3CwY3T(^MXBmiK< z(!~;qP05zfs7PYL=^zP)N1QMi?>>JXz+fw-$~OhTMLG9qB-yRXaj3}zAcuiS5J*Ik zp%+~G{CV>MfD1RhnRE!6SkSahNBaK`XcAO=5uncnAJUK<9&{7nYfrUHjRjCfM56oJ6hR5Gom7?$H00BH4H==1ufIsq2o zc@P5V7!AD0qQoqg=?E#hQUD#t6%So}^%qI22iUQ@Pc!www^@n~GNpMtfe}t&ciNtE>*E0|x0+S4t6y#GrD# zn3@EGMXf2IrR^u-0FQou7Az`HMR{i9+okm_=;VW$ClCxR!NhoVh{;Q^xr zFbvEj4s(Wpe7nf6pKE)uK;+g}5W>$Uo@>qe!PVE@+-&VW{J~ne?anG~2rB}IQ1RA} z(6r@AOnmSUU}6wQ_wH?JefM9RO=We4oQ7vzGX|2?F8lJ=*Ol)za8b};7$g!wlJXc= z3^n+5E!p)&wuiGE2ElG*k;z0s zr~+Baz-dDnQnq4jefz*q-GSI)+p1rfAz4~x09;E5dHj}ZUu&$hJxrA-5D0?A6G&?e ze2fJn4bNjjZ^fj?gUR7xZ#W!w>juv&wxRx_>yv|4o5jFMMgbO`1`CxzKtc5)V6%Z3 zocP`G_v$J_CB;V%Y?m20%ddI%pO%U~r;&jJvS=Q1h?a z(&^4GYJRDyTGHu}WoF}sXV%=bb75)0RcdA!B&~s|Z-AKrGUgN_l}aO(PJwa)f`K7u z1x^%*#)|<61tlz~PK0JOfi>9C+#MKt=AZi?O({zErFye=_5M)w*b=>X-_IVp_l=cH z=2v6h0w^{Yh^m5N7>J?(Q4|0Gip7RR(LBHiXkbA(7MdV}k&K{J!0rRBr=Q=k=doxa z*?Q*Uk^S`m0Ps;fd9Ko6eXw;nx@Fzw#q}jX1_+=k3Mc>qfaQ54SP^Pr88oX1jpe}# zI)>m{A({JRnB<}oo1op_B)rZxZ}YM%L0{?>gJcrxHO&VNsqhqS=Lklb`s#6P~`lfzH7Z&&e32eF6|Zbs6C+0sw$o zPGHljqH&qICD7aQQbAuBET@C)_b92@IDj+BjL~joO;)oS^7&ij;1$mb bU$p-L(h)?sbJ0m{00000NkvXXu0mjfTsooG literal 0 HcmV?d00001 diff --git a/src/resources/help-website.png b/src/resources/help-website.png new file mode 100644 index 0000000000000000000000000000000000000000..51b0258c5f31ba0ac2badce073a900d9dc5abdd2 GIT binary patch literal 2489 zcmV;q2}bsbP)#hM%hL={c8s zaJjq>ks>MUup~-wEJHy8C9r(_u_M@k;~2IK+kgQ(Ky3Jze=4O@#r%#{l%|7>SLvt&n3%|V0cRTR0 z-+z|ri*xGRU;N~@yLL={V60Jnq)`puSJ7&-XkE{p_eJ4)1Lx=0`sVfd)#PWdoxXJZ zZ@%>S+QhH?4y&*H{d@88#`wY?9j5ijXVt$PpE+=LIsSviBzry1i!9EqB*u#KUJ_&F zT59BKFPG)MkvF>ofBbqce(}oM(SJBK|CQhU;Y(8@!q{COcy9{)>%~=0ojyPE;fD@> ze*0+S>#Zo<->7J1z0ffZ6Cu(H4~UoIN}L^gb!PcbpL+HmkG%i> z`|Oc#e)4Tt!R;F&!ja<_cYOSzgWtJxW9u6u)o`T_1aJ|I_;> z8lS3%L8yRGmqNvb!vm@HWKMAY2DtU$ybx*4mPUnEMNCc=x*>y8G29-bm%_Uz8+5fIk=E0j1On=dL}u ze`D*@)j;1OQzv)KBso?DH#96#{^k)xK!9c#vLVvM#?!M71vJ8dk&5Q-jg9(m9@z4& z+3)|;^!N93ROvDBosz)s0T;jb7REYwOR*G7v+0~5L-mI{t zQ6YCis}gW%$HZ@Z`ZG^FqEs1I;q1R3=KY_YoT}ApAH5Xks#iGfo~Sbt1vCWG!m+g( zv65N3#!@&zxOFI{*w&0_Rf4ze185PfcrpvS$Lgc^+_CNBz<&X`2H1JugZD}h+>=?y zd}?@kAz?PjsRgBho^gZ@h4?l+#%e&NXqPd9hW#W}CH`%KnC9++(K(55E$PShET0&?rgtQ$^G?mTB!2V9PG zV&mxK7Uyr(Db$LMwSe4t2*N#E_TIH`Jqx0O@PKhb-#EfRQ3({GQY`fgyg)R}iaSSZ zY_3;$c`;!jHRMjv2wK6a6Mni76KRc7@WIV3c8*kUDR8Tq<8qQ?oV0YUbqAnBXx209 zH(BxY3!&mQg;RuDQx!qqCg(^L@YwbZbd2NZ)h_d?A=Ci_;v;*; z85TzXE_MdY#u-|b)lR9hS7==lsRf$KP3Py5oXJ{96lmt#33;04!x-okNjF)IlL1p3 zM_5kE;t@JUpcR7WS}(sP^-i@@{&RMX)L25T2(%^`0*9i|D6S+qiE)fpLvrgm(N3AF zSD5K!%q?`B&ju@i(?FiZ@uk^?4jbzgycdjhV!}(8+AJ@w_N2Eu2lx=MZf)_@<@uF(aPRgF zn_5+_bOuxcDJ55m@mh#hiuR!32WOU;?Pdsqb3))t>0KabrLbC|mBJ`^@oLQUa>{&~ zmjz6OlNT0AyU7)|bpA5nH6VjGj-5%mz4Nb}Uu4%fZr(XtSS~vo&IKPsTTaWjG z_k#0+7mszr=i#399_u{T3)Tt!tl->*1r`@O*lzpz-cJrcOObYNCLqP)xumxHkVtFd zR~NfkG&$BF(3*a3X{Uzs?Gk()$PU47p4P3CDc8bz(t+X4+3PGV$GE}Z^5FDKe{5%8 zIRg~8d=UY5aP{KV#=b+7E^6H0jx!yG0a|Mc>oKnMsu+4!3p9~dZvhq7Y0UR$HvNpZP}2bWKOC;iDY&jY>ka&9Fcl65l^$8R)t-nEr#<6tr{+7uS+g^E_( zG2UP#3V3w)I8Pqh!Q*#M^1&Tr+_!mzO^t}X<8>a`++wEPWA1vwTBlE*8H(KW26Gpl z?!NHU_i%X|aBqFY+*azHU73wdH$GY2vS%b{G!J@Fp>t(D$O}(13K^@16i(4tCgt(JElJRrO&kX z9C$KnH17y1feHeR)*2m@)o;BxIWJi2@!sQ|r!bbRpWDIe%5-w(m1p9khmYXR^6lWi zNP!!DBV9?76F)v#82LHXRwk-4?u3^25{Mf{yz>-=rzk9iDaZ$gelqB%E32oHOK1LW z?dT7_+n@f?PZ75U*k1(nZvPE65TUE%je8&4-#qZ}!_mfV4+iztUR{aC1#03&ytRFo z53bv!dm&$*{rTYB&;GZ#^4i=m*Ufss{eKADOe6%VpqhGg=SVQIqp72)A>NB0q^VoE zoXTJ&0s25b^jO}_@Gnc?_ILDfU4P%-w7x6o&Ex+7GP%}3O%i|T00000NkvXXu0mjf Djuz}| literal 0 HcmV?d00001 -- GitLab