From 3ba52e6ab4327d75656d2a30aa656f1ac616e3f4 Mon Sep 17 00:00:00 2001 From: head-thrash Date: Sat, 26 Nov 2011 13:24:31 +0400 Subject: [PATCH] Initial Commit --- ...crosoft.Practices.CompositeUI.WinForms.dll | Bin 0 -> 65536 bytes Lib/Microsoft.Practices.CompositeUI.dll | Bin 0 -> 180224 bytes Lib/Microsoft.Practices.ObjectBuilder.dll | Bin 0 -> 57344 bytes Source/Common/Common.csproj | 86 ++ Source/Common/Components/IconConverter.cs | 85 ++ Source/Common/Constants.cs | 21 + Source/Common/Controls/IWordButton.cs | 43 + Source/Common/Controls/IWordCommandBar.cs | 27 + .../Controls/IWordCommandBarContainer.cs | 18 + Source/Common/Controls/WordButtonClickArgs.cs | 19 + .../Extensions/CommandBarButtonUIAdapter.cs | 29 + .../Common/Extensions/CommandBarUIAdapter.cs | 29 + .../Extensions/CommandBarUIAdapterFactory.cs | 26 + Source/Common/Extensions/IUiElementFactory.cs | 28 + Source/Common/Guard.cs | 32 + Source/Common/MVP/Presenter.cs | 33 + Source/Common/Properties/AssemblyInfo.cs | 36 + .../Common/Services/IWordSelectionGetter.cs | 18 + Source/Common/Workspaces/CabModal.cs | 38 + Source/Common/Workspaces/Modal.cs | 89 ++ .../Common/Workspaces/SimpleModalWorkspace.cs | 170 +++ .../Common/Workspaces/WindowSmartpartInfo.cs | 28 + Source/CustomModule/CustomModule.csproj | 95 ++ Source/CustomModule/ModuleInit.cs | 60 + .../CustomModule/Properties/AssemblyInfo.cs | 36 + .../Properties/Resources.Designer.cs | 70 + Source/CustomModule/Properties/Resources.resx | 124 ++ Source/CustomModule/Resources/OpenForm.gif | Bin 0 -> 267 bytes .../SmartParts/ISampleSmartPart.cs | 18 + .../SmartParts/SampleSmartPart.Designer.cs | 71 + .../SmartParts/SampleSmartPart.cs | 58 + .../SmartParts/SampleSmartPart.resx | 120 ++ .../SmartParts/SampleSmartPartPresenter.cs | 43 + Source/WordCAB/AddInApplication.cs | 21 + Source/WordCAB/AddInWorkItem.cs | 44 + Source/WordCAB/Controls/BarCollection.cs | 30 + .../Controls/CommandBarButtonWrapper.cs | 194 +++ Source/WordCAB/Controls/CommandBarWrapper.cs | 55 + Source/WordCAB/Controls/UIElementFactory.cs | 29 + Source/WordCAB/CustomModuleEnumerator.cs | 39 + Source/WordCAB/Properties/AssemblyInfo.cs | 36 + .../WordCAB/Properties/Resources.Designer.cs | 62 + Source/WordCAB/Properties/Resources.resx | 117 ++ .../WordCAB/Properties/Settings.Designer.cs | 26 + Source/WordCAB/Properties/Settings.settings | 7 + .../WordCAB/Services/WordSelectionGetter.cs | 19 + Source/WordCAB/ThisAddIn.Designer.cs | 182 +++ Source/WordCAB/ThisAddIn.Designer.xml | 3 + Source/WordCAB/ThisAddIn.cs | 35 + Source/WordCAB/WordCAB.csproj | 222 +++ Source/WordCAB/WordCAB.csproj.user | 13 + Source/WordCABSetup/WordCABSetup | 1339 +++++++++++++++++ WordCAB.sln | 53 + readme.txt | 1 + 54 files changed, 4077 insertions(+) create mode 100755 Lib/Microsoft.Practices.CompositeUI.WinForms.dll create mode 100755 Lib/Microsoft.Practices.CompositeUI.dll create mode 100755 Lib/Microsoft.Practices.ObjectBuilder.dll create mode 100755 Source/Common/Common.csproj create mode 100755 Source/Common/Components/IconConverter.cs create mode 100755 Source/Common/Constants.cs create mode 100755 Source/Common/Controls/IWordButton.cs create mode 100755 Source/Common/Controls/IWordCommandBar.cs create mode 100755 Source/Common/Controls/IWordCommandBarContainer.cs create mode 100755 Source/Common/Controls/WordButtonClickArgs.cs create mode 100755 Source/Common/Extensions/CommandBarButtonUIAdapter.cs create mode 100755 Source/Common/Extensions/CommandBarUIAdapter.cs create mode 100755 Source/Common/Extensions/CommandBarUIAdapterFactory.cs create mode 100755 Source/Common/Extensions/IUiElementFactory.cs create mode 100755 Source/Common/Guard.cs create mode 100755 Source/Common/MVP/Presenter.cs create mode 100755 Source/Common/Properties/AssemblyInfo.cs create mode 100755 Source/Common/Services/IWordSelectionGetter.cs create mode 100755 Source/Common/Workspaces/CabModal.cs create mode 100755 Source/Common/Workspaces/Modal.cs create mode 100755 Source/Common/Workspaces/SimpleModalWorkspace.cs create mode 100755 Source/Common/Workspaces/WindowSmartpartInfo.cs create mode 100755 Source/CustomModule/CustomModule.csproj create mode 100755 Source/CustomModule/ModuleInit.cs create mode 100755 Source/CustomModule/Properties/AssemblyInfo.cs create mode 100755 Source/CustomModule/Properties/Resources.Designer.cs create mode 100755 Source/CustomModule/Properties/Resources.resx create mode 100755 Source/CustomModule/Resources/OpenForm.gif create mode 100755 Source/CustomModule/SmartParts/ISampleSmartPart.cs create mode 100755 Source/CustomModule/SmartParts/SampleSmartPart.Designer.cs create mode 100755 Source/CustomModule/SmartParts/SampleSmartPart.cs create mode 100755 Source/CustomModule/SmartParts/SampleSmartPart.resx create mode 100755 Source/CustomModule/SmartParts/SampleSmartPartPresenter.cs create mode 100755 Source/WordCAB/AddInApplication.cs create mode 100755 Source/WordCAB/AddInWorkItem.cs create mode 100755 Source/WordCAB/Controls/BarCollection.cs create mode 100755 Source/WordCAB/Controls/CommandBarButtonWrapper.cs create mode 100755 Source/WordCAB/Controls/CommandBarWrapper.cs create mode 100755 Source/WordCAB/Controls/UIElementFactory.cs create mode 100755 Source/WordCAB/CustomModuleEnumerator.cs create mode 100755 Source/WordCAB/Properties/AssemblyInfo.cs create mode 100755 Source/WordCAB/Properties/Resources.Designer.cs create mode 100755 Source/WordCAB/Properties/Resources.resx create mode 100755 Source/WordCAB/Properties/Settings.Designer.cs create mode 100755 Source/WordCAB/Properties/Settings.settings create mode 100755 Source/WordCAB/Services/WordSelectionGetter.cs create mode 100755 Source/WordCAB/ThisAddIn.Designer.cs create mode 100755 Source/WordCAB/ThisAddIn.Designer.xml create mode 100755 Source/WordCAB/ThisAddIn.cs create mode 100755 Source/WordCAB/WordCAB.csproj create mode 100755 Source/WordCAB/WordCAB.csproj.user create mode 100755 Source/WordCABSetup/WordCABSetup create mode 100755 WordCAB.sln create mode 100644 readme.txt diff --git a/Lib/Microsoft.Practices.CompositeUI.WinForms.dll b/Lib/Microsoft.Practices.CompositeUI.WinForms.dll new file mode 100755 index 0000000000000000000000000000000000000000..a292fabf3412968e3958e81e5e0a1242e85e7c78 GIT binary patch literal 65536 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 L4r}25O%42iDZs!9 literal 0 HcmV?d00001 diff --git a/Lib/Microsoft.Practices.CompositeUI.dll b/Lib/Microsoft.Practices.CompositeUI.dll new file mode 100755 index 0000000000000000000000000000000000000000..d7c8483d99a42d82dd0d49271966ca0d120f1f52 GIT binary patch literal 180224 zcmeFad7NBD)yIA3-tOBoJu^urGnq+9NJ1dtGSicgge3`E*caI(Y=R=$fIyNPyC*DZ zIs^n1B#0;=5fP)HETW(yASwvr;{rs*9pi$4kGLR;D~9*`J9Td_lLqnqJnvsG1L>+d zRdwprsj5?_PA&I{ldkdt&+{_;d*v0+yBAk~^X>Pwf7TH_V$%I1yw9~gw%xrghd;L6 zv1cqROr@=WuCOf*xz?wvz#8fBBW%a3LOiv9+MvFlmtx8%d#U}M;q*%(H%6=Qil zPkDBHoq4jZ7%OlW6*$pZ{TfKjL{|Jz-QD8$-s=R3P2zp1K0} zKkgUDr2GkrlTxqm$GbsR&=+kBzFLR`;eX20+mNR>vOLh-y>r$(4j0~c1@Z2n@96Cu z*uS-HLq6QJ9(XhdSYJGs-|kFrcXnWWSEehwVMuZ9em2ZyqKTB>mF+vRJKL4*%3Qf@ z*3a7dPV8)J#rK8&q>OpE)Uj(sCcf17!fXt4!Wd{i9~62+KNIhPe?%r5U#W<%t4b*} z{)R#|THz72?n(MOTF-h7S{0YjI{81+8hZOdYqp-&$DlZ+bz&yk4jk<%aXHcagc3Z~ zK=b1%%^7b1d?EP!crVpAymHxk$Y^Qr?HCxDYYkgB#CrqZ*xGkuM{5qIJ)e7hJ@0jO zPsULtuTCWowX)u3?jqkWw*v?w#&v!O2Delc?yp76-#P-rQbP`fEr*M!<*VJc1Apq49Q`IN9Y8q7-WLXb{AL`#EDD48K&9I_EFJVH z-7$6P4kF#OlwMlT$t0`A;I6*E_F&;xNeQjnCA4l2tyQ^@&>A}GW;q&4NMMsZ#-THV z)!TU9_yWAZESe8)RwzD9Ni-fZ9&$?d#jetufaSx|;W(8e_;J|6E#Z*_N>nu;Q;&RD zR%D4fOP*%EOUO?ffIkld2B$f(`lG7&s$;3i)zWw9>T6u;z{F9!XNwo+!!+v;t64i* zdtHi+t#w($AQLYTW5O7j3FFltLdSS$>E1c;PQ`^9Xi}qy?|F@tLvyVNr64|$Y=t?( zb1c3vMtp^X5%>^}ReThYFLbBat+~SZcoI}c*e9;vSj`7Rttc6bJB8xzr??2NG z5Aj~ZB572M5}m#`A3BL4-m>rFT+w5KX`%^H6`BubcZTr^crvpyeeIh&s`Bxv-u_(w zJijjn7k!1Q<@@`C0$zrVlX<=e17y#w=Z6H}Na0VaT}Al3tFkf8$?MT3uiJB0`vx)n ztjPo$fuY7=C$)r_=p?9M&{=S|z`;xO=&*lpCgqbAo2iUYV%J`@qetSdO=qVvxTo}1 zQssmAZ8%|k3co{&Y|jn)J^eYqtlTl?{;>Zfe-k`((@gw!5=M-{&?xJ2MZoLOqr-Y+ z>XI^GwX~RoYXW~u2oDn( zG>8vgD^>rqTV)KUw@2T3m7LR+v&ZFB52AaeJ&37Oy;szz_sXsBy}S9rka!-yg)A_@ z3FE{3(h}&aEak_KXg}c?4ifuMBSAmXN(oD+D=^WI=`&&fMM1Grt$7fgAxutWCAs!f z{$&P^&QwlsJTk0A+m57dgTfgOYkU@QodbKc#mn*JM|%+r&C`Wf;`F_xV_;h!SWMsw z$-`W0yb8Y|ZY8?4cgD}#;&%WV{L5;>lC z=O$q^r6&<@L&D?t_PgAP1YQj=E`A0(bMd>=Kp~k&Csn8W&bHp1skj^4>L$Zn z|B-$q0*ardNhbBgm*Ka0nc3fTiss!hA@O&RSk)$KDU+2(>2i>*F~Rm8p_N*91)fBb z_0Z2N3fD!6J>bCSdXnqW9uYBtUeP`70JZ(YGPc zf4^UTAKSStpRe;}*{wC|yg?jWOT!bJ*iGtRlBA%P0w^Z<7!Z zUk3_Atq6d$4?2YEKd8T6w~Y~sa;wrz@u#V`Sv4}z^<+=07RDP4nQ$?Kc`%Ui_FA}- z{BGQ}J0|4f4}qmHO5^SZe3biPp-p2C6D$|THwtL|{zsGr>+8!(h^-E2aW`~`TT_HR z?ZN83ka`_{S^c7LjB|t7htXHepph8_J*|bV)=dhSER0V<$pg%YRh}RYNK1I{*1{gG zn^smQa7#82wHBr}$qd3_DTOeM5l4Aft{+;z$VE2+>i6PvYyYv9>AWC=Lf2B!qhS=y6#7bo|IU;>o@&jIc zQn?uWqOE^o5M}5c>Z86l860CNZ?v~%j93*~Ll^R+TU92p0rdlixu$~wYsepx6o@qI2)61u-G6vSUtXr4>S^5lWW;FlWGez_s^ zm4?uRE@Si%E)r{kltcKaKDHC?IQW@ey@WxBR@)uMWtL=vND-xrZ>2dAA=wd`=&M5W zx{L&;`O(894vOPjYGygQiY?6(_jQ=UURPPNLrh6fr|!fgJV~w+m`8d)(#}I8L&oiz zl2)g`WNXH;O>att(1^?x@)r+PhA+``{pdT6DbY`=%qiWhRjXf~Oo^fFbNEF~VYYLl z7s)toJz}oKmcXJAs{;SVCWHEGMGn<4xTUvUzv?Q|PoL8;a)){H# zBU4HrrPOI*{3)m(M)05i8-fo@cw+UJwM~Ow{p)+sH6DJy7CXyoowR*f-`qy!_{&kkT(vLUYRP9vR zE95V}cUY%lm^}qu*gtwkWJ(v1hmN$Jb*le?t1LOQBeL;@z=t*0UjV)C{zaQW>wBS< z!Ptb>x;|rt%VL^u9~d>dCHf{lkr7`+frP(Bc<{N+BM`v7yMQ-c8Z~tOm#W0oagom7 z+R*tEz9ws^$lLZnEzwy+ZOzO&0#R>%2FH@oFrGPLKl0F5u<2`@_9hIpI&=(ljrOe$ z?IFrGWSy7?V3l~5O8E7akiEpM=X$(}vm7m&gV5DHx-4^^8YccW9FYBFduN|{H%LQ6 zE$zlN-D4z~R<)`8&<(!$aiGqoa$ssxxs`EPn3#)ilZ%FL?sm?NFGMbnosAJ{GR5X% z8@f3gx(#NS&zb>{H(T8iarq6my!AX~b=hm^_nn;KjV0O()<0OQ$&IU08Am1@C zj^<_Pqg-3gFqWK+f6NaN$nX5%X4md>s&%E=lX~s!O*`JzOLm0|fFohLN=V;)zQj1y z+A*g0ZOJ#`~PIjsii;COng!QqH;?LXSvZg#Ex_n{2w6oGYL zW}A+%ux*%h-yYZf0@r;5>vjEpChHQThS3Y1CG8~SYov(|bJs}8XLwI{NbO6P2eC$r zU;Y;zbN1*UzTHAE6N;V@pL$hi*|ewQPE(z)1Pi^eq8zzQMM;yvv?YA6N_duh@pIx# z&5pHq5MK;8{PMp^p3Juyvn%W?-R1$2-*LN63QQsuDm~PM4n^- ziR+yMW9bFov=Wi2@1mggTp^R|*gPJ%iKU;z`Ji4b_4K!`H#hE%?HOMG$pv=PEZy0PeUUJW#W;7&2T8^HlQ?tExd`x znY%6rIa34UJM>Pj*14{t&FWv1eeVZY>VeF73_sdmp@v%t4mM_ciLM~u7#$q;$X6Hwj1ChQZtgjdatf5=M`MYn zHz{#E4u8i$cWb;2o*~+`MXDJK$8;<_v$?Bvbq086&GatSESaOby-BlV;zj54%PNyT zm+^KbJg9N7i56(F9-k>qs1+Mp34WM~wgu=i(#t0j=o9XC=1Rn+{Us7DQz0S~WaDcX zADi>j5VLSCvsvwHv}o6=t=G%Hhu~}Fzy5XPr!GQnsvOKuRk>4S2elY2&_z%DVX*aI zdt6Cga}V>+m%F8R8`|AQtt9Ki>TrlGS|t%$v3Sb^sI*TlE0YcpTBfgQAIbg1zm|rr* z6H;%Ie30br13TxOING!Tj@c*)O)?bvIJ{7kP&X?&o=%pWo1gw?b3RvKm>Q33e4FC! zd5V)ang>r!=*ZOQ$i504J0^4lY4KS$rD_6FvsOH#R{VDwig&VZiZ}Z>SN1`EtvV6) z4Erx{I`KJ91To8_ybOOcaVz3w($I(b#iekqGP?%4dMi*+e2+NmcE2nsazE=GK;3B` z`mS=9&V>q=SZi?FbJ6ZNotvk1xX$@o#+&Or-I=aTufMS?V{=?<=|L&HZ6?b>=S`U4 zP4nq?bO9l?PGX)f2gTdd<_(Hp!W++`F41g$23Zo+K#o9gNk)DMmrlkxqJ3dCr-+V# z&H3K;f%6;{)&(4sq_4%X(+-<-Fb5-tKT9;^0=e zp*z#ow|*4_cjvlty-a~`BG1OIT>J$vbcG!7;P>Vk6C!A5tm#0d0EBhkDirl2N{QJh*6st`tE$hr}HN0|=zK z_}WqM=HUizRP_+tgJ3<%Hj;AWB|rFWC%aCl%C4IIVT3p5ASaKo20J?UB8!=;_r_BZ zEa|nU`K5gXVg^h=ND9;ycfw$IvBMqE>ZYKI!nXb9BIY9qhiVb7j&uv13+gISb4}aA z9Pf)i-j5%*aNHlC=Iyt@ocI6&)apQ-!DQk1)>^INgMim$MxVFc99OrsbxKyI_)6Nq zQbi8~E%SQd9R@9wPuopOt?`-S$ROz!rGr78&&cA?Ba1_rE8Qi64gp*>H$3YjWex@6 zu&(sWs(WFybN!%1Vfpw?{8$@jyyqzs2I?r{U<+&2=x}iQ5h*mL3FJA(IC6A0Is&is zxMPVScqGBW-_WYrExo7K)!%Z2rY3_WGZ4e#t#l1rK(1m5!#6e5t@lY%jeTKf8mC{iZuN=NcGG9n^O^IaF~BB9g}Qr@dEPY5*#~_uPvt3Q2UDc?zVxxt~Rv__Ln3L z(r7BF0KbD2gTKJ+(uUb3IoSbG>b&#bju3)3@V3@}b8$ZzduJAMafHVSyuMZh86q#n z>YG<<<{RYOFIll82T>Y)?@DinyPe&}$71uzZ#&*;opcmwutIeO>c9KB(^wIWrL%3U znXI>jsD0vNP8}dWI5r7!1WH3(To2W>wcdVj&3-o5#tqd@rz^F7II1NmF>3Sqp7t<4 z2~Tt~Kkb`Gb_A{QTk*D*+QeyBLIK;nN{VvzDwWH)vCRzQRXs}9E`3N^Akj;@=NjJO}b8;XEg4U4(PxtUOXxdv+^=di12(EEfmV_TxV&m62t~e zdRD7sorD5}zZF9E0KZ>aM7|2sK)R5}Vug3Hp!3aZ37B_)E)f)C2i~RfVktYzUj?>=}-bb~NH1EgIY6x7kx(bY~t zUu)eoei+Km-tG|t{au}1BQ^{vuA6nF7{+k>9G$4Ovm1CpB*{P zqyO1BB4@06eF+JK0r2$d4C0z8UPWYgb`EGgCYyH2Ps;xjr1j%DSRouTos?Q z%tLGuV&@&~ge#Nd8P%$7W}aw`kU}BL>U|HVJ*nOH{G%q`nfx2UKm7@Q3I87CAELSn zC#drX9$Jw{W7vX#v@M#OZU(-WwcC7gqy!PJgTzC4XVZ?>UE!i1zrxxRoP>dLy-%tR~#@`Jb0nwc%VtkIGc>gFC*8JUYs zq0?_mD-W$L*hhRU*C(w@t2fR&=PECMEm5+tpR<7qBz1c)>FLb$NhDm-C*}JOee%w& z`((aW0WC*fXP?~M)9&YzTGTaRQitumgA?6Bt+RMdS_k|Wr*#NyJ;HdU4$J~c9prP} zFGiFPurI1+l1PcqgPolN6Bs5etDH$ys&=Ac%c86uma>@sQ#XX@K-K+836r#?M>a&Hcd=(>y(fk zKTHTJ-3K$Nx3ZcLHBV}a9PXZkX|kooV+Cx^mCIu8dg*LnIRHwek5hgHT=7~(n2iWi zkT)OtN*{nET^I@~O3{_IgoEwH^H3cUGgShNv5JH-6H$oHUk{6z;gFGsk-xC4bOB}L zOY8V;FI@xjj@GVh1zu#rT$)K_wE7Vm0xO>j3FwGUSWzV!5Vvj#uLVO1868Tdhnx4U zSx-vW5!KlSa@DWR%B`rz4Jg{Sgdc1~F}pkC8sn$6Nkn2iB~GDr|G4^Cg=}9^D;7gmHav2S@j|)F+XYqB}^5O?!>C!wIG9N!HQYW5xRctlZGR z2gm+aBP;$Al`LHX4S8c@JA0s2in_C#PY(;2+|6cH`Vd$;6K;$4wjLwd58(6-4JEXd zRTr{HDaU_Y zF{OqYEjCDQ9E54>kr_LL{@U8S?S<8&VkhM|)CrWY$8h3z-y| z+{4YCVWF+o$LV*npTLTd<8-yd!&dKZ3C!|Kmr+1;IX{wt;>`+N=tTy;2WWf+KW0Y4 zG?jqX1L_>u5%GQ{zK$?A726ROhxZaH-b|J7UxhzyDV_>JhlHF0UHu>*CzJA8pvmcMGl0zBxUwnbFCg1ffJpetF%8u5miGm zwqz+R+4S~QW|lrc>C}sPD(v9q!8HVj6wC64c_R$FGn@CS?FDwaZt{Gs2TIFuxKTB1 zw6~S+GPxTeKf|!UOXJY>$9`|@erbQ~_U0b$4X6*vuA=_IY|s^5OZmmS)GMyT#|^L# zioP(u9;dW{A8djj!YPi+c&l>p4S3N5RkhaW!vs3pu+#W9mowLNMK=P=mp;O8yR+@h zeJ4dZuRHv*$PT}N)=Y{Ahw)7$jz7vzVc*2481{DO2DZmonA;#jf$WI!MkQ#2V;{rA z0w43C?2KI)GG~2%AeTfmoQ%2F&&3}X^8G-d^Q2i1)zj0Ov$iZXo3AZRlO{7jpX2+@ zDwHD(s&7~aLo0C!CNKn@P_tuxN|y}c(r45tDsxRzW}WFcptWs%Tt`UghzMbzN}@g0*jYIm1X@3utF0LGB>egS?qSqhW^?-fB7QM!N60z1S|2zw z*K0S7G~O%dWz$-VB}P+p7b&}~ukYgedRuh2KW zDoYO$u};+K*mow&5zYuHs_~$4e=>|=Nz1&(%+H<2(pO1dIgaG0;>XJwk*%C4H>kj1 z^mLuNM(|?lN;U5()iG|HMOlmmeHlBA;EqQmdq?i9RA@Je3dv1@pTPQLxo<1e_+g57 zcaV^hp}S3#Od&2mH&?Os<>N<0Ct6(wtJT-!KLLMex6hgOnIOW#ZZ6oTEhE;UtYkM$ zO?yD!`pJ0B#?U6C!lOcQGAITT%CfaeNuLVqDa%zUb2^rzY(#eK?9tKJK~!Mwlv{ZV z2r=bcxoqt0v76wu>wSKoyAAKoJM{Li$reVq4PdU>{}1{4lTiE(1&|GDkNBGkFuv6) za@8ud>6Vb`EG!)ez1F4~$u|!nk8G^wOV+5$k{nNl8eQzwqpvW}(f)gpod7JsqVF)4J@iRD`uHQxVR#Y(==+pJ~BFjG;(noVds)S05P%iD~`^)t*CF%ceITG3#L*;1Uo`j)Nw{;%uEH zV{(V_cBHrs%jB9SYYTKoccyG#=ww)N#`ID^$&JZi>l>4kX%wfAG2i&oJkp0#oFLJ7 zlWbm{;M)Wsowr1b$&JCC0wXMb5|$RWtx2{7{C&XA;+(31EfniIsNKq{Nm`v_!!DPa zY#b4L`( zG5!g8Yz;DpauML{75^YQL&0q+h5<+l^ zuZQ3=#=3%Rgl-_N&dk~*$!&7vU7ih)%s^jTS7rkj|3c>P)(EX5WZ0jm37fr#S-;W@ zfZ+eCn5(|WI@;mPq&R1|kyMX!Oo|hXXfF*Ie+|ayXGUfB&aK|%;6vVbjmU0VBuNS% zk{5ThvACR##Ua5tb$Jf!pfEm4%c;#|Z_nv+3BolT+%Ma-ByB)q+sb4MbZGO~3LuGDMa&3$lf?Nf zuJL?LinlDh4tY=(a#uoNNJ~${$BNMVL0PCAKt2g1WtFRJ8bE@(5lKL~Twt2t(-Wbz zg#FX}Ao0xu;SebT7jdUwdPYSdnW^2g@}4bkqC8hh3IrA9u>O^`{UN47=0@cS;^)Yt zOQkOK8$$hlS=qFSEjN(L#5DNn!ell7*XqPoXN@ZcS?p&w(*!K!bq1(F zn=s>cans1o8?U$*3#P={Rc!waqpV7^_M!d_#zol}1kc&`Hbe_iP zg*K1YHb?8tdX)$$7bU&^oRIP3|Q>+)O4FB6%d`Zr$9FV5!L#dBNEUgfikJ$1SB z!=Eimc2Q6m6KvWoog0dCHT2vCjEW@ykLu0BO_j`AVLg*M2|p!jJO9!RrOCPj{REar^Le z#{#Yz{<%kUkE2;n_Qeb4JjU|e*`wqEmmFYi_?LIzPL?$z)j$J z;MBa26;QS2Ih_~|;|}DYTifgd51EBu6>l^GvcR%!J(j-pJJ6D>TXL+pI}=>K?tkh| zVl!OrqA}Ea0+g%05_}%|J?CtV1M5ZAH>eKXt->mh^HJ)gv@2(Ba?`9$k=Vm4pNmgn zv=sW9L@Xp?E3m`EIWZzTT30i;eJ)URw1qJvG1Q@FbVxh>Ht!sr#Avv8n2hJq-ujQY zvubDZtd$xKYYVqjkbnF*kmIdnJZqM&;tA@&qpeD-52DO=)*ZRQS?Zq~++bLGFGRN6d9na{pQQ}_ZB?NbDR>-|4?G>LG$ho1!te1!wEm5zk(N zr9OV*vHbL3n=Gbd+Qk;rW?b8Z_UX?1Cyxlowr~l&WvSU!8b?NYBo^pz&@8$&s01Snn)DW&c3m8K|Wd^M)jOaF)` zC@dXPHAjNf-^N2eIDLy&VLY(~Dr>_2Rl)fxSyZSfmv0az@pNK`6r=~uz#o$?AJ62cG>acLAZyUs z06GV@ODg+SGI4}@dKa51yC~DH`eA;~Cw2Q_^Sb2{8Ml`=c&4k5XuA*EmP1=TER*5B9VbI77TUnd*|bxWXvT)6OA=o7p*? zLCJ%YWm10dW1GkD{z?WkvXR66NF7_e5#47|CXx`qJ|S}S$9ao`@K z8rDkb80q9OIBTU$u5$+!M&+1cI1PAZH~IBz*!|kw6gp2_(iRg&I+AF0$O* z@rjGW#OxBGO$MVL}>TQP__BxQO|5;h|c@<9=yAm9CsmDqiT7 zw_;u`11c9dub}JXjrJFVe(+!AK{6kpTqXwx;VL!<*223>6xjl}tg=gQVJ>M$va^QC z=NlK_#hZvCzOh0}nqYKm)&^pF%6BNQ()2u86?#QmtenN?IvED8q`1|CMp z600a1i_DbwK>Gx=VZn0JE&2 znzJ$M-a-o#^vb?JimND>Z*9VM97jZ7cux^eG-O+(8WAFXIv+1^P>=^Tct;vr0# z!`@7^DHe~?TDIdAF&l+4*P*{aZ3W4j>AyuC0bK?_aUZ&2?apz03>b!Bc8g1Srcy2d z<`Vj4<&Rl2IV}Wz#w=nPsWf`DwzqPj3SfYyt`(@cHfy$Z7U%F!)azQl+-NEae|7J{ zm0%}Dx2GXCCeJ4Y5sE;Ft-;W80`#q^4qo?WF7oSPvAJfPyf`5ybq>kN)wp}0D|1*G7o^uQh<4&LukZ>%hL$+q!Bd&-=lcarS26j z?D8KI6h^w;UY_m6;=p4b)i*+>(&i<2S-KhS=?=US*n4yt?!eyyuyhKo6eFK)N90so zy>^KRTPP6s-xmq=UV%!;?0n^Fi#5vC0k0Lq-HXh~<&A3JYw1AiEyEIJxXLn|Xz5O} z-;(5fv;u4O%PY= zlV;Dv#e?DWDHrk4h6ulAA&=fdOtK5;{JoVAkc$B-`+(YNHFXS#>-P-moHqp5CJ0b4Wi{996^Oyte&o6(7jDxdbjWwg;an*ColJqmCDcwLzPw7zl zMMVL>e2ud1*CcDNc<@$Lb-7qH43n}66Ek?eqJUq%PMCIUf~l`(cy1+C?v=`|fM3S8 z**tgeR=Jf_xzQE!6$SkA^{#~(pxmPK-0)F{g;DGOZKH z;KO(#G*!$B_~i}CeTYkkEp_V#>JyjWCe%ex_wz%URl)QS>CUe?H=IW)*eYjgGTx^23pwt=?;F8Y|KPX6rb4-h z`A9eSy@YDSM`}6Vq}fAZ%i$s{M`OfIwH%C-mWslb!$nw*#)yyBau_OwEr*M+9E}kh zYdH*+!j{8D)XJzve5{s(Wyko6!j{8DSdPXBG@J%rDQr1hM6HZ!#LdHUC~P@gL@h@( z;+A1K6t)~LqL!l?@rhwM6t)~LqL!l?fng-A$5_=|VawqnEJtI+t;2FCY&l#+Er&%g z%Sm47Eu;72I&-RgcE3T&paSTs(Ff_4)410x)g`))A3wfPJrxWZw{q3vh3QIVNhg{> zub`UEzQq|OEd}et3Bbk}5t3F)Ah{z~ zLluRmFZ!fNL-TPS$$RPeXRGXJEphR7HpL8fZQ3Ul>3-=!BGxdyo~s1xgfbh#bMl^o zd(P{~>nL_B2Wk5qDYAtGbb3=vbc>pt@vz~w9md-zh~YJbDGQwLdt~EV!&9`dzIqsc z`zm6$W4=Dou%04Bx8%&WxaZdB4&Ahxqv`&NSn=bJRMQ4}!=Y}@A2t(jlgz~N5CU;p zGW)s!Y)=&g-xzn8>l?fI z(VZmoBlLbXxXx@aPQ3GthTWJ9^0xBm&Si}TtJ&G)YVJb6nO;N?h!nPIU!ZBJKfYsIqzo>aRrjVb5%Sq@#J>gA*+?~Ial znntJ8N4ZLe4KMK6kM~$?b_H`e>fyO@K2}#K$J)59$Lq&aDQTLUbhZ5tuY~XQcT~sQ znkX}IHTM}9~0>P$&B`cE)P0#)6G5lgY5sFxBIjJRAptBuOW8vOZ>_Jd!P;&gj}11ivg5 zOJ6aOTW3u0%bKAIj0m}IyJ{ySS>545O)kmJMtgY8(Hq(sUPbe9s1U7X}+Z(gFD111riMk!EI{;nfqtTt_*XSmv;3GCv%GU|QfD z^zqS&OuRvX>A|4%X1J z%u}Df;UYQdU(fe8Up3EG-`m`#6o?hGf}!K7nVqoE#heI6=MBW_%7x6N42rR{C%T<|Q$H zS;2_O)e%zZR-!)3%-O#L%T!C%ccSHWS^Tol&APW&+L$t7Xn0BOXR9y+U=7_52>ni^ z7~SsM8_>>~t2=3;JZG*%pfW|Q1?{V-z0tSDEqcepF8l53wwcNuI4Vs+b%QD(iFh4b z)@S?n%5UXU!sxtr%Ij>WcfM9E2(IfXo{s3Gy+@keReUol!=63Vh8 zzN~wYF3JA*YZd`)B5y_*e^$X?3v(|19RA`3 zYV2pIUSVV|{=8xdwDfEVu=H1L{ilQT-A4PqMAn@@P%xj-u_X`|_Rg*SENx>(%RfR< z=^pT{6Ug8ZBWoaZB@W=_s3803JCUX}{sO<+>A4rz?RC+(x?|MPU#c9)`g>wT#or^LRVq34(pEyAVEhj>1IS zXwtPh3=%udLF<}pO^!N>sU<{ElH2ho)EPTYb1?3PiIYHL%I!2VG!8Bysq)1S3ek`7 zjkQML%$;il$Nttn3!%XOm?R0T^b`E;bO+Zeh@(;J2e=QzKivh=+*0`*qaZOJAu1WC zZ-y?UCQ6^8rsnN(E;nqkKxC%R4D9j$zS)rj=ytXu3_5l?>vs#WWJZaq$iF!kx?8rY zx3jHvdV3z~&MqGb-g`*om%qSo^iwGA9|n6$FrB-22l@5a@IvY%@TKmB)Lyo2YoMQz zwIcLE@yW(?Q~gaxrvsoqax*z@R!l|o1o6*RI2;qF#IaupJa@Ik3gZP&ep;e>{{YnG`cEpYav0!{c0$3RT z+J2wmH-46%zS$GQSfSqdIeu5aL?sHy9ZT>VAkHg+oR1L*U=w{>@W|ym9Y~LS%oxnG z(Ge8?TBXZ9>mRkU?Pq7c&VcqSjrMAqOtG~!sYb?bVsT?86aU^y5zX-*@U{<(=WzhU zuYI=j1zaO8i2sCl8c{Fe4nBnmgLeZysA*efi}XDDOfPzivr)`)d?@{yfOlbO+QKBCW?96%i0SG`RSSgyuh2}b>@jt;iBP?;2pA7?a1ZKsp;%9v+ zjQ>TtG(sgBj+r~UWzMgw^+Tpo+)jkk!^6>(arfn(GAsZ&Y{~DA}A-7k-HyI?eF5K zRhMX!(eKB_LYeR>;fGIt_eyGJ;8f=SV_`@;XW*<2cg4oM{q=TMA#E$jY$D#W{^Sl=Q1Gqr_s-Ce#4A_MuT-@&#L)r`;uD47w)(_R&Y>mugEH$ACY7cqKR4uvg;i>T$W2seiuO6^C{2N>erB+t7K zWDf4mbsd6*8Tx{SD&HIR@XPUXgV#PM8N|pi-8=~*4r?Rz!KeA3wUEZ4?!cABOS8jw z4$N;eE4-e;zLXBLnsqpbbqhPS#vBOA7q$a_iQwCSg%fK@FdC~!9@sfCJ;Qr%<9C-u zAxBusYL3DP*eXvvj-L}D$&G~(-r*;?{T4)Hk5SuyxBC`jaZLJlv_Fz*LxtO_iMMU! zkG28PGy9(_!;@mngc?UJj8G&}%Hu+r0T1Fe9j4~Qlf<8+I9nzl=5LYQbtS|i2yeHfsG zlpi)BWt)VQ(FrL*JP9)NN!3PL2KRBaaMsXOqR-fAI>%kmb`7-E&*Qbu$?cnykw+KP z{aE?ex@Y0QBqR%w7MAL%L9`veg?^&cU+u%N9oYh1P?DiA!nv*S6ooRaots%>I8k>) zqo~Uaj!9~UwkBo=vBqJ)PTGqvoV0J#m~y-x>z%RA$-u+vdyngFws-jr(q2m)x9T!; z?4C+e=H%*>9>J zqoLc9;&W$QoYO`c6N%(PYqE!yaeGgiE7;>)r4i^9H`RTDOlrq?yIktp*5|_Jl>6Ph zpmUG6kOp12%YF3OSy@I!9jvNsV7sfiNn|^y3cJ?@@@@w2sTwMo!NYhKlXfzJZ;fMe zJq`uh9gZ{%%OkbZ#*TQxV&vR96f@`&WLaFXe zq->Yn zq{~{L<|{Atodso$H_r1}x04*B=IG;Gt|KLJrME&y)}6JZjygxpSt?zzrB9-UVNpLY zAR@~@9(VEH#J@Qo;Rhq9qM7*$IEJ$_D1bc(SefqP1hKiKGD849xq~x@+qE7U1+oEL zK@!n<^{Wlv>QpoL*OW>^MRallR1r3;D>E&Fer9foSk$}Htf zl4j9)s`8*R+i)7;Wu=OD;b(A3Qb7|Gyw`5ERe-N}D3OVbef)AQpZg-(u1dluN~$SK zyWy?uuJBl61J{L@BpgY2A?0e`)4Xk+GS^t7)6T{!jj)6On?c8e-xxdxq*J>?<9}B; z?_w|vyFa`yV=@CP^v5e#_Alpxy6Y>dQcJYy14#VDPOb)Pa+i4gtCLte8*lfCQF?UO z$jZ3lV{|bcNY>gK?M=w->c3#MuX25mTwtqWNWNf|nq=s&-_=q!WxkIe-mK)|disDE_A4g&=p8_(B?pLp z-Rurbhc~(4`nyj4$0Scq{;v%RoTWGBuBD=ST89%S7Cu%LXA^b-63+G{te8aAGx;|kMAEwOV>IZu3+ejM5QbX)nDkd4_;`IR=KQ5&Grm){Z;sfAe zj545i7Nj5Bg-TSv7Iee=AlM~qwLEo826l2ZARWAO^ORJx{?e=5$?K5@?eyoPyo0Z; z-o@)w9T_>BRX2@&^PJ)U&Q52BxYGGb$Tny)$NZf1u;drYMs@|YFOu=*!W-rc-XIez zhI6RK8Mvgzc3J(h5XEn2XmW3;bP(*Q(5WzNsJP10@+Kv_N7sI-@}^6l%SIQ9GUnHu zzOj?o+m$1+x05J(7fG}a6OHKb_u`8P2Azww4^bQT?lIINRL= zn+Z;K75Kn$^iI%k&gH7c`4rEXDJdR()utJ3MiF<@pkrE%kTn0u2`>LZepwZ+d+kg* zrElkWKLTy(cZ-ce-s8TPe&Z?|AF7^ZpC5A{T4Cw-VQP-KAxGyqjM&BxtzZp@1CTQ--mp)H(>&wH+z#&?tOt_ppV;a31#=5e?!A?%m-Xqz4IHl5ij=-sZcoe*j z&h5Raht&8U1OMn&?H64PW>%`s9q(MX^D>(?sMYRB3K$ry<74{GZVFdTIc4ISzWS!u z({-I7ZNrmJuePCKJqoN>d_oEvjJpgfWK!vku8^;G%78}D@OlPE!%IQA7T%^r&<=1+ zVHz;uYja)wIgF|Bve`Kd!O?H0;ka`cI||TSiE!*3hGO^zsp3DZb%Bbg>>yxYMVaj! zhGCg%sW^wB#4Zb;X~mzM!%(JF`!x|`fSQ&nBu2M8hp~}1>McD$1M3`y$k2iJz#Tk+ zRX0LS|7nS-s&=h4h>nJ#(gBhea)nkeMOm0Wq&b~A(i8sDaf(dxh4Jx(bg;_s#3u-W8=nV}{^Qp7R9<`{KOJn{ z@Bs{bvag(k8^kB`Tgdda^LcAOdMg3jy1}N6Ss}3i^rAJU{ky~C5e8;>&i@auXj&Cj zETMtpF8am`^6TvYd9iDHM{e96NDXh!3;eL)5S%`7Do)IbAzxvV*P>GJIW&vbiUP%G zc=^g=MV6P?ul!nCGV>-&wzEkqsMeLLTznco6_h0{&xCM*drIdk9HC|9E9g}!TTTV_ zEANl9R4n2aCK-~{C}a7-M-r+WY)db;EXSXOKwIe@$-6CSt&DE1^o)M3^cq%h_3O8G z_@sa7`c3Vv`2@QP@7aj--bq`e4dy3pnVsRrM|W=t^^ZQ{SXUAM@UO(Fh&{H1&%wT84N-MaF& zhMXWIyL$fa?oBFv&u+J4ymUP<$9vttW-e){|o?T>O}{C9S%vHSh6}#O-PFYL)j% ztJf-EX@9$poO6C7`o~lRr_Iq9lm1o|pwHlQSVF453FP`)$)%Q~u2$<*Ly8z{xdymm zc)r4}Q>|7^8SRZ<`Qvl=DNF>dLX~qBG0rk3{mdwG2&|vol~Ci5HuN(i%=+2!uAf<6 zqgVaRqF=M01@K4zhWE2ut)B_o*8S`}pz2#jnT8I6wD)&%QYYNFC z|NIK!z>3+@t0^Fsq1NfCr_s@FqYU(rwWQK59+!F>($(Hg$dv_st@&g7ROo8{aB9j0 z_)6>eK~q3GwSzp;CHJOGC}7N2=Y#fvUaZD8ANWiNlB7X&5x+ofD)^<_#ji~Tb@RaX zGu%8NU2uPJ-vRFWxhY05#TLj<2cOC0&IdkykMvUE_oWrPPjNEU+>?q@J&fmcmp*U8 zY==Lc+EB;x{dcGJJx1A+x&&6N&4g*R*ntpnlWQhM)v=evt>%|2aLe%7E3?%MoiU7j zw}lD$J>+?FUv-*Q)i}4B%-!v3*J_CMaDCC83Z`{n;;c(KQlWz!7Mq{15TlzwSU#en zF=4 zzcYou4BqP71(?G7e7pM8U=wHDWWAjeS_0p_(40Kciq>7r&xg4C(!&QCw<})zb`fAij}>2Q<5jTXZGRPFIj zzGwqGWNCOWu9*)_PKb_IPkR+?!?!?%#njL99w7BH%@IccWd4{yQuW_{nTCf zgpeJPk2pvdV({lkoXKE|G(B-Pbg}igOi50Ng3X_-e>2y-cil)p41e2 zLsRIlnnHWKn&I8EDfFbK(6vpWUv3J0p(%9q=w>t=(iD0}Q)s5U8HQb&LYFs%Zfpwu zK~w0G^63zrqGL>G=)x?*sQcOnnG`C3jIk_=;%q!@E+3?dQ&5Gnm=h|v?r>a3>d3q zf(|Obl}d$9CY#RoxOYllFAK_p``4NZhE8_?nd0jRwe!L7KHb7p`l+PopbZV!n zX~qvqF|#r<_V&bQwkjhjf~%44i=SW|gW z#wI^+Z{q8Ked}9Vl21uZI{(Ai^WzOxrz@A0KBVe|-S)Bc^X+5lTr9c)U}szMosUyD zy@dsg?X9&%w(3YeXZuQZ)zRJ7)z({A-o~!BK3+m-b4POSL+xLatH-h#Q|-;d8h@CQ z>OaH2&v`PM^jd@D;v0$Oe*ReQ+~ktf37}Fm3a! z?yS@3w?ML6ZgsbJwKtN?#xKfyS2q1>s5?*fj5js!?&W*l*p^XI%dGRETkXCFZE^Qj zZ5S3GrMo4)#6D{>+CD+TUWz(E{TEH1lRZXV#kSSVqqPXDBwH^={j_B9n_$~&fykRE zZnG;}d7k`q;NQ#1RDLIigSdYXRvnN1Bc9}VEVjAv6@}{}=2PRL#)ub&Sf`drG{)_5KEN-bXLJFhk)p!WCRR`2kc6CZRyL-uR z>rSrYk*^LgO z1k+)RnjoRg9d&HhD%p6Ep+2S|(mj&MS&EEz7IPWKN9ND97kMBN|A3S^^YO54 zplC!Mb6>`auIwW~>ErZ>3P}_vh&vZ~fB=1#XO4Orkpj7Mk^3sLtY7UY)Xqg-?Gh@Y z@m%D7mO;OEE^=@==qz-z3g6#ijfArN@hw30E?*7g4ljNJI5}NDeN%Vx4paQ7;h z((oB!R42}L5fao4U>9bI3--xalNUvPHhcx!Nai$^WMECAH znx%AY#ql-ig(zl)FpNGYw%fdko}xGKYiV4f!C>q_%eZl+&nuzs+(o3L4HzdX&on&0 zEE2a;@$4(soHX;i{f^MD{xr&jLA_u9TI{<4c#?R0)xTG~SKecPmtA(*yWaJ#i!Z+T zqKhtCw{G3qwQJ8m|NJ#;)|_|VdFR;Q*=L_kV*bDK$}5o`P5&Nz@Ihf-w~qhMJ@;If z{<`a~Bk@PlzkmJZPyhPU@BjJ2Z)=HPd4&=ym5NLMp$~ni9{Ioj{#W;Zg4q(2_reP= zbm?!p>83ya@sAGuE1p;V->3lbIue8Ml1nae>2JB^mKR@q@r4&&ASG#3CHr4~&m-~6 zFTF^57~*1Xzy0=?UU~`q!ki>_1S)+}?kmO?i~r1LKJ&M~{f#VX`f6>AHbO7I%+J+V zU+s{6{_~&z$3Om2hrc0x6~EYM`0u~}{(t@JU;q5)Kb5XVQbK$+^9?uL&?LRfLM~-Y z{+@g8xo>^zTh;Vm`N~)R{qKKYaKQys(}t!mj#tcBwea*Aix(~$T;=jp z=JKU0maZH+C@!uzVCiWKS1%vhYsx!TFI>Ltv}H?|OqmRkD@*?^PRlfpV*cM{JhxUL z(qQ^Iv!}Fu}5aynOl6#cF~nlUFQTdDP;?tBcS} z>#bOLZW@|7WrizkhFY(#v^@o=Blxvy@oL5Xm(@6Q4{q&#``I;>u~C|1^!Q3!kT^I&`@#NqSZrb$Jw`3TDoG<^79U2Xr(+;3zBN( z>1mq+7@qIARZA8QEj>J5ywG(F$89BCdERly96Dw4>Jt4ZUZvQD%N?TsrYkhB^?${| zv^sUDUZVro8vp;G?dyxI(mb4n`z~J|pOX?<Sz3x$7Z)!rRei@SUASZ^`uU2|;<&hc z*`mVa;}dZ{Yx>UmuP}LkxV$j==+%psFI)VkrRNdUG&C*M5 zzGlW(cmLqTPy5&3(EHBo%YPYj)A`fhanpSpfBCW9u3mo2%iGVrb%(2Nx^>c=H{G%E z3q7Cu{x_fa+{S^2KmYLikG$vakDY)2l?T7~{)e7@?*0)MFZ<%ucfIW^H~PQ&THCtO zk4_ljedDvAI^r8EKAL;{TSwmYz2`^V`29!kf9(7DwjX`p``9;rUTD4l7nk`jK7HAH zE6@G;_^j{--`2Zn$Gv{_t-+mcL`{OZjuJ58H2g=40(2zxdISr<^i=)EO_oW7L^{IcRk7 z!Ord{pZ#&)pB}nI@ z|GsqgaYwy%?qfSo*ki%Zf4#>Y=Uuk&-4{d)|wv z%iqp>UI+fK0qe!)S!(yZpU|vBtaNT3;dzI$q{^U4&qinXNtfq+B}7pl&9@IbJa2#E zM-e`exM%n`mVY6A<7HqoiT_A-zItF(vlkDWJ8)U@a!#^z5-qUpSXF7SK z8hqQ}z6Bf~Bi|jQn@XAI;64Ezyr1OV27TWlyqUD;6MjAeP2k-Fdat0|JoVs6fOiQv z*HhLNlzSfKKRMF#_Jr3+c<`J%Kz|_julc{JWgEi^zW|WzD0UqrveG__GN7 z&k+AP(od$`?-BP3@U`&iXVjsG^zVbtKT?;QfxQUrGr`4u0&gy`UsC>RXev?uDAMl- zp51``knk6vV;t%7;5!@~`nw7EKDfJ3&o{A%nzt{Xnq0`|gogM`WYOCfgJcokLZIh) z`(f@~&8MrDaP=-GZhwAP@ZUm%3Ei;lN0MM@Shj z;bMFx5-x;}<@lG_!$>>t3mHS;KHcyr@j@ebiQ!xV^aLP9%2>v~({($1%J1GOeW5mqGGs zBE?Nt!oK*1fT)A1-!8?1yV5(J6w3*#uR792+hQwvRg!y=b^2o&daFps!7}f#S1;yh ziimC0XaE#>I(jv{*YI0P)zm4AFkA%)*%GfE(Lh7L8r8$mxv{JUU&Vjw`9r*Z8-uV` z(>H^1mjl3l8o<>MKSXI`S`&$0Um z+$Dy7srLjKXQ{;D8O7ow{vYPvJg&;3|No!4t_wIIAiIi!N5wTnP*hYzaMxUONlQx< zRFq8)?v|2>R^+W_mSv@BW$u-wcDLLmk(L#ewn~K=ccoUAm8IqH^?uKs>l|FV@6YG+ z{o`j3-pzC7J^Rdi=9+UYNZp11lo9Zb)&}OfOP28>)T9n+S4V8C2JR{RXAPE0x9|1+q0XAo97C)D@$U1Np>ZvA9agS*Vn! z_7k9#&<_QtHYUrJk5c9#wtM)I@$-)05)UIvD^C=6T~!m+?X1&K?d`ElG*mp+zOD(P zp*siRGdXY7%kE*@8p}?iCm9t;Igx3nsu%NosGCF|L_*EfLIJCYvY=aod?%vP)oa9?OG<4%!0?@*z*J1vBb-hAX`MsDdj|yxe!a+eD5^_ zk(_lSxo5v;VR;Zr$#s=z29P1HTNk%4EuOT9)*|BMx)I4R79c7q&~Tw)Og1MI1@vCX zM}Uf;tNMesOf>P-s!Y?JV!GF$LD<}m{ePK_C+WjTI-zdTSDyr)D9y25?(*M7p*23A zn}SyQY;gmkUe?f~xV31xSDS#krq$ih`w_8Y-8}z3q8fER*x|=r9?iXhqn@EcWnzGi zgks9&ir!mZ&z6lAp1QS~hsaH6^3+{JJhMFv7bpo=Q=mncYzysQ=JPHg6CF>T-vv>c zcuzz%gK3#pR~ESIS;TuQxSL8T(oTR-LB<;ItaL~NS!qPU` z-f+^gqsrs40!?u77B`G{Gr9K8L)DM={WQMvIiY1x?Cn zXG8y|$w?!^v$atJmL_}#7ngQjRF!C4o5t21$CvkBCR7stUWGXjpD-521u<6#ZXdLDue83?rAs(s|8iXTbl;Z zRLmqbQs|UG8HC1jb?YYcu_^6S$Qo>efcmtjVSn7n%mf3Ya1xrA3{lT&<=aYafrJsWzT{YTZVnp-CGi zbaGouzscNrUFNnBn6mB45u(A<4Jp)8h~N@VD$1=K;( zT&N{nx!3VTpo0W;iQ-Od8=@rArptv9?>YFP&biXmx+CG)7LhU**-|7=<6nN9eDw|r z#xDbXuNL|5R*9?Wry`*)mrq>k0=hV%oi6nyH4`l#b zT`k`$Bh$X&@_pzzL{0n8`MS5hS4*N3ZZ{k9pObKR6&ZZ$bJ{M>=gs2fWy(i_ahE4} z`7osM@FEmta-V{{yv+P8XJ%GrVR3emb9$!BnVDOJ9}nj{Cue8pJNb8ZXK{fu(}`OH zNH;-t8$CU{PK^A5Vx?VJlszY>V74n4vFQhTidYO~JL+{ASy`j9i{|9ux5_qcoq5^C z(+jekQ!;ViLY8xCL6KA4Sm0ckcw2((JbHSL3vsiuo%nwdZdJ%Bg4*QyoTe);v#8iv zNFoO}4HV_^@7t~fIW{BTnLTexHvggx)uMvA`A|U(CTC8WIjx8b=9)d(H3h$~qt0_t zXR5(;R1U>Ra8mU=2~aQ>r)7ro#)6`mgYbhZN}R7Mjds9o2vpCUVpn$V)CAd;qPq&S zr|?}W&g?n3gM|{X^O?#8K!K=b3h6gj*Yxb71ern+-5o*^bSAii#+ixY>n@^JqL}nM zzO(tlB)sh@+dF1+L~ZWOD#&)%Y7RPU3fkM{?u|hiDygBFg}N^&q%gaPT9MO6FAd6{ zgI|G*oCWabmQ9cYs9}qWkbeQ)Swej=cRKDyaOM_d(yc)p)m4nU4V-gxil^hAAg=e+ zq5_qwtGJ*jb6R$SOdh3LU-b|*E~-I&Op$Y@pte~=)WWXWg@px0#po8<_gdMzGUr@7 zcRd2_yu0;LT{ki+(mA0)DC@w@rC~DP8E?I&@7aZ9?g2d zpf&PUJ<%}kpw_5RYuV|B?7RXlo7-QFu_7n83H34craMqYnvL71(B{SSannxGOq2rS zZ%RS_)SPLvRYy2+f0ROf5Q~?43%e24gwRLax_m_ zw+C7VmOytQdRJ%YoRXV~n^|1Wtn8^d`6_ktz}+o5>|2;yFdyEzxMw9dcYcCwHLQSi z=>{;$jBYMtOT`w-o@xp5M%}lVlh7~B#vMZWQ|5CU&(5EjPj(=WZ=Z6uMhms>!G_0) zUR72H25E9OIwYIC`r7f^w3Rb6+!3>~QFt2pncg{I1Y}~gqMhA(m>5$q1Joe4Bcb)s zuryuB&J4|QxoAA8GPQBFRl}?k&E~8ezK<)jXuh(2nOWSHG&5ipcxoUe#AGXzAg{yZ zD40A09irx5F`3RmeQjf&Jr85u#Tk$?`htzHvtTOv5~^%X+?KzNa+eI}m_e|I#o76E zJD{2^Jij?2-PLxrTx72dXVz>r*w9?M-8mjdp&?4E4fmlkiQ2Gp^S~YsrTK2#@ykq3 zcK+-u=R7DjuRA(aFf?KXzGKdI5k`XW#! zQg3;TJQ@hY0G2~pPi@!8l3{Ih!IUJ()ZzKrPE7ke8fkU~U6&ixsX26G7pGQSPzbBY zV^+rYqXlI&`%o33#_KC?Gh{27+|S))f0tt2L=t3Vf0bKZe>q&;62#_$rxDeyt`6Hw zOgQwhdu7U2OCC(RZVlB~9nq45yb~-U>qzlvfw(Ny|Cp8>SZ5I-{mYW5TPVHNpbojL zRB}+Aln{DZLUuWk2Q|RoB-OlM-FadgVV+WIey8-$gaP9{0}XZe)ZkXoW^g_YtpsO3 zUTm=e=^hk-g3ER^*4+C5Zd5%WGo6F_sNI=f+7skp=wf6*0p>!j+Iq`@`&6+wOu_uY zXmqC1AX0bI^7@lz?^CkpVH3k+DxpuE^~a^|G37?1j z=}CtV#w#x!Y6OnD-RY+S_;tY1-aMPP=pJPCM01*eguV$yXt0b8ao{d2bv=>$Gk#>QVH&yZ+oBbq6BtY>Lsqm*uV! zaT`q-`vjTb=?C|e^qRsdf>&NL%PZ7l7I}Zi%{o1kwxd`(bF-(>Mv+G`DurIjnT)z~ zOY!_0$lG!3uJpv#oH{x!L0*4lkLpU3rTwq_jauga?M!JoinqVGDK|SaPZ>77^Yrc! zdB3by^Y&6as4wTJBK%u7+-p+r_l=H_R1)l=A!K?)??b#w)qc@ zXmY6XY~|^X|Ut!<16{Iqbgka*D|`l9jWs3KK??Ke~&TcXzCW zzB#VK0@^bdVB%4&L3dlY4(?`eyi$@U3MxAod9EjIFG z*b?M$nx?Ad`)NyvuJ}JB*w1S#%^MY5A7R*G=aQ3;t28{I;I_*y+5i^1FJq~eq{Um7 z1le|k-mX(+>U6)`1ld*iAE+i~{LRkLdpoBu782x6>1iMyy+!Uu*DFCzeok=?mWu`I z+D30zCudK|q{|&w0qV$GgM;jO*;D8?|6+8Z$~QqyvIn1D*Imk(xJS)ZMk3k-_pQ@%#tof^fkGuv zn-@+TW|j|o&=(03cWvuyQ?K0)??L`gd3Ytp*)(&vGcC%V9hn-cyco((-YRo*&{SBK zl`0nVEIeHVE9bE+D$)o$QsQm#sH8p{A~jk~Fa+t;MV%_}nlJ~Ou1s2C^wQ_HC}h`g zaYKg^`jUu-s-EbX|1s9QLGDTG95jkfq(xGTgb6DnELaAQS7XnKI{-@X-wBIXy&xLld0*&*=af0?(4H2l!_KWT&%dqn)|>* zol5Cu^*Yo^yiDI?NUjwl;|6W7xhYj{+4dnDt|-;j5+|f9=+_zK(JLXP4m zXzK1Sc?qU*RMGD zcDm#7Zj!ABM{i2eX$0YH6K9_8sC>m8Oo!jwwYTabe zAsIN|n1i8`kJalc8F@6Q!;Rn*#h%_IidW*;h7FQ~n!LxVf& zimKS<;L2RRtnO4;C5g&vk3TgIJVuA?7aGRi4Rc>Kq%#<`JMg+bL9@$&Y3yA0|@_mL2Hx@VC@TU0yZvK-*TqX`8~Q%jg@#k6kV_=%Jkk4 z?J8|UJ9~AWy`AzpsG>2+R?0IJH&ImWj7&BFgslNQuJ>BgXpwFwbMwD zL#Tc2Bt0huc9v)qcYCAid^n9lUZWsMc1lC zA?oAr7BC+C=WhaRCmsCZ9RUKjwTW2#-H5-o&|izck#N6+KREdV8i*$1@rUgBU19h| z6aNBqO?^d8@TbAP;uOnYSYCt-5bf$a>IaAvme;c^f%Fxt>y!Rw$YAkW{hjbRU%wjC zH-u#CkO(~7)D7-n(LaPjZw?{-Y?d<+8Ycb~a$iW4I2-alG+T!Tghq+$Lpz5Ci!q@) z@lmVQp~djo44(k;bSUNcuh43g0vGfh2lskptt0JNw%due;x;$)ln6FsH zp=sew!+pixaPp~vj1sXC^&))5y%AK$9#NG3bJ3K}Yb>9Op%mVWp;{y~r8>Hr?yMgr z9&bveUF9Ure>rzM14LAFiaV<1pqA0%-If(CqeMb$s_&52q%)u8ldX3`FKM(jEGAi@pBwtaOO(lFhyDZyR9LT1Uf5`F&mX4|9(}HCh%Nrr1M9I`S zQ_))5yQuG>SWxW!|)U5xZr{G&}((_Dowf%~w>h{C*nco-&6x?62OmA>HIPx_rFk@NPt2n+c^2*{(P4fuTD9kVYOC?{sr`!}eZ_tANoNQ9>|^=)eA53F z660h6>6b3ZU4S-RP!A6c?qAS3G+MmBfZF6MmgiUoEc{_slyEMjIda27DrXkUT$ZO< z%0=WK$uf>*50>*FgT=Zy)NJeGH}+{p6C?NnN^ znCr-LILierH?e$mG1;_J?5?+jG`q6AndKsuPq940@-)lP64LAl87qdB+>`1n@=K^S z?kS;mc$VcM$N=$C3H9=+lBbGp6rV1o+4RRU>gzAdNYigQ)xrtsD>^Ty**$}0>2ew; z_bjLJwua@|73AZ4C&^GqS}AB9AxZy*hy>hwzLGQ}La~MB1{bDurZ)?lw=~8 zbEZM%jKr-mq&Wu^1X{qFcYu6R%JrN1Dw9O1I=y5+eS0c6T*Nmz8#NudB)(| zB%2W0+@z;AWAMcUqHZR|i@`hFsm(G>s$Y!Q%{fd$SXqXGiRYsALO3cnVu|U@C_uQ6g(T$eNu*5{Es{VaXze={29t&`cIRSo1h22$aV3 z3&-m$`bZkh{&=!1NTlGYXQGBo{lx?(H3kQXiJWE|-wc#xkhq1ZmoJrNkhqoUCSNM& zATfzs$ps1mWl0k{tC40)Jb5sSbKin^VW8Pe`+f6JvLRwF(>n+Y!Y#OqnLg)KMu-(m zze6(vdqcdv6)ouRmxq~igILAobmEb(7~BMRFLFcc`qAhaBi6}!(Cmw_e%OC*K|Jh3 z5jF_7;62Wo1*|z0M7_BXX$Il3x!p`4@7w8<7X zL31R+9L6TJaxn-`vE#*AG+LK~frb>?^kr(ubeFguh9N}6`EN$NyTvf3RR0XvopLdP=>~r) z%ROS0LH&L+p2up5FStC-l&9%Aud-|x2e?Le`IDX4E?(gLHv5yE*e+h=H2>+JCo@3@ znU4DVBKPg$E!O-2W$}j{s^U~cKn7Z8r#Q-*^+6LsA9H>&c#0|;HtGwePM{pIM|{Q9 zA2dns5&z~?rgAEK#gE)dw}IN?EuiN)%~b(ZzrEsjrab{P3Z54iINtjRqj$(%;;=KU zxnGzj^^spavhy$Cb$QhCEkIw&e~Mrb?o6+@86)y#5rrlT5yR@eZ3MyYMVUxO9`?mw~IJ3el8lcRec0>#)?6$}vrGoZo5W*A}Z;dk(u;FDfud z91VNAlpyy~rhkina@bu#G^hV9UNJXe zq&yNtqwe40AotN8P!Q;K);x$bcgTN>x44|21br1mVMjPDI2g80ek*!dlzZo3UzF^W z=x0&O4+*B$JtYR=^OX)C9BPLx_SCMuBT zAn~gxw@lPwR1T%`ho%7R#2Tjgg`{~&to70q@;;_59A?P- znc`=WrX|-ijbZYU4|&D&lMgf9JNpT|(jq`U%B1oOm5(z$w~$f^lTR|efmgH!iE#Op z7d4c-nN-P|%jdkp;^aQ2-%2T7Tlo@GR2fl6`8rcEQxEyJSG-jDE?Tf&*xTp~B}avi zLnGc2o(b75q6)H0#4*U85uZZ#XE{3J1l;2zzJ}Zw@fYMlmcCKsPjcjv(d^EOf>jbT zqF#Y~FzO`alToC9Q-ce(f8$1!`*n?$V0;{JxB~J_!!>58*fsN1q!h!VKZei4(U%}E zMaQGGD)+^WX(TLfTm-qc@j^&d+M8m?KRYJGM~W9?*Fe4z`zWLey|?L~a35%D_)4+Z z*%flRll0$n=D~f&xzKmylHZ(Ei)PKJRP9)HYDPY*n|%bG7umg}d5j-w)VwXEO8Nb; z&T!XnQ3%%){9|uElKVWVfJF&1$g-?#1l0tVJo@D_h(Hxrsw5WnZyA zuE4^zcw9W>GmvAK)W%VHF2Nr;wv2R)UGjKK@=;~$-fFEwir%f(Lq6K-goHk%6wOvQlYH+rGjwVRBgdNJG@{Mj z*!K9feH**sn&4G%$5J_cgWGQMAG;)~?F+`(B{%q!jDg!dmfE(ZygIW~qawX6mEld6 zAF-@$OD&_?O0}eFE8XMVN{_W`A0Wk3?Px?j->xIvFSbi%AL_wv@yp@fA5Udop71Q( zH1_n-3+vy#+t>h0NALG&nCVvcfbtVY_Ip>cCl1GkET-}ZA+(;t5LKqen*HDFQl(`xXacvFAl~axCxf!1zon;x+GOAV8INy*lFf>%WKVVu|sJJvBH*D;ZGn1&Dv!XVK z(U_rHsBxld_gFjX@v*(Ar(7&^Gbyk8GyCCN;~CkTAZcDV69cnP*z@lBwhqj`8?#AH zhV&KFbC#ICqB57}Da|!p_hT+#{=$l)oiPr5MS0<@7@T)Hx8n>zxqmI31D{^A$Va)A z=K35;XJZb{_fg^Jnqn5rp;{Ep*#w`hbJ_>MI?V}chSNlLS0NN$(KzfFemj`v6=sMMuP{^GX@^zgYJIg$ zHJ}G=suh;lV$&J)?Z-C#jJxNVUVJ%4l($B1cwuF+Rw#Op`18cF;Xc>%_|NwV+ou-4BWt=b2WE z$HF&Ar7u2k_dppUP19GP-r`1(8lTmokC?5?3Z|BqIZiK4OKYz{n8LNv2BKAhLncR|N7YW2I~h>L*e(rA1cb%>{QT^6wuRWAqn$ zb=auL)}V8maw0o|Rshl>ei8MJakD7ZbP6q)->p76p6%midP~wHmJe_m8F_qK-g^TK~>mWpt<6-rq3HRHs_0Z?K#YGszD2L zp(s}*jD}S>iK2gGKRYx`GjS29sW0d@n6E^wm zK@J`|(C`+s#I5Ob1Yt{UdLLA3(?`%;=0#OF-TIVEUB=^ch4>2O6t(_T>N~|nO;qZ; zL?nJ)r!Xq@-6BB~mAYIE011RqIqwm}nMy^MMpd9WI*e+xQfyTusSYc}c}-M@e~7*v zI2B3dTrKw4R3+{eYZFx%)o87#(nPhrPc%rPuo5w-(L?4sk*;Yxa=%|}(3Ib3v-yBH z$y6#@OcICHYfnS*=V2nuuWfp9<`|!nwxAo z1A0vKQE57UY4nP@SzOOlA^oEt0*%%b8GXpyB9`df6QehqkBj|^c;-AI^0}2(i+g5% z9r=WKi^FIhePuo={5w&WWoYZo=2p=_(^c?)-wk=Aa$Khr*@8cn9&3Sg6Bj?f*zD)wHc~sr8Y#ThsH62N)lT zwM>=rwZoi4=i&!N{=YT;-uO~jU6f{ElLxIY#aEg_ zn>=Zq6z6Pu*7`5^-yjYMe6O z){QjPI(Al+GpTj#tT@k9BC?wtw0;sp=vEq7joX{NWBnqkG_7p%vGuFS?V-XR2mL12 zYC6#5gmqq=XId%(n|urEld3cip_~`Q3Qb=%`PuqY9M|-7lMB`*5z

2FBnAGFix^ z_92FxuZi{{rd-IRR!UQDtV8=0IR?h0;Qa5frjap8ppU#XE%`+q`kko+W3Z8rB_q

L;ajBeVy`O9B(PcQYr`+ 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 J5V)QY_&;|4J(2(b literal 0 HcmV?d00001 diff --git a/Lib/Microsoft.Practices.ObjectBuilder.dll b/Lib/Microsoft.Practices.ObjectBuilder.dll new file mode 100755 index 0000000000000000000000000000000000000000..8c35d6491abcfe31668ee43476be1972a14e24a7 GIT binary patch literal 57344 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 BRPX=* literal 0 HcmV?d00001 diff --git a/Source/Common/Common.csproj b/Source/Common/Common.csproj new file mode 100755 index 0000000..26a8601 --- /dev/null +++ b/Source/Common/Common.csproj @@ -0,0 +1,86 @@ + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {07040940-073F-4CBE-A4AA-5977147A5F6C} + Library + Properties + WordCAB.Common + Common + v2.0 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + ..\..\Lib\Microsoft.Practices.CompositeUI.dll + + + False + ..\..\Lib\Microsoft.Practices.CompositeUI.WinForms.dll + + + False + ..\..\Lib\Microsoft.Practices.ObjectBuilder.dll + + + False + ..\..\..\..\..\..\Program Files\Microsoft.NET\Primary Interop Assemblies\stdole.dll + + + + + + + + + + + + + + + + + + + + + + Component + + + + + + + + + + \ No newline at end of file diff --git a/Source/Common/Components/IconConverter.cs b/Source/Common/Components/IconConverter.cs new file mode 100755 index 0000000..6dec61f --- /dev/null +++ b/Source/Common/Components/IconConverter.cs @@ -0,0 +1,85 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Windows.Forms; +using stdole; +using System.Drawing; +using System.Runtime.InteropServices; +using System.Drawing.Imaging; + +namespace WordCAB.Common.Components +{ + ///

+ /// , COM ActiveX . + /// + public sealed class AxIconConverter : AxHost + { + #region Statics + public static readonly AxIconConverter Instance = new AxIconConverter(); + #endregion + + #region Ctor + public AxIconConverter() + : base("A9D9FE18-89C4-4cf2-884C-AD692CF5F268") + { } + #endregion + + #region Public Methods + public IPictureDisp Convert(T image) + where T : Image + { + return GetIPictureFromPicture(image) as IPictureDisp; + } + + public IPictureDisp Convert(Icon icon) + { + return Convert(icon.ToBitmap()); + } + + public IPictureDisp CreateMask(Image image) + { + return Convert(createMask(image)); + } + #endregion + + #region Private Methods + private Image createMask(Image sourceImage) + { + Guard.ArgumentNotNull(sourceImage, "sourceImage"); + + Bitmap resultBitmap = new Bitmap(sourceImage.Width, sourceImage.Height, PixelFormat.Format24bppRgb); + + using ( Bitmap sourceBitmap = new Bitmap(sourceImage.Width, sourceImage.Height, PixelFormat.Format32bppArgb) ) + { + using ( Graphics graphics = Graphics.FromImage(sourceBitmap) ) + graphics.DrawImage(sourceImage, new Rectangle(0, 0, sourceImage.Width, sourceImage.Height), 0, 0, sourceImage.Width, sourceImage.Height, GraphicsUnit.Pixel); + + BitmapData sourceData = sourceBitmap.LockBits(new Rectangle(0, 0, sourceBitmap.Width, sourceBitmap.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb); + BitmapData resultData = resultBitmap.LockBits(new Rectangle(0, 0, resultBitmap.Width, resultBitmap.Height), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb); + + for ( int y = 0; y < sourceData.Height; y++ ) + { + for ( int x = 0; x < sourceData.Width; x++ ) + { + int pixel = y * sourceData.Stride + x * 4; + + byte alpha = Marshal.ReadByte(sourceData.Scan0, pixel + 3); + + if ( alpha == 0 ) + { + Marshal.WriteByte(resultData.Scan0, ( y * resultData.Stride + x * 3 ), 255); + Marshal.WriteByte(resultData.Scan0, ( y * resultData.Stride + x * 3 ) + 1, 255); + Marshal.WriteByte(resultData.Scan0, ( y * resultData.Stride + x * 3 ) + 2, 255); + } + } + } + + sourceBitmap.UnlockBits(sourceData); + resultBitmap.UnlockBits(resultData); + } + + return resultBitmap; + } + #endregion + } +} diff --git a/Source/Common/Constants.cs b/Source/Common/Constants.cs new file mode 100755 index 0000000..27bfc32 --- /dev/null +++ b/Source/Common/Constants.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WordCAB.Common +{ + public class UIExtensionSiteNames + { + public const string WordBarsSite = "WordBarsSite"; + } + + public class CommandNames + { + public const string OpenForm = "OpenForm"; + } + + public class WorkspaceNames + { + public const string MainWorkspace = "MainWorkspace"; + } +} diff --git a/Source/Common/Controls/IWordButton.cs b/Source/Common/Controls/IWordButton.cs new file mode 100755 index 0000000..915c5b3 --- /dev/null +++ b/Source/Common/Controls/IWordButton.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Windows.Forms; +using System.Drawing; + +namespace WordCAB.Common.Controls +{ + /// + /// Интерфейс для кнопки на тулбаре Microsoft Word + /// + public interface IWordButton + { + /// + /// Тулбар, которому принадлежит кнопка + /// + IWordCommandBar Parent { get; set; } + /// + /// Стиль представления изображения кнопки и текста Caption + /// + ToolStripItemDisplayStyle ImageDisplayStyle { get; set; } + /// + /// Текст кнопки + /// + string Caption { get; set; } + /// + /// Команда, которую отсылает кнопка + /// + string CommandId { get; set; } + /// + /// Изображение + /// + Image Glyph { get; set; } + /// + /// Флаг: кнопка начинает группу + /// + bool BeginsGroup { get; set; } + /// + /// Событие нажатия кнопки + /// + event EventHandler Click; + } +} diff --git a/Source/Common/Controls/IWordCommandBar.cs b/Source/Common/Controls/IWordCommandBar.cs new file mode 100755 index 0000000..47fb57d --- /dev/null +++ b/Source/Common/Controls/IWordCommandBar.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Microsoft.Practices.CompositeUI; + +namespace WordCAB.Common.Controls +{ + /// + /// Интерфейс для тулбара Micosoft Word + /// + public interface IWordCommandBar + { + /// + /// Список кнопок + /// + List Buttons { get; } + /// + /// Идентификатор тулбара + /// + string Id { get; } + /// + /// Добавить кнопку + /// + /// Кнопка + void AddButton(IWordButton uiElement); + } +} diff --git a/Source/Common/Controls/IWordCommandBarContainer.cs b/Source/Common/Controls/IWordCommandBarContainer.cs new file mode 100755 index 0000000..64a851d --- /dev/null +++ b/Source/Common/Controls/IWordCommandBarContainer.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WordCAB.Common.Controls +{ + /// + /// Контейнер тулбаров для Microsoft Word + /// + public interface IWordCommandBarContainer + { + /// + /// Добавить тулбар + /// + /// тулбар + void AddBar(IWordCommandBar bar); + } +} diff --git a/Source/Common/Controls/WordButtonClickArgs.cs b/Source/Common/Controls/WordButtonClickArgs.cs new file mode 100755 index 0000000..05fd6e6 --- /dev/null +++ b/Source/Common/Controls/WordButtonClickArgs.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WordCAB.Common.Controls +{ + public class WordButtonClickArgs : EventArgs + { + private string _commandId = string.Empty; + /// + /// Идентификатор команды, которой соответствует кнопка + /// + public string CommandId + { + get { return _commandId; } + set { _commandId = value; } + } + } +} diff --git a/Source/Common/Extensions/CommandBarButtonUIAdapter.cs b/Source/Common/Extensions/CommandBarButtonUIAdapter.cs new file mode 100755 index 0000000..519a56b --- /dev/null +++ b/Source/Common/Extensions/CommandBarButtonUIAdapter.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Microsoft.Practices.CompositeUI.UIElements; +using WordCAB.Common.Controls; + +namespace WordCAB.Common.Extensions +{ + public class CommandBarButtonUIAdapter : UIElementAdapter + { + public CommandBarButtonUIAdapter(IWordCommandBar bar) + { + _bar = Guard.ArgumentNotNull(bar); + } + + protected override IWordButton Add(IWordButton uiElement) + { + _bar.AddButton(uiElement); + return uiElement; + } + + protected override void Remove(IWordButton uiElement) + { + throw new NotSupportedException("Удаление кнопок не поддерживается"); + } + + private IWordCommandBar _bar; + } +} diff --git a/Source/Common/Extensions/CommandBarUIAdapter.cs b/Source/Common/Extensions/CommandBarUIAdapter.cs new file mode 100755 index 0000000..cb42a8a --- /dev/null +++ b/Source/Common/Extensions/CommandBarUIAdapter.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Microsoft.Practices.CompositeUI.UIElements; +using WordCAB.Common.Controls; + +namespace WordCAB.Common.Extensions +{ + public class CommandBarUIAdapter : UIElementAdapter + { + public CommandBarUIAdapter(IWordCommandBarContainer container) + { + _container = Guard.ArgumentNotNull(container); + } + + protected override IWordCommandBar Add(IWordCommandBar uiElement) + { + _container.AddBar(uiElement); + return uiElement; + } + + protected override void Remove(IWordCommandBar uiElement) + { + throw new NotSupportedException("Удаление тулбаров не поддерживается"); + } + + private IWordCommandBarContainer _container; + } +} diff --git a/Source/Common/Extensions/CommandBarUIAdapterFactory.cs b/Source/Common/Extensions/CommandBarUIAdapterFactory.cs new file mode 100755 index 0000000..e78079b --- /dev/null +++ b/Source/Common/Extensions/CommandBarUIAdapterFactory.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Microsoft.Practices.CompositeUI.UIElements; +using WordCAB.Common.Controls; + +namespace WordCAB.Common.Extensions +{ + public class CommandBarUIAdapterFactory : IUIElementAdapterFactory + { + public IUIElementAdapter GetAdapter(object uiElement) + { + if ( uiElement is IWordCommandBarContainer ) + return new CommandBarUIAdapter(( IWordCommandBarContainer )uiElement); + if ( uiElement is IWordCommandBar ) + return new CommandBarButtonUIAdapter(( IWordCommandBar )uiElement); + + throw new ArgumentException("uiElement"); + } + + public bool Supports(object uiElement) + { + return ( uiElement is IWordCommandBarContainer ) || ( uiElement is IWordCommandBar ); + } + } +} diff --git a/Source/Common/Extensions/IUiElementFactory.cs b/Source/Common/Extensions/IUiElementFactory.cs new file mode 100755 index 0000000..57b055b --- /dev/null +++ b/Source/Common/Extensions/IUiElementFactory.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Text; +using WordCAB.Common.Extensions; +using Microsoft.Practices.CompositeUI; +using System.Windows.Forms; +using System.Drawing; +using WordCAB.Common.Controls; + +namespace WordCAB.Common.Extensions +{ + /// + /// Фабрика элементов управления Microsoft Word + /// + public interface IWordUIElementFactory + { + /// + /// Создание кнопки + /// + IWordButton CreateButton(IWordCommandBar parent, string commandId, ToolStripItemDisplayStyle style, string caption, string toolTip, + Image image, bool beginGroup); + + /// + /// Создание тулбара + /// + IWordCommandBar CreateBar(string id); + } +} diff --git a/Source/Common/Guard.cs b/Source/Common/Guard.cs new file mode 100755 index 0000000..63c7726 --- /dev/null +++ b/Source/Common/Guard.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WordCAB +{ + public class Guard + { + public static T ArgumentNotNull(T value) + { + return (T)ArgumentNotNull(value, typeof(T).ToString()); + } + + public static object ArgumentNotNull(object value) + { + return ArgumentNotNull(value, "value"); + } + + public static object ArgumentNotNull(object value, string message) + { + if ( value == null ) + throw new ArgumentException(message); + return value; + } + + public static T Cast(object value, string message) + { + Guard.ArgumentNotNull(value, message); + return ( T )value; + } + } +} diff --git a/Source/Common/MVP/Presenter.cs b/Source/Common/MVP/Presenter.cs new file mode 100755 index 0000000..7fe02d6 --- /dev/null +++ b/Source/Common/MVP/Presenter.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WordCAB.Common.MVP +{ + /// + /// Базовый класс для Presenter в шаблоне MVP + /// + /// Интерфейс View + public class Presenter + where T : class + { + #region Public Properties + private T _view; + /// + /// View + /// + public T View + { + get { return _view; } + set { _view = value; OnViewSet(); } + } + + #endregion + + #region Protecteds + protected virtual void OnViewSet() + { + } + #endregion + } +} diff --git a/Source/Common/Properties/AssemblyInfo.cs b/Source/Common/Properties/AssemblyInfo.cs new file mode 100755 index 0000000..f79fcd7 --- /dev/null +++ b/Source/Common/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Common")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Common")] +[assembly: AssemblyCopyright("Copyright © 2009")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("fa792caf-7acb-42ce-a044-982dd88a486c")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Source/Common/Services/IWordSelectionGetter.cs b/Source/Common/Services/IWordSelectionGetter.cs new file mode 100755 index 0000000..9cf10a8 --- /dev/null +++ b/Source/Common/Services/IWordSelectionGetter.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WordCAB.Common.Services +{ + /// + /// Интерфейс сервиса получения выделенного текста в Microsoft Word + /// + public interface IWordSelectionGetter + { + /// + /// Получить выбранный в Microsoft Word выделенный текст + /// + /// Текст + string GetText(); + } +} diff --git a/Source/Common/Workspaces/CabModal.cs b/Source/Common/Workspaces/CabModal.cs new file mode 100755 index 0000000..7f86625 --- /dev/null +++ b/Source/Common/Workspaces/CabModal.cs @@ -0,0 +1,38 @@ +using System.Windows.Forms; +using Microsoft.Practices.CompositeUI; + +namespace WordCAB.Common.Workspaces +{ + /// + /// , ( CAB) + /// + public class CabModal : Modal + { + #region Constructors + public CabModal(WorkItem workItem, Control control) + : this(workItem, control, false) + { + } + + public CabModal(WorkItem workItem, Control control, bool resizable) + : base(control, resizable) + { + _workItem = workItem; + workItem.Items.Add(_form); + } + #endregion + + #region IDisposable Members + + public override void Dispose() + { + _workItem.Items.Remove(_form); + } + + #endregion + + #region Private members + protected WorkItem _workItem; + #endregion + } +} diff --git a/Source/Common/Workspaces/Modal.cs b/Source/Common/Workspaces/Modal.cs new file mode 100755 index 0000000..5abf5f7 --- /dev/null +++ b/Source/Common/Workspaces/Modal.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Windows.Forms; +using System.Drawing; + +namespace WordCAB.Common.Workspaces +{ + /// + /// Класс, инкапсулирующий логику показа контрола в модальном режиме + /// + public class Modal : IDisposable + { + #region Constructors + public Modal(Control control) + : this(control, false) + { + } + + public Modal(Control control, bool resizable) + { + _form = new Form(); + _form.SuspendLayout(); + _form.ClientSize = control.Size; + + if ( !control.MinimumSize.IsEmpty ) + { + Size delta = Size.Subtract(_form.Size, _form.ClientSize); + _form.MinimumSize = Size.Add(control.MinimumSize, delta); + } + + control.Dock = DockStyle.Fill; + + _form.FormBorderStyle = resizable ? FormBorderStyle.Sizable + : FormBorderStyle.FixedSingle; + + _form.AutoScroll = true; + _form.MaximizeBox = resizable; + _form.MinimizeBox = resizable; + _form.ShowInTaskbar = resizable; + _form.Text = string.Empty; + _form.ShowIcon = false; + _form.StartPosition = FormStartPosition.CenterScreen; + _form.Controls.Add(control); + _form.ResumeLayout(); + } + #endregion + + #region Public members + + public Form Form + { + get { return _form; } + } + + /// + /// Покажет контрол в модальном режиме + /// + public DialogResult ShowDialog() + { + return _form.ShowDialog(); + } + + /// + /// Покажет контрол в модальном режиме (с указанным текстом в качестве заголовка формы) + /// + public DialogResult ShowDialog(string caption) + { + _form.Text = caption; + return ShowDialog(); + } + #endregion + + #region IDisposable Members + + /// + /// Implements IDisposable.Dispose + /// + public virtual void Dispose() + { + } + + #endregion + + #region Private members + protected Form _form; + #endregion + } +} diff --git a/Source/Common/Workspaces/SimpleModalWorkspace.cs b/Source/Common/Workspaces/SimpleModalWorkspace.cs new file mode 100755 index 0000000..c5deb85 --- /dev/null +++ b/Source/Common/Workspaces/SimpleModalWorkspace.cs @@ -0,0 +1,170 @@ +using System; +using System.Collections.Generic; +using System.Windows.Forms; +using Microsoft.Practices.CompositeUI; +using Microsoft.Practices.CompositeUI.SmartParts; + +namespace WordCAB.Common.Workspaces +{ + /// + /// Workspace показа контролов в модальном режиме + /// + public class SimpleModalWorkspace : IWorkspace + { + #region Ctor + public SimpleModalWorkspace() + : this(false) + { + } + + public SimpleModalWorkspace(bool saveControls) + { + _saveControls = saveControls; + } + #endregion + + #region Public Properties + /// + /// Workitem for forms + /// + [ServiceDependency] + public WorkItem WorkItem + { + set + { + Guard.ArgumentNotNull(value); + _workItem = value; + } + + get + { + return _workItem; + } + } + + #endregion + + #region IWorkspace Members + + public void Activate(object smartPart) + { + throw new NotSupportedException("Указанное действие не поддерживается"); + } + + public object ActiveSmartPart + { + get + { + return _activeSmartPart; + } + } + + public void ApplySmartPartInfo(object smartPart, ISmartPartInfo smartPartInfo) + { + if ( _activeWrapper != null && _activeWrapper.Form != null ) + _activeWrapper.Form.Text = smartPartInfo.Title; + } + + public void Close(object smartPart) + { + if ( _activeWrapper != null ) + { + Control control = Guard.Cast(smartPart, "smartPart in windowWorkspace"); + + if ( _saveControls ) + _activeWrapper.Form.Controls.Remove(control); + + _activeWrapper.Dispose(); + + _activeWrapper.Form.FormClosing -= FormClose; + _activeWrapper.Form.Close(); + + if ( SmartPartClosing != null ) + SmartPartClosing(this, new WorkspaceCancelEventArgs(smartPart)); + + _activeSmartPart = null; + _activeWrapper = null; + } + } + + public void Hide(object smartPart) + { + if ( _activeWrapper != null && _activeWrapper.Form != null ) + _activeWrapper.Form.Hide(); + } + + public void Show(object smartPart) + { + WindowSmartPartInfo info = new WindowSmartPartInfo(); + Show(smartPart, info); + } + + public void Show(object smartPart, ISmartPartInfo smartPartInfo) + { + if ( _activeWrapper != null ) + Close(_activeSmartPart); + + bool resizable = false; + if (smartPartInfo is WindowSmartPartInfo) + resizable = ((WindowSmartPartInfo)smartPartInfo).Resizable; + + Show(smartPart, smartPartInfo.Title, resizable); + } + + public event EventHandler SmartPartActivated; + + public event EventHandler SmartPartClosing; + + public System.Collections.ObjectModel.ReadOnlyCollection SmartParts + { + get + { + return _smartParts.AsReadOnly(); + } + } + + #endregion + + #region Privates + + private void AddSmartPart(object smartPart) + { + if ( !_saveControls ) + _smartParts.Clear(); + + _smartParts.Add(smartPart); + } + + private void Show(object smartPart, string title, bool resizable) + { + Control control = Guard.Cast(smartPart, "SmartPart for SimpleWindowSmartPart"); + _activeWrapper = new Modal(control, resizable); + + AddSmartPart(smartPart); + _activeSmartPart = smartPart; + + if ( SmartPartActivated != null ) + SmartPartActivated(this, new WorkspaceEventArgs(smartPart)); + + _activeWrapper.Form.FormClosing += new FormClosingEventHandler(FormClose); + + _activeWrapper.ShowDialog(title); + } + + private void FormClose(object sender, FormClosingEventArgs e) + { + Close(_activeSmartPart); + } + + #endregion + + #region Private Fields + private object _activeSmartPart; + private Modal _activeWrapper; + private WorkItem _workItem; + private List _smartParts = new List(); + private bool _saveControls; + #endregion + } +} + diff --git a/Source/Common/Workspaces/WindowSmartpartInfo.cs b/Source/Common/Workspaces/WindowSmartpartInfo.cs new file mode 100755 index 0000000..a5bf509 --- /dev/null +++ b/Source/Common/Workspaces/WindowSmartpartInfo.cs @@ -0,0 +1,28 @@ +using System.Windows.Forms; + +namespace WordCAB.Common.Workspaces +{ + public class WindowSmartPartInfo : Microsoft.Practices.CompositeUI.WinForms.WindowSmartPartInfo + { + private bool _resizable = false; + public bool Resizable + { + get { return _resizable; } + set { _resizable = value; } + } + + private bool _showInTaskbar = true; + public bool ShowInTaskbar + { + get { return _showInTaskbar; } + set { _showInTaskbar = value; } + } + + private FormStartPosition _formStartPosition = FormStartPosition.WindowsDefaultLocation; + public FormStartPosition FormStartPosition + { + get { return _formStartPosition; } + set { _formStartPosition = value; } + } + } +} diff --git a/Source/CustomModule/CustomModule.csproj b/Source/CustomModule/CustomModule.csproj new file mode 100755 index 0000000..f4834e1 --- /dev/null +++ b/Source/CustomModule/CustomModule.csproj @@ -0,0 +1,95 @@ + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {8E8E90DE-CC33-4665-819E-E463D19BCDC3} + Library + Properties + WordCAB.CustomModule + CustomModule + v2.0 + 512 + + + true + full + false + ..\..\bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\..\bin\Release\ + TRACE + prompt + 4 + + + + False + ..\..\Lib\Microsoft.Practices.CompositeUI.dll + + + False + ..\..\Lib\Microsoft.Practices.CompositeUI.WinForms.dll + + + False + ..\..\Lib\Microsoft.Practices.ObjectBuilder.dll + + + + + + + + + + + + True + True + Resources.resx + + + + UserControl + + + SampleSmartPart.cs + + + + + + {07040940-073F-4CBE-A4AA-5977147A5F6C} + Common + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + SampleSmartPart.cs + + + + + + + + \ No newline at end of file diff --git a/Source/CustomModule/ModuleInit.cs b/Source/CustomModule/ModuleInit.cs new file mode 100755 index 0000000..ff224d3 --- /dev/null +++ b/Source/CustomModule/ModuleInit.cs @@ -0,0 +1,60 @@ +using System; +using System.Windows.Forms; +using Microsoft.Practices.CompositeUI; +using Microsoft.Practices.CompositeUI.Commands; +using WordCAB.Common; +using WordCAB.Common.Controls; +using WordCAB.Common.Extensions; +using WordCAB.Common.Workspaces; +using WordCAB.CustomModule.Properties; +using WordCAB.CustomModule.SmartParts; + +namespace WordCAB.CustomModule +{ + public class Module : ModuleInit + { + public Module([ServiceDependency] WorkItem rootWorkItem, + [ServiceDependency]IWordUIElementFactory elementFactory) + { + _rootWorkItem = rootWorkItem; + _factory = elementFactory; + } + + public override void Load() + { + base.Load(); + + UIExtensionSite site = _rootWorkItem.UIExtensionSites[UIExtensionSiteNames.WordBarsSite]; + IWordCommandBar mainBar = site.Add(_factory.CreateBar("AddInToolbar")); + + IWordButton btn = _factory.CreateButton(mainBar, CommandNames.OpenForm, ToolStripItemDisplayStyle.ImageAndText, "Открыть окно", + "Открыть форму просмотра Custom Control", Resources.OpenForm, false); + + mainBar.AddButton(btn); + btn.Click += new EventHandler(ButtonClick); + } + + public override void AddServices() + { + base.AddServices(); + + _rootWorkItem.Commands.AddNew(CommandNames.OpenForm); + } + + private void ButtonClick(object sender, WordButtonClickArgs e) + { + object smartPart = _rootWorkItem.SmartParts.AddNew(); + WindowSmartPartInfo info = new WindowSmartPartInfo(); + info.FormStartPosition = FormStartPosition.CenterScreen; + info.MaximizeBox = false; + info.MinimizeBox = false; + info.Resizable = false; + info.Title = "Custom Control"; + info.ShowInTaskbar = false; + _rootWorkItem.Workspaces[WorkspaceNames.MainWorkspace].Show(smartPart, info); + } + + private WorkItem _rootWorkItem; + private IWordUIElementFactory _factory; + } +} diff --git a/Source/CustomModule/Properties/AssemblyInfo.cs b/Source/CustomModule/Properties/AssemblyInfo.cs new file mode 100755 index 0000000..6dd49c6 --- /dev/null +++ b/Source/CustomModule/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("CustomModule")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CustomModule")] +[assembly: AssemblyCopyright("Copyright © 2009")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("fbbe713e-f559-432c-85a4-4a03d2e91310")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Source/CustomModule/Properties/Resources.Designer.cs b/Source/CustomModule/Properties/Resources.Designer.cs new file mode 100755 index 0000000..4d5d7d4 --- /dev/null +++ b/Source/CustomModule/Properties/Resources.Designer.cs @@ -0,0 +1,70 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.3053 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WordCAB.CustomModule.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WordCAB.CustomModule.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + internal static System.Drawing.Bitmap OpenForm { + get { + object obj = ResourceManager.GetObject("OpenForm", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/Source/CustomModule/Properties/Resources.resx b/Source/CustomModule/Properties/Resources.resx new file mode 100755 index 0000000..a8b805e --- /dev/null +++ b/Source/CustomModule/Properties/Resources.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\resources\openform.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Source/CustomModule/Resources/OpenForm.gif b/Source/CustomModule/Resources/OpenForm.gif new file mode 100755 index 0000000000000000000000000000000000000000..50c2d4622f24d28ed51420967d773d3b4bbfa7a6 GIT binary patch literal 267 zcmZ?wbhEHb6krfwI3mxm@^#qp_ftEsTGZ^(DnF?+^PX$gCY9Z9+e3Ft8%`DsT`p@o zOQiX%k@q60tWzpUYnA%$S(fe8^xGj}F-Wjk2BUuJa@k_ABIXRn0%Dk#R_+ z@}h3mIfegVp!k!8k%2*;L5BedKz1^)c05q;inE-z!hDU~EI!5np0(b54FM5fBmW6H zJh}dRMcBj$wd4ws(8i3$zy=46{kOReB?xdZwJtBrTAuOty6OoWu1^Ve}=N05C0^& P4&jw5E@>|6iVW5OAG%)& literal 0 HcmV?d00001 diff --git a/Source/CustomModule/SmartParts/ISampleSmartPart.cs b/Source/CustomModule/SmartParts/ISampleSmartPart.cs new file mode 100755 index 0000000..a2fc63f --- /dev/null +++ b/Source/CustomModule/SmartParts/ISampleSmartPart.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WordCAB.CustomModule.SmartParts +{ + public interface ISampleSmartPart + { + /// + /// Эвент запроса View текста + /// + event EventHandler GetText; + /// + /// Текст View + /// + string TextBoxText { get; set; } + } +} diff --git a/Source/CustomModule/SmartParts/SampleSmartPart.Designer.cs b/Source/CustomModule/SmartParts/SampleSmartPart.Designer.cs new file mode 100755 index 0000000..deafa50 --- /dev/null +++ b/Source/CustomModule/SmartParts/SampleSmartPart.Designer.cs @@ -0,0 +1,71 @@ +namespace WordCAB.CustomModule.SmartParts +{ + partial class SampleSmartPart + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if ( disposing && ( components != null ) ) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.textBox1 = new System.Windows.Forms.TextBox(); + this.button1 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(18, 66); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(407, 121); + this.textBox1.TabIndex = 0; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(28, 27); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(126, 23); + this.button1.TabIndex = 1; + this.button1.Text = "Получить текст"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // SampleSmartPart + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.button1); + this.Controls.Add(this.textBox1); + this.Name = "SampleSmartPart"; + this.Size = new System.Drawing.Size(443, 214); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Button button1; + } +} diff --git a/Source/CustomModule/SmartParts/SampleSmartPart.cs b/Source/CustomModule/SmartParts/SampleSmartPart.cs new file mode 100755 index 0000000..baf67cc --- /dev/null +++ b/Source/CustomModule/SmartParts/SampleSmartPart.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Text; +using System.Windows.Forms; +using Microsoft.Practices.ObjectBuilder; +using Microsoft.Practices.CompositeUI.SmartParts; + +namespace WordCAB.CustomModule.SmartParts +{ + [SmartPart] + public partial class SampleSmartPart : UserControl, ISampleSmartPart + { + #region Ctor + public SampleSmartPart() + { + InitializeComponent(); + } + #endregion + + #region Public Properties + private SampleSmartPartPresenter _presenter; + [CreateNew] + public SampleSmartPartPresenter Presenter + { + set { _presenter = value; _presenter.View = this; } + } + #endregion + + #region ISampleSmartPart Members + + public event EventHandler GetText; + + public string TextBoxText + { + get + { + return textBox1.Text; + } + set + { + textBox1.Text = value; + } + } + + #endregion + + #region Event Handlers + private void button1_Click(object sender, EventArgs e) + { + if ( this.GetText != null ) + GetText(this, EventArgs.Empty); + } + #endregion + } +} diff --git a/Source/CustomModule/SmartParts/SampleSmartPart.resx b/Source/CustomModule/SmartParts/SampleSmartPart.resx new file mode 100755 index 0000000..19dc0dd --- /dev/null +++ b/Source/CustomModule/SmartParts/SampleSmartPart.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Source/CustomModule/SmartParts/SampleSmartPartPresenter.cs b/Source/CustomModule/SmartParts/SampleSmartPartPresenter.cs new file mode 100755 index 0000000..653a26d --- /dev/null +++ b/Source/CustomModule/SmartParts/SampleSmartPartPresenter.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Text; +using WordCAB.Common.MVP; +using Microsoft.Practices.ObjectBuilder; +using WordCAB.Common.Services; +using Microsoft.Practices.CompositeUI; + +namespace WordCAB.CustomModule.SmartParts +{ + /// + /// Презентер для ISampleSmartPart + /// + public class SampleSmartPartPresenter : Presenter + { + #region Ctor + [InjectionConstructor] + public SampleSmartPartPresenter([ServiceDependency]IWordSelectionGetter service) + { + _service = service; + } + #endregion + + #region Overrides + protected override void OnViewSet() + { + base.OnViewSet(); + View.GetText += new EventHandler(GetText); + } + #endregion + + #region Event Handlers + private void GetText(object sender, EventArgs e) + { + View.TextBoxText = _service.GetText(); + } + #endregion + + #region Private Fields + private IWordSelectionGetter _service; + #endregion + } +} diff --git a/Source/WordCAB/AddInApplication.cs b/Source/WordCAB/AddInApplication.cs new file mode 100755 index 0000000..8f7d95e --- /dev/null +++ b/Source/WordCAB/AddInApplication.cs @@ -0,0 +1,21 @@ +using System; +using Microsoft.Practices.CompositeUI.Services; +using Microsoft.Practices.CompositeUI.WinForms; + +namespace WordCAB +{ + internal sealed class AddInApplication : WindowsFormsApplication + { + protected override void Start() + { + } + + protected override void AddServices() + { + base.AddServices(); + + RootWorkItem.Services.Remove(); + RootWorkItem.Services.AddOnDemand(); + } + } +} diff --git a/Source/WordCAB/AddInWorkItem.cs b/Source/WordCAB/AddInWorkItem.cs new file mode 100755 index 0000000..88f73ef --- /dev/null +++ b/Source/WordCAB/AddInWorkItem.cs @@ -0,0 +1,44 @@ +using Microsoft.Practices.CompositeUI; +using Microsoft.Practices.CompositeUI.UIElements; +using WordCAB.Common; +using WordCAB.Common.Controls; +using WordCAB.Common.Extensions; +using WordCAB.Common.Services; +using WordCAB.Common.Workspaces; +using WordCAB.Controls; +using WordCAB.Services; + +namespace WordCAB +{ + /// + /// RootWorkItem + /// + internal sealed class AddInWorkItem : WorkItem + { + protected override void InitializeServices() + { + base.InitializeServices(); + Services.AddNew(); + IUIElementAdapterFactoryCatalog factoryService = base.Services.Get(); + factoryService.RegisterFactory(new CommandBarUIAdapterFactory()); + + UIExtensionSites.RegisterSite(UIExtensionSiteNames.WordBarsSite, new BarCollection()); + + Services.AddNew(); + Workspaces.Add(( new SimpleModalWorkspace() ), WorkspaceNames.MainWorkspace); + } + + #region IDisposable + private bool _dispose = false; + + protected override void Dispose(bool disposing) + { + if ( _dispose ) + { + base.Dispose(disposing); + } + } + + #endregion + } +} diff --git a/Source/WordCAB/Controls/BarCollection.cs b/Source/WordCAB/Controls/BarCollection.cs new file mode 100755 index 0000000..95845f0 --- /dev/null +++ b/Source/WordCAB/Controls/BarCollection.cs @@ -0,0 +1,30 @@ +using System; +using Microsoft.Office.Core; + +namespace WordCAB.Common.Controls +{ + internal class BarCollection : IWordCommandBarContainer + { + #region IWordCommandBarContainer Members + + public void AddBar(IWordCommandBar bar) + { + CommandBar commandBar = null; + //todo: сделать так, чтобы второй раз создать нельзя было + try + { + commandBar = Globals.ThisAddIn.Application.CommandBars[bar.Id]; + } + catch ( ArgumentException ) { } + + if ( commandBar == null ) + commandBar = Globals.ThisAddIn.Application.CommandBars.Add(bar.Id, ( object )MsoBarPosition.msoBarTop, _null, true); + + commandBar.Visible = true; + } + + private object _null = System.Reflection.Missing.Value; + + #endregion + } +} diff --git a/Source/WordCAB/Controls/CommandBarButtonWrapper.cs b/Source/WordCAB/Controls/CommandBarButtonWrapper.cs new file mode 100755 index 0000000..ee302ff --- /dev/null +++ b/Source/WordCAB/Controls/CommandBarButtonWrapper.cs @@ -0,0 +1,194 @@ +using System; +using System.Drawing; +using System.Windows.Forms; +using Microsoft.Office.Core; +using WordCAB.Common.Components; + +namespace WordCAB.Common.Controls +{ + /// + /// CommandBarButton + /// + internal class CommandBarButtonWrapper : IWordButton + { + #region Constants + private const MsoButtonStyle DefaultStyle = MsoButtonStyle.msoButtonCaption; + private const int DefaultIconSize = 24; + #endregion + + #region Ctor + public CommandBarButtonWrapper(IWordCommandBar parent, ToolStripItemDisplayStyle style, string caption, string toolTip, + string commandId, Image image, bool beginGroup) + { + _parent = parent; + _imageDisplayStyle = style; + _caption = caption; + _commandId = commandId; + _glyph = image; + _beginsGroup = beginGroup; + _toolTip = toolTip; + } + #endregion + + #region Public Methods + + /// + /// + /// + public void Create() + { + // todo : , + _button = ( CommandBarButton )(( CommandBarWrapper )_parent).Bar.Controls.Add(1, _null, _null, _null, _null); + + _tag = _commandId; + + _button.Caption = _caption; + _button.TooltipText = _toolTip; + _button.Tag = _tag; + _button.BeginGroup = _beginsGroup; + _button.Click += new _CommandBarButtonEvents_ClickEventHandler(Button_Click); + _locked = false; + _button.Enabled = !_locked; + + switch ( _imageDisplayStyle) + { + case ToolStripItemDisplayStyle.Image: + _button.Style = MsoButtonStyle.msoButtonIcon; + break; + case ToolStripItemDisplayStyle.ImageAndText: + _button.Style = MsoButtonStyle.msoButtonIconAndCaption; + break; + case ToolStripItemDisplayStyle.Text: + _button.Style = MsoButtonStyle.msoButtonCaption; + break; + default: + _button.Style = DefaultStyle; + break; + } + + if ( _glyph != null ) + { + _button.Picture = AxIconConverter.Instance.Convert(_glyph); + _button.Mask = AxIconConverter.Instance.CreateMask(_glyph); + } + else + _button.Style = MsoButtonStyle.msoButtonCaption; + + Globals.ThisAddIn.Application.NormalTemplate.Saved = true; + } + + #endregion + + #region IWordButton Members + + private IWordCommandBar _parent; + public IWordCommandBar Parent + { + get { return _parent; } + set { _parent = value; } + } + + private ToolStripItemDisplayStyle _imageDisplayStyle; + public ToolStripItemDisplayStyle ImageDisplayStyle + { + get { return _imageDisplayStyle; } + set { _imageDisplayStyle = value; } + } + + private string _caption; + public string Caption + { + get { return _caption; } + set { _caption = value; } + } + + private string _toolTip; + public string ToolTip + { + get { return _toolTip; } + set { _toolTip = value; } + } + + private string _commandId; + public string CommandId + { + get { return _commandId; } + set { _commandId = value; } + } + + private Image _glyph; + public Image Glyph + { + get { return _glyph; } + set { _glyph = value; } + } + + private bool _beginsGroup; + public bool BeginsGroup + { + get { return _beginsGroup; } + set { _beginsGroup = value; } + } + + public event EventHandler Click; + + #endregion + + #region EventHandlers + + private void Button_Click(CommandBarButton Ctrl, ref bool CancelDefault) + { + if ( Click != null ) + { + WordButtonClickArgs args = new WordButtonClickArgs(); + args.CommandId = _commandId; + Click(this, args); + } + } + + #endregion + + #region Overrides + public override string ToString() + { + return _caption; + } + #endregion + + #region Private Methods + protected void Lock() + { + if ( !_locked ) + { + CommandBarButton button = ( CommandBarButton )( ( CommandBarWrapper )_parent ).Bar.FindControl(_null, _null, _tag, _null, _null); + + button.Enabled = false; + _locked = true; + Globals.ThisAddIn.Application.NormalTemplate.Saved = true; + } + } + + protected void Unlock() + { + if ( _locked ) + { + CommandBarButton button = ( CommandBarButton )( ( CommandBarWrapper )_parent ).Bar.FindControl(_null, _null, _tag, _null, _null); + + button.Enabled = true; + _locked = false; + Globals.ThisAddIn.Application.NormalTemplate.Saved = true; + } + } + #endregion + + #region Private Fields + + private CommandBarButton _button; + private bool _locked = false; + private object _null = System.Reflection.Missing.Value; + private string _tag; + + #endregion + + } +} diff --git a/Source/WordCAB/Controls/CommandBarWrapper.cs b/Source/WordCAB/Controls/CommandBarWrapper.cs new file mode 100755 index 0000000..ee3b327 --- /dev/null +++ b/Source/WordCAB/Controls/CommandBarWrapper.cs @@ -0,0 +1,55 @@ +using System.Collections.Generic; +using Microsoft.Office.Core; + +namespace WordCAB.Common.Controls +{ + /// + /// CommandBar + /// + internal class CommandBarWrapper : IWordCommandBar + { + #region Ctor + public CommandBarWrapper(string id) + { + _id = id; + } + #endregion + + #region Public Properties + public CommandBar Bar + { + get { return (CommandBar)Globals.ThisAddIn.Application.CommandBars[_id]; } + } + #endregion + + #region Public Methods + + public void AddButton(IWordButton button) + { + _buttons.Add(button); + ( ( CommandBarButtonWrapper )button ).Create(); + } + + #endregion + + #region IWordCommandBar Members + + public List Buttons + { + get { return _buttons; } + } + + public string Id + { + get { return _id; } + } + + #endregion + + #region Private Fields + private List _buttons = new List(); + private string _id = string.Empty; + private object _null = System.Reflection.Missing.Value; + #endregion + } +} diff --git a/Source/WordCAB/Controls/UIElementFactory.cs b/Source/WordCAB/Controls/UIElementFactory.cs new file mode 100755 index 0000000..59db5eb --- /dev/null +++ b/Source/WordCAB/Controls/UIElementFactory.cs @@ -0,0 +1,29 @@ +using System.Drawing; +using System.Windows.Forms; +using WordCAB.Common.Controls; +using WordCAB.Common.Extensions; + +namespace WordCAB.Controls +{ + internal class WordUIElementFactory : IWordUIElementFactory + { + #region IUiElementFactory Members + + public IWordButton CreateButton(IWordCommandBar parent, string commandId, ToolStripItemDisplayStyle style, string caption, string toolTip, + Image image, bool beginGroup) + { + CommandBarButtonWrapper wrapper = new CommandBarButtonWrapper( + parent, style, caption, toolTip, commandId, image, beginGroup); + + return wrapper; + } + + public IWordCommandBar CreateBar(string id) + { + CommandBarWrapper wrapper = new CommandBarWrapper(id); + return wrapper; + } + + #endregion + } +} diff --git a/Source/WordCAB/CustomModuleEnumerator.cs b/Source/WordCAB/CustomModuleEnumerator.cs new file mode 100755 index 0000000..3513d29 --- /dev/null +++ b/Source/WordCAB/CustomModuleEnumerator.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.IO; +using Microsoft.Practices.CompositeUI.Configuration; +using Microsoft.Practices.CompositeUI.Services; + +namespace WordCAB +{ + public class CustomModuleEnumerator : IModuleEnumerator + { + #region Constants + private const string ModuleName = "CustomModule.dll"; + #endregion + + #region IModuleEnumerator Members + + public IModuleInfo[] EnumerateModules() + { + List result = new List(); + + string path = GetModulePath(ModuleName); + if ( File.Exists(path) ) + result.Add(new ModuleInfo(ModuleName)); + return result.ToArray(); + } + + #endregion + + #region Private Methods + private string GetModulePath(string assemblyFile) + { + if ( !Path.IsPathRooted(assemblyFile) ) + assemblyFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, assemblyFile); + + return assemblyFile; + } + #endregion + } +} diff --git a/Source/WordCAB/Properties/AssemblyInfo.cs b/Source/WordCAB/Properties/AssemblyInfo.cs new file mode 100755 index 0000000..84cc00d --- /dev/null +++ b/Source/WordCAB/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("WordCAB")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("WordCAB")] +[assembly: AssemblyCopyright("Copyright © 2009")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("fdb71d26-0876-41f6-b844-add6f650ceb0")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Source/WordCAB/Properties/Resources.Designer.cs b/Source/WordCAB/Properties/Resources.Designer.cs new file mode 100755 index 0000000..5b75c00 --- /dev/null +++ b/Source/WordCAB/Properties/Resources.Designer.cs @@ -0,0 +1,62 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.3053 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WordCAB.Properties { + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WordCAB.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/Source/WordCAB/Properties/Resources.resx b/Source/WordCAB/Properties/Resources.resx new file mode 100755 index 0000000..af7dbeb --- /dev/null +++ b/Source/WordCAB/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Source/WordCAB/Properties/Settings.Designer.cs b/Source/WordCAB/Properties/Settings.Designer.cs new file mode 100755 index 0000000..a632fc8 --- /dev/null +++ b/Source/WordCAB/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.3053 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WordCAB.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/Source/WordCAB/Properties/Settings.settings b/Source/WordCAB/Properties/Settings.settings new file mode 100755 index 0000000..3964565 --- /dev/null +++ b/Source/WordCAB/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Source/WordCAB/Services/WordSelectionGetter.cs b/Source/WordCAB/Services/WordSelectionGetter.cs new file mode 100755 index 0000000..549c479 --- /dev/null +++ b/Source/WordCAB/Services/WordSelectionGetter.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; +using WordCAB.Common.Services; + +namespace WordCAB.Services +{ + class WordSelectionGetter : IWordSelectionGetter + { + #region IWordSelectionGetter Members + + public string GetText() + { + return Globals.ThisAddIn.Application.Selection.Range.Text; + } + + #endregion + } +} diff --git a/Source/WordCAB/ThisAddIn.Designer.cs b/Source/WordCAB/ThisAddIn.Designer.cs new file mode 100755 index 0000000..d56fa1e --- /dev/null +++ b/Source/WordCAB/ThisAddIn.Designer.cs @@ -0,0 +1,182 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.3053 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +#pragma warning disable 414 +namespace WordCAB { + + + /// + [Microsoft.VisualStudio.Tools.Applications.Runtime.StartupObjectAttribute(0)] + [System.Runtime.InteropServices.ComVisibleAttribute(false)] + [System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")] + public sealed partial class ThisAddIn : Microsoft.Office.Tools.AddIn, Microsoft.VisualStudio.Tools.Applications.Runtime.IStartup { + + [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + private Microsoft.VisualStudio.Tools.Applications.Runtime.IRuntimeServiceProvider RuntimeCallback; + + [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + private Microsoft.VisualStudio.Tools.Applications.Runtime.IHostItemProvider HostItemHost; + + [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + private Microsoft.VisualStudio.Tools.Applications.Runtime.ICachedDataProvider DataHost; + + private global::System.Object missing = global::System.Type.Missing; + + internal Microsoft.Office.Interop.Word.Application Application; + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public ThisAddIn(Microsoft.VisualStudio.Tools.Applications.Runtime.IRuntimeServiceProvider RuntimeCallback) : + base(((Microsoft.VisualStudio.Tools.Applications.Runtime.IHostItemProvider)(RuntimeCallback.GetService(typeof(Microsoft.VisualStudio.Tools.Applications.Runtime.IHostItemProvider)))), RuntimeCallback, "AddIn", null, "ThisAddIn") { + this.RuntimeCallback = RuntimeCallback; + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public void Initialize() { + this.HostItemHost = ((Microsoft.VisualStudio.Tools.Applications.Runtime.IHostItemProvider)(this.RuntimeCallback.GetService(typeof(Microsoft.VisualStudio.Tools.Applications.Runtime.IHostItemProvider)))); + this.DataHost = ((Microsoft.VisualStudio.Tools.Applications.Runtime.ICachedDataProvider)(this.RuntimeCallback.GetService(typeof(Microsoft.VisualStudio.Tools.Applications.Runtime.ICachedDataProvider)))); + object hostObject = null; + this.HostItemHost.GetHostObject("Microsoft.Office.Interop.Word.Application", "Application", out hostObject); + this.Application = ((Microsoft.Office.Interop.Word.Application)(hostObject)); + Globals.ThisAddIn = this; + System.Windows.Forms.Application.EnableVisualStyles(); + this.InitializeCachedData(); + this.InitializeControls(); + this.InitializeComponents(); + this.InitializeData(); + this.BeginInitialization(); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public void FinishInitialization() { + this.InternalStartup(); + this.OnStartup(); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public void InitializeDataBindings() { + this.BindToData(); + this.EndInitialization(); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + public override void OnShutdown() { + base.OnShutdown(); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + private void InitializeCachedData() { + if ((this.DataHost == null)) { + return; + } + if (this.DataHost.IsCacheInitialized) { + this.DataHost.FillCachedData(this); + } + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + private void InitializeData() { + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + private void BindToData() { + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + private void StartCaching(string MemberName) { + this.DataHost.StartCaching(this, MemberName); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + private void StopCaching(string MemberName) { + this.DataHost.StopCaching(this, MemberName); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + private bool IsCached(string MemberName) { + return this.DataHost.IsCached(this, MemberName); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + private void BeginInitialization() { + this.BeginInit(); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + private void EndInitialization() { + this.EndInit(); + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + private void InitializeControls() { + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] + private void InitializeComponents() { + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)] + private bool NeedsFill(string MemberName) { + return this.DataHost.NeedsFill(this, MemberName); + } + } + + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + internal sealed partial class Globals { + + private static ThisAddIn _ThisAddIn; + + internal static ThisAddIn ThisAddIn { + get { + return _ThisAddIn; + } + set { + if ((_ThisAddIn == null)) { + _ThisAddIn = value; + } + else { + throw new System.NotSupportedException(); + } + } + } + } +} diff --git a/Source/WordCAB/ThisAddIn.Designer.xml b/Source/WordCAB/ThisAddIn.Designer.xml new file mode 100755 index 0000000..1fb7e04 --- /dev/null +++ b/Source/WordCAB/ThisAddIn.Designer.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/Source/WordCAB/ThisAddIn.cs b/Source/WordCAB/ThisAddIn.cs new file mode 100755 index 0000000..f5d5b2f --- /dev/null +++ b/Source/WordCAB/ThisAddIn.cs @@ -0,0 +1,35 @@ +using System; +using System.Windows.Forms; +using Microsoft.VisualStudio.Tools.Applications.Runtime; +using Word = Microsoft.Office.Interop.Word; +using Office = Microsoft.Office.Core; +using System.Diagnostics; + +namespace WordCAB +{ + public partial class ThisAddIn + { + private void ThisAddIn_Startup(object sender, System.EventArgs e) + { + new AddInApplication().Run(); + } + + private void ThisAddIn_Shutdown(object sender, System.EventArgs e) + { + } + + #region VSTO generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InternalStartup() + { + this.Startup += new System.EventHandler(ThisAddIn_Startup); + this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown); + } + + #endregion + } +} diff --git a/Source/WordCAB/WordCAB.csproj b/Source/WordCAB/WordCAB.csproj new file mode 100755 index 0000000..c00bb78 --- /dev/null +++ b/Source/WordCAB/WordCAB.csproj @@ -0,0 +1,222 @@ + + + + {BAA0C2D2-18E2-41B9-852F-F413020CAA33};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Debug + AnyCPU + {2E716003-0D02-4C04-B9CB-8C1566F52853} + Library + false + WordCAB + WordCAB + v2.0 + + + + true + + + + CurrentUser + Software\Microsoft\Office\Word\Addins + + + + true + full + false + ..\..\bin\Debug\ + false + DEBUG;TRACE + 4 + + + + pdbonly + true + ..\..\bin\Release\ + false + TRACE + 4 + + + + + + + + + + + + + + + + + + + + + + False + ..\..\Lib\Microsoft.Practices.CompositeUI.dll + + + False + ..\..\Lib\Microsoft.Practices.CompositeUI.WinForms.dll + + + False + ..\..\Lib\Microsoft.Practices.ObjectBuilder.dll + + + False + + + False + + + False + + + + + + + + + + + + + Code + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + + + + Code + + + ThisAddIn.cs + + + ThisAddIn.Designer.xml + + + + + + {07040940-073F-4CBE-A4AA-5977147A5F6C} + Common + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WordCAB/WordCAB.csproj.user b/Source/WordCAB/WordCAB.csproj.user new file mode 100755 index 0000000..acfbd50 --- /dev/null +++ b/Source/WordCAB/WordCAB.csproj.user @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/WordCABSetup/WordCABSetup b/Source/WordCABSetup/WordCABSetup new file mode 100755 index 0000000..8ea182c --- /dev/null +++ b/Source/WordCABSetup/WordCABSetup @@ -0,0 +1,1339 @@ +"DeployProject" +{ +"VSVersion" = "3:800" +"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" +"IsWebType" = "8:FALSE" +"ProjectName" = "8:WordCABSetup" +"LanguageId" = "3:1033" +"CodePage" = "3:1252" +"UILanguageId" = "3:1033" +"SccProjectName" = "8:" +"SccLocalPath" = "8:" +"SccAuxPath" = "8:" +"SccProvider" = "8:" + "Hierarchy" + { + "Entry" + { + "MsmKey" = "8:_3C1F6B426BF7988BAD3CA33FCDFD1103" + "OwnerKey" = "8:_F0578E3E2516615FF7E560CF3177227A" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_3C1F6B426BF7988BAD3CA33FCDFD1103" + "OwnerKey" = "8:_8AE70177DADE438989CA5D2525EF30AE" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_4C84D0517655EA800A2A8C5827A87281" + "OwnerKey" = "8:_8AE70177DADE438989CA5D2525EF30AE" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_5932E4EA6FCDC3D4EC37305196BC6833" + "OwnerKey" = "8:_F0578E3E2516615FF7E560CF3177227A" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_5932E4EA6FCDC3D4EC37305196BC6833" + "OwnerKey" = "8:_8AE70177DADE438989CA5D2525EF30AE" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_7676A2E7B3EC1C7B97E16F57CFBC119E" + "OwnerKey" = "8:_F0578E3E2516615FF7E560CF3177227A" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_7676A2E7B3EC1C7B97E16F57CFBC119E" + "OwnerKey" = "8:_8AE70177DADE438989CA5D2525EF30AE" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_8AE70177DADE438989CA5D2525EF30AE" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_9E2E9BD721787F91646A364615EC56D9" + "OwnerKey" = "8:_4C84D0517655EA800A2A8C5827A87281" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_9E2E9BD721787F91646A364615EC56D9" + "OwnerKey" = "8:_8AE70177DADE438989CA5D2525EF30AE" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_B4B875875ED14765A149E313A3167090" + "OwnerKey" = "8:_3C1F6B426BF7988BAD3CA33FCDFD1103" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_B4D3DB0F18048F8E7B2752C4739EB4A6" + "OwnerKey" = "8:_9E2E9BD721787F91646A364615EC56D9" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_B4D3DB0F18048F8E7B2752C4739EB4A6" + "OwnerKey" = "8:_8AE70177DADE438989CA5D2525EF30AE" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_B4D3DB0F18048F8E7B2752C4739EB4A6" + "OwnerKey" = "8:_4C84D0517655EA800A2A8C5827A87281" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_F0578E3E2516615FF7E560CF3177227A" + "OwnerKey" = "8:_8AE70177DADE438989CA5D2525EF30AE" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_3C1F6B426BF7988BAD3CA33FCDFD1103" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_8AE70177DADE438989CA5D2525EF30AE" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_4C84D0517655EA800A2A8C5827A87281" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_9E2E9BD721787F91646A364615EC56D9" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_B4D3DB0F18048F8E7B2752C4739EB4A6" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_F0578E3E2516615FF7E560CF3177227A" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_5932E4EA6FCDC3D4EC37305196BC6833" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_7676A2E7B3EC1C7B97E16F57CFBC119E" + "MsmSig" = "8:_UNDEFINED" + } + } + "Configurations" + { + "Debug" + { + "DisplayName" = "8:Debug" + "IsDebugOnly" = "11:TRUE" + "IsReleaseOnly" = "11:FALSE" + "OutputFilename" = "8:Debug\\WordCABSetup.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + } + "Release" + { + "DisplayName" = "8:Release" + "IsDebugOnly" = "11:FALSE" + "IsReleaseOnly" = "11:TRUE" + "OutputFilename" = "8:Release\\WordCABSetup.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:2" + } + } + "Deployable" + { + "CustomAction" + { + } + "DefaultFeature" + { + "Name" = "8:DefaultFeature" + "Title" = "8:" + "Description" = "8:" + } + "ExternalPersistence" + { + "LaunchCondition" + { + "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_2B0248EFDCD94CA2A172F8504213E807" + { + "Name" = "8:.NET Framework" + "Message" = "8:[VSDNETMSG]" + "Version" = "8:3.5.30729" + "AllowLaterVersions" = "11:FALSE" + "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=76617" + } + } + } + "File" + { + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_3C1F6B426BF7988BAD3CA33FCDFD1103" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Microsoft.VisualStudio.Tools.Applications.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_3C1F6B426BF7988BAD3CA33FCDFD1103" + { + "Name" = "8:Microsoft.VisualStudio.Tools.Applications.Runtime.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Microsoft.VisualStudio.Tools.Applications.Runtime.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_A3DC8DB909C24156AAA29A97D4AA1F9C" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_4C84D0517655EA800A2A8C5827A87281" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Microsoft.Office.Interop.Word, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" + "ScatterAssemblies" + { + "_4C84D0517655EA800A2A8C5827A87281" + { + "Name" = "8:Microsoft.Office.Interop.Word.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Microsoft.Office.Interop.Word.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_A3DC8DB909C24156AAA29A97D4AA1F9C" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_5932E4EA6FCDC3D4EC37305196BC6833" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:TRUE" + "AssemblyAsmDisplayName" = "8:VSTOStorageWrapper.Interop, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_5932E4EA6FCDC3D4EC37305196BC6833" + { + "Name" = "8:VSTOStorageWrapper.Interop.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:VSTOStorageWrapper.Interop.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_A3DC8DB909C24156AAA29A97D4AA1F9C" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_7676A2E7B3EC1C7B97E16F57CFBC119E" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Microsoft.Office.Interop.SmartTag, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" + "ScatterAssemblies" + { + "_7676A2E7B3EC1C7B97E16F57CFBC119E" + { + "Name" = "8:Microsoft.Office.Interop.SmartTag.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Microsoft.Office.Interop.SmartTag.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_A3DC8DB909C24156AAA29A97D4AA1F9C" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_9E2E9BD721787F91646A364615EC56D9" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Microsoft.Vbe.Interop, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" + "ScatterAssemblies" + { + "_9E2E9BD721787F91646A364615EC56D9" + { + "Name" = "8:Microsoft.Vbe.Interop.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Microsoft.Vbe.Interop.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_A3DC8DB909C24156AAA29A97D4AA1F9C" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B4B875875ED14765A149E313A3167090" + { + "SourcePath" = "8:Microsoft.VisualStudio.Tools.Applications.Runtime.tlb" + "TargetName" = "8:Microsoft.VisualStudio.Tools.Applications.Runtime.tlb" + "Tag" = "8:" + "Folder" = "8:_A3DC8DB909C24156AAA29A97D4AA1F9C" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:2" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_B4D3DB0F18048F8E7B2752C4739EB4A6" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:office, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" + "ScatterAssemblies" + { + "_B4D3DB0F18048F8E7B2752C4739EB4A6" + { + "Name" = "8:Office.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Office.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_A3DC8DB909C24156AAA29A97D4AA1F9C" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_F0578E3E2516615FF7E560CF3177227A" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:Microsoft.Office.Tools.Common, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" + "ScatterAssemblies" + { + "_F0578E3E2516615FF7E560CF3177227A" + { + "Name" = "8:Microsoft.Office.Tools.Common.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:Microsoft.Office.Tools.Common.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_A3DC8DB909C24156AAA29A97D4AA1F9C" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + } + "FileType" + { + } + "Folder" + { + "{1525181F-901A-416C-8A58-119130FE478E}:_1D0FF2AC7D804DEFBE4FA8C79BC86DF4" + { + "Name" = "8:#1916" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:DesktopFolder" + "Folders" + { + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_525B2873A4CC4E338DE65A56ED71CC73" + { + "Name" = "8:#1919" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:ProgramMenuFolder" + "Folders" + { + } + } + "{3C67513D-01DD-4637-8A68-80971EB9504F}:_A3DC8DB909C24156AAA29A97D4AA1F9C" + { + "DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]" + "Name" = "8:#1925" + "AlwaysCreate" = "11:FALSE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:TARGETDIR" + "Folders" + { + } + } + } + "LaunchCondition" + { + } + "Locator" + { + } + "MsiBootstrapper" + { + "LangId" = "3:1033" + "RequiresElevation" = "11:FALSE" + } + "Product" + { + "Name" = "8:Microsoft Visual Studio" + "ProductName" = "8:WordCABSetup" + "ProductCode" = "8:{35CF5E13-1BFA-472E-BFEB-66C76DDF5DF9}" + "PackageCode" = "8:{0AC9010D-3958-498E-B6B6-F6A2D4B32C88}" + "UpgradeCode" = "8:{3309F23F-0B96-4133-A55A-04919C7ADA94}" + "RestartWWWService" = "11:FALSE" + "RemovePreviousVersions" = "11:FALSE" + "DetectNewerInstalledVersion" = "11:TRUE" + "InstallAllUsers" = "11:FALSE" + "ProductVersion" = "8:1.0.0" + "Manufacturer" = "8:Default Company Name" + "ARPHELPTELEPHONE" = "8:" + "ARPHELPLINK" = "8:" + "Title" = "8:WordCABSetup" + "Subject" = "8:" + "ARPCONTACT" = "8:Default Company Name" + "Keywords" = "8:" + "ARPCOMMENTS" = "8:" + "ARPURLINFOABOUT" = "8:" + "ARPPRODUCTICON" = "8:" + "ARPIconIndex" = "3:0" + "SearchPath" = "8:" + "UseSystemSearchPath" = "11:TRUE" + "TargetPlatform" = "3:0" + "PreBuildEvent" = "8:" + "PostBuildEvent" = "8:" + "RunPostBuildEvent" = "3:0" + } + "Registry" + { + "HKLM" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_53000B224F3A4C1385DBEB2D2CB78360" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + } + "HKCU" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_5634BD7F98E34A68931B2CE5EAED7733" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_2E42AACE91284BA6A4818CBDFF4F9817" + { + "Name" = "8:Classes" + "Condition" = "8:" + "AlwaysCreate" = "11:TRUE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_0E5F0E8D05B743A49EB336B9AF5A1876" + { + "Name" = "8:WordCAB" + "Condition" = "8:" + "AlwaysCreate" = "11:TRUE" + "DeleteAtUninstall" = "11:TRUE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_77ACFBCADAC74FAF8DDFC04386D712FC" + { + "Name" = "8:CLSID" + "Condition" = "8:" + "AlwaysCreate" = "11:TRUE" + "DeleteAtUninstall" = "11:TRUE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_A7F6713D2F654F9B9CAE3A8EDF9D1F8D" + { + "Name" = "8:" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "ValueTypes" = "3:1" + "Value" = "8:{2E716003-0D02-4C04-B9CB-8C1566F52853}" + } + } + } + } + "Values" + { + "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_8CF7F28A192D4CB0981A0A213CAD2DE1" + { + "Name" = "8:" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "ValueTypes" = "3:1" + "Value" = "8:" + } + } + } + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_DB66151655C14268BDD427216B855DD0" + { + "Name" = "8:CLSID" + "Condition" = "8:" + "AlwaysCreate" = "11:TRUE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_46ABA8AC2CA84106806CF7980346684E" + { + "Name" = "8:{2E716003-0D02-4C04-B9CB-8C1566F52853}" + "Condition" = "8:" + "AlwaysCreate" = "11:TRUE" + "DeleteAtUninstall" = "11:TRUE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_47CA0B36E3D44657AA19FB91972DF68B" + { + "Name" = "8:VersionIndependentProgID" + "Condition" = "8:" + "AlwaysCreate" = "11:TRUE" + "DeleteAtUninstall" = "11:TRUE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_EA1E777398E84D7D8AA84A9B51A1716F" + { + "Name" = "8:" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "ValueTypes" = "3:1" + "Value" = "8:WordCAB" + } + } + } + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_72BE22F0656B43489B716E5836BEC053" + { + "Name" = "8:ProgID" + "Condition" = "8:" + "AlwaysCreate" = "11:TRUE" + "DeleteAtUninstall" = "11:TRUE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_25CA9ADF8F5E4ED69D89BEC6E86EBDA9" + { + "Name" = "8:" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "ValueTypes" = "3:1" + "Value" = "8:WordCAB" + } + } + } + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_7D17356D65D54C2995B2FB6658D37D9D" + { + "Name" = "8:InprocServer32" + "Condition" = "8:" + "AlwaysCreate" = "11:TRUE" + "DeleteAtUninstall" = "11:TRUE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_6E0B8D014BFD485CA4BFD396F090781C" + { + "Name" = "8:ThreadingModel" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "ValueTypes" = "3:1" + "Value" = "8:Both" + } + "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_B7699E4D51D34C48AEEE4A6B0012CBB9" + { + "Name" = "8:" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "ValueTypes" = "3:2" + "Value" = "8:%CommonProgramFiles%\\Microsoft Shared\\VSTO\\8.0\\AddinLoader.dll" + } + "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_BAB4DE3DBFED44DC8AE2ED6ECDEE2DEE" + { + "Name" = "8:ManifestLocation" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "ValueTypes" = "3:1" + "Value" = "8:[TARGETDIR]" + } + "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_C189ECF0DA6749B4BB645E258A3B628F" + { + "Name" = "8:ManifestName" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "ValueTypes" = "3:1" + "Value" = "8:WordCAB.dll.manifest" + } + } + } + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_AE3FBCE644084DE294564D6DE9378C7A" + { + "Name" = "8:Programmable" + "Condition" = "8:" + "AlwaysCreate" = "11:TRUE" + "DeleteAtUninstall" = "11:TRUE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_768E1E1340FB4167ACA55C9D97B766CA" + { + "Name" = "8:" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "ValueTypes" = "3:1" + "Value" = "8:WordCAB -- an addin created with VSTO technology" + } + } + } + } + "Values" + { + } + } + } + "Values" + { + } + } + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_9D8645414EAA4DD2B582ADD39087A018" + { + "Name" = "8:Microsoft" + "Condition" = "8:" + "AlwaysCreate" = "11:TRUE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_2D4E1EA813D84A858B912929AEAAB420" + { + "Name" = "8:Office" + "Condition" = "8:" + "AlwaysCreate" = "11:TRUE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_8F881E38635544D389086AC7C3E4E6DE" + { + "Name" = "8:Word" + "Condition" = "8:" + "AlwaysCreate" = "11:TRUE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_38E5E741C1B84876BB55EAD519A44B1B" + { + "Name" = "8:Addins" + "Condition" = "8:" + "AlwaysCreate" = "11:TRUE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_16456788D15C4F1380389D434DD4B532" + { + "Name" = "8:WordCAB" + "Condition" = "8:" + "AlwaysCreate" = "11:TRUE" + "DeleteAtUninstall" = "11:TRUE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_0AEA00749D354E3DBF9CF8032218089A" + { + "Name" = "8:Manifest" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "ValueTypes" = "3:1" + "Value" = "8:[TARGETDIR]WordCAB.dll.manifest" + } + "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_4154AE902A3B4093894F56673417BC31" + { + "Name" = "8:Description" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "ValueTypes" = "3:1" + "Value" = "8:WordCAB -- an addin created with VSTO technology" + } + "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_61847164A5264D77A2F0A5E41E8071D2" + { + "Name" = "8:CommandLineSafe" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "ValueTypes" = "3:3" + "Value" = "3:1" + } + "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_E520F4A0BF724C14A74ACD36D28F4A17" + { + "Name" = "8:FriendlyName" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "ValueTypes" = "3:1" + "Value" = "8:WordCAB" + } + "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_E6BEFE9425CE409D84825D5E7D35CDB3" + { + "Name" = "8:LoadBehavior" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "ValueTypes" = "3:3" + "Value" = "3:3" + } + } + } + } + "Values" + { + } + } + } + "Values" + { + } + } + } + "Values" + { + } + } + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCR" + { + "Keys" + { + } + } + "HKU" + { + "Keys" + { + } + } + "HKPU" + { + "Keys" + { + } + } + } + "Sequences" + { + } + "Shortcut" + { + } + "UserInterface" + { + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_199F9F4A5D5140C8B3922E4BF30D0353" + { + "Name" = "8:#1902" + "Sequence" = "3:1" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_5214AE6A65C44D9BBB94078834468037" + { + "Sequence" = "3:100" + "DisplayName" = "8:Finished" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "UpdateText" + { + "Name" = "8:UpdateText" + "DisplayName" = "8:#1058" + "Description" = "8:#1158" + "Type" = "3:15" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1258" + "DefaultValue" = "8:#1258" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_1AA654EEC1264B0D80DC2B3C95265D19" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdUserInterface.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_4B7111A5AC35490C9981EB86A9455E2F" + { + "Name" = "8:#1902" + "Sequence" = "3:2" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_D25B288717DF43A8B89B1B562E6E68F4" + { + "Sequence" = "3:100" + "DisplayName" = "8:Finished" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_91B41A8F42C04BDC95297F91B8B78608" + { + "Name" = "8:#1901" + "Sequence" = "3:2" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_9A4626C0560945969CECD24F8F5747AC" + { + "Sequence" = "3:100" + "DisplayName" = "8:Progress" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_BAC9B7DAACC64753B3F8153724971B61" + { + "Name" = "8:#1900" + "Sequence" = "3:1" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_24898C628C2B45A39BE6D5C6601E7E55" + { + "Sequence" = "3:200" + "DisplayName" = "8:Installation Folder" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "InstallAllUsersVisible" + { + "Name" = "8:InstallAllUsersVisible" + "DisplayName" = "8:#1059" + "Description" = "8:#1159" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:0" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_41BC7039987E4ABA8432751EEFAEB4AA" + { + "Sequence" = "3:300" + "DisplayName" = "8:Confirm Installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_BCB33CFC0B9641899A469EAF3332D449" + { + "Sequence" = "3:100" + "DisplayName" = "8:Welcome" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_C77776B515554779A795E60512147E8C" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdBasicDialogs.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_D0834CEE8B43468FB3C1DBECF4AD3E80" + { + "Name" = "8:#1900" + "Sequence" = "3:2" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_64EA73EF8EB84A518F570D423E9AB844" + { + "Sequence" = "3:100" + "DisplayName" = "8:Welcome" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1202" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_8B04BF19FC0341098B3D02F152C96806" + { + "Sequence" = "3:200" + "DisplayName" = "8:Installation Folder" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_8EF82803A8B5474A817AB382AB82C369" + { + "Sequence" = "3:300" + "DisplayName" = "8:Confirm Installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_D54ED35C2DF442BBB2FA4D1ADE139092" + { + "Name" = "8:#1901" + "Sequence" = "3:1" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_0155810E1A284A5F8EE5BA8D66B79513" + { + "Sequence" = "3:100" + "DisplayName" = "8:Progress" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + } + "MergeModule" + { + } + "ProjectOutput" + { + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_8AE70177DADE438989CA5D2525EF30AE" + { + "SourcePath" = "8:..\\WordCAB\\obj\\Debug\\WordCAB.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_A3DC8DB909C24156AAA29A97D4AA1F9C" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:3" + "OutputConfiguration" = "8:" + "OutputGroupCanonicalName" = "8:Built" + "OutputProjectGuid" = "8:{2E716003-0D02-4C04-B9CB-8C1566F52853}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + } + } +} diff --git a/WordCAB.sln b/WordCAB.sln new file mode 100755 index 0000000..c94f644 --- /dev/null +++ b/WordCAB.sln @@ -0,0 +1,53 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WordCAB", "Source\WordCAB\WordCAB.csproj", "{2E716003-0D02-4C04-B9CB-8C1566F52853}" +EndProject +Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "WordCABSetup", "Source\WordCABSetup\WordCABSetup", "{46F1ED5C-E765-4662-963B-6A40BE2D6151}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Source", "Source", "{1855A897-E044-4A44-BD46-F06CC794EF8F}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Lib", "Lib", "{9B8138A2-B5DF-49ED-B088-FBA0D4819CC5}" + ProjectSection(SolutionItems) = preProject + Lib\Microsoft.Practices.CompositeUI.dll = Lib\Microsoft.Practices.CompositeUI.dll + Lib\Microsoft.Practices.CompositeUI.WinForms.dll = Lib\Microsoft.Practices.CompositeUI.WinForms.dll + Lib\Microsoft.Practices.ObjectBuilder.dll = Lib\Microsoft.Practices.ObjectBuilder.dll + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "Source\Common\Common.csproj", "{07040940-073F-4CBE-A4AA-5977147A5F6C}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Deployment", "Deployment", "{B5D13F5F-C863-4940-837C-D1E4ACFAA6CB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomModule", "Source\CustomModule\CustomModule.csproj", "{8E8E90DE-CC33-4665-819E-E463D19BCDC3}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2E716003-0D02-4C04-B9CB-8C1566F52853}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2E716003-0D02-4C04-B9CB-8C1566F52853}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2E716003-0D02-4C04-B9CB-8C1566F52853}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2E716003-0D02-4C04-B9CB-8C1566F52853}.Release|Any CPU.Build.0 = Release|Any CPU + {46F1ED5C-E765-4662-963B-6A40BE2D6151}.Debug|Any CPU.ActiveCfg = Debug + {46F1ED5C-E765-4662-963B-6A40BE2D6151}.Release|Any CPU.ActiveCfg = Release + {07040940-073F-4CBE-A4AA-5977147A5F6C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {07040940-073F-4CBE-A4AA-5977147A5F6C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {07040940-073F-4CBE-A4AA-5977147A5F6C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {07040940-073F-4CBE-A4AA-5977147A5F6C}.Release|Any CPU.Build.0 = Release|Any CPU + {8E8E90DE-CC33-4665-819E-E463D19BCDC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8E8E90DE-CC33-4665-819E-E463D19BCDC3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8E8E90DE-CC33-4665-819E-E463D19BCDC3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8E8E90DE-CC33-4665-819E-E463D19BCDC3}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {2E716003-0D02-4C04-B9CB-8C1566F52853} = {1855A897-E044-4A44-BD46-F06CC794EF8F} + {07040940-073F-4CBE-A4AA-5977147A5F6C} = {1855A897-E044-4A44-BD46-F06CC794EF8F} + {8E8E90DE-CC33-4665-819E-E463D19BCDC3} = {1855A897-E044-4A44-BD46-F06CC794EF8F} + {46F1ED5C-E765-4662-963B-6A40BE2D6151} = {B5D13F5F-C863-4940-837C-D1E4ACFAA6CB} + EndGlobalSection +EndGlobal diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..17c9c7a --- /dev/null +++ b/readme.txt @@ -0,0 +1 @@ +http://habrahabr.ru/blogs/net/54880/