Embedded images

This commit is contained in:
Kathy Ruffing 2016-10-17 14:25:30 +00:00
parent 187dd5be25
commit e689dc2ba0
20 changed files with 2298 additions and 463 deletions

View File

@ -1,279 +1,20 @@
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\f39\fbidi \froman\fcharset0\fprq2{\*\panose 00000000000000000000}Cambria;}
{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f40\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\f41\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\f43\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f44\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f45\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\f46\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f47\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f48\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f60\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}
{\f61\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}{\f63\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f64\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f65\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}
{\f66\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f67\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f68\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f60\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}
{\f61\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}{\f63\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f64\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f65\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}
{\f66\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f67\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f68\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f410\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}
{\f411\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\f413\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\f414\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f417\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}
{\f418\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\f430\fbidi \froman\fcharset238\fprq2 Cambria CE;}{\f431\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}{\f433\fbidi \froman\fcharset161\fprq2 Cambria Greek;}
{\f434\fbidi \froman\fcharset162\fprq2 Cambria Tur;}{\f437\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\f438\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;}
{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);}
{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}
{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}
{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}
{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}
{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;
\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red23\green54\blue93;}{\*\defchp
\fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}
{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1
\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused
Normal Table;}}{\*\rsidtbl \rsid3236999\rsid9258266}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator Kathy B. Ruffing}{\creatim\yr2015\mo8\dy19\hr11\min26}
{\revtim\yr2015\mo8\dy19\hr11\min27}{\version2}{\edmins1}{\nofpages1}{\nofwords86}{\nofchars496}{\nofcharsws581}{\vern57439}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect
\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701
\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot9258266 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2
\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6
\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
{\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\qc \li0\ri0\sa300\nowidctlpar\brdrb\brdrs\brdrw20\brsp80 \wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0
\fs22\lang1033\langfe1033\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af39\afs52 \ltrch\fcs0 \f39\fs52\expnd1\expndtw5\cf17\kerning28\insrsid3236999 \hich\af39\dbch\af31505\loch\f39 Shortcuts for Inserting}{
\rtlch\fcs1 \af0\afs52 \ltrch\fcs0 \f0\fs52\expnd1\expndtw5\cf17\kerning28\insrsid3236999
\par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10\brdrcf1 \trbrdrl\brdrs\brdrw10\brdrcf1 \trbrdrb\brdrs\brdrw10\brsp80\brdrcf1 \trbrdrr\brdrs\brdrw10\brdrcf1
\trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1
\cltxlrtb\clftsWidth3\clwWidth2898\clshdrawnil \cellx2790\clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth4500\clshdrawnil \cellx7290
\pard \ltrpar\qc \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid3236999 \hich\af37\dbch\af31505\loch\f37 KEY STROKE\cell \hich\af37\dbch\af31505\loch\f37 COMMAND\cell }\pard \ltrpar
\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid3236999 \trowd \irow0\irowband0\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10\brdrcf1 \trbrdrl
\brdrs\brdrw10\brdrcf1 \trbrdrb\brdrs\brdrw10\brsp80\brdrcf1 \trbrdrr\brdrs\brdrw10\brdrcf1 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb
\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth2898\clshdrawnil \cellx2790\clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1
\cltxlrtb\clftsWidth3\clwWidth4500\clshdrawnil \cellx7290\row \ltrrow}\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10\brdrcf1 \trbrdrl\brdrs\brdrw10\brdrcf1 \trbrdrb\brdrs\brdrw10\brdrcf1 \trbrdrr\brdrs\brdrw10\brdrcf1
\trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1
\cltxlrtb\clftsWidth3\clwWidth2898\clshdrawnil \cellx2790\clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth4500\clshdrawnil \cellx7290
\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid3236999 \hich\af2\dbch\af31505\loch\f2 [SHIFT] [CTRL] [SPACE]\cell }{\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \f37\fs20\insrsid3236999
\hich\af37\dbch\af31505\loch\f37 Insert Hard Space\cell }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \f37\fs20\insrsid3236999
\trowd \irow1\irowband1\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10\brdrcf1 \trbrdrl\brdrs\brdrw10\brdrcf1 \trbrdrb\brdrs\brdrw10\brdrcf1 \trbrdrr\brdrs\brdrw10\brdrcf1 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3
\clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth2898\clshdrawnil \cellx2790\clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl
\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth4500\clshdrawnil \cellx7290\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af2\afs20
\ltrch\fcs0 \f2\fs20\insrsid3236999 \hich\af2\dbch\af31505\loch\f2 [SHIFT] [CTRL] [B]\cell }{\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \f37\fs20\insrsid3236999 \hich\af37\dbch\af31505\loch\f37 Insert Current Type Before (at same level)\cell }\pard \ltrpar
\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \f37\fs20\insrsid3236999 \trowd \irow2\irowband2\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10\brdrcf1
\trbrdrl\brdrs\brdrw10\brdrcf1 \trbrdrb\brdrs\brdrw10\brdrcf1 \trbrdrr\brdrs\brdrw10\brdrcf1 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb
\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth2898\clshdrawnil \cellx2790\clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1
\cltxlrtb\clftsWidth3\clwWidth4500\clshdrawnil \cellx7290\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid3236999 \hich\af2\dbch\af31505\loch\f2 [SHIFT] [CTRL] [C]
\cell }{\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \f37\fs20\insrsid3236999 \hich\af37\dbch\af31505\loch\f37 Insert a Caution\cell }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {
\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \f37\fs20\insrsid3236999 \trowd \irow3\irowband3\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10\brdrcf1 \trbrdrl\brdrs\brdrw10\brdrcf1 \trbrdrb\brdrs\brdrw10\brdrcf1 \trbrdrr\brdrs\brdrw10\brdrcf1
\trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1
\cltxlrtb\clftsWidth3\clwWidth2898\clshdrawnil \cellx2790\clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth4500\clshdrawnil \cellx7290\row
\ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid3236999 \hich\af2\dbch\af31505\loch\f2 [SHIFT] [CTRL] [F]\cell }{\rtlch\fcs1 \af37\afs20 \ltrch\fcs0
\f37\fs20\insrsid3236999 \hich\af37\dbch\af31505\loch\f37 Insert a Referenced Objects Figure\cell }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37\afs20 \ltrch\fcs0
\f37\fs20\insrsid3236999 \trowd \irow4\irowband4\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10\brdrcf1 \trbrdrl\brdrs\brdrw10\brdrcf1 \trbrdrb\brdrs\brdrw10\brdrcf1 \trbrdrr\brdrs\brdrw10\brdrcf1
\trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1
\cltxlrtb\clftsWidth3\clwWidth2898\clshdrawnil \cellx2790\clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth4500\clshdrawnil \cellx7290\row
\ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid3236999 \hich\af2\dbch\af31505\loch\f2 [SHIFT] [CTRL] [H]\cell }{\rtlch\fcs1 \af37\afs20 \ltrch\fcs0
\f37\fs20\insrsid3236999 \hich\af37\dbch\af31505\loch\f37 Insert a High Level Step\cell }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37\afs20 \ltrch\fcs0
\f37\fs20\insrsid3236999 \trowd \irow5\irowband5\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10\brdrcf1 \trbrdrl\brdrs\brdrw10\brdrcf1 \trbrdrb\brdrs\brdrw10\brdrcf1 \trbrdrr\brdrs\brdrw10\brdrcf1
\trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1
\cltxlrtb\clftsWidth3\clwWidth2898\clshdrawnil \cellx2790\clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth4500\clshdrawnil \cellx7290\row
\ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid3236999 \hich\af2\dbch\af31505\loch\f2 [SHIFT] [CTRL] [I]\cell }{\rtlch\fcs1 \af37\afs20 \ltrch\fcs0
\f37\fs20\insrsid3236999 \hich\af37\dbch\af31505\loch\f37 Insert Current Type After (at same level)\cell }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37\afs20
\ltrch\fcs0 \f37\fs20\insrsid3236999 \trowd \irow6\irowband6\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10\brdrcf1 \trbrdrl\brdrs\brdrw10\brdrcf1 \trbrdrb\brdrs\brdrw10\brdrcf1 \trbrdrr\brdrs\brdrw10\brdrcf1
\trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1
\cltxlrtb\clftsWidth3\clwWidth2898\clshdrawnil \cellx2790\clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth4500\clshdrawnil \cellx7290\row
\ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid3236999 \hich\af2\dbch\af31505\loch\f2 [CTRL] [J]}{\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \f37\fs20\insrsid3236999 \cell
\hich\af37\dbch\af31505\loch\f37 Insert Referenced Object\cell }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \f37\fs20\insrsid3236999
\trowd \irow7\irowband7\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10\brdrcf1 \trbrdrl\brdrs\brdrw10\brdrcf1 \trbrdrb\brdrs\brdrw10\brdrcf1 \trbrdrr\brdrs\brdrw10\brdrcf1 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3
\clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth2898\clshdrawnil \cellx2790\clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl
\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth4500\clshdrawnil \cellx7290\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af2\afs20
\ltrch\fcs0 \f2\fs20\insrsid3236999 \hich\af2\dbch\af31505\loch\f2 [SHIFT] [CTRL] [N]\cell }{\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \f37\fs20\insrsid3236999 \hich\af37\dbch\af31505\loch\f37 Insert Note\cell }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1
\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \f37\fs20\insrsid3236999 \trowd \irow8\irowband8\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10\brdrcf1 \trbrdrl\brdrs\brdrw10\brdrcf1
\trbrdrb\brdrs\brdrw10\brdrcf1 \trbrdrr\brdrs\brdrw10\brdrcf1 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr
\brdrs\brdrw10\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth2898\clshdrawnil \cellx2790\clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1
\cltxlrtb\clftsWidth3\clwWidth4500\clshdrawnil \cellx7290\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid3236999 \hich\af2\dbch\af31505\loch\f2 [SHIFT] [CTRL] [R]
\cell }{\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \f37\fs20\insrsid3236999 \hich\af37\dbch\af31505\loch\f37 Insert RNO\cell }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1
\af37\afs20 \ltrch\fcs0 \f37\fs20\insrsid3236999 \trowd \irow9\irowband9\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10\brdrcf1 \trbrdrl\brdrs\brdrw10\brdrcf1 \trbrdrb\brdrs\brdrw10\brdrcf1 \trbrdrr\brdrs\brdrw10\brdrcf1
\trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1
\cltxlrtb\clftsWidth3\clwWidth2898\clshdrawnil \cellx2790\clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth4500\clshdrawnil \cellx7290\row
\ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid3236999 \hich\af2\dbch\af31505\loch\f2 [SHIFT] [CTRL] [S]\cell }{\rtlch\fcs1 \af37\afs20 \ltrch\fcs0
\f37\fs20\insrsid3236999 \hich\af37\dbch\af31505\loch\f37 Insert Sub Step\cell }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37\afs20 \ltrch\fcs0
\f37\fs20\insrsid3236999 \trowd \irow10\irowband10\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10\brdrcf1 \trbrdrl\brdrs\brdrw10\brdrcf1 \trbrdrb\brdrs\brdrw10\brdrcf1 \trbrdrr\brdrs\brdrw10\brdrcf1
\trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1
\cltxlrtb\clftsWidth3\clwWidth2898\clshdrawnil \cellx2790\clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth4500\clshdrawnil \cellx7290\row
\ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid3236999 \hich\af2\dbch\af31505\loch\f2 [CTRL] [T]\cell }{\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \f37\fs20\insrsid3236999
\hich\af37\dbch\af31505\loch\f37 Insert Transition\cell }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \f37\fs20\insrsid3236999
\trowd \irow11\irowband11\ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10\brdrcf1 \trbrdrl\brdrs\brdrw10\brdrcf1 \trbrdrb\brdrs\brdrw10\brdrcf1 \trbrdrr\brdrs\brdrw10\brdrcf1
\trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1
\cltxlrtb\clftsWidth3\clwWidth2898\clshdrawnil \cellx2790\clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth4500\clshdrawnil \cellx7290\row
\ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid9258266 \hich\af2\dbch\af31505\loch\f2 [SHIFT] [CTRL] [D}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid9258266
\hich\af2\dbch\af31505\loch\f2 ]}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid9258266 \cell }{\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \f37\fs20\insrsid9258266 \hich\af37\dbch\af31505\loch\f37 Insert Indent\cell }\pard \ltrpar
\ql \li0\ri0\sa160\sl259\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \f37\fs20\insrsid9258266 \trowd \irow12\irowband12\ltrrow\ts11\trgaph108\trleft-108\trbrdrt
\brdrs\brdrw10\brdrcf1 \trbrdrl\brdrs\brdrw10\brdrcf1 \trbrdrb\brdrs\brdrw10\brdrcf1 \trbrdrr\brdrs\brdrw10\brdrcf1 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl
\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth2898\clshdrawnil \cellx2790\clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr
\brdrs\brdrw10\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth4500\clshdrawnil \cellx7290\row \ltrrow}\pard \ltrpar\ql \li0\ri0\nowidctlpar\intbl\wrapdefault\faauto\rin0\lin0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid3236999
\hich\af2\dbch\af31505\loch\f2 [SHIFT] [CTRL] [T]\cell }{\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \f37\fs20\insrsid3236999 \hich\af37\dbch\af31505\loch\f37 Insert Table\cell }\pard \ltrpar\ql \li0\ri0\sa160\sl259\slmult1
\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \f37\fs20\insrsid3236999 \trowd \irow13\irowband13\lastrow \ltrrow\ts11\trgaph108\trleft-108\trbrdrt\brdrs\brdrw10\brdrcf1 \trbrdrl
\brdrs\brdrw10\brdrcf1 \trbrdrb\brdrs\brdrw10\brdrcf1 \trbrdrr\brdrs\brdrw10\brdrcf1 \trftsWidth1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3\tblind0\tblindtype3 \clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb
\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1 \cltxlrtb\clftsWidth3\clwWidth2898\clshdrawnil \cellx2790\clvertalc\clbrdrt\brdrs\brdrw10\brdrcf1 \clbrdrl\brdrs\brdrw10\brdrcf1 \clbrdrb\brdrs\brdrw10\brdrcf1 \clbrdrr\brdrs\brdrw10\brdrcf1
\cltxlrtb\clftsWidth3\clwWidth4500\clshdrawnil \cellx7290\row }\pard \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af37 \ltrch\fcs0 \f37\insrsid3236999
\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
4757e8d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100aa5225dfc60600008b1a0000160000007468656d652f7468656d652f
7468656d65312e786d6cec595d8bdb46147d2ff43f08bd3bfe92fcb1c41b6cd9ceb6d94d42eca4e4716c8fadc98e344633de8d0981923c160aa569e943037deb
43691b48a02fe9afd936a54d217fa17746b63c638fbb9b2585a5640d8b343af7ce997bafce1d4997afdc8fa87384134e58dc708b970aae83e3211b9178d2706f
f7bbb99aeb7081e211a22cc60d778eb97b65f7c30f2ea31d11e2083b601ff31dd4704321a63bf93c1fc230e297d814c7706dcc920809384d26f951828ec16f44
f3a542a1928f10895d274611b8bd311e932176fad2a5bbbb74dea1701a0b2e078634e949d7d8b050d8d1615122f89c0734718e106db830cf881df7f17de13a14
7101171a6e41fdb9f9ddcb79b4b330a2628bad66d7557f0bbb85c1e8b0a4e64c26836c52cff3bd4a33f3af00546ce23ad54ea553c9fc29001a0e61a52917dda7
dfaab7dafe02ab81d2438bef76b55d2e1a78cd7f798373d3973f03af40a97f6f03dfed06104503af4029dedfc07b5eb51478065e81527c65035f2d34db5ed5c0
2b5048497cb8812ef89572b05c6d061933ba6785d77daf5b2d2d9caf50500d5975c929c62c16db6a2d42f758d2058004522448ec88f9148fd110aa3840940c12
e2ec93490885374531e3305c2815ba8532fc973f4f1da988a01d8c346bc90b98f08d21c9c7e1c3844c45c3fd18bcba1ae4cdcb1fdfbc7cee9c3c7a71f2e89793
c78f4f1efd9c3a32acf6503cd1ad5e7fffc5df4f3f75fe7afeddeb275fd9f15cc7fffed367bffdfaa51d082b5d85e0d5d7cffe78f1ecd5379ffff9c3130bbc99
a0810eef930873e73a3e766eb10816a6426032c783e4ed2cfa2122ba45339e701423398bc57f478406fafa1c5164c1b5b019c13b09488c0d787576cf20dc0b93
9920168fd7c2c8001e30465b2cb146e19a9c4b0b737f164fec9327331d770ba123dbdc018a8dfc766653d05662731984d8a07993a258a0098eb170e4357688b1
6575770931e27a408609e36c2c9cbbc46921620d499f0c8c6a5a19ed9108f232b711847c1bb139b8e3b418b5adba8d8f4c24dc15885ac8f73135c27815cd048a
6c2efb28a27ac0f791086d247bf364a8e33a5c40a6279832a733c29cdb6c6e24b05e2de9d7405eec693fa0f3c84426821cda7cee23c674649b1d06218aa6366c
8fc4a18efd881f428922e7261336f80133ef10790e7940f1d674df21d848f7e96a701b9455a7b42a107965965872791533a37e7b733a4658490d08bfa1e71189
4f15f73559f7ff5b5907217df5ed53cbaa2eaaa0371362bda3f6d6647c1b6e5dbc03968cc8c5d7ee369ac53731dc2e9b0decbd74bf976ef77f2fdddbeee7772f
d82b8d06f9965bc574abae36eed1d67dfb9850da13738af7b9daba73e84ca32e0c4a3bf5cc8ab3e7b8690887f24e86090cdc2441cac64998f88488b017a229ec
ef8bae7432e10bd713ee4c19876dbf1ab6fa96783a8b0ed8287d5c2d16e5a3692a1e1c89d578c1cfc6e15143a4e84a75f50896b9576c27ea51794940dabe0d09
6d329344d942a2ba1c9441520fe610340b09b5b277c2a26e615193ee97a9da6001d4b2acc0d6c9810d57c3f53d30012378a242148f649ed2542fb3ab92f92e33
bd2d984605c03e625901ab4cd725d7adcb93ab4b4bed0c99364868e566925091513d8c87688417d52947cf42e36d735d5fa5d4a02743a1e683d25ad1a8d6fe8d
c579730d76ebda40635d2968ec1c37dc4ad9879219a269c31dc3633f1c4653a81d2eb7bc884ee0ddd95024e90d7f1e6599265cb4110fd3802bd149d520220227
0e2551c395cbcfd24063a5218a5bb104827061c9d541562e1a3948ba99643c1ee3a1d0d3ae8dc848a7a7a0f0a95658af2af3f383a5259b41ba7be1e8d819d059
720b4189f9d5a20ce0887078fb534ca33922f03a3313b255fdad35a685eceaef13550da5e3884e43b4e828ba98a77025e5191d7596c5403b5bac1902aa8564d1
080713d960f5a01add34eb1a2987ad5df7742319394d34573dd35015d935ed2a66ccb06c036bb13c5f93d7582d430c9aa677f854bad725b7bed4bab57d42d625
20e059fc2c5df70c0d41a3b69acca026196fcab0d4ecc5a8d93b960b3c85da599a84a6fa95a5dbb5b8653dc23a1d0c9eabf383dd7ad5c2d078b9af549156df3d
f44f136c700fc4a30d2f81675470954af8f09020d810f5d49e24950db845ee8bc5ad0147ce2c210df741c16f7a41c90f72859adfc97965af90abf9cd72aee9fb
e562c72f16daadd243682c228c8a7efacda50bafa2e87cf1e5458d6f7c7d89966fdb2e0d599467eaeb4a5e11575f5f8aa5ed5f5f1c02a2f3a052ead6cbf55625
572f37bb39afddaae5ea41a5956b57826abbdb0efc5abdfbd0758e14d86b9603afd2a9e52ac520c8799582a45fabe7aa5ea9d4f4aacd5ac76b3e5c6c6360e5a9
7c2c6201e155bc76ff010000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f7468656d652f5f72656c732f
7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c082e8761be
9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd08a54f980
ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa4c04ca5b
babac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000000000000000000000000000005b436f6e74656e
745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000000000300100005f72656c732f
2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000190200007468656d652f7468656d652f74
68656d654d616e616765722e786d6c504b01022d0014000600080000002100aa5225dfc60600008b1a00001600000000000000000000000000d6020000746865
6d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b0100002700000000000000000000000000d00900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000cb0a00000000}
{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
{\*\latentstyles\lsdstimax371\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1;
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4;
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9;
\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3;
\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6;
\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;
\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Table;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 1;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 2;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 2;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 3;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 2;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 6;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 2;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 6;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 2;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Contemporary;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Elegant;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Professional;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 2;
\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Theme;\lsdsemihidden1 \lsdlocked0 Placeholder Text;
\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2;
\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List;
\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1;
\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision;
\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;
\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1;
\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;
\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;
\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;
\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;
\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;
\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4;
\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;
\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4;
\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5;
\lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;
\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6;
\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;
\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;
\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography;
\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4;
\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4;
\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1;
\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1;
\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2;
\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2;
\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3;
\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4;
\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4;
\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5;
\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5;
\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6;
\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6;
\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark;
\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1;
\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1;
\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2;
\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3;
\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3;
\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4;
\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4;
\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5;
\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5;
\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6;
\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;}}{\*\datastore 010500000200000018000000
4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000
d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000a08c
a88f93dad001feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000105000000000000}}
{\rtf1\ansi\ansicpg1252\deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fprq2\fcharset0 Cambria;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\fswiss\fprq2\fcharset0 Calibri;}{\f3\fmodern\fprq1\fcharset0 Courier New;}}
{\colortbl ;\red23\green54\blue93;\red0\green0\blue0;}
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\brdrb\brdrs\brdrw20\brsp80 \nowidctlpar\sa300\qc\cf1\expndtw5\kerning28\f0\fs52 Shortcuts for Inserting\f1\par
\trowd\trgaph108\trleft-108\trbrdrl\brdrs\brdrw10\brdrcf2 \trbrdrt\brdrs\brdrw10\brdrcf2 \trbrdrr\brdrs\brdrw10\brdrcf2 \trbrdrb\brdrs\brdrw10\brdrcf2\brsp80 \trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx2790\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx7290\pard\intbl\nowidctlpar\qc\cf0\expndtw0\kerning0\f2\fs22 KEY STROKE\cell COMMAND\cell\row\trowd\trgaph108\trleft-108\trbrdrl\brdrs\brdrw10\brdrcf2 \trbrdrt\brdrs\brdrw10\brdrcf2 \trbrdrr\brdrs\brdrw10\brdrcf2 \trbrdrb\brdrs\brdrw10\brdrcf2\brsp80 \trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx2790\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx7290\pard\intbl\nowidctlpar\f3\fs20 [SHIFT] [CTRL] [SPACE]\cell\f2 Insert Hard Space\cell\row\trowd\trgaph108\trleft-108\trbrdrl\brdrs\brdrw10\brdrcf2 \trbrdrt\brdrs\brdrw10\brdrcf2 \trbrdrr\brdrs\brdrw10\brdrcf2 \trbrdrb\brdrs\brdrw10\brdrcf2 \trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx2790\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx7290\pard\intbl\nowidctlpar\f3 [SHIFT] [CTRL] [B]\cell\f2 Insert Current Type Before (at same level)\cell\row\trowd\trgaph108\trleft-108\trbrdrl\brdrs\brdrw10\brdrcf2 \trbrdrt\brdrs\brdrw10\brdrcf2 \trbrdrr\brdrs\brdrw10\brdrcf2 \trbrdrb\brdrs\brdrw10\brdrcf2 \trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx2790\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx7290\pard\intbl\nowidctlpar\f3 [SHIFT] [CTRL] [C]\cell\f2 Insert a Caution\cell\row\trowd\trgaph108\trleft-108\trbrdrl\brdrs\brdrw10\brdrcf2 \trbrdrt\brdrs\brdrw10\brdrcf2 \trbrdrr\brdrs\brdrw10\brdrcf2 \trbrdrb\brdrs\brdrw10\brdrcf2 \trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx2790\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx7290\pard\intbl\nowidctlpar\f3 [SHIFT] [CTRL] [F]\cell\f2 Insert a Figure\cell\row\trowd\trgaph108\trleft-108\trbrdrl\brdrs\brdrw10\brdrcf2 \trbrdrt\brdrs\brdrw10\brdrcf2 \trbrdrr\brdrs\brdrw10\brdrcf2 \trbrdrb\brdrs\brdrw10\brdrcf2 \trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx2790\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx7290\pard\intbl\nowidctlpar\f3 [SHIFT] [CTRL] [H]\cell\f2 Insert a High Level Step\cell\row\trowd\trgaph108\trleft-108\trbrdrl\brdrs\brdrw10\brdrcf2 \trbrdrt\brdrs\brdrw10\brdrcf2 \trbrdrr\brdrs\brdrw10\brdrcf2 \trbrdrb\brdrs\brdrw10\brdrcf2 \trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx2790\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx7290\pard\intbl\nowidctlpar\f3 [SHIFT] [CTRL] [I]\cell\f2 Insert Current Type After (at same level)\cell\row\trowd\trgaph108\trleft-108\trbrdrl\brdrs\brdrw10\brdrcf2 \trbrdrt\brdrs\brdrw10\brdrcf2 \trbrdrr\brdrs\brdrw10\brdrcf2 \trbrdrb\brdrs\brdrw10\brdrcf2 \trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx2790\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx7290\pard\intbl\nowidctlpar\f3 [CTRL] [J]\f2\cell Insert Referenced Object\cell\row\trowd\trgaph108\trleft-108\trbrdrl\brdrs\brdrw10\brdrcf2 \trbrdrt\brdrs\brdrw10\brdrcf2 \trbrdrr\brdrs\brdrw10\brdrcf2 \trbrdrb\brdrs\brdrw10\brdrcf2 \trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx2790\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx7290\pard\intbl\nowidctlpar\f3 [SHIFT] [CTRL] [N]\cell\f2 Insert Note\cell\row\trowd\trgaph108\trleft-108\trbrdrl\brdrs\brdrw10\brdrcf2 \trbrdrt\brdrs\brdrw10\brdrcf2 \trbrdrr\brdrs\brdrw10\brdrcf2 \trbrdrb\brdrs\brdrw10\brdrcf2 \trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx2790\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx7290\pard\intbl\nowidctlpar\f3 [SHIFT] [CTRL] [R]\cell\f2 Insert RNO\cell\row\trowd\trgaph108\trleft-108\trbrdrl\brdrs\brdrw10\brdrcf2 \trbrdrt\brdrs\brdrw10\brdrcf2 \trbrdrr\brdrs\brdrw10\brdrcf2 \trbrdrb\brdrs\brdrw10\brdrcf2 \trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx2790\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx7290\pard\intbl\nowidctlpar\f3 [SHIFT] [CTRL] [S]\cell\f2 Insert Sub Step\cell\row\trowd\trgaph108\trleft-108\trbrdrl\brdrs\brdrw10\brdrcf2 \trbrdrt\brdrs\brdrw10\brdrcf2 \trbrdrr\brdrs\brdrw10\brdrcf2 \trbrdrb\brdrs\brdrw10\brdrcf2 \trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx2790\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx7290\pard\intbl\nowidctlpar\f3 [CTRL] [T]\cell\f2 Insert Transition\cell\row\trowd\trgaph108\trleft-108\trbrdrl\brdrs\brdrw10\brdrcf2 \trbrdrt\brdrs\brdrw10\brdrcf2 \trbrdrr\brdrs\brdrw10\brdrcf2 \trbrdrb\brdrs\brdrw10\brdrcf2 \trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx2790\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx7290\pard\intbl\nowidctlpar\f3 [SHIFT] [CTRL] [D]\cell\f2 Insert Indent\cell\row\trowd\trgaph108\trleft-108\trbrdrl\brdrs\brdrw10\brdrcf2 \trbrdrt\brdrs\brdrw10\brdrcf2 \trbrdrr\brdrs\brdrw10\brdrcf2 \trbrdrb\brdrs\brdrw10\brdrcf2 \trpaddl108\trpaddr108\trpaddfl3\trpaddfr3
\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx2790\clvertalc\clbrdrl\brdrw10\brdrs\brdrcf2\clbrdrt\brdrw10\brdrs\brdrcf2\clbrdrr\brdrw10\brdrs\brdrcf2\clbrdrb\brdrw10\brdrs\brdrcf2 \cellx7290\pard\intbl\nowidctlpar\f3 [SHIFT] [CTRL] [T]\cell\f2 Insert Table\cell\row\pard\nowidctlpar\sa200\sl276\slmult1\fs22\par
}

View File

@ -1841,6 +1841,8 @@ namespace VEPROMS
ExportEntry(xe, ci.MyEntry, "entry");
if (ci.ContentGridCount > 0)
ExportGrid(xe, ci.MyGrid, "grid");
if (ci.ContentImageCount > 0)
ExportImage(xe, ci.MyImage, "image");
if (ci.ContentPartCount > 0)
foreach (PartInfo pi in ci.ContentParts)
ExportPart(xe, pi, ((E_FromTypes)pi.FromType).ToString().ToLower());
@ -1910,6 +1912,8 @@ namespace VEPROMS
ExportEntry(ci.MyEntry, "entry");
if (ci.ContentGridCount > 0)
ExportGrid(ci.MyGrid, "grid");
if (ci.ContentImageCount > 0)
ExportImage(ci.MyImage, "image");
if (ci.ContentPartCount > 0)
foreach (PartInfo pi in ci.ContentParts)
ExportPart(pi, ((E_FromTypes)pi.FromType).ToString().ToLower());
@ -2050,6 +2054,78 @@ namespace VEPROMS
ExportDocument(ei.MyDocument, "document");
MyWriter.WriteEndElement();
}
private void ExportImage(XmlElement xn, ImageInfo ii, string nodename)
{
/*
ContentID
ImageType
FileName
Data
Config
DTS
UserID
*/
XmlElement xe = xn.OwnerDocument.CreateElement(nodename);
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "contentid", ii.ContentID.ToString()));
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "imagetype", ii.ImageType.ToString()));
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "filename", ii.FileName));
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "data", Convert.ToBase64String(ii.Data)));
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "config", ii.Config));
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "dts", ii.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
xe.Attributes.SetNamedItem(AddAttribute(xe.OwnerDocument, "userid", ii.UserID.ToString()));
//image audits
ExportImageAudits(xe, ii);
xn.AppendChild(xe);
}
private void ExportImageAudits(XmlElement xn, ImageInfo ii)
{
if (cbxExportAudits.Checked)
{
ImageAuditInfoList audits = ImageAuditInfoList.Get(ii.ContentID);
if (audits.Count > 0)
{
XmlElement xe = xn.OwnerDocument.CreateElement("audits");
foreach (ImageAuditInfo audit in audits)
{
if (audit.DeleteStatus == 0)
{
XmlElement xee = xn.OwnerDocument.CreateElement("audit");
xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "auditid", audit.AuditID.ToString()));
xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "contentid", audit.ContentID.ToString()));
xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "imagetype", audit.ImageType.ToString()));
xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "filename", audit.FileName));
xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "data", Convert.ToBase64String(audit.Data)));
xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "config", audit.Config));
xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "dts", audit.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff")));
xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "userid", audit.UserID));
xee.Attributes.SetNamedItem(AddAttribute(xee.OwnerDocument, "deletestatus", audit.DeleteStatus.ToString()));
xe.AppendChild(xee);
}
}
}
}
}
private void ExportImage(ImageInfo ii, string nodename)
{
/*
ContentID
ImageType
FileName
Data
Config
DTS
UserID
*/
MyWriter.WriteStartElement(nodename);
MyWriter.WriteAttributeString("contentid", ii.ContentID.ToString());
MyWriter.WriteAttributeString("imagetype", ii.ImageType.ToString());
MyWriter.WriteAttributeString("filename", ii.FileName);
MyWriter.WriteAttributeString("data", Convert.ToBase64String(ii.Data));
MyWriter.WriteAttributeString("config", ii.Config);
MyWriter.WriteAttributeString("dts", ii.DTS.ToString("MM/dd/yyyy HH:mm:ss.fff"));
MyWriter.WriteAttributeString("userid", ii.UserID.ToString());
MyWriter.WriteEndElement();
}
private void ExportDocument(XmlElement xn, DocumentInfo di, string nodename)
{
/*
@ -3144,7 +3220,18 @@ namespace VEPROMS
// DateTime dts = DateTime.Parse(xr.GetAttribute("dts"));
// Annotation ann = Annotation.MakeAnnotation(itm, AnnotationType.Get(typeid), rtftext, searchtext, config, dts, userid);
//}
private void AddImage(Content content, XmlNode xc)
{
XmlNode xn = xc.SelectSingleNode("image");
int imagetype = int.Parse(xn.Attributes.GetNamedItem("imagetype").InnerText);
string filename = xn.Attributes.GetNamedItem("filename").InnerText;
byte[] data = Convert.FromBase64String(xn.Attributes.GetNamedItem("data").InnerText);
string config = xn.Attributes.GetNamedItem("config").InnerText;
string userid = xn.Attributes.GetNamedItem("userid").InnerText;
DateTime dts = DateTime.Parse(xn.Attributes.GetNamedItem("dts").InnerText);
VEPROMS.CSLA.Library.Image img = VEPROMS.CSLA.Library.Image.MakeImage(content, imagetype, filename, data, config, dts, userid);
img.Save();
}
private void AddAnnotations(int itemID, XmlNode xn)
{
Item itm = Item.Get(itemID);
@ -3272,6 +3359,8 @@ namespace VEPROMS
Old2NewContent.Add(int.Parse(xc.Attributes.GetNamedItem("contentid").InnerText), step.MyContent.ContentID);
if (xc.SelectNodes("grid").Count > 0)
AddGrid(step.MyContent, xc);
if (xc.SelectNodes("image").Count > 0)
AddImage(step.MyContent, xc);
if (xn.SelectNodes("annotation").Count > 0)
AddAnnotations(step.ItemID, xn);
if (xc.SelectNodes("rousage").Count > 0)

View File

@ -3100,6 +3100,9 @@ namespace VEPROMS
{
infotabRO.Visible = _LastStepRTB.MyItemInfo.MyDocVersion.DocVersionAssociationCount > 0;
infotabTransition.Visible = !_CurrentItem.IsFigure;
// don't allow ro insert for a non-ro figure. First check that it is visible (from above line of code),
// and allow for non-figures or ro figures (for replace of existing ro figures)
infotabRO.Visible = infotabRO.Visible && (!_CurrentItem.IsFigure || (_CurrentItem.IsFigure && _CurrentItem.MyContent.MyImage == null));
displayRO.Enabled = _LastStepRTB.EditMode || _LastStepRTB.IsRoTable;
displayTransition.Enabled = _LastStepRTB.EditMode;
}
@ -3155,6 +3158,8 @@ namespace VEPROMS
E_ROValueType.Table : (SelectedStepTabPanel.MyStepPanel.SelectedEditItem.MyItemInfo.IsFigure) ? E_ROValueType.Image : E_ROValueType.Text;
if (_LastStepRTB.IsRoTable && _LastStepRTB.MyItemInfo.MyContent.ContentRoUsageCount > 0)
displayRO.CurROLink = _LastStepRTB.MyItemInfo.MyContent.ContentRoUsages[0];
if (_LastStepRTB.IsRoFigure && _LastStepRTB.MyItemInfo.MyContent.ContentRoUsageCount > 0)
displayRO.CurROLink = _LastStepRTB.MyItemInfo.MyContent.ContentRoUsages[0];
// if this is an enhanced step (linked from a source document), don't bring up the ro or transition panel,
// and don't allow replace on the find/replace dialog.
if (args.MyItemInfo.IsEnhancedStep)

View File

@ -0,0 +1,149 @@
using System;
using System.ComponentModel;
namespace VEPROMS.CSLA.Library
{
[Serializable]
[TypeConverter(typeof(ExpandableObjectConverter))]
public class ImageConfig : ConfigDynamicTypeDescriptor, INotifyPropertyChanged
{
#region DynamicTypeDescriptor
internal override bool IsReadOnly
{
get { return _ImageInfo == null; }
}
#endregion
#region XML
private XMLProperties _Xp;
private XMLProperties Xp
{
get { return _Xp; }
}
#endregion
#region Constructors
private ImageInfo _ImageInfo;
public ImageConfig(ImageInfo imageInfo)
{
if (imageInfo == null)
{
string xmlx = "<Config/>";
_Xp = new XMLProperties(xmlx);
return;
}
_ImageInfo = imageInfo;
string xml = imageInfo.Config;
if (xml == string.Empty) xml = "<Config/>";
_Xp = new XMLProperties(xml);
}
public ImageConfig()
{
string xml = "<Config/>";
_Xp = new XMLProperties(xml);
}
internal string GetValue(string group, string item)
{
return _Xp[group, item];
}
#endregion
#region Local Properties
[Category("Image")]
[Browsable(false)]
[DisplayName("DataSize")]
[RefreshProperties(RefreshProperties.All)]
[Description("DataSize")]
public int Image_DataSize // original size of image data, if it is compressed
{
get
{
string s = _Xp["Image", "DataSize"];
if (s == string.Empty) return 0;
int tst = 0;
try
{
tst = int.Parse(s);
}
catch (Exception ex)
{
return 0;
}
return int.Parse(s);
}
set
{
string s = _Xp["Image", "DataSize"];
if (value.ToString() == s) return;
_Xp["Image", "DataSize"] = value.ToString();
OnPropertyChanged("Image_DataSize");
}
}
[Category("Image")]
[Browsable(false)]
[DisplayName("Width")]
[RefreshProperties(RefreshProperties.All)]
[Description("Width")]
public int Image_Width // resized image's resized width
{
get
{
string s = _Xp["Image", "Width"];
if (s == string.Empty) return 0;
int tst = 0;
try
{
tst = int.Parse(s);
}
catch (Exception ex)
{
return 0;
}
return int.Parse(s);
}
set
{
string s = _Xp["Image", "Width"];
if (value.ToString() == s) return;
_Xp["Image", "Width"] = value.ToString();
OnPropertyChanged("Image_Width");
}
}
[Category("Image")]
[Browsable(false)]
[DisplayName("Height")]
[RefreshProperties(RefreshProperties.All)]
[Description("Height")]
public int Image_Height // resized image's resized height
{
get
{
string s = _Xp["Image", "Height"];
if (s == string.Empty) return 0;
int tst = 0;
try
{
tst = int.Parse(s);
}
catch (Exception ex)
{
return 0;
}
return int.Parse(s);
}
set
{
string s = _Xp["Image", "Height"];
if (value.ToString() == s) return;
_Xp["Image", "Height"] = value.ToString();
OnPropertyChanged("Image_Height");
}
}
#endregion
#region ToString
public override string ToString()
{
string s = _Xp.ToString();
if (s == "<Config/>" || s == "<Config></Config>") return string.Empty;
return s;
}
#endregion
}
}

View File

@ -358,6 +358,60 @@ namespace VEPROMS.CSLA.Library
OnPropertyChanged("Step_Responsibility");
}
}
#region RO image sizing
// if the RO image (figure) is resized, save it in the step config, not in the ROImageConfig. If stored in ROImageConfig
// the size is set for ALL uses.
public int Step_ImageWidth
{
get
{
string s = _Xp["Step", "ImageWidth"];
if (s == string.Empty) return 0;
int tst = 0;
try
{
tst = int.Parse(s);
}
catch (Exception ex)
{
return 0;
}
return int.Parse(s);
}
set
{
string s = _Xp["Step", "ImageWidth"];
if (value.ToString() == s) return;
_Xp["Step", "ImageWidth"] = value.ToString();
OnPropertyChanged("Step_ImageWidth");
}
}
public int Step_ImageHeight
{
get
{
string s = _Xp["Step", "ImageHeight"];
if (s == string.Empty) return 0;
int tst = 0;
try
{
tst = int.Parse(s);
}
catch (Exception ex)
{
return 0;
}
return int.Parse(s);
}
set
{
string s = _Xp["Step", "ImageHeight"];
if (value.ToString() == s) return;
_Xp["Step", "ImageHeight"] = value.ToString();
OnPropertyChanged("Step_ImageHeight");
}
}
#endregion
// Enhanced Documents
private EnhancedDocuments _MyEnhancedDocuments = null;
public EnhancedDocuments MyEnhancedDocuments

View File

@ -1771,6 +1771,28 @@ namespace VEPROMS.CSLA.Library
public partial class ContentInfo
{
public static ContentInfo RestoreImage(ImageAuditInfo iai)
{
try
{
using (Content ctmp = Content.Get(iai.ContentID))
{
ctmp.MyImage.FileName = iai.FileName;
ctmp.MyImage.Data = iai.Data;
ctmp.MyImage.Config = iai.Config;
ctmp.MyImage.DTS = DateTime.Now;
ctmp.MyImage.UserID = Volian.Base.Library.VlnSettings.UserID;
ctmp.DTS = DateTime.Now;
ImageInfo.Refresh(ctmp.MyImage);
ctmp.Save();
return ContentInfo.Get(iai.ContentID);
}
}
catch (Exception ex)
{
throw new DbCslaException("Error on ContentInfo.RestoreImage", ex);
}
}
public static ContentInfo RestoreContent(ContentAuditInfo cai,ROFstInfo myRoFst)
{
try

View File

@ -2219,6 +2219,11 @@ namespace VEPROMS.CSLA.Library
//string number = cont.Number;
string number = DisplayNumber;
//if (cont.Type >= 20000) number = Ordinal.ToString() + ".";
if ((cont.Type == 20036 || cont.Type == 20037 || cont.Type == 20038 || cont.Type == 20039))// && !RO
{
if (MyContent.ContentRoUsages == null || MyContent.ContentRoUsages.Count == 0)
return "Embedded Image";
}
if (cont.Type >= 20000) number = MyTab == null ? "" : MyTab.CleanText;
return string.Format("{0} {1}", number, DisplayText).Trim(); // Need TrimEnd(); for IP3
//return string.Format("{0} {1}", number, cont.Text).Trim();

View File

@ -102,7 +102,11 @@ namespace VEPROMS.CSLA.Library
{
foreach (Item tmp in _RefreshItems)
{
if (tmp._MyContent != null) ContentInfo.Refresh(tmp._MyContent);
if (tmp._MyContent != null)
{
ContentInfo.Refresh(tmp._MyContent);
if (tmp._MyContent.MyImage != null) ImageInfo.Refresh(tmp._MyContent.MyImage);
}
ItemInfo.Refresh(tmp);
}
foreach (ItemAnnotation tmp in _RefreshItemAnnotations)

View File

@ -231,6 +231,7 @@ namespace Volian.Controls.Library
myRTB.Clear();
//myRTB.LastRtf = string.Empty;
myVFG.Clear();
myPicBox.Image = null;
tvAudits.Nodes.Clear();
if (MyItemInfo == null)
{
@ -316,6 +317,22 @@ namespace Volian.Controls.Library
}
break;
}
// handle figures (images):
else if (cai.Type == 20036 || cai.Type == 20037 || cai.Type == 20038 || cai.Type == 20039)
{
ImageAuditInfoList imail = ImageAuditInfoList.Get(cai.ContentID);
foreach (ImageAuditInfo imai in imail)
{
if (imai.DeleteStatus == 0)
{
if (contentHistory == null)
contentHistory = tvAudits.Nodes.Add("Content Changes");
TreeNode tn = contentHistory.Nodes.Add(imai.ToString());
tn.Tag = imai;
}
}
break;
}
else if (cai.DTS != ci.DTS)
{
if (contentHistory == null)
@ -761,6 +778,19 @@ namespace Volian.Controls.Library
myVFG.Clear();
}
}
if (tn.Tag is ImageAuditInfo)
{
ImageAuditInfo iai = tn.Tag as ImageAuditInfo;
if (MessageBox.Show(this, "Do you want to restore this image?", "Confirm Image Restore", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
{
ContentInfo ci = ContentInfo.RestoreImage(iai);
RefreshRequired = true;
UpdateHistory();
myRTB.Clear();
myVFG.Clear();
myPicBox.Image = null; // myPicBox is the PictureBox that shows the selected figure
}
}
}
List<string> myRoFst_ROTableUpdate(object sender, ROFstInfoROTableUpdateEventArgs args)
@ -784,6 +814,7 @@ namespace Volian.Controls.Library
{
btnRestore.Enabled = UserInfo.CanEdit(MyUserInfo, MyProcedureInfo.MyDocVersion);//CanRestore();
GridAuditInfo gai = tn.Tag as GridAuditInfo;
myPicBox.Visible = false;
myVFG.Visible = true;
myVFG.BringToFront();
panel1.Invalidate(new Rectangle(0, 0, myVFG.Width + 4, 4));
@ -798,6 +829,30 @@ namespace Volian.Controls.Library
panel1.Visible = true;
return;
}
if (tn.Tag is ImageAuditInfo)
{
btnRestore.Enabled = UserInfo.CanEdit(MyUserInfo, MyProcedureInfo.MyDocVersion);
ImageAuditInfo iai = tn.Tag as ImageAuditInfo;
myVFG.Visible = false;
myRTB.Visible = false;
myPicBox.Visible = true;
myPicBox.BringToFront();
panel1.Invalidate(new Rectangle(0, 0, myPicBox.Width + 4, 4));
panel1.Invalidate(new Rectangle(0, 0, 4, myPicBox.Height + 4));
panel1.Visible = false;
ImageInfo imgin = ImageInfo.Get(iai.ContentID);
// check if image data was compressed, i.e. config stores original size:
ImageConfig imgCfg = new ImageConfig(imgin);
byte[] imgData = iai.Data;
if (imgCfg.Image_DataSize > 0) imgData = ROImageInfo.Decompress(imgData, imgCfg.Image_DataSize);
MemoryStream ms = new MemoryStream(imgData);
myPicBox.Image = System.Drawing.Image.FromStream(ms);
myPicBox.Width = Math.Max(myPicBox.Image.Width, panel1.Width);
myPicBox.Height = Math.Max(myPicBox.Image.Height, 200);
panel1.Visible = true;
return;
}
if (tn.Tag is ContentAuditInfo)
{
btnRestore.Enabled = UserInfo.CanEdit(MyUserInfo, MyProcedureInfo.MyDocVersion);//CanRestore();

View File

@ -48,12 +48,22 @@ namespace Volian.Controls.Library
this.groupPanelIncludeOn = new DevComponents.DotNetBar.Controls.GroupPanel();
this.groupPanelWcnTrnResp = new DevComponents.DotNetBar.Controls.GroupPanel();
this.tbRespons = new System.Windows.Forms.TextBox();
this.groupPanelFigSize = new DevComponents.DotNetBar.Controls.GroupPanel();
this.trBarFS = new System.Windows.Forms.TrackBar();
this.btnFsSav = new System.Windows.Forms.Button();
this.tbFSHt = new System.Windows.Forms.TextBox();
this.tbFSWd = new System.Windows.Forms.TextBox();
this.lblFSHt = new System.Windows.Forms.Label();
this.lblFSWidth = new System.Windows.Forms.Label();
this.btnFSrestore = new System.Windows.Forms.Button();
this.groupPanelPaginate.SuspendLayout();
this.groupPanelCheckoff.SuspendLayout();
this.groupPanelChgBar.SuspendLayout();
this.groupPanelChgStepType.SuspendLayout();
this.groupPanelIncludeOn.SuspendLayout();
this.groupPanelWcnTrnResp.SuspendLayout();
this.groupPanelFigSize.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.trBarFS)).BeginInit();
this.SuspendLayout();
//
// groupPanelPaginate
@ -64,10 +74,10 @@ namespace Volian.Controls.Library
this.groupPanelPaginate.Controls.Add(this.cbPageBreak);
this.groupPanelPaginate.DisabledBackColor = System.Drawing.Color.Empty;
this.groupPanelPaginate.Dock = System.Windows.Forms.DockStyle.Top;
this.groupPanelPaginate.Location = new System.Drawing.Point(0, 330);
this.groupPanelPaginate.Margin = new System.Windows.Forms.Padding(2);
this.groupPanelPaginate.Location = new System.Drawing.Point(0, 406);
this.groupPanelPaginate.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.groupPanelPaginate.Name = "groupPanelPaginate";
this.groupPanelPaginate.Size = new System.Drawing.Size(202, 58);
this.groupPanelPaginate.Size = new System.Drawing.Size(269, 71);
//
//
//
@ -106,10 +116,10 @@ namespace Volian.Controls.Library
//
//
this.cbPageBreak.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.cbPageBreak.Location = new System.Drawing.Point(3, 11);
this.cbPageBreak.Margin = new System.Windows.Forms.Padding(2);
this.cbPageBreak.Location = new System.Drawing.Point(4, 14);
this.cbPageBreak.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.cbPageBreak.Name = "cbPageBreak";
this.cbPageBreak.Size = new System.Drawing.Size(122, 15);
this.cbPageBreak.Size = new System.Drawing.Size(140, 17);
this.superTooltipTags.SetSuperTooltip(this.cbPageBreak, new DevComponents.DotNetBar.SuperTooltipInfo("Manual Page Break", "", "When set, starts this step at the top of a page.\r\n\r\nkeyboard command: <Ctrl><Ente" +
"r>", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.cbPageBreak.TabIndex = 0;
@ -124,10 +134,10 @@ namespace Volian.Controls.Library
//
//
this.cbCAS.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.cbCAS.Location = new System.Drawing.Point(3, 9);
this.cbCAS.Margin = new System.Windows.Forms.Padding(2);
this.cbCAS.Location = new System.Drawing.Point(4, 11);
this.cbCAS.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.cbCAS.Name = "cbCAS";
this.cbCAS.Size = new System.Drawing.Size(162, 15);
this.cbCAS.Size = new System.Drawing.Size(187, 17);
this.superTooltipTags.SetSuperTooltip(this.cbCAS, new DevComponents.DotNetBar.SuperTooltipInfo("Continuous Action Summary", "", "Include this in the Continuous Action Summary section\r\n\r\nkeyboard command: <Shift" +
"><F7>", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.cbCAS.TabIndex = 1;
@ -143,10 +153,10 @@ namespace Volian.Controls.Library
this.cmbCheckoff.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbCheckoff.FormattingEnabled = true;
this.cmbCheckoff.ItemHeight = 17;
this.cmbCheckoff.Location = new System.Drawing.Point(3, 17);
this.cmbCheckoff.Margin = new System.Windows.Forms.Padding(2);
this.cmbCheckoff.Location = new System.Drawing.Point(4, 21);
this.cmbCheckoff.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.cmbCheckoff.Name = "cmbCheckoff";
this.cmbCheckoff.Size = new System.Drawing.Size(194, 23);
this.cmbCheckoff.Size = new System.Drawing.Size(257, 23);
this.cmbCheckoff.TabIndex = 0;
this.cmbCheckoff.WatermarkFont = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.cmbCheckoff.WatermarkText = "select signoff / checkoff";
@ -159,10 +169,10 @@ namespace Volian.Controls.Library
this.groupPanelCheckoff.Controls.Add(this.cmbCheckoff);
this.groupPanelCheckoff.DisabledBackColor = System.Drawing.Color.Empty;
this.groupPanelCheckoff.Dock = System.Windows.Forms.DockStyle.Top;
this.groupPanelCheckoff.Location = new System.Drawing.Point(0, 145);
this.groupPanelCheckoff.Margin = new System.Windows.Forms.Padding(2);
this.groupPanelCheckoff.Location = new System.Drawing.Point(0, 178);
this.groupPanelCheckoff.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.groupPanelCheckoff.Name = "groupPanelCheckoff";
this.groupPanelCheckoff.Size = new System.Drawing.Size(202, 77);
this.groupPanelCheckoff.Size = new System.Drawing.Size(269, 95);
//
//
//
@ -206,10 +216,10 @@ namespace Volian.Controls.Library
this.groupPanelChgBar.Controls.Add(this.rbChgBarOn);
this.groupPanelChgBar.DisabledBackColor = System.Drawing.Color.Empty;
this.groupPanelChgBar.Dock = System.Windows.Forms.DockStyle.Top;
this.groupPanelChgBar.Location = new System.Drawing.Point(0, 222);
this.groupPanelChgBar.Margin = new System.Windows.Forms.Padding(2);
this.groupPanelChgBar.Location = new System.Drawing.Point(0, 273);
this.groupPanelChgBar.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.groupPanelChgBar.Name = "groupPanelChgBar";
this.groupPanelChgBar.Size = new System.Drawing.Size(202, 108);
this.groupPanelChgBar.Size = new System.Drawing.Size(269, 133);
//
//
//
@ -244,30 +254,29 @@ namespace Volian.Controls.Library
//
// tbChgID
//
this.tbChgID.Location = new System.Drawing.Point(0, 67);
this.tbChgID.Margin = new System.Windows.Forms.Padding(2);
this.tbChgID.Location = new System.Drawing.Point(0, 82);
this.tbChgID.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.tbChgID.Name = "tbChgID";
this.tbChgID.Size = new System.Drawing.Size(81, 20);
this.tbChgID.Size = new System.Drawing.Size(107, 22);
this.tbChgID.TabIndex = 4;
this.tbChgID.TextChanged += new System.EventHandler(this.tbChgID_TextChanged);
//
// lblChgId
//
this.lblChgId.AutoSize = true;
this.lblChgId.Location = new System.Drawing.Point(0, 52);
this.lblChgId.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblChgId.Location = new System.Drawing.Point(0, 64);
this.lblChgId.Name = "lblChgId";
this.lblChgId.Size = new System.Drawing.Size(58, 13);
this.lblChgId.Size = new System.Drawing.Size(74, 17);
this.lblChgId.TabIndex = 3;
this.lblChgId.Text = "Change ID";
//
// rbChgBarOff
//
this.rbChgBarOff.AutoSize = true;
this.rbChgBarOff.Location = new System.Drawing.Point(0, 26);
this.rbChgBarOff.Margin = new System.Windows.Forms.Padding(2);
this.rbChgBarOff.Location = new System.Drawing.Point(0, 32);
this.rbChgBarOff.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.rbChgBarOff.Name = "rbChgBarOff";
this.rbChgBarOff.Size = new System.Drawing.Size(45, 17);
this.rbChgBarOff.Size = new System.Drawing.Size(56, 21);
this.superTooltipTags.SetSuperTooltip(this.rbChgBarOff, new DevComponents.DotNetBar.SuperTooltipInfo("Change Bar OFF", "", "Turn change bar off. Note that \'OVERRIDE\' will turn off a change bar even though" +
" text is changed.\r\n\r\nkeyboard command: <Alt><F2>", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.rbChgBarOff.TabIndex = 2;
@ -279,10 +288,10 @@ namespace Volian.Controls.Library
// rbChgBarOn
//
this.rbChgBarOn.AutoSize = true;
this.rbChgBarOn.Location = new System.Drawing.Point(0, 4);
this.rbChgBarOn.Margin = new System.Windows.Forms.Padding(2);
this.rbChgBarOn.Location = new System.Drawing.Point(0, 5);
this.rbChgBarOn.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.rbChgBarOn.Name = "rbChgBarOn";
this.rbChgBarOn.Size = new System.Drawing.Size(41, 17);
this.rbChgBarOn.Size = new System.Drawing.Size(50, 21);
this.superTooltipTags.SetSuperTooltip(this.rbChgBarOn, new DevComponents.DotNetBar.SuperTooltipInfo("Change Bar ON", "", "Add a change bar on this step\r\n\r\nkeyboard command: <Alt><F2>", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.rbChgBarOn.TabIndex = 1;
this.rbChgBarOn.TabStop = true;
@ -301,9 +310,9 @@ namespace Volian.Controls.Library
this.groupPanelChgStepType.DisabledBackColor = System.Drawing.Color.Empty;
this.groupPanelChgStepType.Dock = System.Windows.Forms.DockStyle.Top;
this.groupPanelChgStepType.Location = new System.Drawing.Point(0, 0);
this.groupPanelChgStepType.Margin = new System.Windows.Forms.Padding(2);
this.groupPanelChgStepType.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.groupPanelChgStepType.Name = "groupPanelChgStepType";
this.groupPanelChgStepType.Size = new System.Drawing.Size(202, 145);
this.groupPanelChgStepType.Size = new System.Drawing.Size(269, 178);
//
//
//
@ -345,20 +354,20 @@ namespace Volian.Controls.Library
//
this.lblNoTypeChgReason.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.lblNoTypeChgReason.ForeColor = System.Drawing.Color.Red;
this.lblNoTypeChgReason.Location = new System.Drawing.Point(2, 28);
this.lblNoTypeChgReason.Margin = new System.Windows.Forms.Padding(2);
this.lblNoTypeChgReason.Location = new System.Drawing.Point(3, 34);
this.lblNoTypeChgReason.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.lblNoTypeChgReason.Name = "lblNoTypeChgReason";
this.lblNoTypeChgReason.Size = new System.Drawing.Size(194, 96);
this.lblNoTypeChgReason.Size = new System.Drawing.Size(259, 118);
this.lblNoTypeChgReason.TabIndex = 5;
//
// cbChgAll
//
this.cbChgAll.AutoSize = true;
this.cbChgAll.BackColor = System.Drawing.Color.Transparent;
this.cbChgAll.Location = new System.Drawing.Point(2, 6);
this.cbChgAll.Margin = new System.Windows.Forms.Padding(2);
this.cbChgAll.Location = new System.Drawing.Point(3, 7);
this.cbChgAll.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.cbChgAll.Name = "cbChgAll";
this.cbChgAll.Size = new System.Drawing.Size(119, 17);
this.cbChgAll.Size = new System.Drawing.Size(153, 21);
this.superTooltipTags.SetSuperTooltip(this.cbChgAll, new DevComponents.DotNetBar.SuperTooltipInfo("Change Step Type - All At Level", "", "When checked, all steps at the level of current step will have their step type ch" +
"anged to the selected type in list below...", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.cbChgAll.TabIndex = 4;
@ -370,10 +379,11 @@ namespace Volian.Controls.Library
this.listBoxStepTypes.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.listBoxStepTypes.FormattingEnabled = true;
this.listBoxStepTypes.Location = new System.Drawing.Point(2, 28);
this.listBoxStepTypes.Margin = new System.Windows.Forms.Padding(2);
this.listBoxStepTypes.ItemHeight = 16;
this.listBoxStepTypes.Location = new System.Drawing.Point(3, 34);
this.listBoxStepTypes.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.listBoxStepTypes.Name = "listBoxStepTypes";
this.listBoxStepTypes.Size = new System.Drawing.Size(194, 95);
this.listBoxStepTypes.Size = new System.Drawing.Size(257, 116);
this.superTooltipTags.SetSuperTooltip(this.listBoxStepTypes, new DevComponents.DotNetBar.SuperTooltipInfo("Possible Step Types", "", "This list allows change of type showing all selections of any possible step type " +
"for the current step.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.listBoxStepTypes.TabIndex = 3;
@ -392,10 +402,10 @@ namespace Volian.Controls.Library
//
//
this.cbPlaceKeeperCont.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.cbPlaceKeeperCont.Location = new System.Drawing.Point(3, 47);
this.cbPlaceKeeperCont.Margin = new System.Windows.Forms.Padding(2);
this.cbPlaceKeeperCont.Location = new System.Drawing.Point(4, 58);
this.cbPlaceKeeperCont.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.cbPlaceKeeperCont.Name = "cbPlaceKeeperCont";
this.cbPlaceKeeperCont.Size = new System.Drawing.Size(158, 15);
this.cbPlaceKeeperCont.Size = new System.Drawing.Size(183, 17);
this.superTooltipTags.SetSuperTooltip(this.cbPlaceKeeperCont, new DevComponents.DotNetBar.SuperTooltipInfo("Placekeeper Continuous Action", "", "Include this on the Placekeeper marked as a Continuous Action\r\n\r\nkeyboard command" +
": <Shift><Ctrl><F7>", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.cbPlaceKeeperCont.TabIndex = 1;
@ -410,10 +420,10 @@ namespace Volian.Controls.Library
//
//
this.cbPlaceKeeper.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.cbPlaceKeeper.Location = new System.Drawing.Point(3, 28);
this.cbPlaceKeeper.Margin = new System.Windows.Forms.Padding(2);
this.cbPlaceKeeper.Location = new System.Drawing.Point(4, 34);
this.cbPlaceKeeper.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.cbPlaceKeeper.Name = "cbPlaceKeeper";
this.cbPlaceKeeper.Size = new System.Drawing.Size(84, 15);
this.cbPlaceKeeper.Size = new System.Drawing.Size(95, 17);
this.superTooltipTags.SetSuperTooltip(this.cbPlaceKeeper, new DevComponents.DotNetBar.SuperTooltipInfo("Placekeeper", "", "Include this on the Placekeeper\r\n\r\nkeyboard command: <Ctrl><F7>", null, null, DevComponents.DotNetBar.eTooltipColor.Gray));
this.cbPlaceKeeper.TabIndex = 1;
this.cbPlaceKeeper.Text = "Placekeeper";
@ -429,10 +439,10 @@ namespace Volian.Controls.Library
this.groupPanelIncludeOn.Controls.Add(this.cbCAS);
this.groupPanelIncludeOn.DisabledBackColor = System.Drawing.Color.Empty;
this.groupPanelIncludeOn.Dock = System.Windows.Forms.DockStyle.Top;
this.groupPanelIncludeOn.Location = new System.Drawing.Point(0, 388);
this.groupPanelIncludeOn.Margin = new System.Windows.Forms.Padding(2);
this.groupPanelIncludeOn.Location = new System.Drawing.Point(0, 477);
this.groupPanelIncludeOn.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.groupPanelIncludeOn.Name = "groupPanelIncludeOn";
this.groupPanelIncludeOn.Size = new System.Drawing.Size(202, 94);
this.groupPanelIncludeOn.Size = new System.Drawing.Size(269, 116);
//
//
//
@ -472,10 +482,10 @@ namespace Volian.Controls.Library
this.groupPanelWcnTrnResp.Controls.Add(this.tbRespons);
this.groupPanelWcnTrnResp.DisabledBackColor = System.Drawing.Color.Empty;
this.groupPanelWcnTrnResp.Dock = System.Windows.Forms.DockStyle.Top;
this.groupPanelWcnTrnResp.Location = new System.Drawing.Point(0, 482);
this.groupPanelWcnTrnResp.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.groupPanelWcnTrnResp.Location = new System.Drawing.Point(0, 593);
this.groupPanelWcnTrnResp.Margin = new System.Windows.Forms.Padding(4, 2, 4, 2);
this.groupPanelWcnTrnResp.Name = "groupPanelWcnTrnResp";
this.groupPanelWcnTrnResp.Size = new System.Drawing.Size(202, 138);
this.groupPanelWcnTrnResp.Size = new System.Drawing.Size(269, 170);
//
//
//
@ -509,27 +519,142 @@ namespace Volian.Controls.Library
//
// tbRespons
//
this.tbRespons.Location = new System.Drawing.Point(27, 16);
this.tbRespons.Location = new System.Drawing.Point(36, 20);
this.tbRespons.Margin = new System.Windows.Forms.Padding(4);
this.tbRespons.Multiline = true;
this.tbRespons.Name = "tbRespons";
this.tbRespons.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.tbRespons.Size = new System.Drawing.Size(164, 81);
this.tbRespons.Size = new System.Drawing.Size(217, 99);
this.tbRespons.TabIndex = 0;
this.tbRespons.Leave += new System.EventHandler(this.tbRespons_Leave);
//
// groupPanelFigSize
//
this.groupPanelFigSize.BackColor = System.Drawing.Color.Transparent;
this.groupPanelFigSize.CanvasColor = System.Drawing.SystemColors.Control;
this.groupPanelFigSize.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.Office2007;
this.groupPanelFigSize.Controls.Add(this.btnFSrestore);
this.groupPanelFigSize.Controls.Add(this.trBarFS);
this.groupPanelFigSize.Controls.Add(this.btnFsSav);
this.groupPanelFigSize.Controls.Add(this.tbFSHt);
this.groupPanelFigSize.Controls.Add(this.tbFSWd);
this.groupPanelFigSize.Controls.Add(this.lblFSHt);
this.groupPanelFigSize.Controls.Add(this.lblFSWidth);
this.groupPanelFigSize.DisabledBackColor = System.Drawing.Color.Empty;
this.groupPanelFigSize.Dock = System.Windows.Forms.DockStyle.Top;
this.groupPanelFigSize.Location = new System.Drawing.Point(0, 763);
this.groupPanelFigSize.Name = "groupPanelFigSize";
this.groupPanelFigSize.Size = new System.Drawing.Size(269, 166);
//
//
//
this.groupPanelFigSize.Style.BackColor2SchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground2;
this.groupPanelFigSize.Style.BackColorGradientAngle = 90;
this.groupPanelFigSize.Style.BackColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBackground;
this.groupPanelFigSize.Style.BorderBottom = DevComponents.DotNetBar.eStyleBorderType.Solid;
this.groupPanelFigSize.Style.BorderBottomWidth = 1;
this.groupPanelFigSize.Style.BorderColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.groupPanelFigSize.Style.BorderLeft = DevComponents.DotNetBar.eStyleBorderType.Solid;
this.groupPanelFigSize.Style.BorderLeftWidth = 1;
this.groupPanelFigSize.Style.BorderRight = DevComponents.DotNetBar.eStyleBorderType.Solid;
this.groupPanelFigSize.Style.BorderRightWidth = 1;
this.groupPanelFigSize.Style.BorderTop = DevComponents.DotNetBar.eStyleBorderType.Solid;
this.groupPanelFigSize.Style.BorderTopWidth = 1;
this.groupPanelFigSize.Style.CornerDiameter = 4;
this.groupPanelFigSize.Style.CornerType = DevComponents.DotNetBar.eCornerType.Rounded;
this.groupPanelFigSize.Style.TextAlignment = DevComponents.DotNetBar.eStyleTextAlignment.Center;
this.groupPanelFigSize.Style.TextColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
this.groupPanelFigSize.Style.TextLineAlignment = DevComponents.DotNetBar.eStyleTextAlignment.Near;
//
//
//
this.groupPanelFigSize.StyleMouseDown.CornerType = DevComponents.DotNetBar.eCornerType.Square;
//
//
//
this.groupPanelFigSize.StyleMouseOver.CornerType = DevComponents.DotNetBar.eCornerType.Square;
this.groupPanelFigSize.TabIndex = 21;
this.groupPanelFigSize.Text = "Image Size";
//
// trBarFS
//
this.trBarFS.Location = new System.Drawing.Point(15, 71);
this.trBarFS.Maximum = 700;
this.trBarFS.Minimum = 50;
this.trBarFS.Name = "trBarFS";
this.trBarFS.Size = new System.Drawing.Size(172, 56);
this.trBarFS.TabIndex = 5;
this.trBarFS.Value = 50;
this.trBarFS.Scroll += new System.EventHandler(this.trBarFS_Scroll);
//
// btnFsSav
//
this.btnFsSav.Location = new System.Drawing.Point(150, 3);
this.btnFsSav.Name = "btnFsSav";
this.btnFsSav.Size = new System.Drawing.Size(62, 24);
this.btnFsSav.TabIndex = 4;
this.btnFsSav.Text = "Set";
this.btnFsSav.UseVisualStyleBackColor = true;
this.btnFsSav.Click += new System.EventHandler(this.btnFsSav_Click);
//
// tbFSHt
//
this.tbFSHt.Enabled = false;
this.tbFSHt.Location = new System.Drawing.Point(56, 33);
this.tbFSHt.Name = "tbFSHt";
this.tbFSHt.Size = new System.Drawing.Size(78, 22);
this.tbFSHt.TabIndex = 3;
//
// tbFSWd
//
this.tbFSWd.Location = new System.Drawing.Point(56, 5);
this.tbFSWd.Name = "tbFSWd";
this.tbFSWd.Size = new System.Drawing.Size(78, 22);
this.tbFSWd.TabIndex = 2;
this.tbFSWd.Leave += new System.EventHandler(this.tbFSWd_Leave);
//
// lblFSHt
//
this.lblFSHt.AutoSize = true;
this.lblFSHt.Location = new System.Drawing.Point(5, 34);
this.lblFSHt.Name = "lblFSHt";
this.lblFSHt.Size = new System.Drawing.Size(49, 17);
this.lblFSHt.TabIndex = 1;
this.lblFSHt.Text = "Height";
//
// lblFSWidth
//
this.lblFSWidth.AutoSize = true;
this.lblFSWidth.Location = new System.Drawing.Point(6, 7);
this.lblFSWidth.Name = "lblFSWidth";
this.lblFSWidth.Size = new System.Drawing.Size(44, 17);
this.lblFSWidth.TabIndex = 0;
this.lblFSWidth.Text = "Width";
//
// btnFSrestore
//
this.btnFSrestore.Location = new System.Drawing.Point(150, 33);
this.btnFSrestore.Name = "btnFSrestore";
this.btnFSrestore.Size = new System.Drawing.Size(72, 32);
this.btnFSrestore.TabIndex = 6;
this.btnFSrestore.Text = "Restore";
this.btnFSrestore.UseVisualStyleBackColor = true;
this.btnFSrestore.Click += new System.EventHandler(this.btnFSrestore_Click);
//
// DisplayTags
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.groupPanelFigSize);
this.Controls.Add(this.groupPanelWcnTrnResp);
this.Controls.Add(this.groupPanelIncludeOn);
this.Controls.Add(this.groupPanelPaginate);
this.Controls.Add(this.groupPanelChgBar);
this.Controls.Add(this.groupPanelCheckoff);
this.Controls.Add(this.groupPanelChgStepType);
this.Margin = new System.Windows.Forms.Padding(2);
this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.Name = "DisplayTags";
this.Size = new System.Drawing.Size(202, 802);
this.Size = new System.Drawing.Size(269, 987);
this.groupPanelPaginate.ResumeLayout(false);
this.groupPanelPaginate.PerformLayout();
this.groupPanelCheckoff.ResumeLayout(false);
@ -541,6 +666,9 @@ namespace Volian.Controls.Library
this.groupPanelIncludeOn.PerformLayout();
this.groupPanelWcnTrnResp.ResumeLayout(false);
this.groupPanelWcnTrnResp.PerformLayout();
this.groupPanelFigSize.ResumeLayout(false);
this.groupPanelFigSize.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.trBarFS)).EndInit();
this.ResumeLayout(false);
}
@ -567,5 +695,13 @@ namespace Volian.Controls.Library
private System.Windows.Forms.Label lblChgId;
private DevComponents.DotNetBar.Controls.GroupPanel groupPanelWcnTrnResp;
private System.Windows.Forms.TextBox tbRespons;
private DevComponents.DotNetBar.Controls.GroupPanel groupPanelFigSize;
private System.Windows.Forms.TextBox tbFSHt;
private System.Windows.Forms.TextBox tbFSWd;
private System.Windows.Forms.Label lblFSHt;
private System.Windows.Forms.Label lblFSWidth;
private System.Windows.Forms.Button btnFsSav;
private System.Windows.Forms.TrackBar trBarFS;
private System.Windows.Forms.Button btnFSrestore;
}
}

View File

@ -190,12 +190,20 @@ namespace Volian.Controls.Library
groupPanelCheckoff.Style.BackColor = Color.Cornsilk;
groupPanelIncludeOn.Style.BackColor = Color.Cornsilk;
groupPanelWcnTrnResp.Style.BackColor = Color.Cornsilk;
groupPanelFigSize.Style.BackColor = Color.Cornsilk;
cbPageBreak.Checked = false; // will be set below if HLS & config has it on
cbPlaceKeeper.Checked = false; // will be set below if HLS & config has this set
cbPlaceKeeperCont.Checked = false; // will be set below if substep & config has this set
cbPageBreak.Enabled = CurItemInfo.IsHigh;
cbPlaceKeeper.Enabled = (((SectionConfig)CurItemInfo.ActiveSection.MyConfig).Section_Placekeeper == "Y");
cbPlaceKeeperCont.Enabled = (cbPlaceKeeper.Enabled && !CurItemInfo.IsInRNO && !CurItemInfo.IsHigh);
if (!CurItemInfo.IsFigure)
{
cbPlaceKeeper.Enabled = (((SectionConfig)CurItemInfo.ActiveSection.MyConfig).Section_Placekeeper == "Y");
cbPlaceKeeperCont.Enabled = (cbPlaceKeeper.Enabled && !CurItemInfo.IsInRNO && !CurItemInfo.IsHigh);
}
else
{
cbPlaceKeeper.Enabled = cbPlaceKeeperCont.Enabled = false;
}
//cbCAS.Enabled = true;
rbChgBarOff.Enabled = true;
rbChgBarOn.Enabled = true;
@ -217,7 +225,7 @@ namespace Volian.Controls.Library
//if ((fmtdata.ProcData.CheckOffData.CheckOffList == null || fmtdata.ProcData.CheckOffData.CheckOffList.Count == 0) ||
// fmtdata.ProcData.CheckOffData.Menu=="Signoff")
// cmbCheckoff.Enabled = false;
cbCAS.Enabled = true;
cbCAS.Enabled = !CurItemInfo.IsFigure;
if (((CurItemInfo.ActiveFormat.PlantFormat.FormatData.PurchaseOptions.Value & E_PurchaseOptions.EnhancedBackgrounds) == E_PurchaseOptions.EnhancedBackgrounds) ||
((CurItemInfo.ActiveFormat.PlantFormat.FormatData.PurchaseOptions.Value & E_PurchaseOptions.EnhancedDeviations) == E_PurchaseOptions.EnhancedDeviations))
{
@ -276,6 +284,30 @@ namespace Volian.Controls.Library
cmbCheckoff.Enabled = false;
}
// show the part of panel for resizing a figure (if figure already exists: MyImage is set for non-RO existing images & content.text has a link in it)
if (MyEditItem.MyItemInfo.IsFigure && (MyEditItem.MyItemInfo.MyContent.MyImage != null || MyEditItem.MyItemInfo.MyContent.Text.ToUpper().Contains("#LINK")))
{
groupPanelFigSize.Visible = true;
int ht = (MyEditItem as ImageItem).MyPictureBox.Height;
int wd = (MyEditItem as ImageItem).MyPictureBox.Width;
_origFigureSizeRatio = (float)ht / (float)wd; // use this to keep width/height ratio while changing size.
float wd1 = (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.PageWidth - (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.LeftMargin;
float ht1 = (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.PageLength - (float)MyEditItem.MyItemInfo.MyDocStyle.Layout.TopMargin - 36; // 36 is to allow for end message
float wd2 = Math.Min(wd1, ht1 / _origFigureSizeRatio); // keep original ratio
trBarFS.Maximum = Math.Max((int)wd2, trBarFS.Maximum);
if (wd > trBarFS.Maximum) trBarFS.Maximum = wd + 1;
trBarFS.Minimum = Math.Min(wd, 72);
trBarFS.Value = (int)wd;
ImageItem ii = MyEditItem as ImageItem;
_origFigureSizeWidth = ii.MyPictureBox.Width;
tbFSWd.Text = ii.MyPictureBox.Width.ToString();
tbFSHt.Text = ii.MyPictureBox.Height.ToString();
}
else
{
groupPanelFigSize.Visible = false;
}
// change bar setting depends on whether step has changed (dts) as compared to date/time off the
// procedure that it's in.
// There is also an override flag in the config for the step, used to override the change bar to 'off'
@ -376,7 +408,9 @@ namespace Volian.Controls.Library
_MyStepTypeInd.Clear();
foreach (StepDataRetval sdr in sdl)
{
listBoxStepTypes.Items.Add(sdr.Name);
// Figure menu titles have been changed from using the 'AER' in titles to 'Left'
string menutext = CurItemInfo.IsFigure && sdr.Name.Contains("AER")?sdr.Name.Replace("AER", "Left"):sdr.Name;
listBoxStepTypes.Items.Add(menutext);
_MyStepTypeInd.Add(sdr.Index);
}
}
@ -597,6 +631,75 @@ namespace Volian.Controls.Library
}
#endregion
// The following supports the portion of displaytags that handles sizing of figures. there are 2 text
// boxes with width & height that are tied to the slider value:
// save data back to the ImageItem. If user enters data in text boxes, this is used. Slider automatically
// saves data to ImageItem.
private void btnFsSav_Click(object sender, EventArgs e)
{
if (MyEditItem is ImageItem)
{
int wd = 0;
int ht = 0;
try
{
wd = int.Parse(tbFSWd.Text);
ht = int.Parse(tbFSHt.Text);
}
catch (Exception ex)
{
wd = 0;
ht = 0;
}
if (wd != 0 && ht != 0) (MyEditItem as ImageItem).SizeImage(wd, ht);
}
}
private float _origFigureSizeRatio = 0; // keep original ratio & width in case of 'restore'
private int _origFigureSizeWidth = 0;
// support user changing size using slider. This saves change back to ImageItem and sets
// width/height text boxes to slider values.
private void trBarFS_Scroll(object sender, EventArgs e)
{
int wd = trBarFS.Value;
int ht = (int)(_origFigureSizeRatio * wd);
(MyEditItem as ImageItem).SizeImage(wd, ht);
tbFSWd.Text = wd.ToString();
tbFSHt.Text = ht.ToString();
}
// restore the orignal image size
private void btnFSrestore_Click(object sender, EventArgs e)
{
tbFSWd.Text = _origFigureSizeWidth.ToString();
int ht = (int)(_origFigureSizeRatio * _origFigureSizeWidth);
tbFSHt.Text = ht.ToString();
(MyEditItem as ImageItem).SizeImage(_origFigureSizeWidth, ht);
trBarFS.Value = _origFigureSizeWidth;
}
// user entered width in text box, this event gets called on leave of text box.
private void tbFSWd_Leave(object sender, EventArgs e)
{
// check that value input is between the slider values:
bool invaliddata = false;
int newHt = 0;
try
{
newHt = int.Parse(tbFSWd.Text);
}
catch (Exception ex)
{
invaliddata = true;
}
if (invaliddata || newHt < trBarFS.Minimum || newHt > trBarFS.Maximum)
{
string errormsg = string.Format("Invalid width, must be integer and greater than 72 (inch) and less than {0}", trBarFS.Maximum);
MessageBox.Show(errormsg, "Invalid Width data");
return;
}
tbFSHt.Text = ((int)(int.Parse(tbFSWd.Text) * _origFigureSizeRatio)).ToString();
trBarFS.Value = int.Parse(tbFSWd.Text);
}
//private void txbxAltConActSumText_Leave(object sender, EventArgs e)
//{
// // User left Atlernate Continuous Action Text field. If text changed, then prompt

View File

@ -995,8 +995,9 @@ namespace Volian.Controls.Library
public EditItem AddChildAfter(ItemInfo MyItemInfo, bool expand, bool addFirstChld)
{
EditItem child = null;
//if (MyItemInfo.MyContent.ContentGridCount != 0)
if (MyItemInfo.MyContent.MyGrid != null)
if (MyItemInfo.IsFigure)
child = new ImageItem(MyItemInfo, MyStepPanel, this, ChildRelation.After, expand);
else if (MyItemInfo.MyContent.MyGrid != null)
child = new GridItem(MyItemInfo, MyStepPanel, this, ChildRelation.After, expand);
else
child = new RTBItem(MyItemInfo, MyStepPanel, this, ChildRelation.After, expand, addFirstChld);
@ -1005,8 +1006,11 @@ namespace Volian.Controls.Library
public EditItem AddChildAfter(ItemInfo MyItemInfo, EditItem nextEditItem)
{
EditItem child = null;
//if (MyItemInfo.MyContent.ContentGridCount != 0)
if (MyItemInfo.MyContent.MyGrid != null)
if (MyItemInfo.IsFigure)
{
child = new ImageItem(MyItemInfo, MyStepPanel, this, ChildRelation.After, true, nextEditItem, FigInsType);
}
else if (MyItemInfo.MyContent.MyGrid != null)
child = new GridItem(MyItemInfo, MyStepPanel, this, ChildRelation.After, true, nextEditItem);
else
child = new RTBItem(MyItemInfo, MyStepPanel, this, ChildRelation.After, true, nextEditItem);
@ -1015,7 +1019,8 @@ namespace Volian.Controls.Library
public EditItem AddChildBefore(ItemInfo MyItemInfo, EditItem nextEditItem)
{
EditItem child = null;
//if (MyItemInfo.MyContent.ContentGridCount != 0)
if (MyItemInfo.IsFigure)
child = new ImageItem(MyItemInfo, MyStepPanel, this, ChildRelation.Before, true, nextEditItem, FigInsType);
if(MyItemInfo.MyContent.MyGrid != null)
child = new GridItem(MyItemInfo, MyStepPanel, this, ChildRelation.Before, true, nextEditItem);
else
@ -1045,6 +1050,7 @@ namespace Volian.Controls.Library
SaveContents();
ItemInfo newItemInfo = MyItemInfo.InsertSiblingAfter(text);
AddGridIfNeeded(newItemInfo);
AddImageIfNeeded(newItemInfo);
DoAddSiblingAfter(newItemInfo, updateStatus);
if (MyStepPanel.SelectedEditItem is RTBItem)
{
@ -1079,11 +1085,21 @@ namespace Volian.Controls.Library
}
}
}
// This logic allows us to do an Insert Before and Insert After while on a Figure
// if allowed by the format. Note that Before/After for figures is only Clipboard (if
// image data exists in clipboard), or file. Doing RO images will be added later if needed -
// this decision was made because of scope.
private void AddImageIfNeeded(ItemInfo newItemInfo)
{
if (this is ImageItem) ImageItem.AddImageIfNeeded(newItemInfo);
}
public void AddSiblingAfter(int? type, bool updateStatus)
{
SaveContents();
ItemInfo newItemInfo = MyItemInfo.InsertSiblingAfter("", "", type);
AddGridIfNeeded(newItemInfo);
AddImageIfNeeded(newItemInfo);
DoAddSiblingAfter(newItemInfo, updateStatus);
if (MyStepPanel.SelectedEditItem is RTBItem)
{
@ -1129,6 +1145,7 @@ namespace Volian.Controls.Library
SaveContents();
ItemInfo newItemInfo = MyItemInfo.InsertSiblingBefore("", "",type);
AddGridIfNeeded(newItemInfo);
AddImageIfNeeded(newItemInfo);
DoAddSiblingBefore(newItemInfo, updateStatus);
}
public void AddSiblingBefore(string text, bool updateSelection)
@ -1142,6 +1159,7 @@ namespace Volian.Controls.Library
SaveContents();
ItemInfo newItemInfo = MyItemInfo.InsertSiblingBefore(text);
AddGridIfNeeded(newItemInfo);
AddImageIfNeeded(newItemInfo);
DoAddSiblingBefore(newItemInfo, updateSelection);
if (MyStepPanel.SelectedEditItem is RTBItem)
{
@ -1207,6 +1225,13 @@ namespace Volian.Controls.Library
MyStepPanel.SelectedEditItem = newEditItem;//Update Screen
specialAdd = false;
}
private ImageItem.E_ImageSource FigInsType = ImageItem.E_ImageSource.None;
public void AddChild(E_FromType fromType, int type, ImageItem.E_ImageSource newSource)
{
FigInsType = newSource;
AddChild("", fromType, type, null);
FigInsType = ImageItem.E_ImageSource.None;
}
public void AddChild(E_FromType fromType, int type)
{
AddChild("", fromType, type, null);
@ -2511,6 +2536,10 @@ namespace Volian.Controls.Library
{
AdjustTableWidthAndLocation();
}
else if (MyStepData.Type.Contains("Figure"))
{
AdjustTableWidthAndLocation();
}
else
{
if (MyItemInfo.FormatStepData.StepLayoutData.AlignWithParentTab)
@ -2696,7 +2725,9 @@ namespace Volian.Controls.Library
if (_MyPreviousEditItem != null)
{
_IgnoreResize = true;
if (MyStepData != null && (MyStepData.Type.ToLower().Contains("table") || MyStepData.ParentType.ToLower().Contains("table")))
// the table code goes through the following, rather than 'istablepart'
if (MyStepData != null && ((MyStepData.Type.ToLower().Contains("table") || MyStepData.ParentType.ToLower().Contains("table"))||
(MyStepData.Type.ToLower().Contains("figure") || MyStepData.ParentType.ToLower().Contains("figure"))))
{
ItemWidth = TableWidth;
Location = new Point(_MyPreviousEditItem.Left, FindTop(_MyPreviousEditItem.BottomMostEditItem.Bottom));
@ -2868,6 +2899,11 @@ namespace Volian.Controls.Library
if (itemInfo.IsStep && itemInfo.FormatStepData.Type == "TitleWithTextBelow" &&
((itemInfo.MyDocStyle.StructureStyle.Style & E_DocStructStyle.DSS_PageListSpBckgrnd) == E_DocStructStyle.DSS_PageListSpBckgrnd))
ContentWidth = myParentEditItem.ContentWidth;
if (itemInfo.IsStep && itemInfo.MyParent.IsFigure)
{
ContentWidth = myParentEditItem.MyParentEditItem.ContentWidth;
Left = MyParentEditItem.MyParentEditItem.Left + MyParentEditItem.MyParentEditItem.TabLeft;
}
if (myChildRelation == ChildRelation.None)
{
@ -3013,6 +3049,12 @@ namespace Volian.Controls.Library
X = gi.MyFlexGrid.Right+2;
H = gi.MyFlexGrid.Height;
}
else if (this is ImageItem)
{
ImageItem ii = this as ImageItem;
X = ii.MyPictureBox.Right + 4;
H = ii.MyPictureBox.Height;
}
else
{
RTBItem ri = this as RTBItem;

View File

@ -0,0 +1,995 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Text.RegularExpressions;
using VEPROMS.CSLA.Library;
namespace Volian.Controls.Library
{
public partial class ImageItem : EditItem
{
#region IEditItem
// set this for the imageitem so that other code (menuing/ribbons/treeview, etc) will continue to work. Include the MyItemInfo
public override StepRTB MyStepRTB
{
get { return _MyStepRTB; }
}
public override int TableWidth
{
get
{
return (int)_MyPictureBox.Width + ImageMargin;
}
}
/// <summary>
/// The left edge of the Tab
/// </summary>
public override int ItemLeft
{
get { return Left + lblTab.Left; }
set { Left = value - lblTab.Left; }
}
/// <summary>
/// The Location of the Tab
/// </summary>
public override Point ItemLocation
{
get { return new Point(Location.X + lblTab.Left, Location.Y); }
set { Location = new Point(value.X - lblTab.Left, value.Y); }
}
/// <summary>
/// Width of the Tab and Image
/// </summary>
public override int ItemWidth
{
get { return Width - lblTab.Left; }
set
{
Width = ImageMargin + value + lblTab.Left;
}
}
/// <summary>
/// Width of the PictureBox
/// </summary>
public override int ContentWidth
{
get { return _MyPictureBox.Width; }
set
{
Width = value + lblTab.Left + lblTab.Width;
}
}
public override int BorderWidth { get { return (_MyPictureBox.Width - _MyPictureBox.ClientRectangle.Width); } }
/// <summary>
/// Location of the PictureBox
/// </summary>
public override Point ContentLocation
{
get { return new Point(Location.X + _MyPictureBox.Left, Location.Y); }
set { Location = new Point(value.X - _MyPictureBox.Left, value.Y); }
}
/// <summary>
/// Left edge of the PictureBox
/// </summary>
public override int ContentLeft
{
get { return Left + _MyPictureBox.Left; }
}
override public void AdjustTableWidthAndLocation()
{
Width = Width;
Height = Height;
ItemLocation = TableLocation(MyStepSectionLayoutData, ItemWidth);
}
override public void SetToolTip(string tip)
{
DevComponents.DotNetBar.SuperTooltipInfo tpi = new DevComponents.DotNetBar.SuperTooltipInfo("", "", tip, null, null, DevComponents.DotNetBar.eTooltipColor.Lemon);
_MyToolTip.MinimumTooltipSize = new Size(0, 24);
_MyToolTip.TooltipDuration = 3;
_MyToolTip.SetSuperTooltip(MyPictureBox, tpi);
}
public override void RefreshContent()
{
IdentifyMe(false);
Volian.Base.Library.vlnStackTrace.ShowStackLocal("refreshcontents", 2);
RefreshDisplay(false);
SetExpandAndExpander(MyItemInfo);
}
public override void RefreshOrdinal()
{
TabFormat = null;
}
public override void HandleResize() {}
public override void MatchExpanded() {}
/// <summary>
/// Sets the focus to this ImageItem
/// </summary>
public override void ItemSelect()
{
if (!_MyPictureBox.Disposing)
{
_MyPictureBox.Focus();
}
else
{
_MyLog.WarnFormat("Attempt to give Focus to Disposed Object {0}", MyID);
}
ScrollToCenter();
}
/// <summary>
/// Sets the focus to this ImageItem
/// </summary>
public override void ItemShow()
{
_MyPictureBox.Focus();
ScrollToCenter();
}
public override void SetActive()
{
this.BackColor = MyStepPanel.ActiveColor;
}
public override void SetText()
{
LastMethodsPush("SetText");
if (MyItemInfo != null)
{
IdentifyMe(false);
}
LastMethodsPop();
}
public override void SetExpandAndExpander(ItemInfo itemInfo)
{
CanExpand = false;
}
public override void SaveCurrentAndContents()
{
SaveContents();
}
public override void RefreshDisplay(bool activeMode)
{
if (MyItemInfo.MyContent.MyImage == null) return; // new figure
FileName = MyItemInfo.MyContent.MyImage.FileName;
InsType = FileName.ToUpper() == "PASTE.JPG" ? E_ImageSource.Clipboard : E_ImageSource.File;
System.Drawing.Image img = byteArrayToImage(MyItemInfo.MyContent.MyImage.Data);
MyPictureBox.Image = img;
MyPictureBox.Visible = true;
ImageConfig ic = new ImageConfig(MyItemInfo.MyContent.MyImage);
if (ic != null && ic.Image_Height != 0)
{
_origCfgWd = ic.Image_Width * MyStepPanel.DPI / 72;
_origCfgHt = ic.Image_Height * MyStepPanel.DPI / 72;
}
SetWidthsAndHeights(img);
//need this to trigger update of steptabribbonbuttons:
MyStepPanel.MyStepTabPanel.MyStepTabRibbon.SetButtonAndMenuEnabling(true);
}
public override void ToggleEditView(E_ViewMode vwMode) {}
public override string TabFormat
{
get { return null; }
set { ;}
}
public override bool Expanded
{
get { return true; }
set { ; }
}
public override bool CanExpand
{
get { return false; }
set { ; }
}
public override int TabLeft { get { return lblTab.Left; } set { lblTab.Left = value; } } //taken from griditem
public override Font TabFont { get { return MyStepRTB.Font; } set { ; } }
public override string TabText { get { return lblTab.Text; } }
public override Point TabLocation { get { return lblTab.Location; } }
public override Font ContentFont { get { return MyStepRTB.Font; } set { /*MyStepRTB.Font = value*/; } }
public override float ContentTop { get { return MyPictureBox.Top; } }
public override DialogResult ReplaceText(string rpltxt, string fndstr, bool caseSensitive, bool matchWholeWord, bool reverse, bool prompt, IWin32Window fndrpldlg)
{
return DialogResult.OK;
}
public override bool FindText(string str, bool caseSensitive, bool matchWholeWord, bool reverse)
{
return false;
}
public override void PositionToEnd()
{
return;
}
public override void PositionToStart()
{
return;
}
public override string SelectedTextForFind
{
get { return null; }
}
public override bool SpellCheckNext()
{
return true;
}
public override bool Empty
{
get
{
return _MyPictureBox.Image == null;
}
set { _MyPictureBox.Image = null; }
}
public override void RefreshTab()
{
TabFormat = null;
}
public override void SetupHeader(ItemInfo itemInfo) { }
public override void ShowExpanded() { }
#endregion
#region Properties
public enum E_ImageSource : int
{
None = 0, Clipboard = 1, File = 2, RoFigure = 3
}
public System.Windows.Forms.PictureBox MyPictureBox
{
get { return _MyPictureBox; }
}
private string FileName = null;
private static int _ImageMargin = 18;
/// <summary>
/// Margin between the EditItem and the ImageItem. Appears on the Right.
/// Will allow space to draw a Change Bar on the right side of the EditItem.
/// </summary>
public static int ImageMargin
{
get { return _ImageMargin; }
set { _ImageMargin = value; }
}
private bool _IsDirty = false;
private int _origCfgHt = 0; // keep track if original size was stored in cfg
private int _origCfgWd = 0;
private bool _pastedNew = false; // need this for flagging newly pasted image (may need to clear cfg)
#endregion
#region Constructors
public ImageItem()
{
InitializeComponent();
}
// the following displays for existing images
public ImageItem(ItemInfo itemInfo, StepPanel myStepPanel, EditItem myParentEditItem, ChildRelation myChildRelation, bool expand)
{
InitializeComponent();
MyItemInfo = itemInfo;
SetupEditItem(itemInfo, myStepPanel, myParentEditItem, myChildRelation, expand, null, false);
if (MyItemInfo.MyContent.MyImage != null && MyItemInfo.MyContent.MyImage.Data != null) // this is figure/image (not RO)
{
FileName = MyItemInfo.MyContent.MyImage.FileName;
InsType = FileName.ToUpper() == "PASTE.JPG" ? E_ImageSource.Clipboard : E_ImageSource.File;
System.Drawing.Image img = byteArrayToImage(MyItemInfo.MyContent.MyImage.Data);
MyPictureBox.Image = img;
MyPictureBox.Visible = true;
ImageConfig ic = new ImageConfig(MyItemInfo.MyContent.MyImage);
if (ic != null && ic.Image_Height != 0) // embedded image (not RO)
{
_origCfgWd = ic.Image_Width * MyStepPanel.DPI / 72;
_origCfgHt = ic.Image_Height * MyStepPanel.DPI / 72;
}
SetWidthsAndHeights(img);
}
else
{
// get ro image data from link within the steprtb:
HandleRoImage();
DisplayText vlntxt = new DisplayText(MyItemInfo, E_EditPrintMode.Edit, E_ViewMode.View, false, E_FieldToEdit.Text, true, null, null, false);
MyStepRTB.OrigDisplayText = vlntxt;
InsType = E_ImageSource.RoFigure;
}
AdjustTableWidthAndLocation();
AddEventHandlers();
MyStepRTB.RemoveEventHandlers();
MyStepRTB.Visible = false;
}
private int _newSizeWd = 0;
private int _newSizeHt = 0;
public void SizeImage(int wd, int ht)
{
MyPictureBox.Width = wd;
MyPictureBox.Height = ht;
MyPictureBox.SizeMode = PictureBoxSizeMode.Zoom;
this.Width = MyPictureBox.Width + ImageMargin;
this.Height = MyPictureBox.Height + 10;
_newSizeWd = wd / (MyStepPanel.DPI / 72);
_newSizeHt = ht / (MyStepPanel.DPI / 72);
if (!MyItemInfo.FormatStepData.StepEditData.TypeMenu.MenuItem.ToUpper().Contains("AER")) ItemLocation = TableLocation(MyStepSectionLayoutData, ItemWidth);
_IsDirty = true;
}
private void SetWidthsAndHeights(System.Drawing.Image img)
{
int wd = img.Width * MyStepPanel.DPI / 72; // converts from screen resolution's DPI to image's points (72/inch)
int ht = img.Height * MyStepPanel.DPI / 72;
if (MyItemInfo.MyContent.MyImage != null) // image is null if creating new.
{
ImageConfig ic = new ImageConfig(MyItemInfo.MyContent.MyImage);
if (!_pastedNew && ic != null && ic.Image_Height != 0)
{
wd = ic.Image_Width * MyStepPanel.DPI / 72;
ht = ic.Image_Height * MyStepPanel.DPI / 72;
}
}
MyPictureBox.Visible = true;
MyPictureBox.Width = wd;
MyPictureBox.Height = ht;
MyPictureBox.SizeMode = PictureBoxSizeMode.Zoom; // as resize matches width/height.
this.Width = MyPictureBox.Width + ImageMargin;
this.Height = MyPictureBox.Height + 10;
}
// the following gets called for 'NEW' images
private E_ImageSource InsType = E_ImageSource.None;
public ImageItem(ItemInfo itemInfo, StepPanel myStepPanel, EditItem myParentEditItem, ChildRelation myChildRelation, bool expand, EditItem nextEditItem, ImageItem.E_ImageSource insType)
{
InitializeComponent();
MyItemInfo = itemInfo;
if (MyItemInfo.MyContent.MyImage != null && MyItemInfo.MyContent.MyImage.Data != null) // this is figure/image (not RO)
{
SetupEditItem(itemInfo, myStepPanel, myParentEditItem, myChildRelation, expand, nextEditItem, false);
FileName = MyItemInfo.MyContent.MyImage.FileName;
InsType = FileName.ToUpper() == "PASTE.JPG" ? E_ImageSource.Clipboard : E_ImageSource.File;
System.Drawing.Image img = byteArrayToImage(MyItemInfo.MyContent.MyImage.Data);
MyPictureBox.Image = img;
MyPictureBox.Visible = true;
ImageConfig ic = new ImageConfig(MyItemInfo.MyContent.MyImage);
if (ic != null && ic.Image_Height != 0) // embedded image (not RO)
{
_origCfgWd = ic.Image_Width * MyStepPanel.DPI / 72;
_origCfgHt = ic.Image_Height * MyStepPanel.DPI / 72;
}
SetWidthsAndHeights(img);
}
else if (MyItemInfo.MyContent.Text != null && MyItemInfo.MyContent.Text.ToUpper().Contains("RO"))
{
SetupEditItem(itemInfo, myStepPanel, myParentEditItem, myChildRelation, expand, nextEditItem, false);
// get ro image data from link within the steprtb:
HandleRoImage();
DisplayText vlntxt = new DisplayText(MyItemInfo, E_EditPrintMode.Edit, E_ViewMode.View, false, E_FieldToEdit.Text, true, null, null, false);
MyStepRTB.OrigDisplayText = vlntxt;
InsType = E_ImageSource.RoFigure;
}
else
{
InsType = insType;
FileName = null;
//InitializeComponent();
SetupEditItem(itemInfo, myStepPanel, myParentEditItem, myChildRelation, expand, nextEditItem, false);
MyPictureBox.Width = 100;
MyPictureBox.Height = 100;
this.Width = 100 + ImageMargin;
this.Height = 100;
if (insType == ImageItem.E_ImageSource.File)
{
ImageFileDialog();
}
else if (insType == ImageItem.E_ImageSource.Clipboard)
{
// see if there is an image in clipboard and if so, insert it:
System.Drawing.Image img = Clipboard.GetImage();
if (img != null)
{
MyPictureBox.Image = img;
SetWidthsAndHeights(img);
string ext = GetImageFormatExtension(img);
FileName = "paste." + ext;
_IsDirty = true;
}
}
else // this is an Ro image - use displaytext and steprtb to get image data
{
DisplayText vlntxt = new DisplayText(MyItemInfo, E_EditPrintMode.Edit, E_ViewMode.View, false, E_FieldToEdit.Text, true, null, null, false);
MyStepRTB.OrigDisplayText = vlntxt;
}
}
AdjustTableWidthAndLocation();
this.Controls.Add(this._MyPictureBox);
AddEventHandlers();
MyStepRTB.RemoveEventHandlers();
MyStepRTB.Visible = false;
}
private void ImageFileDialog()
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "c:\\";
openFileDialog1.Filter = "Image files (*.jpg;*.tif;*.bmp;*.png)|*.jpg;*.tif;*.bmp;*.png|All files (*.*)|*.*";
openFileDialog1.FilterIndex = 0;
openFileDialog1.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
// check that it is an image
System.Drawing.Image img = System.Drawing.Image.FromFile(openFileDialog1.FileName);
if (img != null)
{
FileName = openFileDialog1.FileName;
MyPictureBox.Image = img;
SetWidthsAndHeights(img);
_IsDirty = true;
}
}
catch (Exception ex)
{
MessageBox.Show("Could not create image, check file type.", "Error on Image File Selection");
return;
}
}
}
//public static System.Drawing.Imaging.ImageFormat GetImageFormat(this System.Drawing.Image img)
//{
// if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg))
// return System.Drawing.Imaging.ImageFormat.Jpeg;
// if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Bmp))
// return System.Drawing.Imaging.ImageFormat.Bmp;
// if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Png))
// return System.Drawing.Imaging.ImageFormat.Png;
// if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Emf))
// return System.Drawing.Imaging.ImageFormat.Emf;
// if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Exif))
// return System.Drawing.Imaging.ImageFormat.Exif;
// if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Gif))
// return System.Drawing.Imaging.ImageFormat.Gif;
// if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Icon))
// return System.Drawing.Imaging.ImageFormat.Icon;
// if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.MemoryBmp))
// return System.Drawing.Imaging.ImageFormat.MemoryBmp;
// if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Tiff))
// return System.Drawing.Imaging.ImageFormat.Tiff;
// else
// return System.Drawing.Imaging.ImageFormat.Wmf;
//}
private static string GetImageFormatExtension(System.Drawing.Image img)
{
return ("jpg"); // seems that this is the only one that works.
/*
if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg))
return "jpg";
if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Bmp))
return "bmp";
if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Png))
return "png";
if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Emf))
return "emf";
if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Gif))
return "gif";
if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Icon))
return "ico";
if (img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Tiff))
return "tif";
else
return "wmf";
*/
}
#endregion
#region RO_Images
public void HandleRoImage()
{
string imageText = null;
ProcedureInfo proc = MyItemInfo.MyProcedure;
DocVersionInfo dvi = proc.MyDocVersion;
ROFstInfo rofst = dvi.DocVersionAssociations[0].MyROFst;
ROFSTLookup lookup = rofst.GetROFSTLookup(dvi);
string linkInfoText = MyItemInfo.MyContent.Text.Replace(@"\u8209?", "-");
int ind = linkInfoText.IndexOf("[END>"); // found cases where the ro figure had 2 links stored within content->text (BGE data)
if (ind > 0)
{
int indx = linkInfoText.IndexOf("[END>", ind + 3);
if (indx > -1)
{
// link is duplicated (bad data), but handle it:
linkInfoText = linkInfoText.Substring(0, linkInfoText.IndexOf(@"\v ", ind + 3));
}
}
linkInfoText = linkInfoText.Replace(@"\v ", "");
Match m = Regex.Match(linkInfoText, @"(.*)[#]Link:([A-Za-z]*):(.*)");
string val = null;
if (m.Length > 0) // if m.lengh is zero, then no match was found - no RO was entered in the figure substep
{
if (m.Groups.Count < 4)
{
val = string.Format("{0}\n{1}\n{2}n{3}",
linkInfoText.Substring(0, linkInfoText.Length - 16),
linkInfoText.Substring(linkInfoText.Length - 16, 8),
linkInfoText.Substring(linkInfoText.Length - 8, 4),
linkInfoText.Substring(linkInfoText.Length - 4, 4));
val = val.Replace(@"\u8209?", "-").Replace(@"\u9586?", @"\"); // replace dash and backslash symbols with dash and backslash characters
}
else
{
string[] subs = m.Groups[3].Value.Split(" ".ToCharArray());
val = lookup.GetRoValue(subs[1]);
if (val == null || val == "?") val = lookup.GetRoValue(subs[1].Substring(0, 12));
if (val == "?")
{
// Do 'empty' image box.
//_MyLog.WarnFormat("\r\nMissing Referenced Object {0} in {1}", subs[1], itemInfo.ShortPath);
}
}
}
GC.Collect(); // memory garbage collection (Regex memory bug)
if (val != null && val != "?")
{
string imgname = null;
int W = 0;
int H = 0;
string[] vals = val.Split("\n".ToCharArray());
W = (int)(Int32.Parse(vals[3], System.Globalization.NumberStyles.AllowHexSpecifier) * MyItemInfo.FormatStepData.Font.CharsToTwips);
int lines = Int32.Parse(vals[2], System.Globalization.NumberStyles.AllowHexSpecifier);
H = lines * 12;
try
{
imgname = vals[0];
ROImageInfo roImage = ROImageInfo.GetByROFstID_FileName(rofst.ROFstID, vals[0]);
if (roImage != null)
imageText = val;
else
{
roImage = rofst.GetROImageByFilename(vals[0], MyItemInfo);// need code to go and get an ROImaage if it exists
if (roImage != null)
imageText = val;
}
AddROImageToScreen(W, H, imageText);
}
catch (Exception ex)
{
string msg = string.Format("Could not display image {0}.", imgname);
MessageBox.Show(msg);
}
}
}
public bool ThumbnailCallback()
{
return false;
}
public void AddROImageToScreen(int w, int h, string imageText)
{
string[] vals = imageText.Split("\n".ToCharArray());
ProcedureInfo proc = MyItemInfo.MyProcedure;
DocVersionInfo dvi = proc.ActiveParent as DocVersionInfo;
ROFstInfo rofst = dvi.DocVersionAssociations[0].MyROFst;
ROImageInfo roImageInfo = ROImageInfo.GetByROFstID_FileName(rofst.ROFstID, vals[0]);
if (roImageInfo == null) roImageInfo = rofst.GetROImageByFilename(vals[0], MyItemInfo);
if (roImageInfo != null)
{
System.Drawing.Image.GetThumbnailImageAbort myCallback =
new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
ROImageConfig rc = new ROImageConfig(roImageInfo);
int size = Convert.ToInt32(rc.Image_Size);
byte[] cnt = roImageInfo.Content;
byte[] dcnt = ROImageInfo.Decompress(cnt, size);
MemoryStream ms = new MemoryStream(dcnt);
System.Drawing.Image img2 = System.Drawing.Image.FromStream(ms);
// if there is config data that saves the resize of the image, use it, otherwise use what was passed in:
StepConfig sc = new StepConfig(MyItemInfo as StepInfo);
SizeF sizef = new Size(1, 1);
if (sc.Step_ImageHeight == null || sc.Step_ImageHeight == 0)
{
sizef = new SizeF((img2.Width / img2.HorizontalResolution),
(img2.Height / img2.VerticalResolution));
float fscale = Math.Min(w / sizef.Width, h / sizef.Height);
sizef.Width *= fscale;
sizef.Height *= fscale;
}
else
{
sizef = new Size(sc.Step_ImageWidth, sc.Step_ImageHeight);
}
System.Drawing.Image img = img2.GetThumbnailImage((int)sizef.Width, (int)sizef.Height, myCallback, IntPtr.Zero);
MyPictureBox.Image = img;
SetWidthsAndHeights(img);
}
}
#endregion
#region EventHandlers
private void ImageItem_Enter(object sender, EventArgs e)
{
if (MyStepPanel.DisplayItemChanging) return;
SetMenu("OpenContextMenu");
MyStepPanel.SelectedEditItem = this;
}
private void AddEventHandlers()
{
// Always be sure to add the same event handlers to RemoveEventHandlers
MyItemInfo.MyContent.Changed += new VEPROMS.CSLA.Library.ContentInfoEvent(MyContent_Changed);
this.Enter += new System.EventHandler(ImageItem_Enter);
this.MyPictureBox.Enter += new System.EventHandler(ImageItem_Enter);
this.Click += new EventHandler(ImageItem_Click);
this.MyPictureBox.Click += new EventHandler(ImageItem_Click);
this.MyPictureBox.PreviewKeyDown += new PreviewKeyDownEventHandler(ImageItem_PreviewKeyDown); //note that PictureBox does not have cursorkey events
this.MyPictureBox.KeyDown += new KeyEventHandler(ImageItem_KeyDown);
this.MyStepRTB.RoInsert += new StepRTBRoEvent(MyStepRTB_RoInsert);
this.MyStepRTB.DoSaveContents += new StepRTBEvent(MyStepRTB_DoSaveContents); // for storing RO data
this.MyPictureBox.Resize += MyPictureBox_Resize;
this.MyPictureBox.MouseDown += MyPictureBox_MouseDown;
}
void MyPictureBox_MouseDown(object sender, MouseEventArgs e)
{
SetMenu("OpenContextMenu");
}
void MyPictureBox_Resize(object sender, EventArgs e)
{
if (this.Height != _MyPictureBox.Height + _MyPictureBox.Top + 7) // add in 7 to make it look good // + 10)
{
LastMethodsPush(string.Format("MyPictureBox_Resize {0}", _MyPictureBox.Height));
this.Height = _MyPictureBox.Height + _MyPictureBox.Top + 7;
LastMethodsPop();
}
}
private void RemoveEventHandlers()
{
// Always be sure to add the same event handlers to RemoveEventHandlers
MyItemInfo.MyContent.Changed -= new VEPROMS.CSLA.Library.ContentInfoEvent(MyContent_Changed);
this.Enter -= new System.EventHandler(ImageItem_Enter);
this.MyPictureBox.Enter -= new System.EventHandler(ImageItem_Enter);
this.Click -= new EventHandler(ImageItem_Click);
this.MyPictureBox.Click -= new EventHandler(ImageItem_Click);
this.MyPictureBox.PreviewKeyDown -= new PreviewKeyDownEventHandler(ImageItem_PreviewKeyDown);
this.MyPictureBox.KeyDown -= new KeyEventHandler(ImageItem_KeyDown);
this.MyStepRTB.RoInsert -= new StepRTBRoEvent(MyStepRTB_RoInsert);
this.MyStepRTB.DoSaveContents -= new StepRTBEvent(MyStepRTB_DoSaveContents);
this.MyPictureBox.Resize -= MyPictureBox_Resize;
this.MyPictureBox.MouseDown -= MyPictureBox_MouseDown;
}
void ImageItem_Click(object sender, EventArgs e)
{
if (MyStepPanel.DisplayItemChanging) return;
MyStepPanel.SelectedEditItem = this;
}
// the PictureBox does not have cursor key event support - did this by previewing keydowns and
// if the key is arrow up/down, do associated cursormovement through the StepPanel
void ImageItem_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Up:
MyStepPanel.CursorMovement(this, new Point(0, 0), E_ArrowKeys.Up);
break;
case Keys.Down:
MyStepPanel.CursorMovement(this, new Point(0, 0), E_ArrowKeys.Down);
break;
}
}
void ImageItem_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control)
{
switch (e.KeyCode)
{
case Keys.V: // handle paste of an image
if (MyStepPanel.VwMode == E_ViewMode.View)
{
e.Handled = true;
return;
}
if (InsType == E_ImageSource.RoFigure && MyItemInfo.MyContent.MyImage == null) // on an RO image
{
MessageBox.Show("Cannot replace an existing RO figure/image. Use the Step Properties panel/RO tab.", "Warning, no paste/replace for RO images.");
e.Handled = true;
return;
}
PasteImage();
e.Handled = true;
return;
}
}
}
public void PasteImage()
{
bool setdata = false;
System.Drawing.Image img = Clipboard.GetImage();
if (img == null) // let user know there is no valid data in clipboard:
{
MessageBox.Show(this, "The clipboard does not contain image data.", "Cannot paste.", MessageBoxButtons.OK);
return;
}
if (MyItemInfo.MyContent.MyImage != null && img != null) // see if there already is an image and if so - ask if user wants to replace.
{
if (MessageBox.Show(this, "Do you want to replace the existing image?", "Confirm Image Replace", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
{
setdata = true;
}
}
else if (img != null) // no existing image, be sure there is valid data in clipboard
setdata = true;
if (setdata)
{
_IsDirty = true;
_pastedNew = true;
MyPictureBox.Image = img;
SetWidthsAndHeights(img);
string ext = GetImageFormatExtension(img);
FileName = "paste." + ext;
}
}
void MyStepRTB_RoInsert(object sender, StepRTBRoEventArgs args)
{
int sel = MyStepRTB.SelectionStart + args.ValText.Length;
_IsDirty = true;
InsType = E_ImageSource.RoFigure;
MyStepRTB.UpdateStepRtb(args.LinkText, args.ValText);
HandleRoImage();
}
void MyStepRTB_DoSaveContents(object sender, EventArgs args)
{
_IsDirty = true;
InsType = E_ImageSource.RoFigure;
SaveCurrentAndContents();
HandleRoImage();
}
#endregion
#region ContextMenu
void SetMenu(string contentMenu)
{
if (contentMenu == null)
MyStepPanel.MyStepTabPanel.MyStepTabRibbon.ClearContextMenu();
else if (contentMenu == "OpenContextMenu")
MyStepPanel.MyStepTabPanel.MyStepTabRibbon.SetContextMenuImage(this);
}
#endregion
#region Methods
public override void SetFocus()
{
MyPictureBox.Focus();
}
public override void SaveContents()
{
MyStepRTB.Visible = false;
if (!_IsDirty) return;
if (InsType != E_ImageSource.None && InsType != E_ImageSource.RoFigure)
{
SaveImage();
}
else if (InsType == E_ImageSource.RoFigure)
{
if (MyStepRTB.OrigDisplayText == null)
{
DisplayText vlntxt = new DisplayText(MyItemInfo, E_EditPrintMode.Edit, E_ViewMode.View, false, E_FieldToEdit.Text, true, null, null, false);
MyStepRTB.OrigDisplayText = vlntxt;
}
bool success = MyStepRTB.OrigDisplayText.Save((RichTextBox)MyStepRTB);
if (success && _newSizeHt != 0)
{
StepConfig sc = new StepConfig(MyItemInfo as StepInfo);
sc.Step_ImageWidth = (int)(_newSizeWd / (MyStepPanel.DPI / 72f));
sc.Step_ImageHeight = (int)(_newSizeHt / (MyStepPanel.DPI / 72f));
using (Item item = MyItemInfo.Get())
{
item.MyContent.Config = sc.ToString();
item.Save();
}
}
}
_IsDirty = false;
}
public void SaveImage()
{
try
{
using (Item _MyItem = MyItemInfo.Get())
{
byte[] imgToByte = imageToByteArray(MyPictureBox.Image, FileName);
int origLen = imgToByte.Length;
bool compressed = false;
// if file is a tif or bmp see if compressing it saves space and if so, save the
// compressed data with a flag in config, the size needed to decompress, to show it is compressed.
if (FileName.ToUpper().EndsWith(".TIF") || FileName.ToUpper().EndsWith(".BMP"))
{
byte[] cmp = ROImageInfo.Compress(imgToByte);
if (origLen > cmp.Length)
{
imgToByte = cmp;
compressed = true;
}
}
ImageConfig imgCfg = null;
if (_pastedNew && compressed)
{
imgCfg = new ImageConfig();
imgCfg.Image_DataSize = origLen;
_MyItem.MyContent.MyImage.Config = imgCfg.ToString();
}
else if (_newSizeHt != 0)
{
if (MyItemInfo.MyContent.MyImage == null && imgCfg == null)
imgCfg = new ImageConfig();
else if (imgCfg == null)
imgCfg = new ImageConfig(MyItemInfo.MyContent.MyImage);
imgCfg.Image_Width = (int)(_newSizeWd / (MyStepPanel.DPI / 72f));
imgCfg.Image_Height = (int)(_newSizeHt / (MyStepPanel.DPI / 72f));
if (compressed) imgCfg.Image_DataSize = origLen;
_MyItem.MyContent.MyImage.Config = imgCfg.ToString();
}
else if (compressed)
{
if (MyItemInfo.MyContent.MyImage == null && imgCfg == null)
imgCfg = new ImageConfig();
else if (imgCfg == null)
imgCfg = new ImageConfig(MyItemInfo.MyContent.MyImage);
imgCfg.Image_DataSize = origLen;
_MyItem.MyContent.MyImage.Config = imgCfg.ToString();
}
_MyItem.MyContent.MyImage.Data = imgToByte;
_MyItem.MyContent.MyImage.FileName = FileName;
_MyItem.MyContent.MyImage.ImageType = 1;
_MyItem.MyContent.MyImage.DTS = DateTime.Now;
_MyItem.MyContent.MyImage.UserID = Volian.Base.Library.VlnSettings.UserID;
_MyItem.MyContent.DTS = DateTime.Now;
_MyItem.MyContent.UserID = Volian.Base.Library.VlnSettings.UserID;
_MyItem.Save();
}
StepConfig sc = MyItemInfo.MyConfig as StepConfig;
// if the plant has the change id option, the change id was entered when the program started.
// this should be saved for every piece of edited data. Note that the set of config
// item Step_MultipleChangeID has the save built in to it.
if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.ProcData.ChangeBarData.ChangeIds
&& !this.MyStepPanel.MyStepTabPanel.MyDisplayTabControl.EditorialChange)
{
if (sc == null) sc = new StepConfig();
sc.Step_ChangeID = this.MyStepPanel.MyStepTabPanel.MyDisplayTabControl.ChgId;
}
// We saved changes. Reset the change bar override.
// IF there is a step config remove the change bar override by setting the CBOverride value to null
// This fixes a problem reported by Farly where if the change bar or overridden to be off, the next
// time a change was made, the change bar remained turned off.
if (sc != null)
sc.Step_CBOverride = null; // clear the change bar override
MyStepRTB.ClearUndo();
}
catch (Exception ex)
{
MessageBox.Show("The image could not be saved.", "Image Save", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
_newSizeHt = 0;
_newSizeWd = 0;
}
public static byte[] imageToByteArray(System.Drawing.Image imageIn, string fname)
{
// get filename's extension to map to imageformat:
string ext = fname.Substring(fname.IndexOf(".")+1).ToUpper();
System.Drawing.Imaging.ImageFormat ifmt = System.Drawing.Imaging.ImageFormat.Gif;
switch (ext)
{
case ("JPG"):
ifmt = System.Drawing.Imaging.ImageFormat.Jpeg;
break;
case ("TIF"):
ifmt = System.Drawing.Imaging.ImageFormat.Tiff;
break;
case ("WMF"):
ifmt = System.Drawing.Imaging.ImageFormat.Wmf;
break;
case ("BMP"):
ifmt = System.Drawing.Imaging.ImageFormat.Bmp;
break;
case ("EMF"):
ifmt = System.Drawing.Imaging.ImageFormat.Emf;
break;
case ("GIF"):
ifmt = System.Drawing.Imaging.ImageFormat.Gif;
break;
case ("ICO"):
ifmt = System.Drawing.Imaging.ImageFormat.Icon;
break;
case ("PNG"):
ifmt = System.Drawing.Imaging.ImageFormat.Png;
break;
default:
MessageBox.Show("Invalid File Type");
return null;
}
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, ifmt);
return ms.ToArray();
}
public System.Drawing.Image byteArrayToImage(byte[] byteArrayIn)
{
// if there is config data, DataSize, then decompress the data:
ImageConfig imgCfg = new ImageConfig(MyItemInfo.MyContent.MyImage);
if (imgCfg.Image_DataSize > 0) byteArrayIn = ROImageInfo.Decompress(byteArrayIn, imgCfg.Image_DataSize);
MemoryStream ms = new MemoryStream(byteArrayIn);
System.Drawing.Image returnImage = System.Drawing.Image.FromStream(ms);
return returnImage;
}
// the following is used if an image is being inserted using Before/after from steptabribbon:
public static void AddImageIfNeeded(ItemInfo newItemInfo)
{
string filename = null;
System.Drawing.Image img = Clipboard.GetImage();
if (img != null)
{
// Ask user if they want to use the clipboard image.
DialogResult dr = MessageBox.Show("Clipboard has an image, use this (select Yes) or select a file (select No)?", "Insert Image Before/After", MessageBoxButtons.YesNo);
if (dr == DialogResult.Yes)
{
string ext = ImageItem.GetImageFormatExtension(img);
filename = "paste." + ext;
}
else
img = null;
}
if (img==null)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "c:\\";
openFileDialog1.Filter = "Image files (*.jpg;*.tif;*.bmp;*.png)|*.jpg;*.tif;*.bmp;*.png|All files (*.*)|*.*";
openFileDialog1.FilterIndex = 0;
openFileDialog1.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
// check that it is an image
img = System.Drawing.Image.FromFile(openFileDialog1.FileName);
if (img != null) filename = openFileDialog1.FileName;
}
if (filename == null) return; // user must have existed out. How to handle??
}
byte[] imgToByte = imageToByteArray(img, filename);
int origLen = imgToByte.Length;
bool compressed = false;
// if file is a tif or bmp see if compressing it saves space and if so, save the
// compressed data with a flag in config, the size needed to decompress, to show it is compressed.
if (filename.ToUpper().EndsWith(".TIF") || filename.ToUpper().EndsWith(".BMP"))
{
byte[] cmp = ROImageInfo.Compress(imgToByte);
if (origLen > cmp.Length)
{
imgToByte = cmp;
compressed = true;
}
}
using (Item _MyItem = newItemInfo.Get())
{
ImageConfig imgCfg = null;
if (compressed)
{
imgCfg = new ImageConfig();
imgCfg.Image_DataSize = origLen;
_MyItem.MyContent.MyImage.Config = imgCfg.ToString();
}
_MyItem.MyContent.MyImage.Data = imgToByte;
_MyItem.MyContent.MyImage.FileName = filename;
_MyItem.MyContent.MyImage.ImageType = 1;
_MyItem.MyContent.MyImage.DTS = DateTime.Now;
_MyItem.MyContent.MyImage.UserID = Volian.Base.Library.VlnSettings.UserID;
_MyItem.MyContent.DTS = DateTime.Now;
_MyItem.MyContent.UserID = Volian.Base.Library.VlnSettings.UserID;
_MyItem.Save();
}
}
public override void IdentifyMe(bool highlight)
{
if (highlight)
this.BackColor = Color.Gray;
else
{
if (MyPictureBox.Focused || this.Focused) // If active Set BackColor to the active color
this.BackColor = MyStepPanel.ActiveColor;
else // note that the 'inactive' color is actually MyStepPanel.PanelColor
this.BackColor = MyItemInfo.ItemAnnotationCount == 0 ? MyStepPanel.PanelColor : MyStepPanel.AnnotationColor;
}
}
#endregion
}
}

View File

@ -0,0 +1,149 @@
namespace Volian.Controls.Library
{
partial class ImageItem
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
this._MyPictureBox = new System.Windows.Forms.PictureBox();
this._MyStepRTB = new Volian.Controls.Library.StepRTB(this.components);
this._MyStepRTB.Location = new System.Drawing.Point(0, -20); // position richtextbox outside visible range
this.lblTab = new System.Windows.Forms.Label();
this._MyToolTip = new DevComponents.DotNetBar.SuperTooltip();
//this._MyvlnExpander = new Volian.Controls.Library.vlnExpander();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.SuspendLayout();
//
// _MyPictureBox
//
this._MyToolTip.SetSuperTooltip(this._MyPictureBox, new DevComponents.DotNetBar.SuperTooltipInfo("Figure", "", "The input image will be displayed here as a figure.", null, null, DevComponents.DotNetBar.eTooltipColor.Gray, true, true, new System.Drawing.Size(150, 80)));
this._MyPictureBox.Location = new System.Drawing.Point(7, 5);
this._MyPictureBox.Name = "_MyPictureBox";
//
// lblTab
//
this.lblTab.BackColor = System.Drawing.Color.Transparent;
this.lblTab.Location = new System.Drawing.Point(0, 0);
this.lblTab.Name = "lblTab";
this.lblTab.Size = new System.Drawing.Size(61, 23);
this.lblTab.TabIndex = 3;
this.lblTab.Visible = false;
//this.lblTab.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lblTab_MouseDown);
//
// _MyStepRTB
//
this._MyStepRTB.Visible = false;
//this._MyStepRTB.AdjustSize = new System.Drawing.Size(0, 0);
//this._MyStepRTB.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
// | System.Windows.Forms.AnchorStyles.Right)));
//this._MyStepRTB.BackColor = System.Drawing.Color.Linen;
//this._MyStepRTB.BorderStyle = System.Windows.Forms.BorderStyle.None;
////KBR this._MyStepRTB.CheckAbove = "|│└┬┼├┌┴┐┤";
////KBR this._MyStepRTB.CheckBelow = "|│";
////KBR this._MyStepRTB.CheckLeft = "-─┤┬├┼┌┐└‑";
////KBR this._MyStepRTB.CheckRight = "-─‑";
this._MyStepRTB.FieldToEdit = VEPROMS.CSLA.Library.E_FieldToEdit.Text; // was text, but would not process steptabribbon button enabling. .Text;
//this._MyStepRTB.Font = new System.Drawing.Font("Prestige Elite Tall", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(2)));
//this._MyStepRTB.Location = new System.Drawing.Point(107, 0);
//this._MyStepRTB.Margin = new System.Windows.Forms.Padding(4);
//this._MyStepRTB.MyClassName = "RichEdit20W";
//this._MyStepRTB.MyItemInfo = null;
//this._MyStepRTB.MyLinkText = null;
//this._MyStepRTB.Name = "_MyStepRTB";
//this._MyStepRTB.ProcessKeystrokes = true;
//this._MyStepRTB.RTBRangeStatus = Volian.Controls.Library.StepRTB.RangeStatus.NoContainedLinks;
//this._MyStepRTB.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.None;
//this._MyStepRTB.ShowDebug = false;
//this._MyStepRTB.Size = new System.Drawing.Size(312, 25);
//this._MyStepRTB.TabIndex = 2;
//this._MyStepRTB.Text = "";
//this._MyStepRTB.VwMode = VEPROMS.CSLA.Library.E_ViewMode.Edit;
//KBR this._MyStepRTB.LinkGoTo += new Volian.Controls.Library.StepRTBLinkEvent(this._MyStepRTB_LinkGoTo);
//this._MyStepRTB.Enter += new System.EventHandler(this._StepRTB_Enter);
//this._MyStepRTB.HeightChanged += new Volian.Controls.Library.StepRTBEvent(this._MyStepRTB_HeightChanged);
//this._MyStepRTB.ModeChange += new Volian.Controls.Library.StepRTBModeChangeEvent(this._MyStepRTB_ModeChange);
//KBR this._MyStepRTB.LinkModifyTran += new Volian.Controls.Library.StepRTBLinkEvent(this._MyStepRTB_LinkModifyTran);
//this._MyPictureBox..CursorKeyPress += new Volian.Controls.Library.StepRTBCursorKeysEvent(this._MyStepRTB_CursorKeyPress);
//this._MyPictureBox.CursorMovement += new Volian.Controls.Library.StepRTBCursorMovementEvent(this._MyStepRTB_CursorMovement);
//KBR this._MyStepRTB.LinkModifyRO += new Volian.Controls.Library.StepRTBLinkEvent(this._MyStepRTB_LinkModifyRO);
//KBR this._MyStepRTB.SetMenu += new StepRTBMenuEvent(_MyStepRTB_SetMenu);
//this._MyStepRTB.AdjustTableWidth += new StepRTBTableWidthEvent(_MyStepRTB_AdjustTableWidth);
//KBR this._MyStepRTB.IsNotCurrentSelection += new StepRTBBooleanEvent(_MyStepRTB_IsNotCurrentSelection);
//KBR this._MyStepRTB.OpenAnnotations += new StepRTBEvent(_MyStepRTB_OpenAnnotations);
//KBR this._MyStepRTB.InsertPgBrk += new StepRTBEvent(_MyStepRTB_InsertPgBrk);
//KBR this._MyStepRTB.EnterKeyPressed += new StepRTBCursorKeysEvent(_MyStepRTB_EnterKeyPressed);
//KBR this._MyStepRTB.CheckClipboard += new StepRTBBooleanEvent(_MyStepRTB_CheckClipboard);
//KBR this._MyStepRTB.CopyStep += new StepRTBEvent(_MyStepRTB_CopyStep);
//KBR this._MyStepRTB.OpenContextMenu += new StepRTBLocationEvent(_MyStepRTB_OpenContextMenu);
//KBR this._MyStepRTB.DoMouseWheel += new StepRTBMouseEvent(_MyStepRTB_DoMouseWheel);
//this._MyStepRTB.DoSaveContents += new StepRTBEvent(_MyStepRTB_DoSaveContents);
//KBR this._MyStepRTB.RoInsert += new StepRTBRoEvent(_MyStepRTB_RoInsert);
//this._MyStepRTB.Resize += new System.EventHandler(_MyStepRTB_Resize);
//this._MyvlnExpander.Attachment = false;
//this._MyvlnExpander.BackColor = System.Drawing.Color.Transparent;
//this._MyvlnExpander.BorderColor = System.Drawing.Color.Silver;
//this._MyvlnExpander.Color1 = System.Drawing.Color.Aquamarine;
//this._MyvlnExpander.Color2 = System.Drawing.Color.Violet;
//this._MyvlnExpander.Expanded = false;
//this._MyvlnExpander.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
//this._MyvlnExpander.GradientAngle = 45;
//this._MyvlnExpander.Location = new System.Drawing.Point(4, 4);
//this._MyvlnExpander.Margin = new System.Windows.Forms.Padding(5);
//this._MyvlnExpander.MyExpanderStyle = Volian.Controls.Library.ExpanderStyle.Round;
//this._MyvlnExpander.Name = "_MyvlnExpander";
//this._MyvlnExpander.PenWidth = 0;
//this._MyvlnExpander.Size = new System.Drawing.Size(17, 17);
//this._MyvlnExpander.TabIndex = 0;
//this._MyvlnExpander.Trans1 = 128;
//this._MyvlnExpander.Trans2 = 128;
//this._MyvlnExpander.WidthFactor = 7;
//this._MyvlnExpander.BeforeColapse += new Volian.Controls.Library.vlnExpanderEvent(this.vlnExp_BeforeColapse);
//this._MyvlnExpander.BeforeExpand += new Volian.Controls.Library.vlnExpanderEvent(this.vlnExp_BeforeExpand);
//
// ImageItem
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.SystemColors.ButtonFace;
this.Controls.Add(this._MyStepRTB);
//this.Controls.Add(this._MyvlnExpander);
this.Controls.Add(this._MyPictureBox);
this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
this.Name = "ImageItem";
this.Size = new System.Drawing.Size(419, 25);
//this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lblTab_MouseDown);
this.ResumeLayout(false);
}
private StepRTB _MyStepRTB;
private System.Windows.Forms.PictureBox _MyPictureBox;
private System.Windows.Forms.Label lblTab;
private DevComponents.DotNetBar.SuperTooltip _MyToolTip;
#endregion
}
}

View File

@ -198,7 +198,10 @@ namespace Volian.Controls.Library
}
#endregion
#region Properties and Variables
public bool IsRoFigure
{
get { return (MyItemInfo.IsFigure && MyItemInfo.MyContent.MyImage == null); }
}
public bool IsRoTable
{
get { return (Parent is VlnFlexGrid && (Parent as VlnFlexGrid).IsRoTable); }
@ -701,7 +704,7 @@ namespace Volian.Controls.Library
// When a border style is changed, the richtextbox's handle is 'destroyed', so that the handleDestroyed
// event is done. This was causing the event handlers to be removed (RemoveEventHandler) so that the
// keypress event handler was not run.
private void RemoveEventHandlers()
public void RemoveEventHandlers()
{
if (_EventHandlersForKeyPress==0) return;
ContentsResized -= new ContentsResizedEventHandler(StepRTB_ContentsResized);
@ -2040,6 +2043,17 @@ namespace Volian.Controls.Library
ImageWidth = img.Width;
Width = ImageWidth + 2;
Paste();
e.Handled = true;
return;
}
else if (iData.GetDataPresent(DataFormats.Dib))
{
System.Drawing.Image img = Clipboard.GetImage();
ImageWidth = img.Width;
Width = ImageWidth + 2;
Paste();
e.Handled = true;
return;
}
else
{

View File

@ -126,7 +126,28 @@ namespace Volian.Controls.Library
AddWROContext(btnCMRtfEdit);
_ContextMenuBar.SetContextMenuEx(_MyStepRTB, btnCMRtfEdit);
}
public void SetContextMenuImage(ImageItem imgItem)
{
btnCMCut.Enabled = false;
btnCMCopy.Enabled = false;
btnCMPaste.Enabled = false;
btnCMPasteText.Enabled = false;
btnCMRO.Enabled = false;
bool isInBuff = false;
try // image in clipboard - for 'paste'
{
System.Drawing.Image img = Clipboard.GetImage();
isInBuff = img != null;
}
catch (Exception ex)
{
isInBuff = false;
}
btnCMPasteImage.Enabled = isInBuff;
btnCMEditMode1.Enabled = false; //View mode (irrelevant for images)
btnCMGoTo.Enabled = MyItemInfo!=null && MyItemInfo.MyContent != null && MyItemInfo.MyContent.ContentRoUsageCount > 0;
_ContextMenuBar.SetContextMenuEx(imgItem, btnCMRtfEdit);
}
private void AddEnhancedDocumentMenu(DevComponents.DotNetBar.ButtonItem myButtonItem, object sender)
{
DVEnhancedDocuments dveds = MyItemInfo.MyDocVersion.DocVersionConfig.MyEnhancedDocuments;
@ -626,7 +647,7 @@ namespace Volian.Controls.Library
}
SetButtonAndMenuEnabling(true);
SetStepButtonAndMenuEnabling(true);
SetMenuEnablingForFigures();
_MyLastFormatID = MyItemInfo.ActiveFormat.FormatID;
}
}
@ -935,7 +956,7 @@ namespace Volian.Controls.Library
if (insdata.Length < 2) return;
int fromtype = Convert.ToInt32(insdata[0]);
int contenttype = Convert.ToInt32(insdata[1]) + 20000;
string tabletype = (insdata.Length == 3)? insdata[2]:null;
string tabOrFigType = (insdata.Length == 3)? insdata[2]:null;
// if CautionNoteOrder format variable is set then use it to determine the placement of the
// Caution, Note, Warning, or Message (calvert format)
if (cautNoteOrder != null && (","+cautNoteOrder+",").Contains(","+(contenttype % 10000).ToString() + ",") && (_MyEditItem.MyItemInfo.Cautions != null || _MyEditItem.MyItemInfo.Notes != null))
@ -962,7 +983,7 @@ namespace Volian.Controls.Library
}
else if (InsertingTable(contenttype))
{
if (tabletype.Contains("RO"))
if (tabOrFigType.Contains("RO"))
{
VlnFlexGrid grd = new VlnFlexGrid();
grd.Rows.Count = 1;
@ -978,11 +999,30 @@ namespace Volian.Controls.Library
if (grd != null) _MyEditItem.AddChild((E_FromType)fromtype, contenttype, grd);
}
}
else if (InsertingFigure(contenttype))
{
if (tabOrFigType.Contains("RO"))
{
_MyEditItem.AddChild((E_FromType)fromtype, contenttype, ImageItem.E_ImageSource.RoFigure);
StepTabPanel tmp = Parent as StepTabPanel;
tmp.MyDisplayTabControl.OnLinkModifyRO(this, new StepPanelLinkEventArgs(null));
}
else
{
System.Drawing.Image img = Clipboard.GetImage();
if (img == null && tabOrFigType.Contains("CL"))
{
MessageBox.Show("Clipboard does not contain image data. Cannot create figure.", "Clipboard Error");
return;
}
_MyEditItem.AddChild((E_FromType)fromtype, contenttype, tabOrFigType.Contains("CL")?ImageItem.E_ImageSource.Clipboard:ImageItem.E_ImageSource.File);
}
if (_MyEditItem.MyItemInfo.IsFigure && tabOrFigType.Contains("RO"))
btnInsRO_Click(sender, e);
}
else
{
_MyEditItem.AddChild((E_FromType)fromtype, contenttype);
if (_MyEditItem.MyItemInfo.IsFigure)
btnInsRO_Click(sender, e); // open the step properties RO tab when a figure substep is added
}
}
@ -1061,18 +1101,29 @@ namespace Volian.Controls.Library
}
return rtnval;
}
// Figure (embedded images)
private bool InsertingFigure(int contenttype)
{
bool rtnval = false;
switch (contenttype)
{
case 20036: // Centered
case 20037: // AER (left)
case 20038: // AER (left) without boarder
case 20039: // Centered without boarder
rtnval = true;
break;
}
return rtnval;
}
private void btnInsBefore_Click(object sender, EventArgs e)
{
_MyEditItem.AddSiblingBefore();
if (_MyEditItem.MyItemInfo.IsFigure)
btnInsRO_Click(sender, e); // open the step properties RO tab when a figure substep is added
}
private void btnInsAfter_Click(object sender, EventArgs e)
{
_MyEditItem.AddSiblingAfter();
if (_MyEditItem.MyItemInfo.IsFigure)
btnInsRO_Click(sender, e); // open the step properties RO tab when a figure substep is added
}
/// <summary>
/// Using style for step type, enable/disable formatting buttons
@ -1105,6 +1156,7 @@ namespace Volian.Controls.Library
btnCMCopy.Enabled = btnCopy.Enabled = setting;
btnPasteAfter.Enabled = btnPasteBefore.Enabled = btnStepPaste.Enabled = btnPasteReplace.Enabled = setting;
btnCMGrid.Enabled = setting;
btnCMPasteImage.Enabled = setting;
}
private void SetButtonMenuEnabledDisabledOnStepType(bool setting)
{
@ -1128,13 +1180,6 @@ namespace Volian.Controls.Library
btnInsNote.Enabled = true;
btnInsCaut.Enabled = true;
}
if (MyItemInfo.IsFigure)
{
btnInsTrans.Enabled = btnCMTransition.Enabled = false;
btnCMSymbol.Enabled = btnSymbols.Enabled = false;
btnCMHardSpace.Enabled = btnInsHrdSpc.Enabled = false;
btnIndent.Enabled = false;
}
// if in Calvert Alarms Condition/Response, disable insert of Cautions and Notes
if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.PrintData.SpecialCaseCalvertAlarm)
btnInsCaut.Enabled = btnInsNote.Enabled = btnCMInsCaution.Enabled = btnCMInsNote.Enabled = setting && !MyItemInfo.IsInCalvertConditionResponse;
@ -1142,7 +1187,7 @@ namespace Volian.Controls.Library
public void SetButtonAndMenuEnabling(bool docontextmenus)
{
if (_MyStepRTB == null) return;
if (_MyStepRTB.FieldToEdit != E_FieldToEdit.StepText)
if (_MyStepRTB.FieldToEdit != E_FieldToEdit.StepText && !MyItemInfo.IsFigure) // want menu enabling for figures
return; // No need to change menu that does not get used
DocVersionInfo dvi = MyEditItem.MyItemInfo.MyProcedure.ActiveParent as DocVersionInfo;
if (dvi == null) return;
@ -1179,6 +1224,7 @@ namespace Volian.Controls.Library
btnCMRedo.Enabled = btnRedo.Enabled = _MyStepRTB.CanRedo;
// for paste, see if there is clipboard data, & if so, of a type we can use.
btnCMPasteImage.Enabled = false;
try // RHM20150506 Multiline ItemID TextBox
{
IDataObject iData = Clipboard.GetDataObject();
@ -1216,6 +1262,31 @@ namespace Volian.Controls.Library
btnCMEditRO.Enabled = false;
}
// OLD: SetStepButtonAndMenuEnabling(docontextmenus);
SetMenuEnablingForFigures();
}
private void SetMenuEnablingForFigures()
{
if (MyItemInfo.IsFigure)
{
btnInsTrans.Enabled = btnCMTransition.Enabled = false;
btnInsRO.Enabled = btnCMRO.Enabled = false;
btnCMSymbol.Enabled = btnSymbols.Enabled = false;
btnCMHardSpace.Enabled = btnInsHrdSpc.Enabled = false;
btnIndent.Enabled = false;
btnCMBold.Enabled = btnBold.Enabled = false;
btnCMItalics.Enabled = btnItalics.Enabled = false;
btnCMUnderline.Enabled = btnUnderline.Enabled = false;
btnCMSubscript.Enabled = btnSubscript.Enabled = false;
btnCMSuperscript.Enabled = btnSuperscript.Enabled = false;
btnCMCut.Enabled = btnCut.Enabled = false;
btnCMUndo.Enabled = btnUndo.Enabled = false;
btnCMRedo.Enabled = btnRedo.Enabled = false;
btnChgCase.Enabled = false;
btnPaste.Enabled = false;
btnCMPaste.Enabled = false;
btnCMPasteText.Enabled = false;
}
}
private void SetButtonEnablingForEnhanced(bool setting)
@ -1510,7 +1581,6 @@ namespace Volian.Controls.Library
actable = sd.StepEditData.AcTable;
if (actable == null) actable = 0;
btnInsHLS.Enabled = MyItemInfo.MyHLS != null;
btnInsCaut.Enabled = ((actable & E_AccStep.AddingCaution) > 0) && !MyItemInfo.IsEnhancedStep;
btnInsNote.Enabled = ((actable & E_AccStep.AddingNote) > 0) && !MyItemInfo.IsEnhancedStep;
btnInsRNO.Enabled = (actable & E_AccStep.AddingRNO) > 0;
@ -1663,6 +1733,9 @@ namespace Volian.Controls.Library
btn.SubItems.Add(bi);
}
}
//handle various cases for figures:
if (btn.Name == "btnInsFig" && docontextmenus) DoFigureMenuing(btn, cmbtn, sdl);
// if this is a table, then need to add RO/Text table options
if (btn.Name == "btnInsTable" && docontextmenus)
{
@ -1735,7 +1808,135 @@ namespace Volian.Controls.Library
}
rbnStepParts.Refresh();
}
// From Figure menuing, need to map those strings to the index in the StepdataList for setting item's content type:
//<Step Index="36" Type="Figure" ParentType="Base" />
//<Step Index="37" Type="AERFigure" ParentType="Figure" />
//<Step Index="38" Type="BorderlessFigure" ParentType="Figure" />
//<Step Index="39" Type="BorderlessAERFigure" ParentType="AERFigure" />
private int Centered = 36; // will always be top level.
private void DoFigureMenuing(ButtonItem btn, ButtonItem cmbtn, List<StepDataRetval> sdl)
{
// Figure menuing:
// Figure (from ribbon)
// If in AER Column:
// Centered
// Left
// From both Centered & Left:
// With Border
// Without Border
// From both w/wo Border:
// RO Figure
// Figure from Clipboard
// Figure From File
// If in RNO column or single column mode (see comment below for this menu):
// With Border
// Without Border
// From both w/wo Border:
// RO Figure
// Figure from Clipboard
// Figure From File
// This is done for single column mode, or if in the calvertconditionresponse table (dual column) and in the rno column. Note
// the '&&' in if check because when in the calvertconditionresponse table, the section is in 'single column' mode even though
// the condition response table is dual column.
SectionConfig sc = (SectionConfig)MyItemInfo.ActiveSection.MyConfig;
// One Column Mode or Two Column Mode in the RNO Column or Caution or Note
if ((sc.Section_ColumnMode == SectionConfig.SectionColumnMode.One && (!MyItemInfo.IsInCalvertConditionResponse || MyItemInfo.IsInRNO))
|| (sc.Section_ColumnMode == SectionConfig.SectionColumnMode.Two && MyItemInfo.IsInRNO)
|| (MyItemInfo.IsCautionOrNotePart)) // single column step editor
{
// setup the sub menus for the insert table ribbon button
btn.Tag = btn.SubItems[0].Tag;
btn.SubItems.Clear();
DoFigureW_WOborderSubMenu(btn);
// setup the sub menus for the context menu used with the keyborad shortcut <shift><ctrl><T>
cmbtn.Tag = cmbtn.SubItems[0].Tag;
cmbtn.SubItems.Clear();
DoFigureW_WOborderSubMenu(cmbtn);
}
else
{
// this is AER column in dual column-need to add 'Centered' & 'Left'
char[] sp = { ' ' };
btn.Tag = btn.SubItems[0].Tag;
btn.SubItems.Clear();
string[] insdata = btn.Tag.ToString().Split(sp);
int ftype = Convert.ToInt32(insdata[0]);
int sdtype = Convert.ToInt32(insdata[1]);
DevComponents.DotNetBar.ButtonItem cmbt = new DevComponents.DotNetBar.ButtonItem("cmbtnt" + sdtype + "CENT", "Centered");
cmbt.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.TextOnlyAlways;
cmbt.Text = "Centered";
cmbt.Tag = string.Format("{0} {1} {2}", ftype, 36, "CENT");
cmbt.Click += new System.EventHandler(btnInsStep_Click);
btn.SubItems.Add(cmbt);
cmbt = new DevComponents.DotNetBar.ButtonItem("cmbtnt" + sdtype + "LT", "Left");
cmbt.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.TextOnlyAlways;
cmbt.Text = "Left";
cmbt.Tag = string.Format("{0} {1} {2}", ftype, 37, "LT"); // Text table
cmbt.Click += new System.EventHandler(btnInsStep_Click);
btn.SubItems.Add(cmbt);
btn.Tag = null;
btn.Click -= new System.EventHandler(btnInsStep_Click);
// setup the sub menus for the insert figure ribbon button
foreach (DevComponents.DotNetBar.ButtonItem tabbtn in btn.SubItems)
DoFigureW_WOborderSubMenu(tabbtn);
// setup the sub menus for the context menu used with the keyborad shortcut <shift><ctrl><T>
foreach (DevComponents.DotNetBar.ButtonItem cmtabbtn in cmbtn.SubItems)
DoFigureW_WOborderSubMenu(cmtabbtn);
}
}
private void DoFigureW_WOborderSubMenu(DevComponents.DotNetBar.ButtonItem tabbtn)
{
char[] sp = { ' ' };
string[] insdata = tabbtn.Tag.ToString().Split(sp);
int ftype = Convert.ToInt32(insdata[0]);
int sdtype = Convert.ToInt32(insdata[1]);
int with = sdtype == Centered ? 36 : 37;
DevComponents.DotNetBar.ButtonItem cmbt = new DevComponents.DotNetBar.ButtonItem("cmbtnt" + sdtype + "BD", "With Border");
cmbt.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.TextOnlyAlways;
cmbt.Text = "With Border";
cmbt.Tag = string.Format("{0} {1} {2}", ftype, sdtype, "BD");
cmbt.Click += new System.EventHandler(btnInsStep_Click);
tabbtn.SubItems.Add(cmbt);
DoFigureFromSubMenu(cmbt);
int wo = sdtype == Centered ? 38 : 39;
cmbt = new DevComponents.DotNetBar.ButtonItem("cmbtnt" + wo + "NB", "Without Border");
cmbt.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.TextOnlyAlways;
cmbt.Text = "Without Border";
cmbt.Tag = string.Format("{0} {1} {2}", ftype, wo, "NB");
cmbt.Click += new System.EventHandler(btnInsStep_Click);
tabbtn.SubItems.Add(cmbt);
DoFigureFromSubMenu(cmbt);
tabbtn.Tag = null;
tabbtn.Click -= new System.EventHandler(btnInsStep_Click);
}
private void DoFigureFromSubMenu(DevComponents.DotNetBar.ButtonItem tabbtn)
{
char[] sp = { ' ' };
string[] insdata = tabbtn.Tag.ToString().Split(sp);
int ftype = Convert.ToInt32(insdata[0]);
int sdtype = Convert.ToInt32(insdata[1]);
DevComponents.DotNetBar.ButtonItem cmbt = new DevComponents.DotNetBar.ButtonItem("cmbtnt" + sdtype + "RO", "RO Figure");
cmbt.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.TextOnlyAlways;
cmbt.Text = "RO Figure";
cmbt.Tag = string.Format("{0} {1} {2}", ftype, sdtype, "RO");
cmbt.Click += new System.EventHandler(btnInsStep_Click);
tabbtn.SubItems.Add(cmbt);
cmbt = new DevComponents.DotNetBar.ButtonItem("cmbtnt" + sdtype + "CL", "From Clipboard");
cmbt.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.TextOnlyAlways;
cmbt.Text = "From Clipboard";
cmbt.Tag = string.Format("{0} {1} {2}", ftype, sdtype, "CL");
cmbt.Click += new System.EventHandler(btnInsStep_Click);
tabbtn.SubItems.Add(cmbt);
cmbt = new DevComponents.DotNetBar.ButtonItem("cmbtnt" + sdtype + "FL", "From File");
cmbt.ButtonStyle = DevComponents.DotNetBar.eButtonStyle.TextOnlyAlways;
cmbt.Text = "From File";
cmbt.Tag = string.Format("{0} {1} {2}", ftype, sdtype, "FL"); // Text table
cmbt.Click += new System.EventHandler(btnInsStep_Click);
tabbtn.SubItems.Add(cmbt);
tabbtn.Tag = null;
tabbtn.Click -= new System.EventHandler(btnInsStep_Click);
}
private void DoTableSubMenu(DevComponents.DotNetBar.ButtonItem tabbtn)
{
char[] sp = { ' ' };
@ -2146,12 +2347,18 @@ namespace Volian.Controls.Library
myROID = MyFlexGrid.ROID.ToLower();
myRODB = RODbInfo.Get(MyFlexGrid.RODbId);
}
else if (MyItemInfo.IsFigure && MyItemInfo.MyContent.ContentRoUsages != null && MyItemInfo.MyContent.ContentRoUsages.Count > 0)
{
myROID = MyItemInfo.MyContent.ContentRoUsages[0].ROID;
myRODB = MyItemInfo.MyContent.ContentRoUsages[0].MyRODb;
}
else
{
LinkText lt = new LinkText(_MyStepRTB.MyLinkText);
LinkText lt = new LinkText(_MyStepRTB.MyLinkText);
myROID = lt.MyRoUsageInfo.ROID.ToLower();
myRODB = lt.MyRoUsageInfo.MyRODb;
}
if (myROID == null) return;
if (myROID.StartsWith("ffff"))
{
MessageBox.Show("Unit Information RO's cannot be edited", "Unit Information RO", MessageBoxButtons.OK, MessageBoxIcon.Information);
@ -2262,6 +2469,7 @@ namespace Volian.Controls.Library
MyEditItem.ToggleEditView(MyEditItem.MyStepPanel.VwMode);
SetButtonAndMenuEnabling(true);
SetStepButtonAndMenuEnabling(true);
SetMenuEnablingForFigures();
MyEditItem.MyStepPanel.MyStepTabPanel.MyDisplayTabControl.OnModeChange(this, new StepRTBModeChangeEventArgs(MyEditItem.MyStepPanel.VwMode));
btnEditMode.Checked = btnCMEditMode1.Checked = MyEditItem.MyStepPanel.VwMode == E_ViewMode.View;
MyEditItem.MyStepRTB.SpellCheckContextMenuOn(MyEditItem.MyStepPanel.VwMode != E_ViewMode.View);
@ -3437,7 +3645,10 @@ namespace Volian.Controls.Library
_PastePlainTextOvrRide = true;
btnPaste_Click(sender, e);
}
private void btnPasteImage_Click(object sender, EventArgs e)
{
if (MyEditItem is ImageItem) (MyEditItem as ImageItem).PasteImage();
}
private void btnPasteStepText_Click(object sender, EventArgs e)
{
StartGridEditing(SelectionOption.End);

View File

@ -386,7 +386,11 @@ namespace Volian.Print.Library
h.Add(oldTypeName + " to " + cai.TypeName);
else
{
string txt = ItemInfo.ConvertToDisplayText(cai.Text);
string txt = null;
if ((cai.Text==null || cai.Text=="") && (cai.Type == 20036 || cai.Type == 20037 || cai.Type == 20038 || cai.Type == 20039))
txt = "Embedded Image";
else
txt = ItemInfo.ConvertToDisplayText(cai.Text);
if (MyProc.MyDocVersion.MultiUnitCount > 1)
{
System.Xml.XmlNode nd;
@ -1509,7 +1513,11 @@ namespace Volian.Print.Library
h.Add(oldTypeName + " to " + cai.TypeName);
else
{
string txt = ItemInfo.ConvertToDisplayText(cai.Text);
string txt = null;
if ((cai.Text==null || cai.Text=="") && (cai.Type == 20036 || cai.Type == 20037 || cai.Type == 20038 || cai.Type == 20039))
txt = "Embedded Image";
else
txt = ItemInfo.ConvertToDisplayText(cai.Text);
// Add Parent/Child information if applicable
// We were doing this for the Chronology report so I added the same logic here for the Summary report
if (MyProc.MyDocVersion.MultiUnitCount > 1)

View File

@ -1210,55 +1210,82 @@ namespace Volian.Print.Library
float retval = yLocation;
if (ImageText != null)
{
string[] vals = ImageText.Split("\n".ToCharArray());
ProcedureInfo proc = MyItemInfo.MyProcedure;
DocVersionInfo dvi = proc.ActiveParent as DocVersionInfo;
ROFstInfo rofst = dvi.DocVersionAssociations[0].MyROFst;
ROImageInfo roImage = ROImageInfo.GetByROFstID_FileName(rofst.ROFstID, vals[0]);
if (roImage == null) roImage = rofst.GetROImageByFilename(vals[0],MyItemInfo);// need code to go and get an ROImaage if it exists
if (roImage != null)
if (ImageText == "figure")
{
ROImageConfig rc = new ROImageConfig(roImage);
int size = Convert.ToInt32(rc.Image_Size);
byte[] cnt = roImage.Content;
byte[] dcnt = ROImageInfo.Decompress(cnt, size);
iTextSharp.text.Image it_image=null;
try
ImageConfig ic = new ImageConfig(MyItemInfo.MyContent.MyImage);
byte[] idata = (ic != null && ic.Image_DataSize > 0) ? ROImageInfo.Decompress(MyItemInfo.MyContent.MyImage.Data, ic.Image_DataSize) : MyItemInfo.MyContent.MyImage.Data;
MemoryStream ms = new MemoryStream(idata);
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
Width = img.Width;
Height = img.Height;
if (ic != null && ic.Image_Height != 0)
{
it_image = iTextSharp.text.Image.GetInstance(dcnt);
//iTextSharp.text.Image it_image = iTextSharp.text.Image.GetInstance(ROImageInfo.Decompress(roImage.Content, size));
Width = ic.Image_Width;
Height = ic.Image_Height;
}
catch
iTextSharp.text.Image it_image = iTextSharp.text.Image.GetInstance(idata);
retval = Rtf2Pdf.FigureAt(cb, it_image, XOffset + MyItemInfo.FormatStepData.Font.CharsToTwips, yLocation, Width * MyPageHelper.YMultiplier, Height * MyPageHelper.YMultiplier, DebugInfo, yBottomMargin, !MyItemInfo.FormatStepData.Type.Contains("Borderless"));
}
else
{
string[] vals = ImageText.Split("\n".ToCharArray());
ProcedureInfo proc = MyItemInfo.MyProcedure;
DocVersionInfo dvi = proc.ActiveParent as DocVersionInfo;
ROFstInfo rofst = dvi.DocVersionAssociations[0].MyROFst;
ROImageInfo roImage = ROImageInfo.GetByROFstID_FileName(rofst.ROFstID, vals[0]);
if (roImage == null) roImage = rofst.GetROImageByFilename(vals[0], MyItemInfo);// need code to go and get an ROImaage if it exists
if (roImage != null)
{
MemoryStream ms = new MemoryStream(dcnt);
System.Drawing.Bitmap bm = new System.Drawing.Bitmap(ms);
using (MemoryStream ms2 = new MemoryStream())
ROImageConfig rc = new ROImageConfig(roImage);
int size = Convert.ToInt32(rc.Image_Size);
byte[] cnt = roImage.Content;
byte[] dcnt = ROImageInfo.Decompress(cnt, size);
iTextSharp.text.Image it_image = null;
try
{
bm.Save(ms2, System.Drawing.Imaging.ImageFormat.Png);
ms2.Seek(0, SeekOrigin.Begin);
byte[] newdcnt = new byte[ms2.Length];
ms2.Read(newdcnt, 0, (int)ms2.Length);
try
it_image = iTextSharp.text.Image.GetInstance(dcnt);
}
catch
{
MemoryStream ms = new MemoryStream(dcnt);
System.Drawing.Bitmap bm = new System.Drawing.Bitmap(ms);
using (MemoryStream ms2 = new MemoryStream())
{
it_image = iTextSharp.text.Image.GetInstance(newdcnt);
}
catch (Exception ex)
{
_MyLog.Error(string.Format("{0}",roImage.FileName),ex);
return yLocation;
bm.Save(ms2, System.Drawing.Imaging.ImageFormat.Png);
ms2.Seek(0, SeekOrigin.Begin);
byte[] newdcnt = new byte[ms2.Length];
ms2.Read(newdcnt, 0, (int)ms2.Length);
try
{
it_image = iTextSharp.text.Image.GetInstance(newdcnt);
}
catch (Exception ex)
{
_MyLog.Error(string.Format("{0}", roImage.FileName), ex);
return yLocation;
}
}
}
}
//iTextSharp.text.Image it_image = iTextSharp.text.Image.GetInstance(ROImageInfo.Decompress(roImage.Content, size));
retval = Rtf2Pdf.FigureAt(cb, it_image, XOffset + MyItemInfo.FormatStepData.Font.CharsToTwips, yLocation, Width * MyPageHelper.YMultiplier, Height * MyPageHelper.YMultiplier, DebugInfo, yBottomMargin, !MyItemInfo.FormatStepData.Type.Contains("Borderless"));
StepConfig sc = new StepConfig(MyItemInfo as StepInfo);
if (sc != null && sc.Step_ImageWidth != 0)
{
Width = sc.Step_ImageWidth;
Height = sc.Step_ImageHeight;
}
retval = Rtf2Pdf.FigureAt(cb, it_image, XOffset + MyItemInfo.FormatStepData.Font.CharsToTwips, yLocation, Width * MyPageHelper.YMultiplier, Height * MyPageHelper.YMultiplier, DebugInfo, yBottomMargin, !MyItemInfo.FormatStepData.Type.Contains("Borderless"));
}
}
// The following code was added to fix B2016-219 (for VCS, the centerline drew through a figure). The 'top' value was taken from the code
// that draws the vlnBoxes (Caution/Note, etc)
// The adjustments, adjtop & adjbottom, were necessary to get the vertical centerline to meet up correctly with the top/bottom of the figure. These
// numbers were determined by trial and error.
// The following code was added to fix B2016-219 (for VCS, the centerline drew through a figure). The 'top' value was taken from the code
// that draws the vlnBoxes (Caution/Note, etc)
// The adjustments, adjtop & adjbottom, were necessary to get the vertical centerline to meet up correctly with the top/bottom of the figure. These
// numbers were determined by trial and error.
// only add gap if centered, i.e. in 2 column mode & table is centered
if (MyItemInfo.ColumnMode > 0 && (!MyItemInfo.FormatStepData.Type.Contains("AER") && !MyItemInfo.IsInRNO))
{
float top = CalculateYOffset(yPageStart, yTopMargin) - (7 * MyPageHelper.YMultiplier);
float adjtop=0;
float adjbottom=0;
float adjtop = 0;
float adjbottom = 0;
if (MyPageHelper.YMultiplier == 1)
adjtop = -3;
else
@ -3303,10 +3330,9 @@ namespace Volian.Print.Library
{
int profileDepth2 = ProfileTimer.Push(">>>> Before vlnParagraph.Figure");
string erMsg = null;
if (itemInfo.MyContent.Text != null)
if (itemInfo.MyContent.Text != null) // ro image
{
ProcedureInfo proc = itemInfo.MyProcedure;
// DocVersionInfo dvi = proc.ActiveParent as DocVersionInfo;
DocVersionInfo dvi = proc.MyDocVersion;
ROFstInfo rofst = dvi.DocVersionAssociations[0].MyROFst;
//rofst.docVer = dvi;
@ -3342,51 +3368,78 @@ namespace Volian.Print.Library
}
}
GC.Collect(); // memory garbage collection (Regex memory bug)
if (val != null && val != "?")
if (val != null && val != "?")
{
string[] vals = val.Split("\n".ToCharArray());
Width = Int32.Parse(vals[3], System.Globalization.NumberStyles.AllowHexSpecifier) * MyItemInfo.FormatStepData.Font.CharsToTwips;
int lines = Int32.Parse(vals[2], System.Globalization.NumberStyles.AllowHexSpecifier);
// Check that the Height of figure isn't too big to fit on the page, if it is
// set the Height to the printable part of page - Height of the HLS and an extra line
// for between HLS & figure.
float h1 = lines * SixLinesPerInch;
float h2 = RoughSizeOfPage - MyParent.Height - SixLinesPerInch;
Height = Math.Min(h1, h2);
if (h1 > h2)
{
string[] vals = val.Split("\n".ToCharArray());
Width = Int32.Parse(vals[3], System.Globalization.NumberStyles.AllowHexSpecifier) * MyItemInfo.FormatStepData.Font.CharsToTwips;
int lines = Int32.Parse(vals[2], System.Globalization.NumberStyles.AllowHexSpecifier);
// Check that the Height of figure isn't too big to fit on the page, if it is
// set the Height to the printable part of page - Height of the HLS and an extra line
// for between HLS & figure.
float h1 = lines * SixLinesPerInch;
float h2 = RoughSizeOfPage - MyParent.Height - SixLinesPerInch;
Height = Math.Min(h1, h2);
if (h1 > h2)
Width *= (h2 / h1);
}
StepConfig sc = new StepConfig(MyItemInfo as StepInfo);
if (sc != null && sc.Step_ImageWidth != 0)
{
Width = sc.Step_ImageWidth;
Height = sc.Step_ImageHeight;
}
yoff = AdjustLocIfLongerRNO(itemInfo, yoff, yoffRightParent);
if (dropCheckoff)
yForCheckoff += Height - SixLinesPerInch; // place checkoff on last row of text
bool noborder = MyItemInfo.FormatStepData.Type.ToUpper().Contains("BORDERLESS");
yoff += (Height + ((noborder ? 1 : 2) * SixLinesPerInch)); // RHM 20120925 - Eliminate extra space after Figure }
try
{
ROImageInfo roImage = ROImageInfo.GetByROFstID_FileName(rofst.ROFstID, vals[0]);
if (roImage != null)
ImageText = val;
else
{
Width *= (h2 / h1);
}
//yForCheckoff = yoff + Height - SixLinesPerInch;
yoff = AdjustLocIfLongerRNO(itemInfo, yoff, yoffRightParent);
if (dropCheckoff)
yForCheckoff += Height - SixLinesPerInch; // place checkoff on last row of text
bool noborder = MyItemInfo.FormatStepData.Type.ToUpper().Contains("BORDERLESS");
yoff += (Height + ((noborder ? 1 : 2) * SixLinesPerInch)); // RHM 20120925 - Eliminate extra space after Figure }
try
{
ROImageInfo roImage = ROImageInfo.GetByROFstID_FileName(rofst.ROFstID, vals[0]);
if (roImage != null)
ImageText = val;
roImage = rofst.GetROImageByFilename(vals[0], MyItemInfo);// need code to go and get an ROImaage if it exists
if (roImage == null)
erMsg = string.Format("Image {0} does not exist.", vals[0]);
else
{
roImage = rofst.GetROImageByFilename(vals[0], MyItemInfo);// need code to go and get an ROImaage if it exists
if (roImage == null)
erMsg = string.Format("Image {0} does not exist.", vals[0]);
else
ImageText = val;
}
}
catch (Exception ex)
{
erMsg = string.Format("Image {0} does not exist, error = {1}.", vals[0], ex.Message);
ImageText = val;
}
}
catch (Exception ex)
{
erMsg = string.Format("Image {0} does not exist, error = {1}.", vals[0], ex.Message);
}
}
if (erMsg != null) Rtf = GetRtf(erMsg, itemInfo.ActiveFormat.PlantFormat.FormatData.Font);
CalculateXOffsetGridOrFigure(itemInfo, maxRNO, formatInfo);
}
else
{
// figure
ImageText = "figure";
}
if (ImageText == null && erMsg == null)
{
ImageText = "figure";
ImageConfig ic = new ImageConfig(MyItemInfo.MyContent.MyImage);
byte[] idata = (ic != null && ic.Image_DataSize > 0) ? ROImageInfo.Decompress(MyItemInfo.MyContent.MyImage.Data, ic.Image_DataSize) : MyItemInfo.MyContent.MyImage.Data;
MemoryStream ms = new MemoryStream(idata);
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
Width = img.Width;
Height = img.Height;
if (ic != null && ic.Image_Height != 0)
{
Width = ic.Image_Width;
Height = ic.Image_Height;
}
yoff = AdjustLocIfLongerRNO(itemInfo, yoff, yoffRightParent);
bool noborder = MyItemInfo.FormatStepData.Type.ToUpper().Contains("BORDERLESS");
yoff += (Height + ((noborder ? 2 : 3) * SixLinesPerInch));
CalculateXOffsetGridOrFigure(itemInfo, maxRNO, formatInfo);
}
ProfileTimer.Pop(profileDepth2);
}
else
@ -5230,7 +5283,7 @@ namespace Volian.Print.Library
//}
else // if no left justify, right align the tab
{
// The following fixes F2016-033: Print the Verification Point at left margin.
// The following fixes F2016-033: Print the Verification Point at left margin.
if (itemInfo.ActiveFormat.Name.ToUpper().StartsWith("VCB") && (itemInfo.FormatStepData.ColOverride ?? 0) > 0)
{
XOffset = (float)itemInfo.FormatStepData.ColOverride;
@ -5379,12 +5432,12 @@ namespace Volian.Print.Library
}
if (!itemInfo.ActiveFormat.Name.ToUpper().StartsWith("VCB")) // Don't do the following if in a vcb format (part of fix F2016-039)
{
if (!HasCheckOffHeading(itemInfo, formatInfo) && CheckOffAdj < 0)
CheckOffAdj += (float)(9 * 7.2); // 9 is the size of the SIGNOFF adjustment
else if (!FmtHasAdj && HasCheckOffHeading(itemInfo, formatInfo))
// For Robinson, tried using font's CharsToTwips but it made it too narrow, so used hardcoded 6:
CheckOffAdj = -((float)9 * 6);
}
if (!HasCheckOffHeading(itemInfo, formatInfo) && CheckOffAdj < 0)
CheckOffAdj += (float)(9 * 7.2); // 9 is the size of the SIGNOFF adjustment
else if (!FmtHasAdj && HasCheckOffHeading(itemInfo, formatInfo))
// For Robinson, tried using font's CharsToTwips but it made it too narrow, so used hardcoded 6:
CheckOffAdj = -((float)9 * 6);
}
}
float adjwidth = CheckOffAdj;
CheckOffWidth = -CheckOffAdj;
@ -5392,7 +5445,7 @@ namespace Volian.Print.Library
Width = ToInt(formatInfo.MyStepSectionLayoutData.WidSTablePrint, maxRNO);
Width += _WidthAdjust;
Width += adjwidth;
// if AlignHLSTabWithSect is set, we moved the starting x location of the HLS, and following steps
// to be under section header. Adjust the width accordingly, or the text may go out of the margin.
if (myTab == null && itemInfo.FormatStepData.AlignNullTabWSectHead && itemInfo.ActiveFormat.PlantFormat.FormatData.PrintData.SpecialCaseCalvert)
@ -5509,8 +5562,8 @@ namespace Volian.Print.Library
if (((itemInfo.MyDocStyle.StructureStyle.Style & E_DocStructStyle.DSS_SameXOffSubsections) == E_DocStructStyle.DSS_SameXOffSubsections))
{
// don't adjust the width if there already was an adjustment for checkoffs - for VCB only (F2016-039)
if (!(itemInfo.ActiveFormat.Name.ToUpper().StartsWith("VCB") && coadj))
adjwidth = MyTab != null ? -MyTab.Width : 0;
if (!(itemInfo.ActiveFormat.Name.ToUpper().StartsWith("VCB")&&coadj))
adjwidth = MyTab != null ? -MyTab.Width : 0;
}
else if (sd.UseMetaSections)
{