From 80715fbec3a10a5d6af64758f77ba8a5e08b36e7 Mon Sep 17 00:00:00 2001 From: David Ankers Date: Sat, 18 Feb 2012 08:38:01 +1100 Subject: [PATCH 01/11] Update Plist info for Mac --- ground/openpilotgcs/src/app/Info.plist | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ground/openpilotgcs/src/app/Info.plist b/ground/openpilotgcs/src/app/Info.plist index 23e542b6d..297c81b5c 100644 --- a/ground/openpilotgcs/src/app/Info.plist +++ b/ground/openpilotgcs/src/app/Info.plist @@ -172,7 +172,7 @@ CFBundleGetInfoString - Qt Creator; Copyright Nokia Corporation + OpenPilot GCS; Copyright OpenPilot CFBundleIconFile @ICON@ CFBundlePackageType @@ -182,7 +182,7 @@ CFBundleExecutable @EXECUTABLE@ CFBundleIdentifier - com.nokia.qtcreator + org.openpilot.openpilotgcs CFBundleVersion 1.3.1 CFBundleShortVersionString From 949785d21208d446124576e894b8f1cb08d16dc6 Mon Sep 17 00:00:00 2001 From: zedamota Date: Sat, 18 Feb 2012 16:58:10 +0000 Subject: [PATCH 02/11] Fixes shadow widgets values not being refreshed if master widget default value is equal the the UAVObj field value. --- .../src/plugins/config/stabilization.ui | 4 +-- .../uavobjectwidgetutils/configtaskwidget.cpp | 29 +++++++++++++++++++ .../uavobjectwidgetutils/configtaskwidget.h | 1 + 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/stabilization.ui b/ground/openpilotgcs/src/plugins/config/stabilization.ui index 52c1e0d38..788ecd9a6 100644 --- a/ground/openpilotgcs/src/plugins/config/stabilization.ui +++ b/ground/openpilotgcs/src/plugins/config/stabilization.ui @@ -470,7 +470,7 @@ QTabWidget::North - 1 + 0 true @@ -11673,7 +11673,7 @@ border-radius: 4; 0 - -38 + 0 626 828 diff --git a/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp b/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp index a15bdae7d..2741c4606 100644 --- a/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp +++ b/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp @@ -264,6 +264,7 @@ void ConfigTaskWidget::refreshWidgetsValues() else { setWidgetFromField(ow->widget,ow->field,ow->index,ow->scale,ow->isLimited); + } } @@ -346,6 +347,25 @@ void ConfigTaskWidget::enableControls(bool enable) button->setEnabled(enable); } } +/** + * SLOT function called when on of the widgets contents added to the framework changes + */ +void ConfigTaskWidget::forceShadowUpdates() +{ + foreach(objectToWidget * oTw,objOfInterest) + { + foreach (shadow * sh, oTw->shadowsList) + { + disconnectWidgetUpdatesToSlot((QWidget*)sh->widget,SLOT(widgetsContentsChanged())); + checkWidgetsLimits(sh->widget,oTw->field,oTw->index,sh->isLimited,getVariantFromWidget(oTw->widget,oTw->scale),sh->scale); + setWidgetFromVariant(sh->widget,getVariantFromWidget(oTw->widget,oTw->scale),sh->scale); + emit widgetContentsChanged((QWidget*)sh->widget); + connectWidgetUpdatesToSlot((QWidget*)sh->widget,SLOT(widgetsContentsChanged())); + + } + } + setDirty(true); +} /** * SLOT function called when on of the widgets contents added to the framework changes */ @@ -664,6 +684,15 @@ void ConfigTaskWidget::autoLoadWidgets() } } refreshWidgetsValues(); + forceShadowUpdates(); + foreach(objectToWidget * ow,objOfInterest) + { + qDebug()<<"Master:"<widget->objectName(); + foreach(shadow * sh,ow->shadowsList) + { + qDebug()<<"Child"<widget->objectName(); + } + } } /** * Adds a widget to a list of default/reload groups diff --git a/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.h b/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.h index b6733acc0..deb297e32 100644 --- a/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.h +++ b/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.h @@ -115,6 +115,7 @@ public: bool allObjectsUpdated(); void setOutOfLimitsStyle(QString style){outOfLimitsStyle=style;} void addHelpButton(QPushButton * button,QString url); + void forceShadowUpdates(); public slots: void onAutopilotDisconnect(); void onAutopilotConnect(); From 91e3ee13fd37f275395c2236d04f2d644881609a Mon Sep 17 00:00:00 2001 From: zedamota Date: Sat, 18 Feb 2012 20:37:30 +0000 Subject: [PATCH 03/11] Fix input and output configuration layout issues. --- .../src/plugins/config/configinputwidget.cpp | 2 +- .../src/plugins/config/inputchannelform.cpp | 17 ++++++++++++++++- .../src/plugins/config/inputchannelform.h | 2 +- .../src/plugins/config/inputchannelform.ui | 2 +- .../src/plugins/config/outputchannelform.cpp | 12 ++++++++++++ 5 files changed, 31 insertions(+), 4 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp b/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp index 67a54aa6d..2789e8967 100644 --- a/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configinputwidget.cpp @@ -62,7 +62,7 @@ ConfigInputWidget::ConfigInputWidget(QWidget *parent) : ConfigTaskWidget(parent) Q_ASSERT(index < ManualControlSettings::CHANNELGROUPS_NUMELEM); inputChannelForm * inp=new inputChannelForm(this,index==0); m_config->channelSettings->layout()->addWidget(inp); - inp->ui->channelName->setText(name); + inp->setName(name); addUAVObjectToWidgetRelation("ManualControlSettings","ChannelGroups",inp->ui->channelGroup,index); addUAVObjectToWidgetRelation("ManualControlSettings","ChannelNumber",inp->ui->channelNumber,index); addUAVObjectToWidgetRelation("ManualControlSettings","ChannelMin",inp->ui->channelMin,index); diff --git a/ground/openpilotgcs/src/plugins/config/inputchannelform.cpp b/ground/openpilotgcs/src/plugins/config/inputchannelform.cpp index 98f71ea31..b8faa0fcb 100644 --- a/ground/openpilotgcs/src/plugins/config/inputchannelform.cpp +++ b/ground/openpilotgcs/src/plugins/config/inputchannelform.cpp @@ -23,7 +23,6 @@ inputChannelForm::inputChannelForm(QWidget *parent,bool showlegend) : delete ui->legend4; delete ui->legend5; } - connect(ui->channelMin,SIGNAL(valueChanged(int)),this,SLOT(minMaxUpdated())); connect(ui->channelMax,SIGNAL(valueChanged(int)),this,SLOT(minMaxUpdated())); connect(ui->channelGroup,SIGNAL(currentIndexChanged(int)),this,SLOT(groupUpdated())); @@ -40,6 +39,22 @@ inputChannelForm::~inputChannelForm() { delete ui; } +void inputChannelForm::setName(QString &name) +{ + ui->channelName->setText(name); + QFontMetrics metrics(ui->channelName->font()); + int width=metrics.width(name)+5; + foreach(inputChannelForm * form,parent()->findChildren()) + { + if(form==this) + continue; + if(form->ui->channelName->minimumSize().width()ui->channelName->setMinimumSize(width,0); + else + width=form->ui->channelName->minimumSize().width(); + } + ui->channelName->setMinimumSize(width,0); +} /** * Update the direction of the slider and boundaries diff --git a/ground/openpilotgcs/src/plugins/config/inputchannelform.h b/ground/openpilotgcs/src/plugins/config/inputchannelform.h index eb8ad7d18..c6534dc48 100644 --- a/ground/openpilotgcs/src/plugins/config/inputchannelform.h +++ b/ground/openpilotgcs/src/plugins/config/inputchannelform.h @@ -15,7 +15,7 @@ public: explicit inputChannelForm(QWidget *parent = 0,bool showlegend=false); ~inputChannelForm(); friend class ConfigInputWidget; - + void setName(QString &name); private slots: void minMaxUpdated(); void neutralUpdated(int); diff --git a/ground/openpilotgcs/src/plugins/config/inputchannelform.ui b/ground/openpilotgcs/src/plugins/config/inputchannelform.ui index 044e2437f..6e3395aab 100644 --- a/ground/openpilotgcs/src/plugins/config/inputchannelform.ui +++ b/ground/openpilotgcs/src/plugins/config/inputchannelform.ui @@ -36,7 +36,7 @@ - 70 + 10 0 diff --git a/ground/openpilotgcs/src/plugins/config/outputchannelform.cpp b/ground/openpilotgcs/src/plugins/config/outputchannelform.cpp index 131af2623..64e7df893 100644 --- a/ground/openpilotgcs/src/plugins/config/outputchannelform.cpp +++ b/ground/openpilotgcs/src/plugins/config/outputchannelform.cpp @@ -185,6 +185,18 @@ void OutputChannelForm::neutral(int value) void OutputChannelForm::setAssignment(const QString &assignment) { ui.actuatorName->setText(assignment); + QFontMetrics metrics(ui.actuatorName->font()); + int width=metrics.width(assignment)+1; + foreach(OutputChannelForm * form,parent()->findChildren()) + { + if(form==this) + continue; + if(form->ui.actuatorName->minimumSize().width()ui.actuatorName->setMinimumSize(width,0); + else + width=form->ui.actuatorName->minimumSize().width(); + } + ui.actuatorName->setMinimumSize(width,0); } /** From 0a352e179a5559bac0187a2b0a40f53dd52fe43c Mon Sep 17 00:00:00 2001 From: David Ankers Date: Sun, 19 Feb 2012 13:12:27 +1100 Subject: [PATCH 04/11] Add Steve's new icons --- .../plugins/welcome/qml/WelcomePageButton.qml | 4 ++-- .../plugins/welcome/qml/images/config-off.png | Bin 0 -> 5445 bytes .../plugins/welcome/qml/images/config-on.png | Bin 0 -> 8207 bytes .../plugins/welcome/qml/images/firmware-off.png | Bin 0 -> 4337 bytes .../plugins/welcome/qml/images/firmware-on.png | Bin 0 -> 7853 bytes .../welcome/qml/images/flightdata-off.png | Bin 0 -> 7137 bytes .../welcome/qml/images/flightdata-on.png | Bin 0 -> 13388 bytes .../src/plugins/welcome/qml/images/hitl-off.png | Bin 0 -> 6116 bytes .../src/plugins/welcome/qml/images/hitl-on.png | Bin 0 -> 9468 bytes .../plugins/welcome/qml/images/planner-off.png | Bin 0 -> 7308 bytes .../plugins/welcome/qml/images/planner-on.png | Bin 0 -> 11410 bytes .../plugins/welcome/qml/images/scopes-off.png | Bin 0 -> 5468 bytes .../plugins/welcome/qml/images/scopes-on.png | Bin 0 -> 8686 bytes .../qml/images/welcome-flightdata-hover.png | Bin 11715 -> 0 bytes .../welcome/qml/images/welcome-flightdata.png | Bin 4956 -> 0 bytes 15 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 ground/openpilotgcs/src/plugins/welcome/qml/images/config-off.png create mode 100644 ground/openpilotgcs/src/plugins/welcome/qml/images/config-on.png create mode 100644 ground/openpilotgcs/src/plugins/welcome/qml/images/firmware-off.png create mode 100644 ground/openpilotgcs/src/plugins/welcome/qml/images/firmware-on.png create mode 100644 ground/openpilotgcs/src/plugins/welcome/qml/images/flightdata-off.png create mode 100644 ground/openpilotgcs/src/plugins/welcome/qml/images/flightdata-on.png create mode 100644 ground/openpilotgcs/src/plugins/welcome/qml/images/hitl-off.png create mode 100644 ground/openpilotgcs/src/plugins/welcome/qml/images/hitl-on.png create mode 100644 ground/openpilotgcs/src/plugins/welcome/qml/images/planner-off.png create mode 100644 ground/openpilotgcs/src/plugins/welcome/qml/images/planner-on.png create mode 100644 ground/openpilotgcs/src/plugins/welcome/qml/images/scopes-off.png create mode 100644 ground/openpilotgcs/src/plugins/welcome/qml/images/scopes-on.png delete mode 100644 ground/openpilotgcs/src/plugins/welcome/qml/images/welcome-flightdata-hover.png delete mode 100644 ground/openpilotgcs/src/plugins/welcome/qml/images/welcome-flightdata.png diff --git a/ground/openpilotgcs/src/plugins/welcome/qml/WelcomePageButton.qml b/ground/openpilotgcs/src/plugins/welcome/qml/WelcomePageButton.qml index 3da587216..a31a252eb 100644 --- a/ground/openpilotgcs/src/plugins/welcome/qml/WelcomePageButton.qml +++ b/ground/openpilotgcs/src/plugins/welcome/qml/WelcomePageButton.qml @@ -13,13 +13,13 @@ Item { Image { id: icon - source: "images/"+baseIconName+".png" + source: "images/"+baseIconName+"-off.png" anchors.centerIn: parent } Image { id: hoveredIcon - source: "images/"+baseIconName+"-hover.png" + source: "images/"+baseIconName+"-on.png" anchors.centerIn: parent opacity: 0 } diff --git a/ground/openpilotgcs/src/plugins/welcome/qml/images/config-off.png b/ground/openpilotgcs/src/plugins/welcome/qml/images/config-off.png new file mode 100644 index 0000000000000000000000000000000000000000..c353cbf2a7d5796f5a02ffb2a5ea1df68f586136 GIT binary patch literal 5445 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 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/welcome/qml/images/config-on.png b/ground/openpilotgcs/src/plugins/welcome/qml/images/config-on.png new file mode 100644 index 0000000000000000000000000000000000000000..5b0c67e56a57eac469b6c1c8b058c9742c55b477 GIT binary patch literal 8207 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 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/welcome/qml/images/firmware-off.png b/ground/openpilotgcs/src/plugins/welcome/qml/images/firmware-off.png new file mode 100644 index 0000000000000000000000000000000000000000..7523feb1c3e1cddcb331a40693e26df7e9f5fc95 GIT binary patch literal 4337 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�B0(@^au(TSddo?RzVRP1PZXQb+ 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 R!$1EcDa)(NRe{Vy{ukVV*c$)< literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/welcome/qml/images/planner-off.png b/ground/openpilotgcs/src/plugins/welcome/qml/images/planner-off.png new file mode 100644 index 0000000000000000000000000000000000000000..d1b52c4e85f6500597648e055ee142307628b0c2 GIT binary patch literal 7308 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 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/welcome/qml/images/planner-on.png b/ground/openpilotgcs/src/plugins/welcome/qml/images/planner-on.png new file mode 100644 index 0000000000000000000000000000000000000000..ee16861621029d0f140daaa3dd1c64b6d5edf4e3 GIT binary patch literal 11410 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 literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/welcome/qml/images/scopes-off.png b/ground/openpilotgcs/src/plugins/welcome/qml/images/scopes-off.png new file mode 100644 index 0000000000000000000000000000000000000000..923ec4d3f814adb688a52b03656787b7d7e2ad4a GIT binary patch literal 5468 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 B;Y9!d literal 0 HcmV?d00001 diff --git a/ground/openpilotgcs/src/plugins/welcome/qml/images/scopes-on.png b/ground/openpilotgcs/src/plugins/welcome/qml/images/scopes-on.png new file mode 100644 index 0000000000000000000000000000000000000000..8de8ebd6eee522ca52c8b91bd8d774dbf8d8f8b9 GIT binary patch literal 8686 zcmbVSXEa>@x}NAQI-`>jL6n)%yC|a*QAf=TMu{@YOpF>e(MtqTqDG>OE{GDH2!aqI zdKVHkO4RFr&iS8vKb(6%+`ZP`zp~%weV@0jz1DB-XhQ?dn-pvm007{owwAil^@zT{ zJ;+F|pMn|sJ=X&(1_s9%qa886NN*HC#Q|-H;?Z_TI-!hENC!W!ev|?LK{Ah z_2lf)?xM)QWJGc9p4VsqKtUPjiL`e`VR-CNPA(pbpq=J65RZ$4BFJ1)AENK6hH`e% z^7lp=`x}_p`@7o9I)IdwcocAQ*9zQG7$gtQ-Oa;C4yOqEhhDks`Cr>$5YInEFs_QA zf0Bah8}g{3y-_@pq7V^#h!m7ZN+?Q)$I zq?_2I*ms`rEF{wcUSV zVgDyqPR$#I#Gt)R&}g^6E5OhhjY0c3qdj@lj3q^(Jo-p`7mvSo{z}k4{Z&VKyF5lY zXn3RDdHxY$IhX&yKt@efT@s?E3Q_srJpU)w;r|mg@HH9mU*+*X%H{8^>l*xP`tRbu zUi`a#P#)Jk<9*#6(fs!1000+u_?l3XwT~+ z*LZ5*!Ict^ZwGSMO$IL-=LT=5+nzDWGzYOB$=`t-t&Acp=BoD2#%&zkdfz)5A4L#f zr9A1dYfHqto;O*KBg$15+CH2zopk12Kxf)~*JEE9tkVRv&e?OT%R5F(P-kz0IU2u2 zQUZgwK7DmE@&qDk8sNM(U`47^DT&bJ+*7BW=Vrqz4?&df!x=uJ{I<_ z?(T>|r)x)%R!W+N4p>Px`uP!G?x8;bp6v1GUIo;3f+g7E(Tl@+{q%oSzrx*?+nHoN zoxR#F&xdHv*VdJ;V7O+Bkm+VZh`YaChaGuZ+D&2Rv(uCI7&P}Xmqas3%ULlcxBsds z?oVIEeBcH9Lm`W_!>7wKY3d%`+`SzP?e1=FE&jo0o!sZ!J6D2%zN84}rX8y)cvx9X zc+a<$%c_mob3_pUIL~EIzxNwVaoNxuef=#%sGCeLz3f*!@(-9nKwmwgqM{Tx9QB+^x=*>yFkz zVzGyjWs@F(o9CoTLN9p~T8 zC6y(|nL3rN$JO&=3p)Z$oqJn*>vNC0+6qlh6`JCu=gYdlAC6cBQgtecZ-43284cVG z!qHrdg z9cx69TVFkAafL@nY3Z;Q2MnHr$2*hF-5qf2x-zAV z3(i|`Ry$tZrlgfa(0i|9oOx0#k!6?yiD(T+K~)?=M5py5U?QKa2h?u&!=(q*5#t_y ziZ?A?6Yv_KOiOyBj79X+Gfg!NB8n=Xq-|w=i2t^y+sE~q{&{G$Shlq(Sw}d;N$w9q zpHMV-$$|~4L*QCEFvR@UF)Wphp>PZ6H;+Sy+YyXDf8@1Hbg~lFn7BO`HhuPla#a^i z@PG-kb$OqRxcMD%>e1W99-5%Q)34e0x|XNq$q_x1+Jq`<1fm{(i$2B74q8!(y4|z$ zL1dA&@`l#=dFg+0Qg(?fnr?gw<+D?(87InU&m?2Y=+LR&7kqD(gY|A;tyM^htxh7E z(;g+Z=?gX6qQl#6-OI<{%YT}t*$WF;GQ^q8hp!jMlHOycG_wd&K7$BR8IIrgM2_?8zN_q-7&3xOtKqc;w(Mb& zY^o(@**DGZv_dr|eHh~Zbi{<;FBz5*57)HtsAA5i?4@}#?Q#nuLX<$3UIM~#$Sk3= z)cWVQ-qFb<2wIZwS9NN;$`Qe<5B03Gg|j;88{kp~OkyFV%P)^#!)DBUxOLdI;OZ^Q ze>hnQHCr0{=3QZw79~tW4`}ok-}ajeB8IA!q(qp{{J2mSvv-`NDFT*26;$xz(I<+Mt#I+ z6XH{}&MmPn6>f%oE=HmHDBse}65p2omnw)*t|ZGTg0e;aO@0#mxB9oCsp>BXKCd+x zuEhBHgr^ebxjjKOji8RTZvLPNcfskrZRa3u0ioqncn zw_=^BK+s$lt|71}w7tY`knPrtyZ@QEvv9|59>ut0o_Bg_TrCTyea=`lom*zI$)HS! zu^J4+8A~LjjYL|IQ!5YD_#KMGO1NXDIXVw zq&Z2r3ph*k*l-fyslG;M3`$kPX-$~CCl3U4=QGs8Q>ibVB|_|qcC_s>dz&LJ&J)r# z$m-}6OdCR`Y!lvUEn)onBaS?Yik3dTcFiq`ao}T`8Vj{R3>n#hpy1|CRmI3v@{KSB z7+fj#k4-YJG{&Tj{Yb}95Z#g2Mp{vV8;XsHFtR}PM1-Gm34_she$OgsSJkZ4|8Scq zTSq<45_ZVyE2s2UJlIUlsgkpmJO=E4aNohVXB=3KoFO?mj2Z0r81t)e(<3n~q*!xI zpb*g-L9Bi`ZiU#@Uqz}cwI;ArLSLYqBUMz!HW!t_(x72zQGd_aq(jWFh4MQWoA2b} zmm>oJawFB7!o z{87Gx+`FoIwdRC{4~bkI7S}&YiBvpfBaq4P+TRSr)AooUMs_;ahMqwlu_LfxRXT8l z%a3-9Q8EqQA~mWGi~GJd6S2C1RoOJ!IEKJ*`TXsBP2DZudbo#3g?4A2*@iuE5@0EI z1$I~Yd-xe$i7@IU@bmW^m?-Nswzqj4Ix`EtT;-#HT5RkzC zP5}9sL|)5G@4Sqm&8@27>KhuqgtMN4%i6C<@qVuxzWKWtM51OQu?kH*%GIf>`ICHa z?thuyvLLOB2j%?1Ju=5~|HzJi6|Uil$w zseNP?d7?5l-S316Cx-vD-i-lS^N}VFn?g4>N6_hcZ44ZWBDxGV{C%;W5;8-N7a|ion#Mf`nyvSVZHq~RtzlopSk^tV4as*EqT}x6)zCU5P|X%>p&#M(WImIn zNuQpyvOO*c1-IJZJ`gvw1p!27S^=M$1zyFcgz5;h-ow`(zu zEbUYJN&!bU-fwUxeC-Rk9ixc(%|3rJ#Zd|qDM!W6Tc2Y23A zx*xDVrILO>r|W*o0_Ic>QF^!MVwMJMmMkLIJS@5ub4U#~!+6@4U(M>^3vBPo+sP|<_>@^Gb&-}q z@=I|Q8IixjLJ#+TRk&w(u4Pb5a4~r^#Pd8&E9Dia#N^dUs8<$rRJBqS&e3lRMaR_+ zh;MPLuOl;tq*kf%ejS;xcYaxO`;@|c;d6%XlM?SQidTS zGRn>kkTa=jQ_%=A-Hl2o6k@lb+iDcPV^@N~t8bpIm=F1I&%&NIN9M_AJbUJq{?LM} z{m=Sb7iHef8BbVq!Df*1PiEx$FI~g70F`cBa_^vb<$egK2iEWVYzkwVTae&Xz*YPM z?lkjfxTV&VQrb!Oib&Dg55}SUUr-9W;Q|)P{PeKhh-n8Sd7{gp64glEqfAqGndVvM zJppwsw;m*QMhLL zE{wjXZaMCy#Ldh_rYh~J#-*4E#GRT=etUT~m4) zFl~2avtFxVsBPP;Pcv>exc2a-zu)7Y40kM>4JC%Zy`@{m%t%4p#xQgiudAs1RzQN_ zHju<4u#x%~xUz7%_Ktwut>ylJlYzUvTkPC_Zdh`46aoCTdrq|PaSeTZ2{L*q1onj} zx8B@2KW2j1`1Bge{FsSNNf%m6j$1C3oozUeH{$jNwm2%HMO{^{$PZH)xaO^I1)94) zb)GlA2rDff63h-Q-KDk2eaa6~niCa^7U)$NFyT!lz7$Besfw$3c@=o*2BgRzFyVm= zw`!U?|9r8yR(6&nwb^X^;X-%#cmZ+DMHQf6lPvn}#IF;z^+j}C##2a+@$TKY$P$4< zrb7SGS92%MoNUL#ouA$LIPuZnA0|M5*befFTb&np8IpYL5&903jvT%_Da6^bX_Ktr z!*_8LuYts-cftU)E7l zHsRwKW&KIC$KZ0yKc5)l1@g1d7;D{U$Q{+{h-@yOB_%E{x9P-9{+>< z=)<8xqc_833qTz-e9-=PN*}D$5N3-V&615rcK2~12uJb<k;DWtG}`cCZf1iML|uhaa1CrZV0pcOo^kS-PnUOP(hVaAUoT zVdL`}oeg$n5S`mVG!?}3Z-hnroqQG~epwu&M<^zEp+)fAe1Ek?GTL1uL2|WM-`Fna z`TGE2;ah@({PHKQp9;*&TL_g9bK(bfoCik4q{}w7w%u6jJI(d>{4w^Ztjs>Cixj36 zt4L5}>LHh9(%t7ivNSWT4~b#(M3gC4Pai~{7K+icPnYc_LxdAT9X`N1aRP@CsG`^0 z+V|++=v56hrpG>uww|^BRJUD?3#U4q;c8IGDTMYrY0$iYk&bJJ^TA?50><2bjQra8 z`1us-r69O|+ZmSGz%~C!E!u4=w02#?P`G6Ag?UF@2o0JSw~_m&d=tmFJdtHp6}0-n zvl1jsPtUsZ!I>vMSWqg<^L#08^465Rp zD!mJvBmu2?v6TZ^OiDL;=S1vU0!W(T`%=uE0=e`t?#w&c)Xr^ApO?yp4(?=6)m@x> zSQ9Kgv6&YPbzxnS;j}*Dt}I}m?O4enC)P+X*1X|xak;-@B1p#@r|Ts=zwoKJUbeNH zVLM7$hz{!|%{gpp!Auv82PD+$^pF}I&c(tA_wYdLZ!jQWox!{)JM9A=2p*Fh50wp=Y6JnYd0%%$mlI}0V>~b!sppK z__-1edx^`jUyfV+^wBHe9cRgt-88sS5wingMBWrtW&^f#R_xTb zsPM*^+&@?WB>vd5H)*_I5 zBesJXr{pyKi?K9EDX};~dr|u87uy@YcP zY*z0wcS-A$)3%&vqzw}b--oE(9&$ztYMsdbtc&ry($w|bDwl-JVmCN`hEAb}076Ks zB;K_@{oj{5G9`oTNK$Qrf62t~C;#E;7r&vw|I&V>ld;=74KY5I{*ku*T>Q6x<$DEZ z3+9%CHkd;VFwf);DA*^ztL83?J_hoXaHC;f4TyFE2yv}@>!;~NE@Z`5ae(1_41KOa z*G3dcR_JcfF66mjOzKPr(JD6vnijq}`3ATnIr#&yH+z zeb7h6W4L2g&8!)!LUzzj`e_XR=DF%}3^}B4Qd*n9bM8!j$81DruzQ+%kdXQH%vjW) za^MeyeobGu)ex*vmCH{U$uE9CNBkfy^9OSlmD#C8U*JQ1sLsTGxdB@x{|#xD;*m$p zh;cOk?@MlKeBH4NqB_E=T;uxmTfTDIVPzMw>Q%XiRjViO{=+o)i*eM7>SRd2Tf*#i zl9vTMLnYmU;F(BxBp#xuV$fFIr#_?IXgagh9`hv4e3~l3KSA(GZOvf+;Sh{K{GA|d`qL|C)Ftp%+M zd*!3Jt-Soak2I@$Y7Uvb_wM#^@WFo^Gb&KQeQJgTQ~HJoC%P}#*4l>Hxak}$=R8G0 zG{+Rd?Ua>?lp_ko$d)qAZG*JPKb*{X2>@_UE63iF%Jt3<>>G>zBf2mqpx1jNJ6>FU zdE9_1Ez=8b#d`zl6ppMHvfg;%V|Qh)DzRq$=a?s99EhTMHcUdmQqTRUI*|`qpa*@J zP#t$t{}a%gHs6@ZU5%RYe+??MiVx@G;UUX(4lof|`czVxcWFIcnNEiA+N zjGRQMR-yNG$seH4dIjbXbX|upd$b3l`V`V5kAW1$YqM4`$g>OW^4%aZv&RGWD<9iG zfh6^ryzJ$2p=_NO0Yba+m0N}tC(AoHpXac=2a}LFNxPbvGY0%mH*v9oRqZfItL{|> z`oJCe#z1+&TOJCM2o%4tU`gi^Y$oNFq@v=2c1fpRl|gpY+0{Cf&lGVGdZ;u?oa?>o z{3ro?eeNm-tYd*W(>2L1VxG3apDp8LnKYP2 zn;uh4Xx{@9RSGT_X*qrj_-cLL5irOVk3L&%KxsN!-+YGVdlGyKzwI$cE9X0YqYDze zvfK?VjG^Lqs5ch)D#HfNMNfW@EHuoxDuF>k$?_9di1_Br)}g;IAKn?^Cvj5s^-)j{ z=Xj_r?*onK5aPE8&dRS3km}u=0Jg8n%bG0}tKA)xBX!o3oC#0Em7hJ}w4PL7`88I1 z65&jN6-Hv+zD4-AUf%cGJ!xqPED-5=C=)tL65dg+qcUa0xGKlj^m65Clwja}?mn2I zbsy0rTbLYR_AT}m zg1E>X8uI{CNlvPVB%dL&HtuNZj|`H;k<7MfEPU7?1co@Bq&YFnyFa=V=N=na*Tydy zb)lk_(Qa<%ZsqmA%S=Q<%U(eICc9tOj`f8(fT7djgcOoqtfB5yZ4*1kSHx4RStr=x zhXjE5_I)kdbPio}gTq#Qu-!woIK z{rdm|Sz@p>&ShdP%q^QQINK z<8<)Drvb;?@y#Yhm|HglBpto>;Jy?K=MzBE(PUfFTuq5jR}2WiVmz$M?n_YlgfQ6Eior9f?gOiP&55mDN$ipYd&O!O#5A|Pf?pD@<8q%`= z?d$JKgxc2A(^Zg-&Bw=w)rX7K#odODLqI@)jh&N?lN0jS0^;H4>}l=`arU73H-j|P z!_wW()zi+!nerb-a|;(QPZ8?BO8+YaC)fYbI(z(gn*Jt?&DY$Ojf0i_pOF4-sG{=! zH+6FQkF|%V2K4{x{U3=vwESG5Y#LAx7cY0qzXxYc^N%Z6K`D2rxu=V}mWzwyzq6=j z>*DF+Ve8^bDW%E7%0a1OZfWQI&(6OPDk_2s&K{oT&X!OGX%Xtb9ISSBR)SodQk?8O z|74nvlY>KsLqdRCmS2jUpPxsXTY`^6^50l#7fUZEsI%w4u~z>VEAhW#|0xD1*T0^n zq3(9xP%Bw?7bnVp1ubazKWGu)<>hCW75Imb)cuk3xS=?q==t zS=ub5a&E0%LKXxkDR0E(Kytmf72AL=ijU^ob<8)uawpu;^yDbkv$VgoPlT|6$UDeO z7*8E-QhpI;2WiUi@_e^_BCocQP^yN^VQvc%>X;e;b? zp<&WZDR&Kr!zdHn3KBO4v;wfeaVl%O-dw)CweS!l zl9mc1XD=FvojO|E)O5o@L!&XAoB*PB@T|_T<{udung6a-{M6+{}Iw1V-g+tFr zo1mbej>E%Gz2EU=O07%Q8Hfu`D8a+jz+WPG!$Qv8yYpW8_p>&Ig_ZCKgPIp-84a}0 znv00rK^UJosRWkuttycdU&HGt2XB_UI(PIG@a)I1IvbB43@L&SLJec0qsg;!aymmC z9c%J~bMf!rhmGpjO6D?Y%gQjCv^p-O8|t*KKi%C05vW1ANYC@$f0W+)4z4(r2UvIO zaMjZybR)p@#j0W0Hz}8ywq(O_(}Aq&{-MHgvMjdxM!;jksx7{F5j0G(`|u%#ffq+J zGqZRAPqA9{U@*M?R=U`kKxK3KTbiPf*XE!$BHeJs1Bt=Y$_}? zAKRu=3b|-;5k`6n0N^k_1))+Rn|Zv2y}v(}`W?OmCIpo|2utEQ$av!2u5=gjv)I{1 zemL5WQO)Pq;o;zDVD9aAyGsPXM*$5amF$d-*EZIl2H2bkne8GEiJnAI&4O8Ox-bj! zk8;l=hmu_n)0j68y2YFnRp?DsXmLcSTA3QZFFH9nowm=nYEu~d&!A)FPmY6O{gsqd z7ILd52f25XiAMWTZW!Ypi$1x!_3mtLWb-{^{-1I!YeEN>ro2KT z8{ADo2EQeTUl8QCqgGV?{FN&V>Nq&4*6`aRDm8V@$jIn2Tp>B!iRiz5{_bE!Z`NF0vcKDF3tvaiP82Sn4Vw+2!o9~kXwdztC$G((e1 zN{~}~uPe@wo6AIlfV4}U?4ck27{&VTduaO+aYJguKeRJd5#k+A;%_laT=5M*U=S5h z-w1`jR5L_0{rJ(D5h5VW30(Ul z7qvPh@kelbAFjS1UF$Y}w5514PC`Xhz z!X6lJ8Dic_a6SeCZH2)d%bYVHy0;NUSZc<}TauvR7Y*-sp^jl?bY57o(m7cu(KP+% zC^Ez6zA}o29Wd;38HEf*N=9Qplj|e|Jz1rVO(asWIpku?WU2yqAR%RPlUnP$Obxwe zZijy646}AT6refhSP&uAKAHFpd>Z%c_s84aI8GX1ier+mBQB#@EPX~8m(1PIgaXA$ zE#Yr<@6-n9b5%R0s%oM_Wz?g81f&ls7PeP`Mi07M%RtmR{iUk!g%!0w`nySyv5EW% zuYcV{mY*2^MR(^8B4o1ks@n6ebha=+kg)fzK(4W9&JU6E)~_L)uQLF8@uadsDFLT? z^9gnV;6BUFPjM>WJel4&H!@6_FV_f@a}(Eg*AgGuSDU#7k$sj*U9jt&LM9w&biewo zzZi1g?+2dlq)$^N47mcLpyWR^q8ru8k;?{B#htV`O&Aezv}k%+vT^ZqBCK^u;SH-7 zR^00wdGlpW8qZpKPlXn$^Uu#9L!or_MRv$Fdads@*)$njdb5!5+_CT&~jx=BQLT0PZz{Bga?b(UA1%FzY%>5&Q@2``}L z+5{BX+0g`=_1W8l)9rd2aX#v~4(!Do3eELqyO5QkyX?bF*KO@p;tBMitBj9j4Kn7A zdt8QFJFE_9UAFx$(*6b{Y_}oL3730!`6m!uF~?CJIaHkFu@*F~Brvc%$87%RNT)Uk zJaf7{p9W1yV%{p%-6&bLGN|h#1#sUGoZ#r)r-9XKY}>APhMi41qi%nD=hGv8M4=Fy z8>n>e{!{Sa=ZnX?AAk_*iO^R_LpHtSh0$u#jeJBfXNy9zvY?*n|0j-lYj@$cck$jz z0+2-(X1m@b06fZsc*LXn$1ZhB!z$Um{q!yTiEl~yF)VR42{3v)&m1x^exLJy-tl1T zM#<)_4fm>EX`URBmP0T7aa`LCGVy)zA|%Vt;DWuCv1H+13j+*T%>y3w>HybC=+&fi z8}*k6l@ASfy&M@MR+7NZlFMVC*MzYeNN!L=gb^sSJ~oTR%bPEQUU5$d2wR!^CSlUThwhY&sz=8T zTUE@gUcm272x?-85dahk0I`{c>GFG@Pqqu4??;u#8a*lCAmx?Dew%7??6B@;bkI3Y zo<6azTDtE-;*9$JpUHGH>$j)wG71gVD~9IUhB50L-vRxP0`ZL^wc7P)bXbm>yFc*w z>Rck3n3RkV+wR-Hgdky%ic$#8NHob`fHIGq4SDj=t#AHs~jbHb+^tK=lJQjJjW6E`pgJkE)SfW7-W zqw*%T^RF&u0F%X=s`C4fapPZS(8^1%{h{b{7=SB5x(9_s_p=J8tmFL$r6k3AH*!*u2zp(Zjw0 z&p@fvQwV78g!gaKRS4=X2iP+AhEfXZ19CCtyt@GiYitfiTxh+pJ3W5j(b+Yox>!{a*UsYYzNhz?_YSfAxd_Bvh5Bxpi z!3x?B-Q6Pz-KcL>Y3k8i%M5Sd@zf2LSQ8LzMEpR%Ia7WIXZ1J~NeD(;oiTHc?O7L>TyAD-l>$amJn=bx zlirt{qZkh4UKwoQMJZ4l?-Jo>bMic`N)=@vs+?Hzs*SAvwN$wRV8^5pO{ZCbW6!_P zGXd;jw;=mRuDNs~^99|9XEEq?Siix0^9Go&N>vg&7qBZ;s59wXVbSq`W-&nSsK5T} zSVS%^U*ox%|3Xx+;ak`zC&}+Qpr*TU|Jx$->1^*Z|BdN@%yU>c*~Rv1V)2l0b?;dBqrtRe6L*nfyO2 z=Mv%LWb?pe_eW^hI|CIUt6pQR1@{!N=dSoVe0+eQyP}n?KDn*sQ{C%= z2u}(gJ{}1-H*Dp1@Ae&SG`@O}2Ph_*cUEIM)YScKVmplVX`i(7D``7zz4$O)F_Z`7 z6j2<5<8iJ0AjkzTV#9TzwtwAxt^PAA7}GoJRyKPSH+z0#FFb_kt{~)_BzC=>gbp53 zw4_)Iy!nT9J_AK10dY5hgd!AJk)pqmLd)~^#U!ERg!%Hr;yr)P>Dh-jV`+Ac&0U}0 zV33KD7Remzhm@$j!)}$=Nz>KP0L{&5FPl-}pPZf@UZa-|Lz6N9+x_gDmB4liKoTJ+ zhZGnShTO`9v?QtO>h&S5)*}kDP~2V|hmo;xG;a=-Q9&2m3y=Tp`mh}{f|>#P*RKc# zCHV4oWa2e>`D3i0?@nXMT06$wj+y&1#UVN@rWh_1!i1|0sZWBUr+%(1Rvtb)yt5C3 ziS^BBpHB6`8ARv6fNfHU7FXU85Qm~5RsNb=0R#W%7E6CjxezC}#og6pE>_(ob}6KT67Vm#7Dm=tzf;z96d}12;|UOR ze;)>G^Rms&J6X8#Vtf?sO?F&INgE*tG8lqNEEwUx5UIh>(K9?@%%UH>zPteCX_M6O zW7xm{#3B{UOH8IwFR^ILKP zkqCU|N6{#DSL&JuQW(FUV?3!D*}T2L0tbLDBKlkl#S0JPmnxzpsa_DWqqNq15-Sg_ z9t1vFow4Z7>@7i1G?=x^6i#57>G+_AT$NgAS321ybb4|)Xs!VPrZ}omoffV=2cp#| z`2y@J`SOKed3m|H)uhpiBS+Ya>DX185d+0zvg7iL8Ihi$<_^g+pRn+D*{KqxW}l6j z|0Y8TVw{9^O$>P0UqV`q3WQuDm01H1`DQPWiemq3gT`g5f};pFvcwslxYnlvFJa;$ zw>hXgm#JBA)`o;^n7%e3i2>?wLo5SW<}tpTYCK;2Sr0E9pXsDoZa~i7b zh+J@#3bWU_B3iTx`2G7@-4pG_DKWjiJ0p-b6rUkGpeeNU>@~)UyPcoXXhQGi=DP=KY zB5X_~thUh_Wk?AhRg=sJr>jhAa$hzt+3kJ80*HyfOCW(z5>23% zqrt~osOpaarCdNLeH*EwRjS$MN+(ytK2GF>C7k^gM*wDamb%qFAw-U`v=&yo&0o;d zIWY157ttM0i|V7&e1dVPH-j$Ws{H#6OyZc-BTb1PVj|`7-!G2ELNgP6jL2CwJzmJHCozyGeyUla-ByDf7y*WR0#>71eV!8X;C}7#6zrL_VLETC^3F)9 z(teca0u=9P(yDpow^V|J9edO{BU&8kF#G&vE;mSc=xOGBHWyHwOqkb(D7r@N&WM(H zjy|VgsPb3Iu@%;6C1R1St?_)N7Beiy*Zn7^Re!108!a^_&Ck~dQSH%KU|Ig|L~0?Y zw@j(({)J^n6@3XFzcE%4M zQSoP0F{2IA(wx7?{rrhMP(J3*g~L^eq`xz&oXSb2Z>NvK?5*zr$iN=cjxHg>P2BrL zt%U4z6Uw#-F;0Th&&l%D;D?V0CE7Z{?WmcysFk|RGvYPOdv1BJDo$!QS-F;WK2VXe zmQ0xr!DXCrlRY$>6gAK)0plNpW+9eFQRWCy#x|REIxz90Z%QA2rMC2|6;LWxCc3%d z)^P=T#3iE8^4U=GNI3p*uPXh8_R3$OOoAkC zH$c#O14IC;n!>W7b$8gt1U?9Ztfa*65l@Zl0i9sjos1}2iUxa}l}po$@J*#4*x`ND zC`h{vyw2f(lr}Zi$%~(~iL?m^e|2o6_GUlK{s*P&E)fG>)fnyfF7Y@PJfkRwT5Jgw zjcU5Emd13i6O}X1`rNp|a#W4Q&rhrvznq6Gw45v@igQksJS&x_=#~KHNsvtO##PDh zHp(XQrp~Z<4grzRyO?fUCi=&Wm}p3RT%*a^SrB`_E~586^T~z7JceJ3`uAAeRY>IA zB-74Z6YlQR85Z~(5+|v4Q)m0$&_`?HvR)HXvZiukwe>8xH|y@X)|Ze~Ijk75hEIQu zQ1-HBWWB1~;BtIRpxlUg-V5LUVuZpI)V57^DZM&og_~MoFnhrCHZ7$j+PT+@1vzQA zv!1R(+y4V;vGL*MXbbjSV1qCUZ!Wrq=y5WhtZ*sPNTNIW-eRE~Ut)MBIkv1ZnlM7u z>0*9dAf9+*2(SBbWEB6~T0HEg96vn!R2@c-xllrBVeH!7QQ5ma#;lGs2P#tHEef0B zGUWw|adTH- z)?yIrO#s+D8Ke`+C z8LT-dL?A(qdP~h7Ml)Oq9|bPL#eEb0k&H(ngE_65AA5*-)2MFPpIQJ38F{VpOl|?? zVo?wJ2W7&_99j?}jy4K%(ovjH$d{YXPmPgmqEk>QFEe*^G|~(kt+uDsXdU(n5twBX z;Y*?xS$fNe3@<fNZI7?X~^mcrTX-p@iZqzKlsqe&99&@R!Q1I6z z%$l({n@knH(}TOk^p`tN+s*B*6@?yzXO)zbdmrhno<$JZ`<+YOf&*OjXM@H;P3e9= zCAT!8*|Kot=nmCUtpt`i?SkJ^S?9VL9N0>8fr*&X9_R2tG?h8uGK3Oe1lS|VJJW<& zMJ&Rm1c8mZwqN!XrMV(2Z;%So{Pb;!ZSHL?*jnnVk89*yw)G(dPIIEwk8Qh?QUwl$ zoUEU}rvLWPV5*L-9h7>2s_w{vzH#e$0^qX>+KD^2gOa{^yz`Tzz7+4wF3}p0tD~Ei zQ8YWHGZZmRxwyQ&y@dxy{Xr$eJ7AR5AIkIe&YRmi*rEAS*G9A+e6+GXfER%zjG3gB zC2l^FS1G}rt>Hyfl}OxX+F66{-1!H!h&=7snnu<{UF~YFDP9Z^WL$1s3QzPlEqn62 zAkaseVO@A@0a}wfpvtufOg+sN0D2M7YgR-Pe10$AJgiNbP&7kE$#LSm)VB#l>Mb5wA?o(O>D=vSJF&j%FSNKF$&?)(7Y2X*6sRAFRC!xl|D- zB^HJ`Gz`+)6SqazTcF9SMY+DOF1Xr?o@Jmo5&ayo3}CDkA2OS#f@y)v?f43afmQCDFLN#;TcM*VtNgK-dci*HUja#Wrop)0C z#MS3Cru5%|%HVZvHn{ixjM?CmSTu_u->-XIZ?UvXl22)(2bEZ{S9mBO)VO@Yb8dT> z65T?z=xhk^8Lm?O_7f@5uTZUMD%Dbzl7ojwAwWNp4fD3>*m;45U4xVO1P)$u3q$&@ zA00b73JW-_y#035P!jbitzILhoRkVjxK=jR3aJxM&8lW)uV3qiJ@-+E-vEQ}c~=A> z60~^pBgQ|s5wZl|7GQ!wbYzwH*!TiU%D6pQL3Nm~nb&xB>ArT^+-wp9rYOKAC6Fl5 zedifMb*mH~({(pR^2o0d^1=MGu-J(s8n{BRTA!PeIotw2U_-rjh7r+VBXYe6o({Qf zCVBf)BGrzG93+p8n^B5MW)pEM1v?RuIir;ES9&xu{drIFrK40v3K~>RDaaWO z@ z8*|-Yjt7p=8tD&+IBfGVq3&&tmO$uUBf-d{RUi6)>Je2dsl1cgSkg2=2rnI!O??!q zq;IW89A;GVYiP(5e)}!urg!~`^QiUXq_b7VOj0RS4i zX@NLVG?+f}`*MxB#^L>`=DSO(_f`IeI_k(PE>F=zNl^r?)F`{=R7%D~AZbJ7t-PKt zitd*S)%)dl`Qfcz*{jHYXQk`Emq2A4|Be(=@0dKbu`m6sm0;f--8Q9~ZxK8ea)O^4{ z$g@X!9qM{&?P?ugZ78}(6p0s5P~;3U6t%(ODd7bp)a>edH08X!XVQps^RU^N&bV^p ztBoZKN}OAjuZ0T=`ad=G@9;WOY66Nfp1TiG@2&%>yp-PJT-;mspyvNcGOrlHN zPH$_jLv9yD+^e<${RryS5R1?Uya6`_bAE>J#3Jh`YrL`ldXg0n3lrHe@eQV@*s9H> zZqh$#Rof3_fGvt8vRx~PzTEFbBYtaJ7;Q=KeM9kNs=Av(1lYaDAia z9n#Wa`S8VDw90NZR%uj$urAtFoRF$_uSpf9vG-D`fg}ePM78UNS~=%2Iay?g_=kJr z^#k6ooMxBB8nD#Ht6dfMt!Mt2YN)g+ zn@ua1*#5M8Y^7=wz*be4Jbq{^y(e&XznqzgF=Fbq4_Dj*UDU5|J;tG+U#IMM_l2f` zhdK;8q;WK`)GGS92F|W8@)bq&zF{f=oCsGfvNQvXf7#yhLv+P3VC5+LH5humpY=1f zX-6s&;~T~6y_}k4QJ}7758Ttr7uoW%L5r*6 z&JX$ww7`C_zd zmsFq@$ywJ0m&zlI_%X`EF@NMDVtV)C698g)T+p5iu)Om(gpJ%18N$zZ^f+t}ds!|1 z(67L&?by$D-Jw69+s;c;47m?K|4!o487wjI-pD2U&EBM06H7xVK|@wnmXO7bQ*@u; zqBNB~E#DZ5@?|9>zuy&YjbRTt6EjnD0rz!@WqPB=iN#Il`Rdy|m#K1lwH#S(z)fcf?Hk-lwhIf6;A^s1~^|N7s&ki>!(I6dKtyDS#?8PrG zm^J!M81~0Uznifi3)Ad-SDf2%%T90(&KAc^VYWn=gGl^t7~#Z|-~BUUe6imQ)i(27 z_Uc!;URS>TD5S&yPSTtHdP(Ctq#J^q?)X%|>Gczm3~%nX$$B@%o+AT`%FMo4gVNt4>ndIS-u8=xb%L z<9$T#l=q@%*`li(j*Ya>;T7}dE!!)oHTYs@HjWiYgC6aYYn*#A5%P%0A9%3&pzZGt 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 a*8c!iIu~jc8PWy-0000 Date: Sun, 19 Feb 2012 14:18:32 +1100 Subject: [PATCH 05/11] Use new icons for welcome plugin --- .../openpilotgcs/src/plugins/welcome/qml/main.qml | 12 ++++++------ .../openpilotgcs/src/plugins/welcome/welcome.qrc | 14 ++++++++++++-- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/welcome/qml/main.qml b/ground/openpilotgcs/src/plugins/welcome/qml/main.qml index 48d9e0428..07c9a812c 100644 --- a/ground/openpilotgcs/src/plugins/welcome/qml/main.qml +++ b/ground/openpilotgcs/src/plugins/welcome/qml/main.qml @@ -35,37 +35,37 @@ Rectangle { spacing: 4 WelcomePageButton { - baseIconName: "welcome-flightdata" + baseIconName: "flightdata" label: "Flight Data" onClicked: welcomePlugin.openPage("Mode1") } WelcomePageButton { - baseIconName: "welcome-flightdata" + baseIconName: "config" label: "Configuration" onClicked: welcomePlugin.openPage("Mode2") } WelcomePageButton { - baseIconName: "welcome-flightdata" + baseIconName: "planner" label: "Flight Planner" onClicked: welcomePlugin.openPage("Mode3") } WelcomePageButton { - baseIconName: "welcome-flightdata" + baseIconName: "scopes" label: "Scopes" onClicked: welcomePlugin.openPage("Mode4") } WelcomePageButton { - baseIconName: "welcome-flightdata" + baseIconName: "hitl" label: "HIL" onClicked: welcomePlugin.openPage("Mode5") } WelcomePageButton { - baseIconName: "welcome-flightdata" + baseIconName: "firmware" label: "Firmware" onClicked: welcomePlugin.openPage("Mode6") } diff --git a/ground/openpilotgcs/src/plugins/welcome/welcome.qrc b/ground/openpilotgcs/src/plugins/welcome/welcome.qrc index 6fab0e9fa..fdcef517a 100644 --- a/ground/openpilotgcs/src/plugins/welcome/welcome.qrc +++ b/ground/openpilotgcs/src/plugins/welcome/welcome.qrc @@ -8,9 +8,19 @@ qml/images/welcome-news-bg.png qml/images/welcome-op-logo.png qml/images/button-label.png - qml/images/welcome-flightdata-hover.png - qml/images/welcome-flightdata.png qml/images/welcome-op-bg.png qml/images/welcome-bg.png + qml/images/flightdata-on.png + qml/images/flightdata-off.png + qml/images/config-on.png + qml/images/config-off.png + qml/images/firmware-on.png + qml/images/firmware-off.png + qml/images/hitl-on.png + qml/images/hitl-off.png + qml/images/planner-on.png + qml/images/planner-off.png + qml/images/scopes-on.png + qml/images/scopes-off.png From f6303b80a545db7578cab82bf122348db7100915 Mon Sep 17 00:00:00 2001 From: David Ankers Date: Sun, 19 Feb 2012 14:44:49 +1100 Subject: [PATCH 06/11] Constructor was called directly, GCC 4.6.1 on X64 Linux was not a fan This fixes the build --- ground/openpilotgcs/src/plugins/uavobjects/uavobjectfield.h | 4 ++-- .../src/plugins/uavobjectwidgetutils/configtaskwidget.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/uavobjects/uavobjectfield.h b/ground/openpilotgcs/src/plugins/uavobjects/uavobjectfield.h index 59a4ad196..faad2e568 100644 --- a/ground/openpilotgcs/src/plugins/uavobjects/uavobjectfield.h +++ b/ground/openpilotgcs/src/plugins/uavobjects/uavobjectfield.h @@ -50,8 +50,8 @@ public: QList values; } LimitStruct; - UAVObjectField(const QString& name, const QString& units, FieldType type, quint32 numElements, const QStringList& options,const QString& limits=QString::QString()); - UAVObjectField(const QString& name, const QString& units, FieldType type, const QStringList& elementNames, const QStringList& options,const QString& limits=QString::QString()); + UAVObjectField(const QString& name, const QString& units, FieldType type, quint32 numElements, const QStringList& options,const QString& limits=QString()); + UAVObjectField(const QString& name, const QString& units, FieldType type, const QStringList& elementNames, const QStringList& options,const QString& limits=QString()); void initialize(quint8* data, quint32 dataOffset, UAVObject* obj); UAVObject* getObject(); FieldType getType(); diff --git a/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp b/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp index 2741c4606..6e0cdd96e 100644 --- a/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp +++ b/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.cpp @@ -295,7 +295,7 @@ void ConfigTaskWidget::updateObjectsFromWidgets() */ void ConfigTaskWidget::helpButtonPressed() { - QString url=helpButtonList.value((QPushButton*)sender(),QString::QString()); + QString url=helpButtonList.value((QPushButton*)sender(),QString()); if(!url.isEmpty()) QDesktopServices::openUrl( QUrl(url, QUrl::StrictMode) ); } From 4a0d101f12c6fc56a6dee2e988d123125578c2bd Mon Sep 17 00:00:00 2001 From: David Ankers Date: Sun, 19 Feb 2012 18:05:33 +1100 Subject: [PATCH 07/11] Start adding Dado's artwork and GUI changes --- .../openpilotgcs/dials/default/arm-status.svg | 144 ++- .../dials/default/flightmode-status.svg | 238 +++-- .../openpilotgcs/dials/default/gps-signal.svg | 387 ++++++-- .../dials/default/lineardial-horizontal.svg | 881 +++++++++++++++-- .../dials/default/lineardial-vertical.svg | 726 ++++++++++++-- .../openpilotgcs/dials/default/textonly.svg | 235 ++++- .../src/plugins/config/stabilization.ui | 893 ++++++++++-------- 7 files changed, 2755 insertions(+), 749 deletions(-) mode change 100644 => 100755 ground/openpilotgcs/share/openpilotgcs/dials/default/arm-status.svg mode change 100644 => 100755 ground/openpilotgcs/share/openpilotgcs/dials/default/flightmode-status.svg mode change 100644 => 100755 ground/openpilotgcs/share/openpilotgcs/dials/default/gps-signal.svg mode change 100644 => 100755 ground/openpilotgcs/share/openpilotgcs/dials/default/lineardial-horizontal.svg mode change 100644 => 100755 ground/openpilotgcs/share/openpilotgcs/dials/default/lineardial-vertical.svg mode change 100644 => 100755 ground/openpilotgcs/share/openpilotgcs/dials/default/textonly.svg diff --git a/ground/openpilotgcs/share/openpilotgcs/dials/default/arm-status.svg b/ground/openpilotgcs/share/openpilotgcs/dials/default/arm-status.svg old mode 100644 new mode 100755 index 5913ada22..b72d1cc33 --- a/ground/openpilotgcs/share/openpilotgcs/dials/default/arm-status.svg +++ b/ground/openpilotgcs/share/openpilotgcs/dials/default/arm-status.svg @@ -14,8 +14,8 @@ height="80.827866" id="svg10068" version="1.1" - inkscape:version="0.48.0 r9654" - sodipodi:docname="arm-status.svg" + inkscape:version="0.48.2 r9819" + sodipodi:docname="arm-status-new.svg" inkscape:export-filename="H:\Documents\Hobbies\W433\My Gauges\vbat-001.png" inkscape:export-xdpi="103.61" inkscape:export-ydpi="103.61" @@ -1224,6 +1224,82 @@ id="linearGradient3339" xlink:href="#linearGradient5128-0-5" inkscape:collect="always" /> + + + + + + + + + + + + + + + + image/svg+xml - + Edouard Lafargue @@ -1275,17 +1351,34 @@ - + + + + + + + style="fill:none;fill-opacity:1;stroke:none" /> + id="path3380" + inkscape:connector-curvature="0" /> + id="path3382" + inkscape:connector-curvature="0" /> + id="path3384" + inkscape:connector-curvature="0" /> diff --git a/ground/openpilotgcs/share/openpilotgcs/dials/default/flightmode-status.svg b/ground/openpilotgcs/share/openpilotgcs/dials/default/flightmode-status.svg old mode 100644 new mode 100755 index 80935d0c3..56f2ae83b --- a/ground/openpilotgcs/share/openpilotgcs/dials/default/flightmode-status.svg +++ b/ground/openpilotgcs/share/openpilotgcs/dials/default/flightmode-status.svg @@ -14,8 +14,8 @@ height="80.827866" id="svg10068" version="1.1" - inkscape:version="0.48.1 r9760" - sodipodi:docname="flightmode-status.svg" + inkscape:version="0.48.2 r9819" + sodipodi:docname="flightmode-status-new.svg" inkscape:export-filename="H:\Documents\Hobbies\W433\My Gauges\vbat-001.png" inkscape:export-xdpi="103.61" inkscape:export-ydpi="103.61" @@ -1037,6 +1037,82 @@ fx="29.77438" fy="7.0922189" r="25.380436" /> + + + + + + + + + + + + + + + + image/svg+xml - + Edouard Lafargue @@ -1088,17 +1164,34 @@ - + + + + + + + style="fill:none;fill-opacity:1;stroke:none" /> + style="display:none" + sodipodi:insensitive="true"> + d="m 24.5,26.6875 a 10,2.9375 0 1 1 -20,0 10,2.9375 0 1 1 20,0 z" /> + d="m 24.5,26.6875 a 10,2.9375 0 1 1 -20,0 10,2.9375 0 1 1 20,0 z" /> + d="m 58.403591,29.207693 a 29.010935,29.010935 0 1 1 -58.0218695,0 29.010935,29.010935 0 1 1 58.0218695,0 z" /> + d="m 53.950159,30.352861 a 24.175779,24.175779 0 1 1 -48.3515586,0 24.175779,24.175779 0 1 1 48.3515586,0 z" /> + d="m 24.5,26.6875 a 10,2.9375 0 1 1 -20,0 10,2.9375 0 1 1 20,0 z" /> + d="m 24.5,26.6875 a 10,2.9375 0 1 1 -20,0 10,2.9375 0 1 1 20,0 z" /> + d="m 58.403591,29.207693 a 29.010935,29.010935 0 1 1 -58.0218695,0 29.010935,29.010935 0 1 1 58.0218695,0 z" /> + d="m 53.950159,30.352861 a 24.175779,24.175779 0 1 1 -48.3515586,0 24.175779,24.175779 0 1 1 48.3515586,0 z" /> + id="path2991" + inkscape:connector-curvature="0" /> + d="m 24.5,26.6875 a 10,2.9375 0 1 1 -20,0 10,2.9375 0 1 1 20,0 z" /> + d="m 24.5,26.6875 a 10,2.9375 0 1 1 -20,0 10,2.9375 0 1 1 20,0 z" /> + d="m 58.403591,29.207693 a 29.010935,29.010935 0 1 1 -58.0218695,0 29.010935,29.010935 0 1 1 58.0218695,0 z" /> + d="m 53.950159,30.352861 a 24.175779,24.175779 0 1 1 -48.3515586,0 24.175779,24.175779 0 1 1 48.3515586,0 z" /> + style="opacity:0.98000004;fill:none;stroke:#ff4e34;stroke-width:2.7462945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" + inkscape:connector-curvature="0" /> + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" /> + id="path3874" + inkscape:connector-curvature="0" /> + style="fill:none;stroke:#ff4e34;stroke-width:2.7462945;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + inkscape:connector-curvature="0" /> + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" /> + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" /> + d="m 24.5,26.6875 a 10,2.9375 0 1 1 -20,0 10,2.9375 0 1 1 20,0 z" /> + d="m 24.5,26.6875 a 10,2.9375 0 1 1 -20,0 10,2.9375 0 1 1 20,0 z" /> + d="m 58.403591,29.207693 a 29.010935,29.010935 0 1 1 -58.0218695,0 29.010935,29.010935 0 1 1 58.0218695,0 z" /> + d="m 53.950159,30.352861 a 24.175779,24.175779 0 1 1 -48.3515586,0 24.175779,24.175779 0 1 1 48.3515586,0 z" /> + inkscape:export-ydpi="103.61" + inkscape:connector-curvature="0" /> @@ -1580,7 +1682,7 @@ sodipodi:cy="26.6875" sodipodi:cx="14.5" id="path3209" - d="m 24.5,26.6875 c 0,1.622336 -4.477153,2.9375 -10,2.9375 -5.5228475,0 -10,-1.315164 -10,-2.9375 0,-1.622336 4.4771525,-2.9375 10,-2.9375 5.522847,0 10,1.315164 10,2.9375 z" /> + d="m 24.5,26.6875 a 10,2.9375 0 1 1 -20,0 10,2.9375 0 1 1 20,0 z" /> + d="m 24.5,26.6875 a 10,2.9375 0 1 1 -20,0 10,2.9375 0 1 1 20,0 z" /> + d="m 58.403591,29.207693 a 29.010935,29.010935 0 1 1 -58.0218695,0 29.010935,29.010935 0 1 1 58.0218695,0 z" /> + d="m 53.950159,30.352861 a 24.175779,24.175779 0 1 1 -48.3515586,0 24.175779,24.175779 0 1 1 48.3515586,0 z" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml - + Edouard Lafargue @@ -468,21 +695,29 @@ inkscape:label="Dark background" id="g2932" inkscape:groupmode="layer" - transform="translate(-205.8687,-331.45166)"> + transform="translate(-205.8687,-331.45166)" + sodipodi:insensitive="true"> - + + + + + style="fill:none;stroke:none" /> + style="fill:#1a1a1a;fill-opacity:1;stroke:none;display:inline" /> - + style="display:inline" + sodipodi:insensitive="true"> + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + transform="translate(-227.44331,-365.7337)" + sodipodi:insensitive="true"> - + + + + + + + style="fill:url(#linearGradient3925);fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - + + inkscape:label="#g4183"> + + + + + + + style="display:none" + sodipodi:insensitive="true"> - + inkscape:label="#g4292"> + + + + - + + inkscape:label="#g4338"> + + + + + style="display:none" + sodipodi:insensitive="true"> + inkscape:label="#path5747" + inkscape:connector-curvature="0" /> + style="display:none"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + style="fill:url(#linearGradient3124);fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" /> + - + + inkscape:label="#g4104" + transform="translate(0,-2)"> + + + + + + - + + inkscape:label="#g4159" + transform="translate(0,-2)"> + + + + - + + inkscape:label="#g4224" + transform="translate(0,-2)"> + + + + + style="display:none" + transform="translate(-129.62194,129.52019)" + sodipodi:insensitive="true"> + inkscape:label="#path5747" + inkscape:connector-curvature="0" /> - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml - + Edouard Lafargue @@ -1000,29 +1139,6 @@ - - + + + + + + + + 0 0 - 626 - 842 + 648 + 802 @@ -1091,7 +1091,11 @@ false - #RateStabilizationGroup_15{background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255));} + #RateStabilizationGroup_15{background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255)); + +border: 1px outset #999; +border-radius: 3; +} @@ -1683,7 +1687,7 @@ border-radius: 4; true - + @@ -2234,7 +2238,7 @@ border-radius: 5; - + @@ -2784,7 +2788,7 @@ border-radius: 5; - + @@ -3407,24 +3411,24 @@ border-radius: 5; - - - - 0 - 0 - - + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -3439,6 +3443,22 @@ border-radius: 5; + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 3 + 22 + + + + + @@ -3482,30 +3502,30 @@ border-radius: 5; - - - - - 0 - 0 - - + + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 objname:StabilizationSettings - fieldname:PitchRatePID + fieldname:RollRatePID element:Kp haslimits:yes scale:0.0001 @@ -3514,7 +3534,23 @@ border-radius: 5; - + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 3 + 22 + + + + + @@ -3558,25 +3594,25 @@ border-radius: 5; - - - - - 0 - 0 - - + + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -3654,24 +3690,24 @@ border-radius: 5; - - - - 0 - 0 - - + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -3685,7 +3721,7 @@ border-radius: 5; - + @@ -3729,25 +3765,25 @@ border-radius: 5; - - - - - 0 - 0 - - + + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -3761,7 +3797,7 @@ border-radius: 5; - + @@ -3805,25 +3841,25 @@ border-radius: 5; - - - - - 0 - 0 - - + + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -4433,7 +4469,11 @@ border-radius: 5; false - #RateStabilizationGroup_17{background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255));} + #RateStabilizationGroup_17{background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255)); + +border: 1px outset #999; +border-radius: 3; +} @@ -4967,7 +5007,7 @@ border-radius: 4; true - + @@ -5518,7 +5558,7 @@ border-radius: 5; - + @@ -6068,7 +6108,7 @@ border-radius: 5; - + @@ -6688,24 +6728,24 @@ border-radius: 5; - - - - 0 - 0 - - + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -6720,6 +6760,22 @@ border-radius: 5; + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 3 + 22 + + + + + @@ -6763,25 +6819,25 @@ border-radius: 5; - - - - - 0 - 0 - - + + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -6795,7 +6851,23 @@ border-radius: 5; - + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 3 + 22 + + + + + @@ -6839,25 +6911,25 @@ border-radius: 5; - - - - - 0 - 0 - - + + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -6871,6 +6943,22 @@ border-radius: 5; + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 3 + 22 + + + + @@ -6935,24 +7023,24 @@ border-radius: 5; - - - - 0 - 0 - - + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -6966,7 +7054,7 @@ border-radius: 5; - + @@ -7010,25 +7098,25 @@ border-radius: 5; - - - - - 0 - 0 - - + + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -7042,7 +7130,7 @@ border-radius: 5; - + @@ -7086,25 +7174,25 @@ border-radius: 5; - - - - - 0 - 0 - - + + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -7208,7 +7296,7 @@ border-radius: 4; - + Qt::Horizontal @@ -7224,7 +7312,7 @@ border-radius: 4; - + @@ -7244,7 +7332,7 @@ border-radius: 4; - + @@ -7782,7 +7870,11 @@ border-radius: 4; false - #RateStabilizationGroup_19{background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255));} + #RateStabilizationGroup_19{background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255)); + +border: 1px outset #999; +border-radius: 3; +} @@ -8358,10 +8450,7 @@ border-radius: 4; true - - - 11 - + @@ -8912,7 +9001,7 @@ border-radius: 5; - + @@ -9462,7 +9551,7 @@ border-radius: 5; - + @@ -10082,24 +10171,24 @@ Angle - - - - 0 - 0 - - + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -10113,6 +10202,22 @@ Angle + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 3 + 22 + + + + + @@ -10155,25 +10260,25 @@ Angle - - - - - 0 - 0 - - + + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -10186,7 +10291,23 @@ Angle - + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 3 + 22 + + + + + @@ -10229,25 +10350,25 @@ Angle - - - - - 0 - 0 - - + + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -10325,24 +10446,24 @@ Rate - - - - 0 - 0 - - + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -10356,7 +10477,7 @@ Rate - + @@ -10400,25 +10521,25 @@ Rate - - - - - 0 - 0 - - + + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -10432,7 +10553,7 @@ Rate - + @@ -10476,25 +10597,25 @@ Rate - - - - - 0 - 0 - - + + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -10573,24 +10694,24 @@ Attitude - - - - 0 - 0 - - + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -10604,7 +10725,7 @@ Attitude - + @@ -10648,25 +10769,25 @@ Attitude - - - - - 0 - 0 - - + + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -10680,7 +10801,7 @@ Attitude - + @@ -10724,25 +10845,25 @@ Attitude - - - - - 0 - 0 - - + + - 21 - 16 + 43 + 22 - - + + + 43 + 22 + - - 50 + + 200 + + + 200 @@ -10762,7 +10883,7 @@ Attitude - + Qt::Vertical @@ -10778,7 +10899,7 @@ Attitude - + Qt::Vertical @@ -10810,7 +10931,7 @@ Attitude - + @@ -11348,7 +11469,11 @@ Attitude false - #RateStabilizationGroup_21{background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255));} + #RateStabilizationGroup_21{background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255)); + +border: 1px outset #999; +border-radius: 3; +} @@ -11399,13 +11524,6 @@ Attitude 20 - - - 8 - 50 - false - - If you check this, the GCS will udpate the stabilization factors automatically every 300ms, which will help for fast tuning. @@ -11432,44 +11550,6 @@ automatically every 300ms, which will help for fast tuning. - - - - 0 - 0 - - - - - 32 - 32 - - - - - - - - :/core/images/helpicon.svg:/core/images/helpicon.svg - - - - 32 - 32 - - - - true - - - - button:help - url:http://wiki.openpilot.org/display/Doc/Stabilization+panel - - - - - @@ -11526,7 +11606,7 @@ border-radius: 4; - + @@ -11585,7 +11665,7 @@ border-radius: 4; - + @@ -11647,9 +11727,6 @@ border-radius: 4; - - - @@ -11674,8 +11751,8 @@ border-radius: 4; 0 0 - 626 - 828 + 648 + 798 @@ -12269,7 +12346,11 @@ border-radius: 4; false - #RateStabilizationGroup_8{background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255));} + #RateStabilizationGroup_8{background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255)); + +border: 1px outset #999; +border-radius: 3; +} @@ -15616,7 +15697,11 @@ You can usually go for higher values for Yaw factors. false - #RateStabilizationGroup_4{background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255));} + #RateStabilizationGroup_4{background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255)); + +border: 1px outset #999; +border-radius: 3; +} @@ -18931,7 +19016,11 @@ You can usually go for higher values for Yaw factors. false - #RateStabilizationGroup_6{background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255));} + #RateStabilizationGroup_6{background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255)); + +border: 1px outset #999; +border-radius: 3; +} @@ -22224,7 +22313,11 @@ You can usually go for higher values for Yaw factors. false - #RateStabilizationGroup_22{background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255));} + #RateStabilizationGroup_22{background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255)); + +border: 1px outset #999; +border-radius: 3; +} @@ -22271,7 +22364,7 @@ You can usually go for higher values for Yaw factors. - 8 + 9 50 false @@ -22288,45 +22381,7 @@ automatically every 300ms, which will help for fast tuning. - - - - - 0 - 0 - - - - - 32 - 32 - - - - - - - - :/core/images/helpicon.svg:/core/images/helpicon.svg - - - - 32 - 32 - - - - true - - - - button:help - url:http://wiki.openpilot.org/display/Doc/Stabilization+panel - - - - - + Qt::Horizontal From 709c985b17ea7127b3a0da0f3a0fcb2092734b49 Mon Sep 17 00:00:00 2001 From: David Ankers Date: Tue, 21 Feb 2012 03:53:00 +1100 Subject: [PATCH 08/11] Update to Dado's work on the Stab UI --- .../src/plugins/config/stabilization.ui | 3186 ++++++++++++++++- 1 file changed, 3128 insertions(+), 58 deletions(-) mode change 100644 => 100755 ground/openpilotgcs/src/plugins/config/stabilization.ui diff --git a/ground/openpilotgcs/src/plugins/config/stabilization.ui b/ground/openpilotgcs/src/plugins/config/stabilization.ui old mode 100644 new mode 100755 index 55858c8a7..d3c91c78f --- a/ground/openpilotgcs/src/plugins/config/stabilization.ui +++ b/ground/openpilotgcs/src/plugins/config/stabilization.ui @@ -495,7 +495,7 @@ 0 - 0 + -162 648 802 @@ -11496,6 +11496,9 @@ border-radius: 3; 20 + + When the throttle is low, zero the intergral term to prevent intergral wind-up + @@ -11750,12 +11753,12 @@ border-radius: 4; 0 - 0 + -350 648 - 798 + 990 - + @@ -11819,13 +11822,13 @@ border-radius: 4; 0 - 181 + 210 16777215 - 181 + 210 @@ -12452,7 +12455,7 @@ border-radius: 4; 0 - 131 + 151 @@ -12883,6 +12886,9 @@ border-radius: 4; true + + 2 + @@ -14595,7 +14601,8 @@ border-radius: 5; - I factor for rate stabilization is usually very low or even zero. + Slowly raise Kp until you start seeing clear oscillations when you fly. +Then lower the value by 20% or so. @@ -14638,6 +14645,10 @@ border-radius: 5; 22 + + Slowly raise Kp until you start seeing clear oscillations when you fly. +Then lower the value by 20% or so. + @@ -14762,8 +14773,8 @@ You can usually go for higher values for Yaw factors. - As a rule of thumb, you can set YawRate Ki at roughly the same -value as YawRate Kp. + As a rule of thumb, you can set the Ki at roughly the same +value as the Kp. @@ -14822,6 +14833,10 @@ value as YawRate Kp. 22 + + As a rule of thumb, you can set the Ki at roughly the same +value as the Kp. + @@ -14880,10 +14895,8 @@ value as YawRate Kp. - Slowly raise Kp until you start seeing clear oscillations when you fly. -Then lower the value by 20% or so. - -You can usually go for higher values for Yaw factors. + As a rule of thumb, you can set the Ki at roughly the same +value as the Kp. @@ -14907,6 +14920,166 @@ You can usually go for higher values for Yaw factors. + + + + 0 + 0 + + + + + 58 + 0 + + + + + 16777215 + 16777215 + + + + + + + Derivative + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 0 + 22 + + + + + 16777215 + 22 + + + + + + + + + + 6 + + + 1.000000000000000 + + + + objname:StabilizationSettings + fieldname:RollRatePID + element:Kd + haslimits:no + scale:1 + buttongroup:4,20 + + + + + + + + + 0 + 0 + + + + + 0 + 22 + + + + + 16777215 + 22 + + + + + + + 6 + + + 1.000000000000000 + + + + objname:StabilizationSettings + fieldname:PitchRatePID + element:Kd + haslimits:no + scale:1 + buttongroup:4,20 + + + + + + + + + 0 + 0 + + + + + 0 + 22 + + + + + 16777215 + 22 + + + + + + + + + + 6 + + + 1.000000000000000 + + + + objname:StabilizationSettings + fieldname:YawRatePID + element:Kd + haslimits:no + scale:1 + buttongroup:4,20 + + + + + @@ -14937,7 +15110,7 @@ You can usually go for higher values for Yaw factors. - + @@ -14958,7 +15131,7 @@ You can usually go for higher values for Yaw factors. - I factor for rate stabilization is usually very low or even zero. + @@ -14981,7 +15154,7 @@ You can usually go for higher values for Yaw factors. - + @@ -15022,7 +15195,7 @@ You can usually go for higher values for Yaw factors. - + @@ -15043,10 +15216,7 @@ You can usually go for higher values for Yaw factors. - Slowly raise Kp until you start seeing clear oscillations when you fly. -Then lower the value by 20% or so. - -You can usually go for higher values for Yaw factors. + @@ -17946,7 +18116,7 @@ border-radius: 5; - I factor for rate stabilization is usually very low or even zero. + @@ -18031,10 +18201,7 @@ border-radius: 5; - Slowly raise Kp until you start seeing clear oscillations when you fly. -Then lower the value by 20% or so. - -You can usually go for higher values for Yaw factors. + @@ -18113,8 +18280,7 @@ You can usually go for higher values for Yaw factors. - As a rule of thumb, you can set YawRate Ki at roughly the same -value as YawRate Kp. + @@ -18231,10 +18397,7 @@ value as YawRate Kp. - Slowly raise Kp until you start seeing clear oscillations when you fly. -Then lower the value by 20% or so. - -You can usually go for higher values for Yaw factors. + @@ -18309,7 +18472,7 @@ You can usually go for higher values for Yaw factors. - I factor for rate stabilization is usually very low or even zero. + @@ -18394,10 +18557,7 @@ You can usually go for higher values for Yaw factors. - Slowly raise Kp until you start seeing clear oscillations when you fly. -Then lower the value by 20% or so. - -You can usually go for higher values for Yaw factors. + @@ -18458,7 +18618,7 @@ You can usually go for higher values for Yaw factors. - + @@ -21253,7 +21413,7 @@ angle(deg) - I factor for rate stabilization is usually very low or even zero. + @@ -21378,8 +21538,7 @@ rate(deg/s) - As a rule of thumb, you can set YawRate Ki at roughly the same -value as YawRate Kp. + @@ -21502,10 +21661,7 @@ value as YawRate Kp. - Slowly raise Kp until you start seeing clear oscillations when you fly. -Then lower the value by 20% or so. - -You can usually go for higher values for Yaw factors. + @@ -21584,7 +21740,7 @@ You can usually go for higher values for Yaw factors. - I factor for rate stabilization is usually very low or even zero. + @@ -21675,10 +21831,7 @@ You can usually go for higher values for Yaw factors. - Slowly raise Kp until you start seeing clear oscillations when you fly. -Then lower the value by 20% or so. - -You can usually go for higher values for Yaw factors. + @@ -21725,10 +21878,7 @@ You can usually go for higher values for Yaw factors. - Slowly raise Kp until you start seeing clear oscillations when you fly. -Then lower the value by 20% or so. - -You can usually go for higher values for Yaw factors. + @@ -21775,7 +21925,2924 @@ You can usually go for higher values for Yaw factors. - + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 20 + 10 + + + + + + + + + 180 + 16 + + + + + 9 + 75 + true + + + + Sensor Tunning + + + + + + + + 0 + 0 + + + + + 0 + 125 + + + + + 16777215 + 125 + + + + + + + + + 0 + 0 + 0 + + + + + + + + + 243 + 243 + 243 + + + + + 250 + 250 + 250 + + + + + + + + + 255 + 255 + 255 + + + + + + + 251 + 251 + 251 + + + + + + + 124 + 124 + 124 + + + + + + + 165 + 165 + 165 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + + + 243 + 243 + 243 + + + + + 250 + 250 + 250 + + + + + + + + + + + 243 + 243 + 243 + + + + + 250 + 250 + 250 + + + + + + + + + 0 + 0 + 0 + + + + + + + 251 + 251 + 251 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + + + 243 + 243 + 243 + + + + + 250 + 250 + 250 + + + + + + + + + 255 + 255 + 255 + + + + + + + 251 + 251 + 251 + + + + + + + 124 + 124 + 124 + + + + + + + 165 + 165 + 165 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + + + 243 + 243 + 243 + + + + + 250 + 250 + 250 + + + + + + + + + + + 243 + 243 + 243 + + + + + 250 + 250 + 250 + + + + + + + + + 0 + 0 + 0 + + + + + + + 251 + 251 + 251 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 124 + 124 + 124 + + + + + + + + + 243 + 243 + 243 + + + + + 250 + 250 + 250 + + + + + + + + + 255 + 255 + 255 + + + + + + + 251 + 251 + 251 + + + + + + + 124 + 124 + 124 + + + + + + + 165 + 165 + 165 + + + + + + + 124 + 124 + 124 + + + + + + + 255 + 255 + 255 + + + + + + + 124 + 124 + 124 + + + + + + + + + 243 + 243 + 243 + + + + + 250 + 250 + 250 + + + + + + + + + + + 243 + 243 + 243 + + + + + 250 + 250 + 250 + + + + + + + + + 0 + 0 + 0 + + + + + + + 248 + 248 + 248 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + false + + + #RateStabilizationGroup_23{background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0 rgba(243, 243, 243, 255), stop:1 rgba(250, 250, 250, 255)); + +border: 1px outset #999; +border-radius: 3; +} + + + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + 2 + + + + + Qt::Horizontal + + + QSizePolicy::Preferred + + + + 459 + 10 + + + + + + + + + 0 + 0 + + + + + 81 + 28 + + + + + 81 + 28 + + + + QPushButton { +border: 1px outset #999; +border-radius: 5; +background-color: qlineargradient(spread:pad, x1:0.507, y1:0.869318, x2:0.507, y2:0.0965909, stop:0.28 rgba(236, 236, 236, 255), stop:1 rgba(252, 252, 252, 255)); +} + +QPushButton:pressed { + + border-style: inset; + background-color: qlineargradient(spread:pad, x1:0.502, y1:0.664864, x2:0.502, y2:0.034, stop:0.358209 rgba(250, 250, 250, 255), stop:0.626866 rgba(235, 235, 235, 255)); + +} + + +QPushButton:hover { + border: 1px outset #999; +border-color: rgb(83, 83, 83); +border-radius: 4; + } + + + Default + + + + objname:StabilizationSettings + button:default + buttongroup:8,2 + + + + + + + + + 0 + 0 + + + + + 0 + 70 + + + + + 16777215 + 72 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 251 + 251 + 251 + + + + + + + 124 + 124 + 124 + + + + + + + 165 + 165 + 165 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 251 + 251 + 251 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 251 + 251 + 251 + + + + + + + 124 + 124 + 124 + + + + + + + 165 + 165 + 165 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 251 + 251 + 251 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 124 + 124 + 124 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 251 + 251 + 251 + + + + + + + 124 + 124 + 124 + + + + + + + 165 + 165 + 165 + + + + + + + 124 + 124 + 124 + + + + + + + 255 + 255 + 255 + + + + + + + 124 + 124 + 124 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 0 + + + + + + + 248 + 248 + 248 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + false + + + + + + + + + true + + + + + + + 0 + 0 + + + + + 0 + 16 + + + + + + + + + 255 + 255 + 255 + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + 58 + 58 + 58 + + + + + + + 48 + 48 + 48 + + + + + + + 19 + 19 + 19 + + + + + + + 26 + 26 + 26 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + 0 + 0 + 0 + + + + + + + 19 + 19 + 19 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 255 + 255 + 255 + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + 58 + 58 + 58 + + + + + + + 48 + 48 + 48 + + + + + + + 19 + 19 + 19 + + + + + + + 26 + 26 + 26 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + 0 + 0 + 0 + + + + + + + 19 + 19 + 19 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 255 + 255 + 255 + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + 58 + 58 + 58 + + + + + + + 48 + 48 + 48 + + + + + + + 19 + 19 + 19 + + + + + + + 26 + 26 + 26 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + 0 + 0 + 0 + + + + + + + 39 + 39 + 39 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 75 + true + + + + false + + + background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255)); +color: rgb(255, 255, 255); +border-radius: 5; + + + GyroTau + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + + 0 + 16 + + + + + + + + + 255 + 255 + 255 + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + 58 + 58 + 58 + + + + + + + 48 + 48 + 48 + + + + + + + 19 + 19 + 19 + + + + + + + 26 + 26 + 26 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + 0 + 0 + 0 + + + + + + + 19 + 19 + 19 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 255 + 255 + 255 + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + 58 + 58 + 58 + + + + + + + 48 + 48 + 48 + + + + + + + 19 + 19 + 19 + + + + + + + 26 + 26 + 26 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + 0 + 0 + 0 + + + + + + + 19 + 19 + 19 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 255 + 255 + 255 + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + 58 + 58 + 58 + + + + + + + 48 + 48 + 48 + + + + + + + 19 + 19 + 19 + + + + + + + 26 + 26 + 26 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + 0 + 0 + 0 + + + + + + + 39 + 39 + 39 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 75 + true + + + + false + + + background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255)); +color: rgb(255, 255, 255); +border-radius: 5; + + + AccelKp + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + + 0 + 16 + + + + + + + + + 255 + 255 + 255 + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + 58 + 58 + 58 + + + + + + + 48 + 48 + 48 + + + + + + + 19 + 19 + 19 + + + + + + + 26 + 26 + 26 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + 0 + 0 + 0 + + + + + + + 19 + 19 + 19 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 255 + 255 + 255 + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + 58 + 58 + 58 + + + + + + + 48 + 48 + 48 + + + + + + + 19 + 19 + 19 + + + + + + + 26 + 26 + 26 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + 0 + 0 + 0 + + + + + + + 19 + 19 + 19 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 255 + 255 + 255 + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + 58 + 58 + 58 + + + + + + + 48 + 48 + 48 + + + + + + + 19 + 19 + 19 + + + + + + + 26 + 26 + 26 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + + + 74 + 74 + 74 + + + + + 36 + 36 + 36 + + + + + + + + + 0 + 0 + 0 + + + + + + + 39 + 39 + 39 + + + + + + + 255 + 255 + 220 + + + + + + + 0 + 0 + 0 + + + + + + + + + 75 + true + + + + false + + + background-color: qlineargradient(spread:reflect, x1:0.507, y1:0, x2:0.507, y2:0.772, stop:0.208955 rgba(74, 74, 74, 255), stop:0.78607 rgba(36, 36, 36, 255)); +color: rgb(255, 255, 255); +border-radius: 5; + + + AccelKi + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + + 0 + 22 + + + + + 16777215 + 22 + + + + GyroTau is a gyro filter, the higher the factor the more filtering is applied to the gyros + + + + + + 0 + + + 1000000.000000000000000 + + + 1.000000000000000 + + + + objname:StabilizationSettings + fieldname:GyroTau + haslimits:no + scale:1 + buttongroup:8,20 + + + + + + + + + 0 + 0 + + + + + 0 + 22 + + + + + 16777215 + 22 + + + + The proportional term for the accelerometer, the higher this term the more weight the accel is given + + + + + + 0 + + + 1000000.000000000000000 + + + 1.000000000000000 + + + + objname:AttitudeSettings + fieldname:AccelKp + haslimits:no + scale:1 + buttongroup:8,20 + + + + + + + + + 0 + 0 + + + + + 0 + 22 + + + + + 16777215 + 22 + + + + The intergral term for the accelerometer within the filter + + + + + + 0 + + + 1000000.000000000000000 + + + 1.000000000000000 + + + + objname:AttitudeSettings + fieldname:AccelKi + haslimits:no + scale:1 + buttongroup:8,20 + + + + + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 10 + + + + + @@ -22340,6 +25407,9 @@ border-radius: 3; 20 + + When the throttle is low, zero the intergral term to prevent intergral wind-up + @@ -22370,7 +25440,7 @@ border-radius: 3; - If you check this, the GCS will udpate the stabilization factors + If you check this, the GCS will udpate the stabilization factors automatically every 300ms, which will help for fast tuning. @@ -22529,7 +25599,7 @@ border-radius: 4; - + From a16c392bc6e3ff01f1414463bc14db4cff1baab1 Mon Sep 17 00:00:00 2001 From: Corvus Corax Date: Fri, 24 Feb 2012 14:28:48 +0100 Subject: [PATCH 09/11] Change to GLC Lib to make it compile on Linux with QT 4.8.0. --- ground/openpilotgcs/src/libs/glc_lib/glc_ext.h | 4 ++++ ground/openpilotgcs/src/libs/glc_lib/viewport/glc_camera.cpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/ground/openpilotgcs/src/libs/glc_lib/glc_ext.h b/ground/openpilotgcs/src/libs/glc_lib/glc_ext.h index de2edaa4a..38c3d6154 100644 --- a/ground/openpilotgcs/src/libs/glc_lib/glc_ext.h +++ b/ground/openpilotgcs/src/libs/glc_lib/glc_ext.h @@ -40,6 +40,10 @@ #include "GL/glu.h" #endif +#if defined(Q_OS_LINUX) +#include "GL/glu.h" +#endif + #if !defined(Q_OS_MAC) // ARB_vertex_buffer_object extern PFNGLBINDBUFFERARBPROC glBindBuffer; diff --git a/ground/openpilotgcs/src/libs/glc_lib/viewport/glc_camera.cpp b/ground/openpilotgcs/src/libs/glc_lib/viewport/glc_camera.cpp index 54e95ecdb..937b3c3ce 100644 --- a/ground/openpilotgcs/src/libs/glc_lib/viewport/glc_camera.cpp +++ b/ground/openpilotgcs/src/libs/glc_lib/viewport/glc_camera.cpp @@ -35,6 +35,10 @@ #include "GL/glu.h" #endif +#if defined(Q_OS_LINUX) +#include "GL/glu.h" +#endif + #include using namespace glc; From 3d05256a363560d1a560a81104e2cf1c5933510f Mon Sep 17 00:00:00 2001 From: Dmytro Poplavskiy Date: Sat, 25 Feb 2012 17:22:08 +1000 Subject: [PATCH 10/11] Welcome page UI tweaks To make it closer to proposed design. * Aligned the background OP logo to the bottom-right corner * Don't upscale the OP logo * Fixed width of community panel * Changed the vertical layout of icons and community panel * Fixed color of community panel titles * Use styled text for next containing &, this fixes rendering but "..." are not displayed --- .../plugins/welcome/qml/CommunityPanel.qml | 4 +-- .../src/plugins/welcome/qml/NewsPanel.qml | 8 +++--- .../src/plugins/welcome/qml/SitesPanel.qml | 4 +-- .../src/plugins/welcome/qml/main.qml | 26 ++++++++++++++----- 4 files changed, 29 insertions(+), 13 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/welcome/qml/CommunityPanel.qml b/ground/openpilotgcs/src/plugins/welcome/qml/CommunityPanel.qml index a9c3a17c4..60cdfb1ed 100644 --- a/ground/openpilotgcs/src/plugins/welcome/qml/CommunityPanel.qml +++ b/ground/openpilotgcs/src/plugins/welcome/qml/CommunityPanel.qml @@ -2,7 +2,7 @@ import QtQuick 1.1 Item { - width: 600 + width: background.sourceSize.width height: 300 BorderImage { @@ -32,7 +32,7 @@ Item { anchors.verticalCenter: parent.verticalCenter anchors.left: newsPanel.right anchors.margins: 16 - color: "#A0A0B0" + color: "#A0A0A0" } SitesPanel { diff --git a/ground/openpilotgcs/src/plugins/welcome/qml/NewsPanel.qml b/ground/openpilotgcs/src/plugins/welcome/qml/NewsPanel.qml index d86311549..a0e33c647 100644 --- a/ground/openpilotgcs/src/plugins/welcome/qml/NewsPanel.qml +++ b/ground/openpilotgcs/src/plugins/welcome/qml/NewsPanel.qml @@ -12,7 +12,7 @@ Item { id: header text: "Project News" width: parent.width - color: "#303060" + color: "#44515c" font { pointSize: 14 weight: Font.Bold @@ -50,16 +50,18 @@ Item { Text { text: title width: view.width + textFormat: text.indexOf("&") > 0 ? Text.StyledText : Text.PlainText elide: Text.ElideRight font.bold: true - color: mouseArea.containsMouse ? "darkblue" : "black" + color: mouseArea.containsMouse ? "#224d81" : "black" } Text { text: description width: view.width + textFormat: text.indexOf("&") > 0 ? Text.StyledText : Text.PlainText elide: Text.ElideRight - color: mouseArea.containsMouse ? "darkblue" : "black" + color: mouseArea.containsMouse ? "#224d81" : "black" } } diff --git a/ground/openpilotgcs/src/plugins/welcome/qml/SitesPanel.qml b/ground/openpilotgcs/src/plugins/welcome/qml/SitesPanel.qml index d8ac28117..a41ef83d5 100644 --- a/ground/openpilotgcs/src/plugins/welcome/qml/SitesPanel.qml +++ b/ground/openpilotgcs/src/plugins/welcome/qml/SitesPanel.qml @@ -12,7 +12,7 @@ Item { id: header text: "OpenPilot Websites" width: parent.width - color: "#303060" + color: "#44515c" font { pointSize: 14 weight: Font.Bold @@ -47,7 +47,7 @@ Item { weight: Font.Bold } - color: mouseArea.containsMouse ? "darkblue" : "black" + color: mouseArea.containsMouse ? "#224d81" : "black" MouseArea { id: mouseArea diff --git a/ground/openpilotgcs/src/plugins/welcome/qml/main.qml b/ground/openpilotgcs/src/plugins/welcome/qml/main.qml index 07c9a812c..764ce36a5 100644 --- a/ground/openpilotgcs/src/plugins/welcome/qml/main.qml +++ b/ground/openpilotgcs/src/plugins/welcome/qml/main.qml @@ -1,6 +1,7 @@ import QtQuick 1.1 Rectangle { + id: container width: 1024 height: 768 @@ -9,30 +10,43 @@ Rectangle { Image { id: bg source: "images/welcome-op-bg.png" - anchors.fill: parent - fillMode: Image.PreserveAspectFit + anchors.bottom: parent.bottom + anchors.right: parent.right + + // The background OP logo is downscalled to fit the page + // but not upscalled if page is larger + property real scale: Math.min(parent.width/sourceSize.width, + parent.height/sourceSize.height, + 1.0) + + width: scale*sourceSize.width + height: scale*sourceSize.height smooth: true } Column { - anchors.centerIn: parent + anchors.horizontalCenter: parent.horizontalCenter + // distribute a vertical space between the icons blocks an community widget as: + // top - 48% - Icons - 27% - CommunityWidget - 25% - bottom + y: (parent.height - buttons.height - communityPanel.height) * 0.48 width: parent.width - spacing: 32 + spacing: (parent.height - buttons.height - communityPanel.height) * 0.27 Row { - //anchors.bottom: parent.verticalCenter anchors.horizontalCenter: parent.horizontalCenter spacing: 16 Image { source: "images/welcome-op-logo.png" anchors.verticalCenter: parent.verticalCenter + anchors.verticalCenterOffset: -2 //it looks better aligned to icons grid } Grid { id: buttons columns: 3 spacing: 4 + anchors.verticalCenter: parent.verticalCenter WelcomePageButton { baseIconName: "flightdata" @@ -73,8 +87,8 @@ Rectangle { } // images row CommunityPanel { + id: communityPanel anchors.horizontalCenter: parent.horizontalCenter - width: parent.width*0.8 } } } From d38a173bedc6ac660a70eb84d70485f7e1e5fe34 Mon Sep 17 00:00:00 2001 From: David Ankers Date: Sun, 26 Feb 2012 16:40:08 +1100 Subject: [PATCH 11/11] Bug: Spinbox for PitchRateKp was linked to the wrong UAVObject --- .../openpilotgcs/src/plugins/config/stabilization.ui | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/stabilization.ui b/ground/openpilotgcs/src/plugins/config/stabilization.ui index d3c91c78f..106b0da37 100755 --- a/ground/openpilotgcs/src/plugins/config/stabilization.ui +++ b/ground/openpilotgcs/src/plugins/config/stabilization.ui @@ -495,7 +495,7 @@ 0 - -162 + 0 648 802 @@ -3459,7 +3459,7 @@ border-radius: 5; - + 0 @@ -3503,7 +3503,7 @@ border-radius: 5; - + 43 @@ -3525,7 +3525,7 @@ border-radius: 5; objname:StabilizationSettings - fieldname:RollRatePID + fieldname:PitchRatePID element:Kp haslimits:yes scale:0.0001 @@ -11753,8 +11753,8 @@ border-radius: 4; 0 - -350 - 648 + 0 + 401 990