GNUMail/0040755000014600001460000000000010443040417012565 5ustar monotonemonotoneGNUMail/_MTN/0040755000014600001460000000000010701117262013362 5ustar monotonemonotoneGNUMail/_MTN/tmp/0040755000014600001460000000000010506157372014173 5ustar monotonemonotoneGNUMail/_MTN/options0100644000014600001460000000020410701117262014771 0ustar monotonemonotone branch "com.collaboration-world.gnumail" database "/var/db/monotone/server.mtn" key "" keydir "/etc/monotone/private-keys" GNUMail/_MTN/log0100644000014600001460000000000010424714351014055 0ustar monotonemonotoneGNUMail/_MTN/revision0100644000014600001460000000005110613335063015137 0ustar monotonemonotonec8f9245ed4f6553ebb27cf3065ee07a51f976d13 GNUMail/Bundles/0040755000014600001460000000000010424672357014176 5ustar monotonemonotoneGNUMail/Bundles/Account/0040755000014600001460000000000010424710553015561 5ustar monotonemonotoneGNUMail/Bundles/Account/English.lproj/0040755000014600001460000000000010424672357020310 5ustar monotonemonotoneGNUMail/Bundles/Account/English.lproj/AccountEditorWindow.nib/0040755000014600001460000000000010424672357025012 5ustar monotonemonotoneGNUMail/Bundles/Account/English.lproj/AccountEditorWindow.nib/classes.nib0100644000014600001460000000722710432177361027140 0ustar monotonemonotone{ IBClasses = ( { ACTIONS = { cancelClicked = id; imapList = id; imapSupportedMechanismsButtonClicked = id; okClicked = id; personalLocationButtonClicked = id; receiveRememberPasswordClicked = id; receiveSetAutomatically = id; receiveSetManually = id; receiveUseSecureConnectionHasChanged = id; selectionInPersonalSignaturePopUpHasChanged = id; sendAuthenticateUsingButtonClicked = id; sendRememberPasswordClicked = id; sendSupportedMechanismsButtonClicked = id; sendTransportMethodHasChanged = id; sendUseSecureConnectionHasChanged = id; setType = id; unixMailspoolFileButtonClicked = id; }; CLASS = AccountEditorWindowController; LANGUAGE = ObjC; OUTLETS = { imapMatrix = NSMatrix; imapOutlineView = NSOutlineView; imapSubscriptionColumn = NSTableColumn; imapSupportedMechanismsPopUp = NSPopUpButton; imapView = id; imapViewMailboxColumn = NSTableColumn; personalAccountNameField = NSTextField; personalEMailField = NSTextField; personalLocationButton = NSButton; personalLocationLabel = NSTextField; personalNameField = NSTextField; personalOrganizationField = NSTextField; personalReplyToField = NSTextField; personalSignatureField = NSTextField; personalSignaturePopUp = NSPopUpButton; personalView = id; pop3DaysField = NSTextField; pop3DefaultInboxPopUpButton = NSPopUpButton; pop3LeaveOnServer = NSButton; pop3UseAPOP = NSButton; pop3View = id; receiveCheckOnStartup = NSButton; receiveMatrix = NSMatrix; receiveMinutesField = NSTextField; receivePasswordSecureField = NSSecureTextField; receivePopUp = NSPopUpButton; receiveRememberPassword = NSButton; receiveServerNameField = NSTextField; receiveServerPortField = NSTextField; receiveUseSecureConnection = NSPopUpButton; receiveUsernameField = NSTextField; receiveView = id; sendAuthenticateUsingButton = NSButton; sendMailerField = NSTextField; sendMailerView = id; sendRememberPassword = NSButton; sendSMTPHostField = NSTextField; sendSMTPPasswordSecureField = NSSecureTextField; sendSMTPPortField = NSTextField; sendSMTPUsernameField = NSTextField; sendSMTPView = id; sendSupportedMechanismsButton = NSButton; sendSupportedMechanismsPopUp = NSPopUpButton; sendTransportMethodPopUpButton = NSPopUpButton; sendUseSecureConnection = NSPopUpButton; sendView = id; tabView = NSTabView; unixDefaultInboxPopUpButton = NSPopUpButton; unixMailspoolFileField = NSTextField; unixView = id; }; SUPERCLASS = NSWindowController; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }GNUMail/Bundles/Account/English.lproj/AccountEditorWindow.nib/info.nib0100644000014600001460000000204010575213556026427 0ustar monotonemonotone IBDocumentLocation 23 103 411 363 0 0 1024 746 IBEditorPositions 183 432 543 415 300 0 0 1280 1002 192 368 605 463 309 0 0 1280 1002 200 228 516 459 393 0 0 1280 1002 237 593 367 387 289 0 0 1280 1002 243 658 470 383 317 0 0 1280 1002 IBFramework Version 446.1 IBLockedObjects 237 243 IBOpenObjects 200 5 243 183 237 192 IBSystem Version 8L127 GNUMail/Bundles/Account/English.lproj/AccountEditorWindow.nib/keyedobjects.nib0100644000014600001460000012616410575213556030165 0ustar monotonemonotonebplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver ]IB.objectdata[ 156<=AE "/9:;@BGHKNRSV[cdltuz&)-/CHINOPTXYZ\_dmYnrtx{|  #$%,-2:;BCDKLMTU]^efgnopxyz*,.7;Y<>DMYNWYXY`aijrz{P $%()+4567>?CDLTU\]delmtuYY Y"#%()+,-./2389>?DEJKPQVW\]bchinotuz{Y "(1Y2Y;BCKLST[\abdejqxy"%*+.69BCBIOTUX\]bchoz         " & ' + - 0 36 4> : A B I J Q R ] _ a j nY o q u | } 8 Y 1Y Y  K   [   ! & ' , - 2 3 8 ? E M N V ] ^ e f n o v w x z {         " * + 3 ; < D L M T U ] h j l u yY z | Y 1Y Y l         ! " ' ( - . 3 4 9 : 9 ? 9 D 9 I N O T U Z [ ` a f g l m r s x y  z8PPzzzPzPzPzvwxyz{|}~%  6    !"#$%&'()*+,-./0123456789:;<=@CFU$null  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRootWYZXE234[NSClassName_AccountEditorWindowController789:X$classesZ$classname:;^NSCustomObjectXNSObject_IBCocoaFramework>?@ZNS.objects78BCCD;\NSMutableSetUNSSet>FIGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !39?EKQnyUWY[]_acegikmoqsu{܁ށ13579[]_asuˁ́ρсӁՁׁفہ݁߁i0]NSDestinationWNSLabelXNSSource _NSNextResponder[NSSuperviewWNSFrameYNSEnabledXNSvFlagsVNSCell  .ZNSSubviewsO_{{372, 12}, {84, 32}}_NSKeyEquivalent_NSAlternateImageYNSSupportZNSContents]NSControlView^NSButtonFlags2_NSPeriodicInterval]NSButtonFlags_NSPeriodicDelay[NSCellFlags_NSAlternateContents\NSCellFlags2 @8ROKVNSSizeVNSNameXNSfFlags"AP\LucidaGrande78Ԣ;VNSFont؀YHelveticaPQ 78ޥ;\NSButtonCell]%NSButtonCell\NSActionCell78;XNSButtonYNSControlVNSView[NSResponderZokClicked:78;_NSNibControlConnector^NSNibConnector0   _{{293, 12}, {84, 32}}ǀVCancelQ^cancelClicked:0"12    ]NSNextKeyView##%$ 0& NN_{{145, 325}, {265, 22}}   !## 0#$%&',-._NSBackgroundColor[NSTextColor_NSDrawsBackground'," /qA@012345678WNSColor[NSColorName\NSColorSpace]NSCatalogName*)(+VSystem_textBackgroundColor<2=>8WNSWhiteB1+78A00;0123CD678.-(+YtextColor<2I>8B0+78LMM;_NSTextFieldCell78OPPQ;[NSTextField\%NSTextField_personalAccountNameField78TUU;_NSNibOutletConnectorWX0482   ^_b##65 07_{{145, 234}, {265, 22}}   ghk## 0#$%&'W,-.',4 /_personalNameFieldvw0:>2   }~##<; 0=_{{145, 194}, {265, 22}}   ##@ 0#$%&'v,-.',: /_personalEMailField0@D2   ##BA 0C_{{145, 154}, {265, 22}}   ## 0#$%&',-.',@ /_personalReplyToField0FJ2   ##HG 0I_{{145, 118}, {265, 22}}   Ȁ## 0#$%&',-.',F /_personalOrganizationField0LP2   ހ##NM 0O_{{145, 13}, {265, 22}}%_NSAllowTruncatedLabels_NSSelectedTabViewItemYNSTvFlags^NSTabViewItems  N#$%&',-.',L /_personalSignatureField0Rm2   ##TS lU_{{142, 45}, {164, 26}}     ##oz {>"%VNSMenuZNSMenuItem_NSSelectedIndex_NSPreferredEdge]NSAltersState_NSUsesItemFromMenu_NSArrowPositionA@@ZYVk RX K'(YNS.stringW78*++,;_NSMutableStringXNSString'(W012345678:;<=@AB]NSMnemonicLoc_NSKeyEquivModMaskWNSStateWNSTitleYNSOnImageZNSKeyEquivXNSTarget\NSMixedImageXNSActionZ[\U`cb3DEFG[NSMenuItemsdje_program's outputJ2KLM^NSResourceName^_]WNSImage_NSMenuCheckmark78QRRS;_NSCustomResource_%NSCustomResourceJ2ULMa_]_NSMenuMixedState__popUpItemAction:78[;'](ZOtherViewsW>`afYi01345678:;f=@AlZg\U`ch_content of file78oppq;^NSMutableArrayWNSArray78s;78uvvw;_NSPopUpButtonCell^NSMenuItemCell78yzz;]NSPopUpButton_personalSignaturePopUp ~0ox2   ##Lp 0q_{{-13, 14}, {152, 18}}#$ ,svro/@_File location: 0123678ut(+\controlColor<2>8K0.66666669+0123C678.w(+_controlTextColor_personalLocationLabel0T2_{{305, 41}, {111, 32}}ǀ~|T}[Choose file'(W'(W_personalLocationButton0T2_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClassQPR 0xS_{{182, 199}, {470, 472}}VWindowXNSWindow'(TViewW>N i> #i>Wvg^}  Ӏ"4:6@(-i0 \NSIdentifierYNSTabViewsN#'(Q1WXPersonal78;]NSTabViewItem0sN''(Q2W .&>рƀÀˀހȀi ڀ 0_{{20, 312}, {396, 42}} 〻À 0#$,wsv/_{Usually in this panel, you would want to add the information related to your incoming mail server (most of the time, POP3)._{{8, 287}, {114, 17}} 􀻀ˀ l#$,svŀ/\Server type: Ȁ 0_{{127, 248}, {177, 22}}   ހ 0#$%&',-.', /_{{124, 280}, {139, 26}} ƀ 0!"#>'%Ѐπ̀k À΀ '(W'(W012345678!:;0=@A6Ѐр\̀`c3D8F:ӀjTPOP3'](W>?"ABπՀ؀i01345678!:;F=@ALЀր\̀`cTIMAP01345678!:;P=@AVЀـ\̀`cTUNIX_{{8, 250}, {114, 17}}#$],sv݀ˀ/\Server name: eh 0_{{127, 218}, {177, 22}} nq 0#$%&',-.', /_{{8, 220}, {114, 17}}#$,svȀ/\Server port:  0_{{127, 188}, {177, 22}}  #$%&',-.', /_{{8, 190}, {114, 17}}#$,sv/YUsername: 2_NSOriginalClassName _NSSecureTextField_{{127, 131}, {177, 22}} #$%&',-.', /78â;^NSClassSwapper ˀ 0_{{8, 133}, {114, 17}}#$,sv/ZPassword: _{{18, 159}, {154, 18}}H i"_Check for new mail manually&]NSRadioButton'(W,0UNSTag _&Check for new mail automatically everyY{269, 18}V{4, 2}:%;H8QURadio78@AAB;XNSMatrixY%NSMatrix_{{293, 30}, {48, 22}} HKN 0#$%&',-.', /_{{346, 32}, {55, 17}}#$Y,wsv/Xminutes `c 0_{{20, 84}, {153, 17}}#$i,sv/_Use secure connection:ps l_{{181, 77}, {220, 26}}vwx>{~%! k  ؀'(W012345678w:;=s@A!"\`c#3DF$j%UItem3'](W>x iWReceive0s)N,*'(W .N+_Receive options0s.NM/'(W .01L>137Gi ǁ//32 04_{{9, 313}, {396, 42}} Ё//76 08#$,wsv51/_{Usually in this panel, you would want to add the information related to your outgoing mail server (most of the time, SMTP)._{{9, 288}, {130, 17}}//: l;#$,sv93/_Transport method:_{{141, 281}, {143, 26}}>%?>  >Di01345678:;=@A?E\;`cFTSMTP2 ![NSExtension[NSFrameSizeJH//KIZ{430, 272}'(W78&'';\NSCustomViewTSend78*;_{{1, 9}, {470, 472}}_{{0, 0}, {1280, 1002}}Z{213, 129}_{3.40282e+38, 3.40282e+38}78011;_NSWindowTemplateVwindow05V2Xdelegate0;XT_personalLocationButtonClicked:0AZR_,selectionInPersonalSignaturePopUpHasChanged:G0Á\2\receivePopUp0MÀ^XsetType:S0Ɓ`2_receiveServerNameFieldY0ށb2_receiveServerPortField_0d2_receiveUsernameFielde0f2_receivePasswordSecureFieldk0h2_receiveRememberPasswordq0j2_receiveCheckOnStartupw0l2]receiveMatrix0}n_receiveSetManually:0p _receiveSetAutomatically:0r2_receiveMinutesField07t2_sendTransportMethodPopUpButton0vz2wwx 0y2. K_{{233, 213}, {62, 22}}#$%&',-.',v /]pop3DaysField0|2ww} ~_{{18, 214}, {209, 18}}|_Leave messages on server for_pop3LeaveOnServer02ҁww _{{18, 177}, {381, 18}}_-Use Authenticated Post Office Protocol (APOP)[pop3UseAPOP0w2>|viww 0_{{305, 215}, {43, 17}}#$,wsv/Tdaysww l_{{52, 111}, {333, 26}}v>{ %k  '(W012345678:;=@A\`c3DFjUItem1'](W>#%&i01345678:;*=@A0\`cUItem201345678:;4=@A:\`c>Aww 0_{{17, 143}, {368, 17}}#$G,Jsv/@_9Save messages recevied from this account in this mailbox:ORww 0_{{17, 84}, {368, 11}}#$WX,Jsv/_QIf you don't see all your IMAP mailboxes, first open a connection to this server.]`"AZ{395, 258}'(WXpop3Viewfg02kkmp 02rs.u wY:WKX_{{20, 192}, {296, 22}}#$%&'f,-.', /_unixMailspoolFileField0kk _{{318, 184}, {111, 32}}ǁ'(W'(W_unixMailspoolFileButtonClicked:0N2WtabView0ۀ2#4_NSIntercellSpacingWidth\NSHeaderView_NSColumnAutoresizingStyle[NSRowHeight_NSDraggingSourceMaskForLocal_NSIntercellSpacingHeight_NSDraggingSourceMaskForNonLocal\NSCornerView[NSGridColor^NSTableColumns"@@"A R@"@ځׁƀ* YNSBGColorYNSDocViewYNScvFlagsÁÁ Z{387, 153}[NSTableView ΁ÁÁY{387, 17}78;_NSTableHeaderViewÁÁā _NSHeaderClipView[NSHScrollerXNSsFlags[NSVScroller]NSContentView\NSScrollAmts߁߁OA A AA_{{388, 0}, {16, 17}}78;]_NSCornerView>ǁҀi    >^NSResizingMask\NSHeaderCellZNSMinWidthWNSWidth^NSIsResizeableZNSDataCellZNSMaxWidth"A"C "DzYMailboxes#$́́ˁʁ"A0<2#>8K0.33333299+0123C'678.΀(+_headerTextColor78,--M;_NSTableHeaderCell#$4,45*v/1@78788;]NSTableColumn    >;<=>@"B$Z"B$Z ցZSubscribed#$Ǵ́ˁՁ#$4,45*v/0123PQ678ف؀(+YgridColor<2V>8D0.5+78YZZ[;]NSOutlineView\%NSTableView_imapOutlineView_0ҁ݀2_imapSubscriptionColumne0߁022ij.l n/-K.>prstuvwxÁ'i>{€i>i_{{1, 17}, {387, 153}}0123678u(+_controlBackgroundColor78;ZNSClipView68YNSPercentÁÁÁ"??_{{388, 17}, {15, 153}}\_doScroller:78;ZNSScroller68ÁÁÁ"?u_{{-100, -100}, {387, 15}}>i_{{1, 0}, {387, 17}}_{{20, 47}, {404, 171}}78;\NSScrollView߁߁ _{{14, 7}, {84, 32}}rǁTList'(W'(Wˁ߁߁ 0_{{17, 288}, {405, 52}}#$s,wsv/_In this panel, you can subscribe or unsubscribe to mailboxes on your IMAP server. To connect and list the available folders, click on the List button.ہ߁߁ 0_{{17, 233}, {154, 17}}#$t,wsv/_Show which mailboxes?#4 ߁*s_{{175, 232}, {251, 18}}>iu"Sall'(W , u%]NSNormalImage_subscribed only0       VNSReps\NSImageFlags   X{18, 18}>   i>  !     # $ %_NSTIFFRepresentationOMM*<'''+++555### <uPPPਨTTTuyuuu|||%%%yFjjj浵wwwF BBBJJJ xxxݿ|||$$....$nnnkkk$...,,, C______C ebbbdddee333€𿿿333eCwwC $..$  RS78 ( ) ) *;_NSBitmapImageRepZNSImageRep78 ,qq;<2 .>8D0 0+78 1NN 2;X%NSImageY{123, 18} 7%; = @߁߁ 0_{{17, 262}, {127, 17}}#$ Fv,sv/_Authentication: M P߁߁ l_{{153, 256}, {136, 26}}v T U V>w Z%"!k   '(W'(W012345678 T:; c= P@A i"#\`c$3D kF m%j&XPassword'](W> r U!i x {߁߁( )_{{288, 252}, {137, 32}} ~ x ǁ,*'+_Check supported'(W'(WZ{439, 351}'(WXimapView 0ǁ22_imapViewMailboxColumn0 42ZdataSource0 620 r8YimapList:k 0Z2> f ;?OSikk  < 0=_{{17, 222}, {114, 17}}#$ ,wsv>;/_Mail spool file:kk  Ɂ@ lA_{{59, 126}, {333, 26}}v >{ %DCk ?B '(W012345678 :; = @A DE\A`cF3D F GjH'](W> CILi01345678 :; = @A DJ\A`cK01345678 :; = @A DM\A`cNkk  P 0Q_{{24, 158}, {368, 17}}#$ ,JsvRO/kk  T 0U_{{24, 99}, {368, 11}}#$W  ,JsvVS/Z{443, 267}'(WXunixView0 #\7_sendTransportMethodHasChanged:0 )ˀ^_receiveRememberPasswordClicked:u /0`2ZimapMatrix 4 50br22 9 :. < >qcoKp> @ A B Cdifi  4 4 C I Lbbfe 0g_{{2, 207}, {87, 17}}  4 4 B R Ubbil 0m#$ Z A,svhd/UPath: 4 4 a dbbj 0k_{{97, 205}, {253, 22}}#$%&' B,-.',i /_{{97, 180}, {253, 17}}#$ s C,wsvnf/_(Ex: /usr/sbin/sendmail -t)Z{367, 247}'(W^sendMailerView B }0it2_sendMailerField 0vʀ22 .  ɁwǁK>  x}Ài vvy |z_{{105, 7}, {248, 22}}#$%&' .',x {a@78 M;_NSSecureTextFieldCell78 PQ;   vv~ 0_{{105, 206}, {248, 22}}  Łvv #$%&' ,-.',} /  ԁvv 0_{{-28, 208}, {122, 17}}#$ ,sv/   vv 0_{{0, 243}, {100, 17}}   vv 0#$ ,sv/]Server name: _{{103, 144}, {252, 18}}   vv l  _Use SMTP authentication   vvx 0_{{25, 9}, {75, 17}}#$  ,sv/YPassword:_{{105, 241}, {248, 22}}#$%&' ,-.', /  & )vv _{{103, 35}, {154, 18}} /   7 :vv 0_{{105, 64}, {248, 22}}#$%&' ,-.', /  H Kvv 0_{{25, 66}, {75, 17}}#$ Q ,sv/_{{102, 102}, {122, 26}}  Y \vv  _ ` a> e%k  '(W'(W012345678 _:; n= @A t\`c3D vF xj[Most secure'](W> } `i_{{223, 98}, {136, 32}} ǁ'(W'(W  vv 0_{{-22, 108}, {122, 17}}#$ ,sv/ZMechanism:  vv l_{{176, 174}, {180, 26}}v >{ %k  '(W012345678 :; = @A \`c3D F j'](W> Łi01345678 :; = @A ρ\`c01345678 :; = @A ؁\`c  ߁vv 0_{{22, 180}, {152, 17}}#$ ,svƁÀ/Z{363, 275}'(W\sendSMTPView 0̀2_sendSMTPHostField 0}΀2_sendSMTPPortField 0Ѐ2_sendAuthenticateUsingButton0 Ҁ_#sendAuthenticateUsingButtonClicked: 0Ԁ2_sendSupportedMechanismsPopUp 0ր2_sendSupportedMechanismsButton0  ؀_%sendSupportedMechanismsButtonClicked: 0ڀ2_sendSMTPUsernameField 0܀2_sendRememberPassword0 $ ހ_sendRememberPasswordClicked: *0x2_sendSMTPPasswordSecureField 00G2XsendView 6ǀ2[nextKeyView <€ށ2 Aŀ2 F }2w K02_imapSupportedMechanismsPopUp0 Qx'_%imapSupportedMechanismsButtonClicked:0 W _"sendUseSecureConnectionHasChanged:0 ]р_%receiveUseSecureConnectionHasChanged: c02_pop3DefaultInboxPopUpButton i0?2_unixDefaultInboxPopUpButton o02_sendUseSecureConnection u02_receiveUseSecureConnection> z !g Cv x  _t  A %r BW  & `   !f" 4  u } ^ k Bv Ts Aw U wa x   π;f߁' v3*wBLÀҀՁށi"4DNÁC|(7xÁ}RSˀЁρIb-%D/L1!f@ voHȁ?>  ! k 40 0  0  0   u !  4  u  _k    k k! 0      0 ! wk 4 T  w  k#b߁v߁w# #N/(Àw##߁#vЁv߁b##v? NvDwN/v#߁vv#vÁЁwDN#v?߁w-D###/R#vvZЀ#w߁b߀#" 7?/Z#v!w##vv> !g Cv x  _t  A %r BW  & `   !f" 4  u }0 ^ k Bv Ts Aw U wa x   π;f߁'v3*wBLÀҀՁށi"4DNÁC|(7xÁ}RSˀЁρIb-%D/L<FTGƀZ#6 ǀY؀:"Od! ?>1!f@ voHȁ?> ! !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~^NSTextField111\NSTextField2]NSTextField11]NSTextField22YPopUpListUView2_NSTextField21111YNSButton2_NSTextField2121YNSButton1UView4[NSMenuItem1YNSButton4^NSTextField212ZNSButton41_NSTextField2112\NSTextField3]NSTextField21[NSMenuItem2^NSTextField231_NSTextField21122\NSTextField1^NSTextField211YNSMatrix1^NSTabViewItem1_NSTextField21112^NSTextField213_NSTabViewItem13^NSTextField131_NSTextField1111]NSScrollView3]NSTextField12^NSPopUpButton1UView3_NSTabViewItem12_NSTextField2111\File's Owner\NSTextField4^NSTextField122UView1]NSButtonCell1]NSTextField13^NSTableColumn1\NSTextField5^NSTextField121_NSTextField2311]NSTextField23> !ɀ> !> !ma C ` %f` PnVf q r wQWa x ARWssXHbt u&w x ur  IYo tc |hZ} _ AS}JpxBv{v[wK ! dz B ^" k\L~   Tk0Mg U]T 4ve^Nily Ujg  G_Ow1Gf-fFIˁoon3[9@À!ǀy]q3 Ձ倽/ 4]_s _SÁLȁa'(;[#x!a5u%ӁvÁcՁdNUmQ> !      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstÁāŁƁǁȁɁʁˁ́́΁ρЁсҁӁԁՁցׁ؁فځہ܁݁ށ߁      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUV$68:=B7F`)2CU%-NM&.,3Vbd(/C>7 :2W"QA*?H5"8 +X  EY;(,#IB3$ ZT&+4c-<A#6 D)>[ .!@*;@ L9/9R!\g<e?J^0 %Di'=SGPf_1>>i>A !>D !78GHH;^NSIBObjectData#,1:LQVdf & q   ' 5 C ] i w    # , ? H S T V _ f s y      ! # % ' ) + - / 2 5 8 ; > A D G J M P S V Y \ _ b e h k n q t w z }       = O [ c m v }  ",7ETiw #,18IKMOYZ\ep}%')+-JLNPQSUm68:<>@B\}'4BDFHJLSiv~:CJartvxz "6GIKMOprtvxy{} !#%FHJLNOQSm "$&')+Efhjlnoqs!Ng   2468:;=?Xy{} .@BKPRTVY[`aceghjs} )2?HJOTVXZ\^`bo{}-AJOXcensuwy%4=JXq*,.02?LXZoqsuw   #,.79Rcehjl $02579;>ACHKMhox      / 1 3 5 7 8 : < U v x z | ~ !!!!!&!(!*!,!.!0!2!=!U!v!x!z!|!~!!!!!!!!!!!!!!!!!""""" """$"6"P"q"s"u"w"y"{"}""""""""""## # # #####,#M#O#Q#S#U#W#Y#k#############$$$$$ $$$$$$$$$$%%%% % %%%M%e%%%%%%%%%%%%%%%%%%%&&%&/&1&3&5&7&9&;&D&F&H&Q&Z&_&m&&&&&&&&&&&&&&&&&&&&&&&&&'''''' ' ''''''<'>'@'B'D'E'G'I'b'''''''''''''''(;(S(t(v(x(z(|(}(((((((((((((((((())$)&)()*),)-)/)1)V)X)Z)\)^)`)a)c)})))))))))))))***********K*M*O*Q*S*U*W*Y*[*h*j*l*n*s*|*~******************+++++ + + ++*+K+M+O+Q+S+U+W+d++++++++++++++++++,,,,, , , ,$,E,G,I,K,M,O,Q,^,,,,,,,,,,,,,,,,,,,,,------?-A-C-E-G-I-K-U-~-------------------. .".$.&.(.*.+.-.6.;.J.k.m.o.q.s.t.v.x..........////// /%/'/)/=/F/R/T/V/_/h/m///////////0N0Z0d0o0y000000000000000000001111;1=1?1B1E1F1H1K1T1Y1\1_1a11111111111111112026292<2>2A2D2F2I2r2|222222222222233)3+3-3/323335383]3_3a3c3e3h3i3k3333333333333333344 4"4$4'4*4,4E4b4d4f4i4j4l4o44444444444445555 55<5?5B5D5F5I5K5M5P5]5`5b5e5k5t5v5555555555555555555566 6 666666!66696;6>6A6C6L6U6X6[6^6a6c6666666666666666677777 77777777777777777888/8z8|8888888888888888888888888899 9999 9#9%9N9Q9T9V9X9[9]9_9b9g9999999999999999999::,:7:T:]:b:u:|:::::::::::::::::;#;4;6;9;;;=;J;[;];`;b;d;m;~;;;;;;;;;;;;;;;;<<<<<<<;>>> > >>(>M>O>Q>S>U>X>Y>[>i>z>}>>>>>>>>>>>>????? ? ??-?A?R?U?X?Z?\?y?|??????????????@@"@3@6@9@;@=@F@U@X@[@^@a@d@g@j@l@@@@@@@@@@@@@@@@AAAA A AAA*AuAxA{A~AAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBEBHBJBLBOBQBSBVB\BBBBBBBBBBBBBBBBBBCCCCC C CCNCkCnCqCtCuCwCzCCCCCCCCDD'D,D.D0D3D>DGDIDRDcDfDiDkDmDDDDDDDDDDDDDDDEEEEE E E EE(E9E;E>E@ECE`EcEfEiEjElEoEEEEEEEEEEEEEFFFFF F"F*F;F>FAFCFEFFFFFFGG;GHGTGcGhGkGnGsGuGvG{G~GGGGGGGGGGGGGGGGGGGGGHHH(H+H.H1H4H7H`HcHfHiHlHoHrHuHxHHHHHHHHHIII!I*I6IDIQITIWIZI]I`IcIfIiIlIoIrIIIIIIIIIIIJ JJ"J*J9JDJOJRJUJZJ_JbJcJfJkJnJxJJJJJJJJJJJJJJJJJJJKKK"K6KSKUKWKYK\K^KcKfKoKtKKKKKKKKKKKKKKKKKLLLLL"L$L9LSASDSMSdSgSjY8YAYHY[YfYoYtYYYYYYYYYYYYYZZZZ Z Z ZZ)ZJZLZNZPZSZVZXZjZZZZZZZZZZ[[[[ [ [ [[[[[['[)[V[Y[\[^[`[c[e[g[j[w[z[|[[[[[[[[[[[[[[[[\\"\$\&\)\,\.\1\C\L\N\W\Y\d\m\o\x\\\\\\\\\\\\\\\\\\\]]]]]"]%](]*],]5]B]E]H]K]N]Q]T]V]s]v]y]|]}]]]]]]]]]]]]]^^^^^ ^"^m^p^s^v^x^z^{^~^^^^^^^^^^^^^^^^^^^^^____ _ _4_7_:_<_>_A_C_E_H_q_t_w_y_{_~__________________````` `"`%`=`^```b`e`h`k`m`x``````````````aaaaaaa*a;a>aAaCaEa^aaadafaialaoaxaaaaaaaaaaaaaaaaaabbbbb(b*b,b.b1b4b6boOoRoUoWoYoyooooooooooooppppp p!p2p4p7p9ptAtCtEtHtKtMtOtRtUtWtZt\t_tbtetgtjtmtotqtttwtzt|t~tttttttttttttttttttttttttttttttttttttttttttttttuuuu u u uuuuuuuuu!u$u'u*u-u/u2u4u6u9uADFILNQSUX[]`cfiloruwy|DGJMPSVY\_behknqtwz}…Ņȅ˅΅хԅׅڅ݅ "%(+.147:=@CFILORUX[^adgjmpsvy|Ćdžʆ͆Іӆֆن܆߆ !$'*-0369ACEGIKMOQTVY\_acegikmprtvx{}IGNUMail/Bundles/Account/English.lproj/AccountView.nib/0040755000014600001460000000000010424672357023306 5ustar monotonemonotoneGNUMail/Bundles/Account/English.lproj/AccountView.nib/classes.nib0100644000014600001460000000143710424672357025437 0ustar monotonemonotone{ IBClasses = ( { ACTIONS = {addClicked = id; defaultClicked = id; deleteClicked = id; editClicked = id; }; CLASS = AccountViewController; LANGUAGE = ObjC; OUTLETS = {tableView = SwitchTableView; view = id; }; SUPERCLASS = NSObject; }, {CLASS = ExtendedTableColumn; LANGUAGE = ObjC; SUPERCLASS = NSTableColumn; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, {CLASS = NSObject; LANGUAGE = ObjC; }, {CLASS = NSTableColumn; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, {CLASS = StripeTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; }, {CLASS = SwitchTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; } ); IBVersion = 1; }GNUMail/Bundles/Account/English.lproj/AccountView.nib/info.nib0100644000014600001460000000116710424672357024735 0ustar monotonemonotone IBDocumentLocation 60 63 356 240 0 0 1024 746 IBEditorPositions 5 289 338 445 355 0 0 1024 746 IBFramework Version 291.0 IBLockedObjects 5 IBOpenObjects 5 IBSystem Version 6R73 GNUMail/Bundles/Account/English.lproj/AccountView.nib/keyedobjects.nib0100644000014600001460000001540010424672357026450 0ustar monotonemonotonebplist002Y$archiverX$versionX$objectsT$top_NSKeyedArchiver (,-348<GNlmn}~   $(/0ABGHIMNQUY]^adghmnpqrstwz{mZ   !"#$%&'()*+,-./U$null  !"#$%&']NSFontManagerV$classYNSNextOid_NSVisibleWindowsVNSRoot\NSOidsValues_NSClassesValues]NSConnections]NSNamesValues]NSObjectsKeysZNSOidsKeys]NSClassesKeys[NSFramework[NSNamesKeys_NSObjectsValues )*+[NSClassName_AccountViewController./01Z$classnameX$classes^NSCustomObject02XNSObject_IBCocoaFramework 567ZNS.objects./9:\NSMutableSet9;2UNSSet 5=>5?@ABCDEF mtR}OA A AAx_{{369, 0}, {16, 17}}./]_NSCornerView2 5=/ mgM\NSIsEditableZNSDataCellWNSWidthZNSMinWidth\NSIdentifierZNSMaxWidth\NSHeaderCell.&"BX"B "DzWEnabled PYNSSupport\NSCellFlags2[NSTextColor[NSCellFlagsZNSContents%! VNSSizeVNSNameXNSfFlags"A0\LucidaGrande./VNSFont2 WNSWhite\NSColorSpace I0.333333./WNSColor2 ]NSCatalogName[NSColorName$"#VSystem_headerTextColor B0./_NSTableHeaderCell2_NSTextFieldCell\NSActionCellVNSCell P_M]NSControlView-(+1@'Q9 "AP) B1 ߀,_controlTextColor./2./]NSTableColumn2 mMg^NSIsResizeable3"C;"B01\Account Name P  2 P_M  4\Redwood City./^NSMutableArray2WNSArray ߀87YgridColor D0.5./^NSClassSwapper2YtableView./_NSNibOutletConnector2^NSNibConnector HIJ!"#LK= OtWX%&'gJ@? Oo))U*+,-.[NSExtensionl_{{20, 16}, {26, 24}} 123456789:#;<=>?@_NSKeyEquivalent_NSAlternateContents_NSPeriodicDelay^NSButtonFlags2]NSButtonFlags]NSNormalImage_NSPeriodicIntervalIGF@BASAdd )CDEF^NSResourceNameECDWNSImageSadd./JK_NSCustomResourceJL2_%NSCustomResourceP OPMYNS.stringH./RS_NSMutableStringRT2XNSString./VW\NSButtonCellVX2]%NSButtonCell./Z[XNSButtonZ\2YNSControl[addClicked:./_`_NSNibControlConnector_2 HIJ!bcVN OtWX%efgPO_{{56, 16}, {26, 24}} 12345678ijc;<=k?lUTRQTEdit )CDEoSTedit OPM OPM\editClicked: HIJ!uv`X OtWX%xygZY_{{92, 15}, {26, 26}} 12345678|}v;<=~?_^\[VDelete )CDE]Ydelete_20 OPM OPM^deleteClicked: HIJ!jb OptWX%gdc_{{325, 10}, {86, 32}} 1234578;=?_NSAlternateImageih8@feWDefault ˀgYHelvetica OPM OPM_defaultClicked: HIJK 5=#cvw 5=^f 5=M_{{1, 17}, {368, 175}} ߀rq_controlBackgroundColor I0.666667./ZNSClipView2 OptWXwwgwXNSActionXNSTargetYNSPercentwvu"?k_{{369, 17}, {15, 175}}\_doScroller:./ZNSScroller\2 OptXwwwzy"?}_{{-100, -100}, {377, 15}} 5=ġd_{{1, 0}, {368, 17}}_{{20, 58}, {385, 193}}./\NSScrollView2 OptWXg_{{17, 259}, {391, 34}} P=Ӏ@_lPlease specify your account information. You need to add at least one account in order to use GNUMail.app. ߀\controlColor./[NSTextField\2\%NSTextFieldZ{425, 313} OP./\NSCustomView2Tview HIJKMZdataSource HIJKMXdelegate 5ꀐMvcw#./2 5wMM 5wcMv# 5]NSScrollView1YNSButton1\File's Owner\NSTextField1YNSButton3YNSButton2^NSTableColumn1TView 5 5` 5 A@M#wcBCEvDF? 5       ./01^NSIBObjectData0234]IB.objectdata#,5:LQ&9@M_m{$/8GLUhq|~GYmw%')+-279;=?@BDIN`lBDFPYmv} *,.02479LNen| !#+HR_kw    $ , 1 F T ` b d f h o        . 3 5 7 D G \ ^ q z   2 4 A J Y ` h }    * , . 0 I U W Y [ ] _ v   % ' ) + - 6 ; = ? A E R a c e g o s |  #,7AMVnu &3DFHace|  ,.02J %09<Tikm,5@Kprty -NPUW $-6CLQbdo!#%')+-;ER_is   "$&(*,.02468:<>@BDM\aft5vGNUMail/Bundles/Account/AccountEditorWindow.h0100644000014600001460000000207510424672357021677 0ustar monotonemonotone/* ** AccountEditorWindow.h ** ** Copyright (c) 2003-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_AccountEditorWindow #define _GNUMail_H_AccountEditorWindow #import @interface AccountEditorWindow : NSWindow { @public NSTabView *tabView; } - (void) layoutWindow; @end #endif // _GNUMail_H_AccountEditorWindow GNUMail/Bundles/Account/AccountEditorWindow.m0100644000014600001460000000564010424672357021705 0ustar monotonemonotone/* ** AccountEditorWindow.m ** ** Copyright (c) 2003-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "AccountEditorWindow.h" #include "Constants.h" #include "LabelWidget.h" // // // @implementation AccountEditorWindow - (void) dealloc { NSDebugLog(@"AccountEditorWindow: -dealloc"); RELEASE(tabView); [super dealloc]; } // // // - (void) layoutWindow { NSButton *okButton, *cancelButton; NSTabViewItem *tabViewItem; tabView = [[NSTabView alloc] initWithFrame: NSMakeRect(5,35,400,360)]; tabViewItem = [[NSTabViewItem alloc] initWithIdentifier: @"Personal"]; [tabViewItem setLabel: _(@"Personal")]; [tabView addTabViewItem: tabViewItem]; RELEASE(tabViewItem); tabViewItem = [[NSTabViewItem alloc] initWithIdentifier: @"Receive"]; [tabViewItem setLabel: _(@"Receive")]; [tabView addTabViewItem: tabViewItem]; RELEASE(tabViewItem); tabViewItem = [[NSTabViewItem alloc] initWithIdentifier: @"Receive options"]; [tabViewItem setLabel: _(@"Receive options")]; [tabView addTabViewItem: tabViewItem]; RELEASE(tabViewItem); tabViewItem = [[NSTabViewItem alloc] initWithIdentifier: @"Send"]; [tabViewItem setLabel: _(@"Send")]; [tabView addTabViewItem: tabViewItem]; RELEASE(tabViewItem); [[self contentView] addSubview: tabView]; cancelButton = [[NSButton alloc] initWithFrame: NSMakeRect(250,5,75,ButtonHeight)]; [cancelButton setButtonType: NSMomentaryPushButton]; [cancelButton setKeyEquivalent: @"\e"]; [cancelButton setTitle: _(@"Cancel")]; [cancelButton setTarget: [self windowController]]; [cancelButton setAction: @selector(cancelClicked:)]; [[self contentView] addSubview: cancelButton]; RELEASE(cancelButton); okButton = [[NSButton alloc] initWithFrame: NSMakeRect(330,5,75,ButtonHeight)]; [okButton setButtonType: NSMomentaryPushButton]; [okButton setKeyEquivalent: @"\r"]; [okButton setImagePosition: NSImageRight]; [okButton setImage: [NSImage imageNamed: @"common_ret"]]; [okButton setAlternateImage: [NSImage imageNamed: @"common_retH"]]; [okButton setTitle: _(@"OK")]; [okButton setTarget: [self windowController]]; [okButton setAction: @selector(okClicked:)]; [[self contentView] addSubview: okButton]; RELEASE(okButton); } @end GNUMail/Bundles/Account/AccountEditorWindowController.h0100644000014600001460000001137410424672357023745 0ustar monotonemonotone/* ** AccountEditorWindowController.h ** ** Copyright (c) 2003-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_AccountEditorWindowController #define _GNUMail_H_AccountEditorWindowController #import #define ACCOUNT_ADD 1 #define ACCOUNT_EDIT 2 @class FolderNode; @class CWIMAPStore; @interface AccountEditorWindowController: NSWindowController { // Outlets IBOutlet NSTabView *tabView; // Personal view IBOutlet id personalView; IBOutlet NSTextField *personalAccountNameField; IBOutlet NSTextField *personalNameField; IBOutlet NSTextField *personalEMailField; IBOutlet NSTextField *personalReplyToField; IBOutlet NSTextField *personalOrganizationField; IBOutlet NSPopUpButton *personalSignaturePopUp; IBOutlet NSTextField *personalSignatureField; IBOutlet NSButton *personalLocationButton; IBOutlet NSTextField *personalLocationLabel; // Receive view IBOutlet id receiveView; IBOutlet NSTextField *receiveServerNameField; IBOutlet NSTextField *receiveServerPortField; IBOutlet NSTextField *receiveUsernameField; IBOutlet NSPopUpButton *receivePopUp; IBOutlet NSSecureTextField *receivePasswordSecureField; IBOutlet NSButton *receiveRememberPassword; IBOutlet NSButton *receiveCheckOnStartup; IBOutlet NSPopUpButton *receiveUseSecureConnection; IBOutlet NSMatrix *receiveMatrix; IBOutlet NSTextField *receiveMinutesField; // IMAPView IBOutlet id imapView; IBOutlet NSPopUpButton *imapSupportedMechanismsPopUp; IBOutlet NSTableColumn *imapViewMailboxColumn; IBOutlet NSTableColumn *imapSubscriptionColumn; IBOutlet NSOutlineView *imapOutlineView; IBOutlet NSMatrix *imapMatrix; // POP3View IBOutlet id pop3View; IBOutlet NSButton *pop3LeaveOnServer; IBOutlet NSTextField *pop3DaysField; IBOutlet NSButton *pop3UseAPOP; IBOutlet NSPopUpButton *pop3DefaultInboxPopUpButton; // UNIXView IBOutlet id unixView; IBOutlet NSTextField *unixMailspoolFileField; IBOutlet NSPopUpButton *unixDefaultInboxPopUpButton; // Send view IBOutlet id sendView; IBOutlet id sendMailerView; IBOutlet id sendSMTPView; IBOutlet NSPopUpButton *sendTransportMethodPopUpButton; IBOutlet NSTextField *sendMailerField; IBOutlet NSTextField *sendSMTPHostField; IBOutlet NSTextField *sendSMTPPortField; IBOutlet NSTextField *sendSMTPUsernameField; IBOutlet NSSecureTextField *sendSMTPPasswordSecureField; IBOutlet NSButton *sendRememberPassword; IBOutlet NSPopUpButton *sendUseSecureConnection; IBOutlet NSButton *sendAuthenticateUsingButton; IBOutlet NSButton *sendSupportedMechanismsButton; IBOutlet NSPopUpButton *sendSupportedMechanismsPopUp; // Other ivars NSMutableArray *allVisibleFolders; FolderNode *allFolders, *allNodes; CWIMAPStore *store; NSString *key; int operation; BOOL _ready; } - (id) initWithWindowNibName: (NSString *) windowNibName; - (void) dealloc; // // action methods // - (IBAction) cancelClicked: (id) sender; - (IBAction) okClicked: (id) sender; - (IBAction) imapList: (id) sender; - (IBAction) imapSupportedMechanismsButtonClicked: (id) sender; - (IBAction) personalLocationButtonClicked: (id) sender; - (IBAction) receiveRememberPasswordClicked: (id) sender; - (IBAction) receiveSetAutomatically: (id) sender; - (IBAction) receiveSetManually: (id) sender; - (IBAction) receiveUseSecureConnectionHasChanged: (id) sender; - (IBAction) selectionInPersonalSignaturePopUpHasChanged: (id) sender; - (IBAction) sendAuthenticateUsingButtonClicked: (id) sender; - (IBAction) sendRememberPasswordClicked: (id) sender; - (IBAction) sendSupportedMechanismsButtonClicked: (id) sender; - (IBAction) sendTransportMethodHasChanged: (id) sender; - (IBAction) sendUseSecureConnectionHasChanged: (id) sender; - (IBAction) setType: (id) sender; - (IBAction) unixMailspoolFileButtonClicked: (id) sender; // // access/mutation methods // - (NSString *) key; - (void) setKey: (NSString *) theKey; - (int) operation; - (void) setOperation: (int) theOperation; // // other methods // - (void) initializeFromDefaults; @end #endif // _GNUMail_H_AccountEditorWindowController GNUMail/Bundles/Account/AccountEditorWindowController.m0100644000014600001460000017255110601706266023751 0ustar monotonemonotone/* ** AccountEditorWindowController.m ** ** Copyright (c) 2003-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "AccountEditorWindowController.h" #include "Constants.h" #include "FolderNode.h" #include "FolderNodePopUpItem.h" #include "GNUMail.h" #include "MailboxManagerController.h" #include "PasswordPanelController.h" #include "Utilities.h" #ifndef MACOSX #include "AccountEditorWindow.h" #include "IMAPView.h" #include "PersonalView.h" #include "POP3View.h" #include "ReceiveView.h" #include "SendView.h" #include "UNIXView.h" #endif #include #include #include #include #include #define IMAP_SERVICE_PORT 143 #define POP3_SERVICE_PORT 110 #define IMAPS_SERVICE_PORT 993 #define POP3S_SERVICE_PORT 995 #define SMTP_PORT 25 #define SSMTP_PORT 465 // // Private interface // @interface AccountEditorWindowController (Private) - (BOOL) _accountNameIsValid; - (void) _bestGuessMailspoolFile; - (void) _connectToIMAPServer; - (BOOL) _mailboxesSelectionIsValid; - (BOOL) _nameAndAddressAreSpecified; - (void) _rebuildListOfSubscribedFolders; - (BOOL) _receiveInformationIsValid; - (void) _saveChangesForMailboxesPopUpButton: (NSPopUpButton *) thePopUpButton name: (NSString *) theName dictionary: (NSMutableDictionary *) theMutableDictionary; - (BOOL) _sendInformationIsValid; - (void) _setEnableReceiveUIElements: (BOOL) aBOOL; @end // // // @implementation AccountEditorWindowController - (id) initWithWindowNibName: (NSString *) windowNibName { NSButtonCell *cell; #ifndef MACOSX AccountEditorWindow *aWindow; #endif // First initializations of some variables allNodes = [Utilities initializeFolderNodesUsingAccounts: [[[NSUserDefaults standardUserDefaults] volatileDomainForName: @"PREFERENCES"] objectForKey: @"ACCOUNTS"]]; RETAIN(allNodes); allFolders = [[FolderNode alloc] init]; [allFolders setName: _(@"All Mailboxes")]; store = nil; #ifdef MACOSX self = [super initWithWindowNibName: windowNibName]; #else aWindow = [[AccountEditorWindow alloc] initWithContentRect: NSMakeRect(200,200,410,400) styleMask: NSTitledWindowMask|NSMiniaturizableWindowMask backing: NSBackingStoreBuffered defer: YES]; self = [super initWithWindow: aWindow]; [aWindow layoutWindow]; [aWindow setDelegate: self]; // We link our standard outlets tabView = aWindow->tabView; // We load our Personal view personalView = [[PersonalView alloc] initWithParent: self]; [personalView layoutView]; personalAccountNameField = ((PersonalView *)personalView)->personalAccountNameField; personalNameField = ((PersonalView *)personalView)->personalNameField; personalEMailField = ((PersonalView *)personalView)->personalEMailField; personalReplyToField = ((PersonalView *)personalView)->personalReplyToField; personalOrganizationField = ((PersonalView *)personalView)->personalOrganizationField; personalSignaturePopUp = ((PersonalView *)personalView)->personalSignaturePopUp; personalSignatureField = ((PersonalView *)personalView)->personalSignatureField; personalLocationButton = ((PersonalView *)personalView)->personalLocationButton; personalLocationLabel = (NSTextField *)((PersonalView *)personalView)->personalLocationLabel; // We load our Receive view receiveView = [[ReceiveView alloc] initWithParent: self]; [receiveView layoutView]; receiveServerNameField = ((ReceiveView *)receiveView)->receiveServerNameField; receiveServerPortField = ((ReceiveView *)receiveView)->receiveServerPortField; receiveUsernameField = ((ReceiveView *)receiveView)->receiveUsernameField; receivePopUp = ((ReceiveView *)receiveView)->receivePopUp; receivePasswordSecureField = ((ReceiveView *)receiveView)->receivePasswordSecureField; receiveRememberPassword = ((ReceiveView *)receiveView)->receiveRememberPassword; receiveCheckOnStartup = ((ReceiveView *)receiveView)->receiveCheckOnStartup; receiveUseSecureConnection = ((ReceiveView *)receiveView)->receiveUseSecureConnection; receiveMatrix = ((ReceiveView *)receiveView)->receiveMatrix; receiveMinutesField = ((ReceiveView *)receiveView)->receiveMinutesField; // IMAPView imapView = [[IMAPView alloc] initWithParent: self]; [imapView layoutView]; imapSupportedMechanismsPopUp = ((IMAPView *)imapView)->imapSupportedMechanismsPopUp; imapViewMailboxColumn = ((IMAPView *)imapView)->imapViewMailboxColumn; imapSubscriptionColumn = ((IMAPView *)imapView)->imapSubscriptionColumn; imapOutlineView = ((IMAPView *)imapView)->imapOutlineView; imapMatrix = ((IMAPView *)imapView)->imapMatrix; // POP3View pop3View = [[POP3View alloc] initWithParent: self]; [pop3View layoutView]; pop3LeaveOnServer = ((POP3View *)pop3View)->pop3LeaveOnServer; pop3DaysField = ((POP3View *)pop3View)->pop3DaysField; pop3UseAPOP = ((POP3View *)pop3View)->pop3UseAPOP; pop3DefaultInboxPopUpButton = ((POP3View *)pop3View)->pop3DefaultInboxPopUpButton; // UNIXView unixView = [[UNIXView alloc] initWithParent: self]; [unixView layoutView]; unixMailspoolFileField = ((UNIXView *)unixView)->unixMailspoolFileField; unixDefaultInboxPopUpButton = ((UNIXView *)unixView)->unixDefaultInboxPopUpButton; // We load our Send view sendView = [[SendView alloc] initWithParent: self]; [sendView layoutView]; sendTransportMethodPopUpButton = ((SendView *)sendView)->sendTransportMethodPopUpButton; sendMailerView = [[SendMailerView alloc] initWithParent: self]; [sendMailerView layoutView]; sendMailerField = ((SendMailerView *)sendMailerView)->sendMailerField; sendSMTPView = [[SendSMTPView alloc] initWithParent: self]; [sendSMTPView layoutView]; sendSMTPHostField = ((SendSMTPView *)sendSMTPView)->sendSMTPHostField; sendSMTPPortField = ((SendSMTPView *)sendSMTPView)->sendSMTPPortField; sendSMTPUsernameField = ((SendSMTPView *)sendSMTPView)->sendSMTPUsernameField; sendSMTPPasswordSecureField = ((SendSMTPView *)sendSMTPView)->sendSMTPPasswordSecureField; sendRememberPassword = ((SendSMTPView *)sendSMTPView)->sendRememberPassword; sendUseSecureConnection = ((SendSMTPView *)sendSMTPView)->sendUseSecureConnection; sendAuthenticateUsingButton = ((SendSMTPView *)sendSMTPView)->sendAuthenticateUsingButton; sendSupportedMechanismsButton = ((SendSMTPView *)sendSMTPView)->sendSupportedMechanismsButton; sendSupportedMechanismsPopUp = ((SendSMTPView *)sendSMTPView)->sendSupportedMechanismsPopUp; RELEASE(aWindow); #endif [[self window] setTitle: _(@"")]; // We add all our views #ifndef MACOSX [[tabView tabViewItemAtIndex: 0] setView: personalView]; [[tabView tabViewItemAtIndex: 1] setView: receiveView]; [[tabView tabViewItemAtIndex: 3] setView: sendView]; #endif [[tabView tabViewItemAtIndex: 2] setView: pop3View]; // We set our custom cell for the IMAP view. cell = AUTORELEASE([[NSButtonCell alloc] init]); [cell setButtonType: NSSwitchButton]; [cell setImagePosition: NSImageOnly]; [cell setControlSize: NSSmallControlSize]; [imapSubscriptionColumn setDataCell: cell]; // We populate our popup buttons [Utilities addItemsToPopUpButton: pop3DefaultInboxPopUpButton usingFolderNodes: allNodes]; [Utilities addItemsToPopUpButton: unixDefaultInboxPopUpButton usingFolderNodes: allNodes]; [receiveUseSecureConnection removeAllItems]; [receiveUseSecureConnection addItemWithTitle: _(@"No")]; [receiveUseSecureConnection addItemWithTitle: _(@"SSL")]; [receiveUseSecureConnection addItemWithTitle: _(@"TLS, if available")]; [receiveUseSecureConnection addItemWithTitle: _(@"TLS")]; [sendUseSecureConnection removeAllItems]; [sendUseSecureConnection addItemWithTitle: _(@"No")]; [sendUseSecureConnection addItemWithTitle: _(@"SSL")]; [sendUseSecureConnection addItemWithTitle: _(@"TLS, if available")]; [sendUseSecureConnection addItemWithTitle: _(@"TLS")]; // We select default items in various popups and we refresh the view [personalSignaturePopUp selectItemAtIndex: 0]; [receiveUseSecureConnection selectItemAtIndex: 0]; [sendUseSecureConnection selectItemAtIndex: 0]; [sendSupportedMechanismsPopUp selectItemAtIndex: 0]; [receivePopUp selectItemWithTitle: _(@"POP3")]; [self setType: nil]; // We set the supported IMAP AUTH mechanism. We must NOT localize the "Password" item. [imapSupportedMechanismsPopUp removeAllItems]; [imapSupportedMechanismsPopUp addItemWithTitle: @"Password"]; // We select a default item in our send popup and we refresh the view [sendTransportMethodPopUpButton selectItemWithTitle: _(@"SMTP")]; [self sendTransportMethodHasChanged: nil]; // We set the supported SMTP AUTH mechanisms [sendSupportedMechanismsPopUp removeAllItems]; [sendSupportedMechanismsPopUp addItemWithTitle: _(@"None")]; // We initialize some ivars allVisibleFolders = [[NSMutableArray alloc] init]; store = nil; _ready = NO; [[self window] setFrameAutosaveName: @"AccountEditorWindow"]; [[self window] setFrameUsingName: @"AccountEditorWindow"]; return self; } // // // - (void) dealloc { // We release our ivars RELEASE(allVisibleFolders); RELEASE(key); RELEASE(allFolders); RELEASE(allNodes); #ifndef MACOSX // We release all our views RELEASE(personalView); RELEASE(receiveView); RELEASE(sendView); RELEASE(sendMailerView); RELEASE(sendSMTPView); RELEASE(imapView); RELEASE(pop3View); RELEASE(unixView); #else [imapOutlineView setDataSource: nil]; #endif // We close our IMAP connection, if it was open // The delegate method -connectionTerminated: will NOT // be invoked (and that's what we want) since we set // the store's delegate to nil before invoking the // -close method. if (store) { [store setDelegate: nil]; [store close]; while ([store isConnected]) { [[NSRunLoop currentRunLoop] acceptInputForMode: NSDefaultRunLoopMode beforeDate: [NSDate dateWithTimeIntervalSinceNow: 0.1]]; } } [super dealloc]; } // // action methods // - (IBAction) cancelClicked: (id) sender { [NSApp stopModalWithCode: NSRunAbortedResponse]; [self close]; } // // Dummy method so the supportedAuthenticationMechanisms NSPopUpButton doesn't disable // itself when selecting an enabled item in it. // -(void) foo: (id) sender {} // // // - (IBAction) imapList: (id) sender { NSEnumerator *theEnumerator; FolderNode *nodes; [self _connectToIMAPServer]; if (!_ready) { return; } [allFolders setChildren: nil]; theEnumerator = [store folderEnumerator]; if (!theEnumerator) { return; } nodes = [Utilities folderNodesFromFolders: theEnumerator separator: [store folderSeparator]]; RETAIN(nodes); [allFolders setChildren: [nodes children]]; RELEASE(nodes); [self _rebuildListOfSubscribedFolders]; [imapOutlineView reloadData]; } // // // // - (IBAction) imapSupportedMechanismsButtonClicked: (id) sender { NSMenuItem *theItem; NSArray *theArray; NSString *aString; int i; [self _connectToIMAPServer]; if (!_ready) { return; } [imapSupportedMechanismsPopUp removeAllItems]; // The standard "password" authentication theItem = [[NSMenuItem alloc] initWithTitle: @"Password" action: NULL keyEquivalent: @""]; [theItem setAction: @selector(foo:)]; [theItem setEnabled: YES]; [theItem setTarget: self]; [[imapSupportedMechanismsPopUp menu] addItem: theItem]; theArray = [store supportedMechanisms]; for (i = 0; i < [theArray count]; i++) { aString = [theArray objectAtIndex: i]; theItem = [[NSMenuItem alloc] initWithTitle: aString action: NULL keyEquivalent: @""]; if ( [aString caseInsensitiveCompare: @"CRAM-MD5"] == NSOrderedSame || [aString caseInsensitiveCompare: @"LOGIN"] == NSOrderedSame ) { [theItem setAction: @selector(foo:)]; [theItem setEnabled: YES]; } else { [theItem setAction: NULL]; [theItem setEnabled: NO]; } [theItem setTarget: self]; [[imapSupportedMechanismsPopUp menu] addItem: theItem]; RELEASE(theItem); } [imapSupportedMechanismsPopUp selectItemAtIndex: 0]; } // // // - (IBAction) okClicked: (id) sender { NSMutableDictionary *aMutableDictionary, *allValues, *allPreferences, *allAccounts; NSNumber *serverTypeValue; NSString *theKey; int value; // Before doing anything, we verify if we got any invalid preferences set if (![self _accountNameIsValid]) { return; } if (![self _nameAndAddressAreSpecified]) { return; } if (![self _receiveInformationIsValid]) { return; } if (![self _sendInformationIsValid]) { return; } if (![self _mailboxesSelectionIsValid]) { return; } // We are now ready to save the new account (or the edited account); allPreferences = [[NSMutableDictionary alloc] init]; allAccounts = [[NSMutableDictionary alloc] init]; [allPreferences addEntriesFromDictionary: [[NSUserDefaults standardUserDefaults] volatileDomainForName: @"PREFERENCES"]]; if ([allPreferences objectForKey: @"ACCOUNTS"]) { [allAccounts addEntriesFromDictionary: [allPreferences objectForKey: @"ACCOUNTS"]]; } if ([self key]) { allValues = AUTORELEASE([[NSMutableDictionary alloc] initWithDictionary: [allAccounts objectForKey: [self key]]]); } else { allValues = AUTORELEASE([[NSMutableDictionary alloc] init]); } // // PERSONAL // aMutableDictionary = [[NSMutableDictionary alloc] init]; [personalSignaturePopUp synchronizeTitleAndSelectedItem]; [aMutableDictionary setObject: [personalNameField stringValue] forKey: @"NAME"]; [aMutableDictionary setObject: [personalEMailField stringValue] forKey: @"EMAILADDR"]; [aMutableDictionary setObject: [personalReplyToField stringValue] forKey: @"REPLYTOADDR"]; [aMutableDictionary setObject: [personalOrganizationField stringValue] forKey: @"ORGANIZATION"]; [aMutableDictionary setObject: [NSNumber numberWithInt: [personalSignaturePopUp indexOfSelectedItem]] forKey: @"SIGNATURE_SOURCE"]; [aMutableDictionary setObject: [personalSignatureField stringValue] forKey: @"SIGNATURE"]; [allValues setObject: aMutableDictionary forKey: @"PERSONAL"]; RELEASE(aMutableDictionary); // // RECEIVE // aMutableDictionary = [[NSMutableDictionary alloc] init]; [receivePopUp synchronizeTitleAndSelectedItem]; // We set the type of our server and our port if ([[receivePopUp titleOfSelectedItem] isEqualToString: _(@"POP3")]) { serverTypeValue = [NSNumber numberWithInt: POP3]; if ([receiveServerPortField intValue] > 0) { [aMutableDictionary setObject: [NSNumber numberWithInt: [receiveServerPortField intValue]] forKey: @"PORT"]; } else { [aMutableDictionary setObject: [NSNumber numberWithInt: POP3_SERVICE_PORT] forKey: @"PORT"]; } } else if ([[receivePopUp titleOfSelectedItem] isEqualToString: _(@"IMAP")]) { serverTypeValue = [NSNumber numberWithInt: IMAP]; if ([receiveServerPortField intValue] > 0) { [aMutableDictionary setObject: [NSNumber numberWithInt: [receiveServerPortField intValue]] forKey: @"PORT"]; } else { [aMutableDictionary setObject: [NSNumber numberWithInt: IMAP_SERVICE_PORT] forKey: @"PORT"]; } } else { serverTypeValue = [NSNumber numberWithInt: UNIX]; } // We get the "new" key theKey = [personalAccountNameField stringValue]; // // Before potentially removing the other values of our configuration (if for example, // theKey is different from [self key]), we save our list of subscribed IMAP folders. // if ([allAccounts objectForKey: [self key]] && [[allValues objectForKey: @"RECEIVE"] objectForKey: @"SUBSCRIBED_FOLDERS"] && [allVisibleFolders count] == 0) { [allVisibleFolders addObjectsFromArray: [[allValues objectForKey: @"RECEIVE"] objectForKey: @"SUBSCRIBED_FOLDERS"]]; } if ( ![theKey isEqualToString: [self key]] ) { // We don't try to remove it if it's not in there! if ( [allAccounts objectForKey: [self key]] ) { [allAccounts removeObjectForKey: [self key]]; } [self setKey: theKey]; } // We set the SERVER TYPE pref value [aMutableDictionary setObject: serverTypeValue forKey: @"SERVERTYPE"]; // We set the rest of the informations [aMutableDictionary setObject: [receiveServerNameField stringValue] forKey: @"SERVERNAME"]; [aMutableDictionary setObject: [receiveUsernameField stringValue] forKey: @"USERNAME"]; // We save the password or we remove it from the defaults database if ( [receiveRememberPassword state] == NSOnState ) { [aMutableDictionary setObject: [Utilities encryptPassword: [receivePasswordSecureField stringValue] withKey: [NSString stringWithFormat: @"%@ @ %@", [receiveUsernameField stringValue], [receiveServerNameField stringValue]]] forKey: @"PASSWORD"]; } else { // We don't try to remove it if it's not in there! if ( [aMutableDictionary objectForKey: @"PASSWORD"] ) { [aMutableDictionary removeObjectForKey: @"PASSWORD"]; } } [aMutableDictionary setObject: [NSNumber numberWithInt: [receiveRememberPassword state]] forKey: @"REMEMBERPASSWORD"]; [aMutableDictionary setObject: [NSNumber numberWithInt: [receiveCheckOnStartup state]] forKey: @"CHECKONSTARTUP"]; [receiveUseSecureConnection synchronizeTitleAndSelectedItem]; [aMutableDictionary setObject: [NSNumber numberWithInt: [receiveUseSecureConnection indexOfSelectedItem]] forKey: @"USESECURECONNECTION"]; [aMutableDictionary setObject: [NSNumber numberWithInt: [receiveMatrix selectedRow]] forKey: @"RETRIEVEMETHOD"]; value = [receiveMinutesField intValue]; if ( value <= 0 ) { value = 1; } [aMutableDictionary setObject: [NSNumber numberWithInt: value] forKey: @"RETRIEVEMINUTES"]; // Our POP3 defaults [aMutableDictionary setObject: [NSNumber numberWithInt: [pop3LeaveOnServer state]] forKey: @"LEAVEONSERVER"]; value = [pop3DaysField intValue]; [aMutableDictionary setObject: [NSNumber numberWithInt: (value <= 0 ? 365 : value)] forKey: @"RETAINPERIOD"]; [aMutableDictionary setObject: [NSNumber numberWithInt: [pop3UseAPOP state]] forKey: @"USEAPOP"]; // Our IMAP defaults - authentication mechanism and our subscribed list of folders for IMAP [aMutableDictionary setObject: [imapSupportedMechanismsPopUp titleOfSelectedItem] forKey: @"AUTH_MECHANISM"]; [aMutableDictionary setObject: allVisibleFolders forKey: @"SUBSCRIBED_FOLDERS"]; [aMutableDictionary setObject: [NSNumber numberWithInt: [[imapMatrix selectedCell] tag]] forKey: @"SHOW_WHICH_MAILBOXES"]; // Our UNIX defaults [aMutableDictionary setObject: [unixMailspoolFileField stringValue] forKey: @"MAILSPOOLFILE"]; // We now save the new defaults pour this server [allValues setObject: aMutableDictionary forKey: @"RECEIVE"]; RELEASE(aMutableDictionary); // // SEND // aMutableDictionary = [[NSMutableDictionary alloc] init]; [sendTransportMethodPopUpButton synchronizeTitleAndSelectedItem]; [sendSupportedMechanismsPopUp synchronizeTitleAndSelectedItem]; [aMutableDictionary setObject: [NSNumber numberWithInt: ([sendTransportMethodPopUpButton indexOfSelectedItem] + 1)] forKey: @"TRANSPORT_METHOD"]; [aMutableDictionary setObject: [sendMailerField stringValue] forKey: @"MAILER_PATH"]; [aMutableDictionary setObject: [sendSMTPHostField stringValue] forKey: @"SMTP_HOST"]; // SMTP port value = [sendSMTPPortField intValue]; if (value <= 0) { value = SMTP_PORT; } [aMutableDictionary setObject: [NSNumber numberWithInt: value] forKey: @"SMTP_PORT"]; // SMTP username and password [aMutableDictionary setObject: [sendSMTPUsernameField stringValue] forKey: @"SMTP_USERNAME"]; if ([sendRememberPassword state] == NSOnState) { [aMutableDictionary setObject: [Utilities encryptPassword: [sendSMTPPasswordSecureField stringValue] withKey: [NSString stringWithFormat: @"%@ @ %@", [sendSMTPUsernameField stringValue], [sendSMTPHostField stringValue]]] forKey: @"SMTP_PASSWORD"]; } else { [aMutableDictionary removeObjectForKey: @"SMTP_PASSWORD"]; } [aMutableDictionary setObject: [NSNumber numberWithInt: [sendRememberPassword state]] forKey: @"REMEMBERPASSWORD"]; [sendUseSecureConnection synchronizeTitleAndSelectedItem]; [aMutableDictionary setObject: [NSNumber numberWithInt: [sendUseSecureConnection indexOfSelectedItem]] forKey: @"USESECURECONNECTION"]; [aMutableDictionary setObject: [NSNumber numberWithInt: [sendAuthenticateUsingButton state]] forKey: @"SMTP_AUTH"]; [aMutableDictionary setObject: [sendSupportedMechanismsPopUp titleOfSelectedItem] forKey: @"SMTP_AUTH_MECHANISM"]; [allValues setObject: aMutableDictionary forKey: @"SEND"]; RELEASE(aMutableDictionary); // // MAILBOXES // aMutableDictionary = [[NSMutableDictionary alloc] initWithDictionary: [allValues objectForKey: @"MAILBOXES"]]; if ([serverTypeValue intValue] == POP3) { [self _saveChangesForMailboxesPopUpButton: pop3DefaultInboxPopUpButton name: @"INBOXFOLDERNAME" dictionary: aMutableDictionary]; } else if ([serverTypeValue intValue] == UNIX) { [self _saveChangesForMailboxesPopUpButton: unixDefaultInboxPopUpButton name: @"INBOXFOLDERNAME" dictionary: aMutableDictionary]; } else { [aMutableDictionary setObject: [NSString stringWithFormat: @"imap://%@@%@/INBOX", [receiveUsernameField stringValue], [receiveServerNameField stringValue]] forKey: @"INBOXFOLDERNAME"]; } [allValues setObject: aMutableDictionary forKey: @"MAILBOXES"]; RELEASE(aMutableDictionary); // We now save back all the accounts in the volatile domain [allAccounts setObject: allValues forKey: [self key]]; [allPreferences setObject: allAccounts forKey: @"ACCOUNTS"]; // FIXME - This is causing a segfault under OS X #ifndef MACOSX [[NSUserDefaults standardUserDefaults] removeVolatileDomainForName: @"PREFERENCES"]; #endif [[NSUserDefaults standardUserDefaults] setVolatileDomain: allPreferences forName: @"PREFERENCES"]; RELEASE(allAccounts); RELEASE(allPreferences); // We finally warn the user if he's adding an IMAP account showing // all folders. That could impact the performance of GNUMail. if ( [self operation] == ACCOUNT_ADD && [serverTypeValue intValue] == IMAP && [[imapMatrix selectedCell] tag] == IMAP_SHOW_ALL ) { NSRunInformationalAlertPanel(_(@"Warning!"), _(@"You have created a new IMAP account showing all mailboxes.\nDepending on the IMAP server, this could slow down GNUMail.\nYou might consider modifying the newly created account so it shows only\nsubscribed mailboxes by checking the appropriate option in the \"Receive options\" tab."), _(@"OK"), NULL, NULL, NULL); } [NSApp stopModal]; [self close]; } // // // - (IBAction) personalLocationButtonClicked: (id) sender { NSOpenPanel *oPanel; int result; oPanel = [NSOpenPanel openPanel]; [oPanel setAllowsMultipleSelection: NO]; result = [oPanel runModalForDirectory: [GNUMail currentWorkingPath] file: nil types: nil]; if (result == NSOKButton) { NSArray *fileToOpen; int count; fileToOpen = [oPanel filenames]; count = [fileToOpen count]; if (count > 0) { NSString *aString; aString = [fileToOpen objectAtIndex: 0]; [personalSignatureField setStringValue: aString]; [GNUMail setCurrentWorkingPath: [aString stringByDeletingLastPathComponent]]; } } } // // // - (IBAction) receiveRememberPasswordClicked: (id) sender { if ([receiveRememberPassword state] == NSOnState) { [receivePasswordSecureField setEditable: YES]; [receiveRememberPassword setNextKeyView: receivePasswordSecureField]; [receivePasswordSecureField setNextKeyView: receiveCheckOnStartup]; } else { [receivePasswordSecureField setEditable: NO]; [receiveRememberPassword setNextKeyView: receiveCheckOnStartup]; } } // // // - (IBAction) receiveSetAutomatically: (id) sender { [receiveMinutesField setEditable: YES]; } // // // - (IBAction) receiveSetManually: (id) sender { [receiveMinutesField setEditable: NO]; } // // // - (IBAction) receiveUseSecureConnectionHasChanged: (id) sender { int index; [receiveUseSecureConnection synchronizeTitleAndSelectedItem]; index = [receiveUseSecureConnection indexOfSelectedItem]; if ([[receivePopUp titleOfSelectedItem] isEqualToString: _(@"POP3")]) { if (index == SECURITY_NONE && POP3S_SERVICE_PORT == [receiveServerPortField intValue]) { [receiveServerPortField setIntValue: POP3_SERVICE_PORT]; } else if (index == SECURITY_SSL && POP3_SERVICE_PORT == [receiveServerPortField intValue]) { [receiveServerPortField setIntValue: POP3S_SERVICE_PORT]; } } else { if (index == SECURITY_NONE && IMAPS_SERVICE_PORT == [receiveServerPortField intValue]) { [receiveServerPortField setIntValue: IMAP_SERVICE_PORT]; } else if (index == SECURITY_SSL && IMAP_SERVICE_PORT == [receiveServerPortField intValue]) { [receiveServerPortField setIntValue: IMAPS_SERVICE_PORT]; } } } // // // - (IBAction) selectionInPersonalSignaturePopUpHasChanged: (id) sender { [personalSignaturePopUp synchronizeTitleAndSelectedItem]; if ( [personalSignaturePopUp indexOfSelectedItem] == 0 ) { [personalLocationLabel setStringValue: _(@"File location:")]; } else { [personalLocationLabel setStringValue: _(@"Program location:")]; } [personalLocationLabel setNeedsDisplay: YES]; } // // // - (IBAction) sendAuthenticateUsingButtonClicked: (id) sender { BOOL aBOOL; aBOOL = ([sendAuthenticateUsingButton state] == NSOnState ? YES : NO); [sendSMTPUsernameField setEditable: aBOOL]; [sendRememberPassword setEnabled: aBOOL]; if ( aBOOL && [sendRememberPassword state] == NSOnState ) { [sendSMTPPasswordSecureField setEditable: YES]; } else { [sendSMTPPasswordSecureField setEditable: NO]; } [sendSupportedMechanismsButton setEnabled: aBOOL]; [sendSupportedMechanismsPopUp setEnabled: aBOOL]; // // We adjust the next key views // if (aBOOL) { [sendAuthenticateUsingButton setNextKeyView: sendSupportedMechanismsPopUp]; [sendSupportedMechanismsPopUp setNextKeyView: sendSupportedMechanismsButton]; [sendSupportedMechanismsButton setNextKeyView: sendSMTPUsernameField]; [sendSMTPUsernameField setNextKeyView: sendRememberPassword]; [sendRememberPassword setNextKeyView: sendSMTPPasswordSecureField]; [sendSMTPPasswordSecureField setNextKeyView: sendSMTPHostField]; } else { [sendAuthenticateUsingButton setNextKeyView: sendSMTPHostField]; } } // // // - (IBAction) sendRememberPasswordClicked: (id) sender { if ([sendRememberPassword state] == NSOnState) { [sendSMTPPasswordSecureField setEditable: YES]; } else { [sendSMTPPasswordSecureField setEditable: NO]; } } // // // - (IBAction) sendSupportedMechanismsButtonClicked: (id) sender { CWSMTP *aSMTP; int value; [sendSupportedMechanismsPopUp removeAllItems]; [sendSupportedMechanismsPopUp addItemWithTitle: _(@"None")]; // We get our SMTP port value (can be other than 25!) value = [sendSMTPPortField intValue]; [sendUseSecureConnection synchronizeTitleAndSelectedItem]; if (value <= 0) { if ([sendUseSecureConnection indexOfSelectedItem] == SECURITY_SSL) { value = SSMTP_PORT; } else { value = SMTP_PORT; } } aSMTP = [[CWSMTP alloc] initWithName: [sendSMTPHostField stringValue] port: value]; [aSMTP setDelegate: self]; if ([aSMTP connect] < 0) { NSRunAlertPanel(_(@"Error!"), _(@"Unable to communicate with the SMTP server (%@).\nCheck the port you have specified."), _(@"OK"), NULL, NULL, [sendSMTPHostField stringValue]); AUTORELEASE(aSMTP); return; } if ([sendUseSecureConnection indexOfSelectedItem] == SECURITY_SSL) { if ([(CWTCPConnection *)[aSMTP connection] startSSL] < 0) { NSRunAlertPanel(_(@"Error!"), _(@"Unable to communicate with the SMTP server (%@).\nSSL handshake error."), _(@"OK"), NULL, NULL, [sendSMTPHostField stringValue]); // We abruptly close the connection. [aSMTP cancelRequest]; } } } // // // - (IBAction) sendTransportMethodHasChanged: (id) sender { [sendTransportMethodPopUpButton synchronizeTitleAndSelectedItem]; // If we selected "Mailer" if ( [sendTransportMethodPopUpButton indexOfSelectedItem] == 0 ) { [sendSMTPView removeFromSuperviewWithoutNeedingDisplay]; [sendView addSubview: sendMailerView]; [sendView setNeedsDisplay: YES]; } else { [sendMailerView removeFromSuperviewWithoutNeedingDisplay]; [sendView addSubview: sendSMTPView]; [sendView setNeedsDisplay: YES]; } } // // // - (IBAction) sendUseSecureConnectionHasChanged: (id) sender { int index; [sendUseSecureConnection synchronizeTitleAndSelectedItem]; index = [sendUseSecureConnection indexOfSelectedItem]; if (index == SECURITY_NONE && SSMTP_PORT == [sendSMTPPortField intValue]) { [sendSMTPPortField setIntValue: SMTP_PORT]; } else if (index == SECURITY_SSL && SMTP_PORT == [sendSMTPPortField intValue]) { [sendSMTPPortField setIntValue: SSMTP_PORT]; } } // // // - (IBAction) setType: (id) sender { [receivePopUp synchronizeTitleAndSelectedItem]; [receiveUseSecureConnection synchronizeTitleAndSelectedItem]; if ([[receivePopUp titleOfSelectedItem] isEqualToString: _(@"POP3")]) { [self _setEnableReceiveUIElements: YES]; [[tabView tabViewItemAtIndex: 2] setView: pop3View]; // If the number 'IMAP_SERVICE_PORT' was on the text field, // we set it to POP3_SERVICE_PORT. Else, we keep that custom port. if (([receiveServerPortField intValue] == IMAP_SERVICE_PORT || [receiveServerPortField intValue] == 0) && [receiveUseSecureConnection indexOfSelectedItem] == SECURITY_NONE) { [receiveServerPortField setIntValue: POP3_SERVICE_PORT]; } else if ([receiveServerPortField intValue] == IMAPS_SERVICE_PORT && [receiveUseSecureConnection indexOfSelectedItem] == SECURITY_SSL) { [receiveServerPortField setIntValue: POP3S_SERVICE_PORT]; } } else if ( [[receivePopUp titleOfSelectedItem] isEqualToString: _(@"IMAP")] ) { [self _setEnableReceiveUIElements: YES]; [[tabView tabViewItemAtIndex: 2] setView: imapView]; // If the number 'POP3_SERVICE_PORT' was on the text field, // we set it to IMAP_SERVICE_PORT. Else, we keep that custom port. if ([receiveServerPortField intValue] == POP3_SERVICE_PORT && [receiveUseSecureConnection indexOfSelectedItem] == SECURITY_NONE) { [receiveServerPortField setIntValue: IMAP_SERVICE_PORT]; } else if ([receiveServerPortField intValue] == POP3S_SERVICE_PORT && [receiveUseSecureConnection indexOfSelectedItem] == SECURITY_SSL) { [receiveServerPortField setIntValue: IMAPS_SERVICE_PORT]; } } else { [self _setEnableReceiveUIElements: NO]; [[tabView tabViewItemAtIndex: 2] setView: unixView]; } // We best guess the mail spool file [self _bestGuessMailspoolFile]; [tabView setNeedsDisplay: YES]; } // // // - (IBAction) unixMailspoolFileButtonClicked: (id) sender { NSOpenPanel *oPanel; int result; oPanel = [NSOpenPanel openPanel]; [oPanel setAllowsMultipleSelection:NO]; result = [oPanel runModalForDirectory: NSHomeDirectory() file: nil types: nil]; if (result == NSOKButton) { NSArray *fileToOpen; NSString *fileName; int count; fileToOpen = [oPanel filenames]; count = [fileToOpen count]; if (count > 0) { fileName = [fileToOpen objectAtIndex:0]; [unixMailspoolFileField setStringValue:fileName]; } } } // // Datasource/delegate methods for the outline view // - (BOOL) outlineView: (NSOutlineView *) outlineView shouldEditTableColumn: (NSTableColumn *) tableColumn item: (id) item { if (tableColumn == imapSubscriptionColumn) { return YES; } return NO; } // // // - (id) outlineView: (NSOutlineView *) outlineView child: (int) index ofItem: (id) item { // root object if (!item) { return allFolders; } if ([item isKindOfClass: [FolderNode class]]) { return [(FolderNode *)item childAtIndex: index]; } return nil; } // // // - (BOOL) outlineView: (NSOutlineView *) outlineView isItemExpandable: (id) item { if ([item isKindOfClass: [FolderNode class]]) { if ([(FolderNode *)item childCount] > 0) { return YES; } else { return NO; } } return NO; } // // // - (int) outlineView: (NSOutlineView *) outlineView numberOfChildrenOfItem: (id) item { // Root, always one element if (!item) { return 1; } if ([item isKindOfClass: [FolderNode class]]) { return [(FolderNode *)item childCount]; } return 0; } // // // - (id) outlineView: (NSOutlineView *) outlineView objectValueForTableColumn: (NSTableColumn *) tableColumn byItem: (id) item { if (tableColumn == imapViewMailboxColumn) { return [(FolderNode *)item name]; } return [NSNumber numberWithBool: [(FolderNode *)item subscribed]]; } // // // - (void) outlineView: (NSOutlineView *) theOutlineView setObjectValue: (id) theObject forTableColumn: (NSTableColumn *) theTableColumn byItem: (id) theItem { FolderNode *aFolderNode; NSString *aString; aFolderNode = (FolderNode *)theItem; aString = [Utilities pathOfFolderFromFolderNode: aFolderNode separator: [store folderSeparator]]; if ([aFolderNode subscribed]) { [store unsubscribeToFolderWithName: aString]; } else { // // RFC3501 does NOT explicitely say we cannot subscribe to a \Noselect mailbox but we // assume we can't since we cannot SELECT it, nor APPEND messages to it. // if (aFolderNode == allFolders || ([store folderTypeForFolderName: aString] & PantomimeNoSelect) == PantomimeNoSelect) { NSRunInformationalAlertPanel(_(@"Error!"), _(@"You cannot subscribe to this folder."), _(@"OK"), NULL, NULL, NULL); return; } [store subscribeToFolderWithName: aString]; } } // // access/mutation methods // - (NSString *) key { return key; } - (void) setKey: (NSString *) theKey { if (theKey) { ASSIGN(key, theKey); } else { DESTROY(key); } } // // // - (int) operation { return operation; } - (void) setOperation: (int) theOperation { operation = theOperation; if (operation == ACCOUNT_ADD) { [[self window] setTitle: _(@"Add an Account...")]; // We initialize the state of some UI elements so when adding a new account, // all UI elements are correctly enabled / disabled initially. [personalAccountNameField setStringValue: _(@"")]; [receivePasswordSecureField setEditable: NO]; [sendSMTPPortField setIntValue: SMTP_PORT]; [self sendAuthenticateUsingButtonClicked: self]; } else { [[self window] setTitle: [NSString stringWithFormat: _(@"Edit the %@ account..."), [self key]]]; } } // // other methods // - (void) initializeFromDefaults { NSNumber *serverTypeValue, *portValue; FolderNodePopUpItem *aPopUpItem; NSDictionary *allValues; NSString *aString; // // Account's name // [personalAccountNameField setStringValue: [self key]]; // // PERSONAL // allValues = [[[[[NSUserDefaults standardUserDefaults] volatileDomainForName: @"PREFERENCES"] objectForKey: @"ACCOUNTS"] objectForKey: [self key]] objectForKey: @"PERSONAL"]; [personalNameField setStringValue: ((aString = [allValues objectForKey: @"NAME"]) ? (id)aString : (id)@"")]; [personalEMailField setStringValue: ((aString = [allValues objectForKey: @"EMAILADDR"]) ? (id)aString : (id)@"")]; [personalReplyToField setStringValue: ((aString = [allValues objectForKey: @"REPLYTOADDR"]) ? (id)aString : (id)@"")]; [personalOrganizationField setStringValue: ((aString = [allValues objectForKey: @"ORGANIZATION"]) ? (id)aString : (id)@"")]; if ( [allValues objectForKey: @"SIGNATURE_SOURCE"] ) { [personalSignaturePopUp selectItemAtIndex: [(NSNumber *)[allValues objectForKey: @"SIGNATURE_SOURCE"] intValue]]; } else { [personalSignaturePopUp selectItemAtIndex: 0]; } [personalSignatureField setStringValue: ((aString = [allValues objectForKey: @"SIGNATURE"]) ? (id)aString : (id)@"")]; // // RECEIVE (and options) // // We now get all the data from the volatile user defaults allValues = [[[[[NSUserDefaults standardUserDefaults] volatileDomainForName: @"PREFERENCES"] objectForKey: @"ACCOUNTS"] objectForKey: [self key]] objectForKey: @"RECEIVE"]; // We decode our type serverTypeValue = [allValues objectForKey: @"SERVERTYPE"]; if (serverTypeValue && [serverTypeValue intValue] == IMAP) { [receivePopUp selectItemWithTitle: _(@"IMAP")]; } else if ( !serverTypeValue || (serverTypeValue && [serverTypeValue intValue] == POP3) ) { [receivePopUp selectItemWithTitle: _(@"POP3")]; } else { [receivePopUp selectItemWithTitle: _(@"UNIX")]; } // We decode our port portValue = [allValues objectForKey: @"PORT"]; if ( portValue ) { [receiveServerPortField setIntValue: [portValue intValue]]; } else { if (serverTypeValue && [serverTypeValue intValue] == IMAP) { [receiveServerPortField setIntValue: IMAP_SERVICE_PORT]; } else { [receiveServerPortField setIntValue: POP3_SERVICE_PORT]; } } // We decode the rest of the information. We begin with SERVERNAME. if ( allValues && [allValues objectForKey: @"SERVERNAME"] ) { [receiveServerNameField setStringValue: [allValues objectForKey: @"SERVERNAME"] ]; } else { [receiveServerNameField setStringValue: @""]; } if ( allValues && [allValues objectForKey: @"USERNAME"] ) { [receiveUsernameField setStringValue: [allValues objectForKey: @"USERNAME"] ]; } else { [receiveUsernameField setStringValue: @""]; } // We get our password, if we need to! if ( allValues && [allValues objectForKey: @"PASSWORD"] ) { NSString *aPassword; aPassword = [Utilities decryptPassword: [allValues objectForKey: @"PASSWORD"] withKey: [NSString stringWithFormat: @"%@ @ %@", [receiveUsernameField stringValue], [receiveServerNameField stringValue]]]; if ( !aPassword ) { aPassword = @""; } [receivePasswordSecureField setStringValue: aPassword]; } else { [receivePasswordSecureField setStringValue: @""]; } // REMEMBERPASSWORD if ( allValues && [allValues objectForKey: @"REMEMBERPASSWORD"] ) { [receiveRememberPassword setState: [[allValues objectForKey: @"REMEMBERPASSWORD"] intValue]]; } else { [receiveRememberPassword setState: NSOffState]; } // We update our editable/non-editable status of the password field [self receiveRememberPasswordClicked: self]; // CHECKONSTARTUP if ( allValues && [allValues objectForKey: @"CHECKONSTARTUP"] ) { [receiveCheckOnStartup setState: [[allValues objectForKey: @"CHECKONSTARTUP"] intValue]]; } else { [receiveCheckOnStartup setState: NSOffState]; } // USESECURECONNECTION if ( allValues && [allValues objectForKey: @"USESECURECONNECTION"] ) { [receiveUseSecureConnection selectItemAtIndex: [[allValues objectForKey: @"USESECURECONNECTION"] intValue]]; } else { [receiveUseSecureConnection selectItemAtIndex: SECURITY_NONE]; } // RETRIEVEMETHOD and RETRIEVEMINUTES [receiveMatrix selectCellAtRow: [[allValues objectForKey: @"RETRIEVEMETHOD"] intValue] column: 0]; [receiveMinutesField setIntValue: [[allValues objectForKey: @"RETRIEVEMINUTES"] intValue]];; // POP3 - LEAVEONSERVER if ( allValues && [allValues objectForKey: @"LEAVEONSERVER"] ) { [pop3LeaveOnServer setState: [[allValues objectForKey: @"LEAVEONSERVER"] intValue]]; } else { [pop3LeaveOnServer setState: NSOnState]; } // POP3 - RETAINPERIOD if ( allValues && [allValues objectForKey: @"RETAINPERIOD"] ) { [pop3DaysField setIntValue: [[allValues objectForKey: @"RETAINPERIOD"] intValue]]; } else { [pop3DaysField setIntValue: 365]; } // POP3 - USEAPOP if ( allValues && [allValues objectForKey: @"USEAPOP"] ) { [pop3UseAPOP setState: [[allValues objectForKey: @"USEAPOP"] intValue]]; } else { [pop3UseAPOP setState: NSOffState]; } // IMAP - AUTH MECHANISM if ( allValues && [allValues objectForKey: @"AUTH_MECHANISM"] ) { // If the method is not in the popup button, let's add it. if ( ![imapSupportedMechanismsPopUp itemWithTitle: [allValues objectForKey: @"AUTH_MECHANISM"]] ) { NSMenuItem *theItem; theItem = [[NSMenuItem alloc] initWithTitle: [allValues objectForKey: @"AUTH_MECHANISM"] action: NULL keyEquivalent: @""]; [theItem setTarget: self]; [theItem setAction: @selector(foo:)]; [theItem setEnabled: YES]; [[imapSupportedMechanismsPopUp menu] addItem: theItem]; RELEASE(theItem); } [imapSupportedMechanismsPopUp selectItemWithTitle: [allValues objectForKey: @"AUTH_MECHANISM"]]; } // IMAP - SHOW_WHICH_MAILBOXES if ( allValues && [[allValues objectForKey: @"SHOW_WHICH_MAILBOXES"] intValue] == IMAP_SHOW_SUBSCRIBED_ONLY) { [imapMatrix selectCellAtRow: 0 column: 1]; } else { [imapMatrix selectCellAtRow: 0 column: 0]; } // UNIX - mail spool file if ( allValues && [allValues objectForKey: @"MAILSPOOLFILE"] ) { NSString *aString; aString = [allValues objectForKey: @"MAILSPOOLFILE"]; if ( [aString length] > 0 ) { [unixMailspoolFileField setStringValue: aString]; } else { NSProcessInfo *processInfo; processInfo = [NSProcessInfo processInfo]; aString = [[processInfo environment] objectForKey: @"MAIL"]; if ( aString ) { [unixMailspoolFileField setStringValue: aString]; } else { [unixMailspoolFileField setStringValue: @""]; } } } // We refresh our view [self setType: nil]; // // SEND // allValues = [[[[[NSUserDefaults standardUserDefaults] volatileDomainForName: @"PREFERENCES"] objectForKey: @"ACCOUNTS"] objectForKey: [self key]] objectForKey: @"SEND"]; [sendTransportMethodPopUpButton selectItemAtIndex: ([[allValues objectForKey: @"TRANSPORT_METHOD"] intValue] - 1) ]; [sendMailerField setStringValue: ((aString = [allValues objectForKey: @"MAILER_PATH"]) ? (id)aString : (id)@"")]; [sendSMTPHostField setStringValue: ((aString = [allValues objectForKey: @"SMTP_HOST"]) ? (id)aString : (id)@"")]; if ( [allValues objectForKey: @"SMTP_PORT"] ) { [sendSMTPPortField setIntValue: [[allValues objectForKey: @"SMTP_PORT"] intValue]]; } else { [sendSMTPPortField setIntValue: SMTP_PORT]; } [sendSMTPUsernameField setStringValue: ((aString = [allValues objectForKey: @"SMTP_USERNAME"]) ? (id)aString : (id)@"")]; if ( [allValues objectForKey: @"SMTP_PASSWORD"] ) { [sendSMTPPasswordSecureField setStringValue: [Utilities decryptPassword: [allValues objectForKey: @"SMTP_PASSWORD"] withKey: [NSString stringWithFormat: @"%@ @ %@", [sendSMTPUsernameField stringValue], [sendSMTPHostField stringValue]]]]; } if ( [allValues objectForKey: @"SMTP_AUTH"] ) { [sendAuthenticateUsingButton setState: [[allValues objectForKey: @"SMTP_AUTH"] intValue]]; // If the method is not in the popup button, let's add it. if (![sendSupportedMechanismsPopUp itemWithTitle: [allValues objectForKey: @"SMTP_AUTH_MECHANISM"]]) { NSMenuItem *theItem; theItem = [[NSMenuItem alloc] initWithTitle: [allValues objectForKey: @"SMTP_AUTH_MECHANISM"] action: NULL keyEquivalent: @""]; [theItem setTarget: self]; [theItem setAction: @selector(foo:)]; [theItem setEnabled: YES]; [[sendSupportedMechanismsPopUp menu] addItem: theItem]; RELEASE(theItem); } [sendSupportedMechanismsPopUp selectItemWithTitle: [allValues objectForKey: @"SMTP_AUTH_MECHANISM"]]; } if ( [allValues objectForKey: @"REMEMBERPASSWORD"] ) { [sendRememberPassword setState: [[allValues objectForKey: @"REMEMBERPASSWORD"] intValue]]; } else { [sendRememberPassword setState: NSOffState]; } if ([allValues objectForKey: @"USESECURECONNECTION"]) { [sendUseSecureConnection selectItemAtIndex: [[allValues objectForKey: @"USESECURECONNECTION"] intValue]]; } else { [sendUseSecureConnection selectItemAtIndex: SECURITY_NONE]; } [self sendTransportMethodHasChanged: nil]; [self sendAuthenticateUsingButtonClicked: nil]; // // MAILBOXES // allValues = [[[[[NSUserDefaults standardUserDefaults] volatileDomainForName: @"PREFERENCES"] objectForKey: @"ACCOUNTS"] objectForKey: [self key]] objectForKey: @"MAILBOXES"]; // // Default mailbox for POP3 // aPopUpItem = [Utilities folderNodePopUpItemForURLNameAsString: [allValues objectForKey: @"INBOXFOLDERNAME"] usingFolderNodes: allNodes popUpButton: pop3DefaultInboxPopUpButton account: [[personalAccountNameField stringValue] stringByTrimmingWhiteSpaces]]; if (aPopUpItem) { [pop3DefaultInboxPopUpButton selectItem: aPopUpItem]; } else { // FIXME } // // Default mailbox for UNIX // aPopUpItem = [Utilities folderNodePopUpItemForURLNameAsString: [allValues objectForKey: @"INBOXFOLDERNAME"] usingFolderNodes: allNodes popUpButton: unixDefaultInboxPopUpButton account: [[personalAccountNameField stringValue] stringByTrimmingWhiteSpaces]]; if (aPopUpItem) { [unixDefaultInboxPopUpButton selectItem: aPopUpItem]; } else { // FIXME } } // // Delegate methods // - (void) authenticationCompleted: (NSNotification *) theNotification { [store folderEnumerator]; [store subscribedFolderEnumerator]; } - (void) authenticationFailed: (NSNotification *) theNotification { NSRunAlertPanel(_(@"Error!"), _(@"Unable to authenticate to the IMAP server (%@)."), _(@"OK"), NULL, NULL, [store name]); [store close]; } - (void) serviceInitialized: (NSNotification *) theNotification { id o; o = [theNotification object]; if ([o isKindOfClass: [CWSMTP class]]) { NSMenuItem *theItem; NSArray *theArray; NSString *aString; int i; // We check if we must use STARTTLS if (![(CWTCPConnection *)[o connection] isSSL] && ([sendUseSecureConnection indexOfSelectedItem] == SECURITY_TLS_IF_AVAILABLE || [sendUseSecureConnection indexOfSelectedItem] == SECURITY_TLS)) { [o startTLS]; return; } theArray = [[theNotification object] supportedMechanisms]; for (i = 0; i < [theArray count]; i++) { aString = [theArray objectAtIndex: i]; theItem = [[NSMenuItem alloc] initWithTitle: aString action: NULL keyEquivalent: @""]; if ( [aString caseInsensitiveCompare: @"CRAM-MD5"] == NSOrderedSame || [aString caseInsensitiveCompare: @"LOGIN"] == NSOrderedSame || [aString caseInsensitiveCompare: @"PLAIN"] == NSOrderedSame ) { [theItem setAction: @selector(foo:)]; [theItem setEnabled: YES]; } else { [theItem setAction: NULL]; [theItem setEnabled: NO]; } [theItem setTarget: self]; [[sendSupportedMechanismsPopUp menu] addItem: theItem]; RELEASE(theItem); } [o close]; } else { NSString *aPassword; if ([receiveRememberPassword state] == NSOffState || [[[receivePasswordSecureField stringValue] stringByTrimmingWhiteSpaces] length] == 0) { aPassword = [Utilities passwordForKey: [self key] type: IMAP prompt: YES]; } else { aPassword = [[receivePasswordSecureField stringValue] stringByTrimmingWhiteSpaces]; } if (aPassword) { [store authenticate: [receiveUsernameField stringValue] password: aPassword mechanism: nil]; } else { [self authenticationFailed: theNotification]; } } } - (void) requestCancelled: (NSNotification *) theNotification { // For now, let's do the same that we do in -connectionTerminated:. [self connectionTerminated: theNotification]; } - (void) connectionLost: (NSNotification *) theNotification { // For now, let's do the same that we do in -connectionTerminated:. [self connectionTerminated: theNotification]; } - (void) connectionTerminated: (NSNotification *) theNotification { id o; o = [theNotification object]; NSLog(@"Closing..."); if ([o isKindOfClass: [CWSMTP class]]) { [o setDelegate: nil]; AUTORELEASE(o); } else { DESTROY(store); } } - (void) folderListCompleted: (NSNotification *) theNotification { //NSLog(@"Done enumerating the folders!"); } - (void) folderListSubscribedCompleted: (NSNotification *) theNotification { //NSLog(@"Done enumerating the subscribed folders!"); _ready = YES; [self imapList: nil]; } - (void) folderSubscribeCompleted: (NSNotification *) theNotification { FolderNode *aFolderNode; NSString *aString; aString = [[theNotification userInfo] objectForKey: @"Name"]; aFolderNode = [Utilities folderNodeForPath: aString using: allFolders separator: [store folderSeparator]]; if ( ![allVisibleFolders containsObject: aString] ) { [allVisibleFolders addObject: aString]; } [aFolderNode setSubscribed: YES]; [imapOutlineView setNeedsDisplay: YES]; } - (void) folderSubscribeFailed: (NSNotification *) theNotification { NSRunInformationalAlertPanel(_(@"Error!"), _(@"An error occurred while subscribing to folder:\n%@."), _(@"OK"), NULL, NULL, [[theNotification userInfo] objectForKey: @"Name"]); } - (void) folderUnsubscribeCompleted: (NSNotification *) theNotification { NSString *aString, *pathToFile; FolderNode *aFolderNode; aString = [[theNotification userInfo] objectForKey: @"Name"]; aFolderNode = [Utilities folderNodeForPath: aString using: allFolders separator: [store folderSeparator]]; [allVisibleFolders removeObject: aString]; [aFolderNode setSubscribed: NO]; [imapOutlineView setNeedsDisplay: YES]; // We remove the cache file. pathToFile = [NSString stringWithFormat: @"%@/IMAPCache_%@_%@", GNUMailUserLibraryPath(), [store name], [Utilities flattenPathFromString: aString separator: [store folderSeparator]] ]; NS_DURING [[NSFileManager defaultManager] removeFileAtPath: pathToFile handler: nil]; NS_HANDLER // Under GNUstep, if we pass something that can't be converted to a cString // to -removeFileAtPath, it throws an exception. NSDebugLog(@"Exception occurred while removing the cache file."); NS_ENDHANDLER } - (void) folderUnsubscribeFailed: (NSNotification *) theNotification { NSRunInformationalAlertPanel(_(@"Error!"), _(@"An error occurred while unsubscribing to folder:\n%@."), _(@"OK"), NULL, NULL, [[theNotification userInfo] objectForKey: @"Name"]); } @end // // Private implementation // @implementation AccountEditorWindowController (Private) - (BOOL) _accountNameIsValid { if ([self operation] == ACCOUNT_ADD) { NSString *aString; aString = [[personalAccountNameField stringValue] stringByTrimmingWhiteSpaces]; if ([aString length] == 0 || [aString isEqualToString: _(@"")] || [[[[NSUserDefaults standardUserDefaults] volatileDomainForName: @"PREFERENCES"] objectForKey: @"ACCOUNTS"] objectForKey: aString]) { NSRunInformationalAlertPanel(_(@"Error!"), _(@"You must specify a valid account name."), _(@"OK"), NULL, NULL, NULL); return NO; } } return YES; } // // If the user HAS NOT specified one or the MAIL environment variable isn't defined, // we try to guess the best path to the mail spool file a user would use. // - (void) _bestGuessMailspoolFile { if ( [[[unixMailspoolFileField stringValue] stringByTrimmingWhiteSpaces] length] == 0 ) { BOOL isDir; if ( [[NSFileManager defaultManager] fileExistsAtPath: [NSString stringWithFormat: @"/var/mail/%@", NSUserName()] isDirectory: &isDir] && !isDir ) { [unixMailspoolFileField setStringValue: [NSString stringWithFormat: @"/var/mail/%@", NSUserName()]]; } else if ( [[NSFileManager defaultManager] fileExistsAtPath: [NSString stringWithFormat: @"/var/spool/mail/%@", NSUserName()] isDirectory: &isDir] && ! isDir ) { [unixMailspoolFileField setStringValue: [NSString stringWithFormat: @"/var/spool/mail/%@", NSUserName()]]; } else if ( [[NSFileManager defaultManager] fileExistsAtPath: [NSString stringWithFormat: @"/usr/spool/mail/%@", NSUserName()] isDirectory: &isDir] && ! isDir ) { [unixMailspoolFileField setStringValue: [NSString stringWithFormat: @"/usr/spool/mail/%@", NSUserName()]]; } else { [unixMailspoolFileField setStringValue: _(@"< Please choose a mail spool file >")]; } } } // // // - (void) _connectToIMAPServer { int ret; // If we already have a connection, do nothing. if (store) { return; } // We must establish a new connection to the IMAP server... if ([[receiveServerNameField stringValue] length] == 0 || [[receiveUsernameField stringValue] length] == 0) { NSRunAlertPanel(_(@"Error!"), _(@"You must specify a valid server name and username\nin the Receive tab."), _(@"OK"), // default NULL, // alternate NULL); return; } store = [[CWIMAPStore alloc] initWithName: [receiveServerNameField stringValue] port: [receiveServerPortField intValue]]; [store setDelegate: self]; ret = [store connect]; [receiveUseSecureConnection synchronizeTitleAndSelectedItem]; #warning support TLS if ([receiveUseSecureConnection indexOfSelectedItem] == SECURITY_SSL) { ret = [(CWTCPConnection *)[store connection] startSSL]; } if (ret < 0) { NSRunAlertPanel(_(@"Error!"), _(@"Unable to communicate with the IMAP server (%@)."), _(@"OK"), NULL, NULL, [receiveServerNameField stringValue]); DESTROY(store); } } // // // - (BOOL) _nameAndAddressAreSpecified { if ([[[personalNameField stringValue] stringByTrimmingWhiteSpaces] length] == 0 || [[[personalEMailField stringValue] stringByTrimmingWhiteSpaces] length] == 0) { NSRunInformationalAlertPanel(_(@"Error!"), _(@"You must specify your name and E-Mail address."), _(@"OK"), NULL, NULL, NULL); return NO; } return YES; } // // // - (void) _rebuildListOfSubscribedFolders { NSEnumerator *theEnumerator; FolderNode *aFolderNode; NSString *aPath; [allVisibleFolders removeAllObjects]; if ([[imapMatrix selectedCell] tag] == 1) { [allVisibleFolders addObjectsFromArray: [[store subscribedFolderEnumerator] allObjects]]; } else { [allVisibleFolders addObjectsFromArray: [[store folderEnumerator] allObjects]]; } theEnumerator = [allVisibleFolders objectEnumerator]; while ((aPath = [theEnumerator nextObject])) { aFolderNode = [Utilities folderNodeForPath: aPath using: allFolders separator: [store folderSeparator]]; if (aFolderNode && aFolderNode != allFolders) { [aFolderNode setSubscribed: YES]; } else { [aFolderNode setSubscribed: NO]; } } } // // This medhod is used to verify that we don't have an other IMAP account // with the same username @ servername defined in an other profile. That // would cause troubles since we wouldn't know which profile to use // if we have an URLName object with something like imap://ludovic@Sophos.ca/INBOX. // - (BOOL) _receiveInformationIsValid { NSString *theAccountName, *aServerName, *aUsername; NSEnumerator *theEnumerator; // We don't need to do any verification if it's a POP3/UNIX account or // if we are editing. [receivePopUp synchronizeTitleAndSelectedItem]; if ( [receivePopUp indexOfSelectedItem] != 1 || [self operation] == ACCOUNT_EDIT ) { return YES; } theEnumerator = [[[[NSUserDefaults standardUserDefaults] volatileDomainForName: @"PREFERENCES"] objectForKey: @"ACCOUNTS"] keyEnumerator]; aUsername = [[receiveUsernameField stringValue] stringByTrimmingWhiteSpaces]; aServerName = [[receiveServerNameField stringValue] stringByTrimmingWhiteSpaces]; while ((theAccountName = [theEnumerator nextObject])) { NSDictionary *allValues; allValues = [[[[[NSUserDefaults standardUserDefaults] volatileDomainForName: @"PREFERENCES"] objectForKey: @"ACCOUNTS"] objectForKey: theAccountName] objectForKey: @"RECEIVE"]; if ( [[allValues objectForKey: @"SERVERTYPE"] intValue] == IMAP && [[allValues objectForKey: @"USERNAME"] isEqualToString: aUsername] && [[allValues objectForKey: @"SERVERNAME"] isEqualToString: aServerName] ) { NSRunInformationalAlertPanel(_(@"Error!"), _(@"You already defined an IMAP account with the same\ninformation in the %@ account."), _(@"OK"), NULL, NULL, theAccountName); return NO; } } return YES; } // // This method verifies that the information specified in the Send panel // are valid. // - (BOOL) _sendInformationIsValid { [sendTransportMethodPopUpButton synchronizeTitleAndSelectedItem]; if ( ([sendTransportMethodPopUpButton indexOfSelectedItem]+1) == TRANSPORT_MAILER && [[[sendMailerField stringValue] stringByTrimmingWhiteSpaces] length] == 0 ) { NSRunInformationalAlertPanel(_(@"Error!"), _(@"You must specify a valid Mailer path in the Send tab."), _(@"OK"), NULL, NULL, NULL); return NO; } else if ( ([sendTransportMethodPopUpButton indexOfSelectedItem]+1) == TRANSPORT_SMTP && [[[sendSMTPHostField stringValue] stringByTrimmingWhiteSpaces] length] == 0 ) { NSRunInformationalAlertPanel(_(@"Error!"), _(@"You must specify a valid SMTP host name in the Send tab."), _(@"OK"), NULL, NULL, NULL); return NO; } return YES; } // // // - (BOOL) _mailboxesSelectionIsValid { [pop3DefaultInboxPopUpButton synchronizeTitleAndSelectedItem]; [unixDefaultInboxPopUpButton synchronizeTitleAndSelectedItem]; [receivePopUp synchronizeTitleAndSelectedItem]; if (([[receivePopUp titleOfSelectedItem] isEqualToString: _(@"POP3")] && [pop3DefaultInboxPopUpButton indexOfSelectedItem] == 0) || ([[receivePopUp titleOfSelectedItem] isEqualToString: _(@"UNIX")] && [unixDefaultInboxPopUpButton indexOfSelectedItem] == 0)) { NSRunInformationalAlertPanel(_(@"Error!"), _(@"You must select a valid mailbox in the Receive options tab."), _(@"OK"), NULL, NULL); return NO; } return YES; } // // // - (void) _saveChangesForMailboxesPopUpButton: (NSPopUpButton *) thePopUpButton name: (NSString *) theName dictionary: (NSMutableDictionary *) theMutableDictionary { FolderNode *aFolderNode; NSString *aString; [thePopUpButton synchronizeTitleAndSelectedItem]; // // FIXME: We must verify for, at least, local store if the folder is "selectable". // aFolderNode = [(FolderNodePopUpItem *)[thePopUpButton selectedItem] folderNode]; if ([aFolderNode parent] == allNodes) { NSDebugLog(@"Selected an invalid mailbox, ignoring."); return; } aString = [Utilities stringValueOfURLNameFromFolderNode: aFolderNode serverName: [[receiveServerNameField stringValue] stringByTrimmingWhiteSpaces] username: [[receiveUsernameField stringValue] stringByTrimmingWhiteSpaces]]; [theMutableDictionary setObject: aString forKey: theName]; } // // // - (void) _setEnableReceiveUIElements: (BOOL) aBOOL { [receiveServerNameField setEditable: aBOOL]; [receiveServerPortField setEditable: aBOOL]; [receiveUsernameField setEditable: aBOOL]; if (aBOOL && [receiveRememberPassword state] == NSOnState) { [receivePasswordSecureField setEditable: YES]; } else { [receivePasswordSecureField setEditable: NO]; } [receiveRememberPassword setEnabled: aBOOL]; [receiveCheckOnStartup setEnabled: aBOOL]; } @end GNUMail/Bundles/Account/AccountView.h0100644000014600001460000000213010424672357020163 0ustar monotonemonotone/* ** AccountView.h ** ** Copyright (c) 2003-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_AccountView #define _GNUMail_H_AccountView #import @interface AccountView : NSView { @public NSTableView *tableView; @private id _parent; } - (id) initWithParent: (id) theParent; - (void) layoutView; @end #endif // _GNUMail_H_AccountView GNUMail/Bundles/Account/AccountView.m0100644000014600001460000000763310505436000020164 0ustar monotonemonotone/* ** AccountView.m ** ** Copyright (c) 2003-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "AccountView.h" #include "Constants.h" #include "LabelWidget.h" @implementation AccountView - (id) initWithParent: (id) theParent { self = [super init]; _parent = theParent; return self; } // // // - (void) dealloc { RELEASE(tableView); [super dealloc]; } // // // - (void) layoutView { NSButton *addButton, *deleteButton, *editButton, *defaultButton; NSTableColumn *accountNameColumn, *enabledColumn; NSScrollView *scrollView; LabelWidget *label; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,195,430,35) label: _(@"Please specify your account information. You need to add at least\none account in order to use GNUMail properly.")]; [self addSubview: label]; enabledColumn = [[NSTableColumn alloc] initWithIdentifier: @"Enabled"]; [enabledColumn setEditable: YES]; [[enabledColumn headerCell] setStringValue: _(@"Enabled")]; [enabledColumn setMinWidth: 75]; accountNameColumn = [[NSTableColumn alloc] initWithIdentifier: @"Account Name"]; [accountNameColumn setEditable: NO]; [[accountNameColumn headerCell] setStringValue: _(@"Account Name")]; [accountNameColumn setMinWidth: 315]; tableView = [[NSTableView alloc] initWithFrame: NSMakeRect(5,40,430,145)]; [tableView setDrawsGrid: NO]; [tableView setAllowsColumnSelection: NO]; [tableView setAllowsColumnReordering: NO]; [tableView setAllowsEmptySelection: NO]; [tableView setAllowsMultipleSelection: NO]; [tableView addTableColumn: enabledColumn]; [tableView addTableColumn: accountNameColumn]; [tableView setDataSource: _parent]; [tableView setDelegate: _parent]; [tableView setTarget: _parent]; [tableView setDoubleAction: @selector(editClicked:)]; RELEASE(enabledColumn); RELEASE(accountNameColumn); scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect(5,40,430,145)]; [scrollView setBorderType: NSBezelBorder]; [scrollView setHasHorizontalScroller: NO]; [scrollView setHasVerticalScroller: YES]; [scrollView setDocumentView: tableView]; [self addSubview: scrollView]; RELEASE(scrollView); addButton = [[NSButton alloc] initWithFrame: NSMakeRect(5,5,75,ButtonHeight)]; [addButton setTitle: _(@"Add")]; [addButton setTarget: _parent]; [addButton setAction: @selector(addClicked:)]; [self addSubview: addButton]; RELEASE(addButton); editButton = [[NSButton alloc] initWithFrame: NSMakeRect(85,5,75,ButtonHeight)]; [editButton setTitle: _(@"Edit")]; [editButton setTarget: _parent]; [editButton setAction: @selector(editClicked:)]; [self addSubview: editButton]; RELEASE(editButton); deleteButton = [[NSButton alloc] initWithFrame: NSMakeRect(165,5,75,ButtonHeight)]; [deleteButton setTitle: _(@"Delete")]; [deleteButton setTarget: _parent]; [deleteButton setAction: @selector(deleteClicked:)]; [self addSubview: deleteButton]; RELEASE(deleteButton); defaultButton = [[NSButton alloc] initWithFrame: NSMakeRect(360,5,75,ButtonHeight)]; [defaultButton setTitle: _(@"Default")]; [defaultButton setTarget: _parent]; [defaultButton setAction: @selector(defaultClicked:)]; [self addSubview: defaultButton]; RELEASE(defaultButton); } @end GNUMail/Bundles/Account/AccountViewController.h0100644000014600001460000000263610424672357022242 0ustar monotonemonotone/* ** AccountViewController.h ** ** Copyright (c) 2003-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_AccountViewController #define _GNUMail_H_AccountViewController #import #include "PreferencesModule.h" @class SwitchTableView; typedef enum {DidAdd, DidRemove, DidModify, FirstTime} UpdateReason; @interface AccountViewController : NSObject { // Outlets IBOutlet NSTableView *tableView; IBOutlet id view; } // // action methods // - (IBAction) addClicked: (id) sender; - (IBAction) defaultClicked: (id) sender; - (IBAction) deleteClicked: (id) sender; - (IBAction) editClicked: (id) sender; @end #endif // _GNUMail_H_AccountViewController GNUMail/Bundles/Account/AccountViewController.m0100644000014600001460000004664410601706266022250 0ustar monotonemonotone/* ** AccountViewController.m ** ** Copyright (c) 2003-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "AccountViewController.h" #include "AccountEditorWindowController.h" #include "GNUMail.h" #include "Constants.h" #include "MailboxManagerController.h" #include #ifndef MACOSX #include "AccountView.h" #endif static NSMutableDictionary *allAccounts = nil; #define KEY_FROM_VALUE(value) ({ \ NSEnumerator *theEnumerator; \ id aKey; \ \ theEnumerator = [allAccounts keyEnumerator]; \ \ while ((aKey = [theEnumerator nextObject])) \ { \ if ([allAccounts objectForKey: aKey] == value) \ { \ break; \ } \ } \ aKey; \ }) // // Function used to sort account entries // int sortAccountEntries(id se1, id se2, void *context) { NSNumber *aNumber; int se1Type, se2Type; int se1Order, se2Order; aNumber = [[se1 objectForKey: @"RECEIVE"] objectForKey: @"SERVERTYPE"]; if ( !aNumber ) se1Type = POP3; else se1Type = [aNumber intValue]; aNumber = [[se2 objectForKey: @"RECEIVE"] objectForKey: @"SERVERTYPE"]; if ( !aNumber ) se2Type = POP3; else se2Type = [aNumber intValue]; if (se1Type == UNIX) se1Order = 0; else if (se1Type == POP3) se1Order = 5; else if (se1Type == IMAP) se1Order = 10; else se1Order = 20; if (se2Type == UNIX) se2Order = 0; else if (se2Type == POP3) se2Order = 5; else if (se2Type == IMAP) se2Order = 10; else se2Order = 20; if (se1Order < se2Order) return NSOrderedAscending; if (se1Order > se2Order) return NSOrderedDescending; if (se1Type == POP3 || se1Type == IMAP) { int rvalue; id k1, k2; k1 = [[se1 objectForKey: @"RECEIVE"] objectForKey: @"SERVERNAME"]; k2 = [[se2 objectForKey: @"RECEIVE"] objectForKey: @"SERVERNAME"]; if ( k1 && k2 ) rvalue = [k1 compare: k2]; else return (k1 ? NSOrderedDescending : NSOrderedAscending); if (rvalue != NSOrderedSame) return rvalue; k1 = [[se1 objectForKey: @"RECEIVE"] objectForKey: @"USERNAME"]; k2 = [[se2 objectForKey: @"RECEIVE"] objectForKey: @"USERNAME"]; if ( k1 && k2 ) rvalue = [k1 compare: k2]; else return (k1 ? NSOrderedDescending : NSOrderedAscending); if (rvalue != NSOrderedSame) return rvalue; // We have a problem, the server name and the username are equal. // Let's compare the account name. k1 = KEY_FROM_VALUE(se1); k2 = KEY_FROM_VALUE(se2); if ( k1 && k2 ) return [k1 compare: k2]; else return NSOrderedSame; } else // se1Type == UNIX { return [[[se1 objectForKey: @"RECEIVE"] objectForKey: @"MAILSPOOLFILE"] compare: [[se2 objectForKey: @"RECEIVE"] objectForKey: @"MAILSPOOLFILE"]]; } } static AccountViewController *singleInstance = nil; // // Private methods // @interface AccountViewController (Private) - (void) _updateAccountsListBecause: (UpdateReason) reason; @end // // // @implementation AccountViewController - (id) initWithNibName: (NSString *) theName { NSButtonCell *cell; self = [super init]; #ifdef MACOSX if (![NSBundle loadNibNamed: theName owner: self] ) { NSDebugLog(@"Fatal error occurred while loading the ColorsView nib file"); AUTORELEASE(self); return nil; } RETAIN(view); [tableView setTarget: self]; [tableView setDoubleAction: @selector(editClicked:)]; #else // We link our view and our outlets view = [[AccountView alloc] initWithParent: self]; [view layoutView]; tableView = ((AccountView *)view)->tableView; #endif cell = [[NSButtonCell alloc] init]; [cell setButtonType: NSSwitchButton]; [cell setImagePosition: NSImageOnly]; [cell setControlSize: NSSmallControlSize]; [[tableView tableColumnWithIdentifier: @"Enabled"] setDataCell: cell]; RELEASE(cell); allAccounts = [[NSMutableDictionary alloc] init]; // We get our defaults for this panel [self initializeFromDefaults]; [self _updateAccountsListBecause: FirstTime]; return self; } // // // - (void) dealloc { NSDebugLog(@"AccountViewController: -dealloc"); singleInstance = nil; // Cocoa bug? #ifdef MACOSX [tableView setDataSource: nil]; #endif DESTROY(allAccounts); RELEASE(view); [super dealloc]; } // // action methods // - (IBAction) addClicked: (id) sender { AccountEditorWindowController *aAccountEditorWindowController; int result; aAccountEditorWindowController = [[AccountEditorWindowController alloc] initWithWindowNibName: @"AccountEditorWindow"]; [aAccountEditorWindowController setOperation: ACCOUNT_ADD]; result = [NSApp runModalForWindow: [aAccountEditorWindowController window]]; // We must update our preferences if (result == NSRunStoppedResponse) { [self _updateAccountsListBecause: DidAdd]; } // We release our controller RELEASE(aAccountEditorWindowController); // We reorder our Preferences window to the front [[view window] orderFrontRegardless]; } // // // - (IBAction) defaultClicked: (id) sender { NSMutableDictionary *theAccount, *allPreferences; NSEnumerator *theEnumerator; NSArray *theArray; NSString *aKey; if ([tableView selectedRow] < 0) { NSBeep(); return; } theArray = [[allAccounts allValues] sortedArrayUsingFunction: sortAccountEntries context: nil]; DESTROY(allAccounts); allPreferences = [[NSMutableDictionary alloc] init]; allAccounts = [[NSMutableDictionary alloc] init]; [allPreferences addEntriesFromDictionary: [[NSUserDefaults standardUserDefaults] volatileDomainForName: @"PREFERENCES"]]; if ( [allPreferences objectForKey: @"ACCOUNTS"] ) { [allAccounts addEntriesFromDictionary: [allPreferences objectForKey: @"ACCOUNTS"]]; } // We set all the accounts as being not the default one. If we see the key at the selected row, // we set that one to the default one. theEnumerator = [allAccounts keyEnumerator]; while ( (aKey = [theEnumerator nextObject]) ) { theAccount = [[NSMutableDictionary alloc] initWithDictionary: [allAccounts objectForKey: aKey]]; if ( [aKey isEqualToString: KEY_FROM_VALUE([theArray objectAtIndex: [tableView selectedRow]])] ) { [theAccount setObject: [NSNumber numberWithBool: YES] forKey: @"DEFAULT"]; } else { [theAccount setObject: [NSNumber numberWithBool: NO] forKey: @"DEFAULT"]; } [allAccounts setObject: theAccount forKey: aKey]; RELEASE(theAccount); } [allPreferences setObject: allAccounts forKey: @"ACCOUNTS"]; // FIXME - This is causing a segfault under OS X #ifndef MACOSX [[NSUserDefaults standardUserDefaults] removeVolatileDomainForName: @"PREFERENCES"]; #endif [[NSUserDefaults standardUserDefaults] setVolatileDomain: allPreferences forName: @"PREFERENCES"]; RELEASE(allPreferences); [self _updateAccountsListBecause: DidModify]; } // // // - (IBAction) deleteClicked: (id) sender { NSDictionary *allValues; NSArray *theArray; NSString *aKey; int choice; if ( [tableView selectedRow] < 0 ) { NSBeep(); return; } theArray = [[allAccounts allValues] sortedArrayUsingFunction: sortAccountEntries context: nil]; aKey = KEY_FROM_VALUE([theArray objectAtIndex: [tableView selectedRow]]); allValues = [[allAccounts objectForKey: aKey] objectForKey: @"RECEIVE"]; if ( [[MailboxManagerController singleInstance] storeForName: [allValues objectForKey: @"SERVERNAME"] username: [allValues objectForKey: @"USERNAME"]] ) { NSRunInformationalAlertPanel(_(@"Error!"), _(@"To delete this account, you must first close the connection with the server."), _(@"OK"), NULL, NULL, NULL); return; } choice = NSRunAlertPanel(_(@"Delete..."), _(@"Are you sure you want to delete this account?"), _(@"Cancel"), // default _(@"Yes"), // alternate NULL); if (choice == NSAlertAlternateReturn) { // We remove the entry from the user defaults db NSMutableDictionary *allPreferences; allPreferences = [[NSMutableDictionary alloc] init]; [allPreferences addEntriesFromDictionary: [[NSUserDefaults standardUserDefaults] volatileDomainForName: @"PREFERENCES"]]; // We remove our entry from our dictionary of servers [allAccounts removeObjectForKey: aKey]; // We update the volatile user defaults with the new receiving servers list [allPreferences setObject: allAccounts forKey: @"ACCOUNTS"]; #ifndef MACOSX [[NSUserDefaults standardUserDefaults] removeVolatileDomainForName: @"PREFERENCES"]; #endif [[NSUserDefaults standardUserDefaults] setVolatileDomain: allPreferences forName: @"PREFERENCES"]; RELEASE(allPreferences); [self _updateAccountsListBecause: DidRemove]; if ( [allAccounts count] > 0 ) { [tableView selectRow: 0 byExtendingSelection: NO]; } } } // // // - (IBAction) editClicked: (id) sender { AccountEditorWindowController *aAccountEditorWindowController; NSDictionary *allValues; NSArray *theArray; int result; if ([tableView selectedRow] < 0) { NSBeep(); return; } theArray = [[allAccounts allValues] sortedArrayUsingFunction: sortAccountEntries context: nil]; allValues = [[theArray objectAtIndex: [tableView selectedRow]] objectForKey: @"RECEIVE"]; aAccountEditorWindowController = [[AccountEditorWindowController alloc] initWithWindowNibName: @"AccountEditorWindow"]; [aAccountEditorWindowController setKey: KEY_FROM_VALUE([theArray objectAtIndex: [tableView selectedRow]])]; [aAccountEditorWindowController setOperation: ACCOUNT_EDIT]; [aAccountEditorWindowController initializeFromDefaults]; result = [NSApp runModalForWindow: [aAccountEditorWindowController window]]; // We must update our preferences if (result == NSRunStoppedResponse) { [self _updateAccountsListBecause: DidModify]; } // We release our controller RELEASE(aAccountEditorWindowController); // We reorder our Preferences window to the front [[view window] orderFrontRegardless]; } // // Data Source methods // - (int) numberOfRowsInTableView: (NSTableView *)aTableView { return [allAccounts count]; } // // // - (id) tableView: (NSTableView *) aTableView objectValueForTableColumn: (NSTableColumn *) aTableColumn row: (int) rowIndex { NSDictionary *allValues, *theAccount; NSArray *theArray; NSString *aKey; theArray = [[allAccounts allValues] sortedArrayUsingFunction: sortAccountEntries context: nil]; aKey = KEY_FROM_VALUE([theArray objectAtIndex: rowIndex]); theAccount = [theArray objectAtIndex: rowIndex]; allValues = [theAccount objectForKey: @"RECEIVE"]; if ([[[aTableColumn headerCell] stringValue] isEqualToString: _(@"Enabled")]) { return [theAccount objectForKey: @"ENABLED"]; } else { NSMutableString *aMutableString; NSNumber *aNumber; aNumber = [allValues objectForKey: @"SERVERTYPE"]; aMutableString = AUTORELEASE([[NSMutableString alloc] init]); if ( !aNumber ) { aNumber = [NSNumber numberWithInt: POP3]; } if ( [aNumber intValue] == POP3 || [aNumber intValue] == IMAP ) { [aMutableString appendString: [NSString stringWithFormat: @"%@ - %@ @ %@ [%@]", aKey, ([allValues objectForKey: @"USERNAME"] ? (id)[allValues objectForKey: @"USERNAME"] : (id)_(@"No username")), ([allValues objectForKey: @"SERVERNAME"] ? (id)[allValues objectForKey: @"SERVERNAME"] : (id)_(@"No server name")), ([aNumber intValue] == POP3 ? (id)_(@"POP3") : (id)_(@"IMAP"))]]; } else { [aMutableString appendString: [NSString stringWithFormat: _(@"%@ [UNIX]"), [allValues objectForKey: @"MAILSPOOLFILE"]]]; } if ( [[theAccount objectForKey: @"DEFAULT"] boolValue] ) { [aMutableString appendString: _(@" - default")]; } return aMutableString; } // Never reached return @""; } // // // - (void) tableView: (NSTableView *) aTableView setObjectValue: (id) anObject forTableColumn: (NSTableColumn *) aTableColumn row: (int) rowIndex { NSMutableDictionary *theAccount, *allPreferences; NSArray *theArray; NSString *aKey; theArray = [[allAccounts allValues] sortedArrayUsingFunction: sortAccountEntries context: nil]; theAccount = [[NSMutableDictionary alloc] initWithDictionary: [theArray objectAtIndex: rowIndex]]; if (![[theAccount objectForKey: @"ENABLED"] boolValue]) { [theAccount setObject: [NSNumber numberWithBool: YES] forKey: @"ENABLED"]; } else { [theAccount setObject: [NSNumber numberWithBool: NO] forKey: @"ENABLED"]; } aKey = KEY_FROM_VALUE([theArray objectAtIndex: rowIndex]); DESTROY(allAccounts); allPreferences = [[NSMutableDictionary alloc] init]; allAccounts = [[NSMutableDictionary alloc] init]; [allPreferences addEntriesFromDictionary: [[NSUserDefaults standardUserDefaults] volatileDomainForName: @"PREFERENCES"]]; if ([allPreferences objectForKey: @"ACCOUNTS"]) { [allAccounts addEntriesFromDictionary: [allPreferences objectForKey: @"ACCOUNTS"]]; } [allAccounts setObject: theAccount forKey: aKey]; RELEASE(theAccount); [allPreferences setObject: allAccounts forKey: @"ACCOUNTS"]; // FIXME - This is causing a segfault under OS X #ifndef MACOSX [[NSUserDefaults standardUserDefaults] removeVolatileDomainForName: @"PREFERENCES"]; #endif [[NSUserDefaults standardUserDefaults] setVolatileDomain: allPreferences forName: @"PREFERENCES"]; RELEASE(allPreferences); [self _updateAccountsListBecause: DidModify]; } // // access methods // - (NSImage *) image { NSBundle *aBundle; aBundle = [NSBundle bundleForClass: [self class]]; return AUTORELEASE([[NSImage alloc] initWithContentsOfFile: [aBundle pathForResource: @"account" ofType: @"tiff"]]); } // // // - (NSString *) name { return _(@"Account"); } // // // - (NSView *) view { return view; } // // // - (BOOL) hasChangesPending { NSUserDefaults *aUserDefaults; aUserDefaults = [NSUserDefaults standardUserDefaults]; return !([[aUserDefaults objectForKey: @"ACCOUNTS"] isEqual: [[aUserDefaults volatileDomainForName: @"PREFERENCES"] objectForKey: @"ACCOUNTS"]]); } // // This method is used to initialize the fields in this view to // the values from the user defaults database. We must take care // of nil values since MacOS-X doesn't like that. // - (void) initializeFromDefaults { [tableView reloadData]; [tableView setNeedsDisplay: YES]; } // // // - (void) saveChanges { #warning FIXME remove the cache files of deleted accounts // // // // We verify which accounts have been renamed or deleted // // // serversEnumerator = [(NSDictionary *)[[NSUserDefaults standardUserDefaults] // objectForKey: @"RECEIVING"] keyEnumerator]; // while ( (aKey = [serversEnumerator nextObject]) ) // { // if ( ![_values.allServers objectForKey: aKey] ) // { // // We remove our cache files // NSDebugLog(@"Deleting cache files associated with %@", aKey); // filesEnumerator = [[NSFileManager defaultManager] enumeratorAtPath: GNUMailUserLibraryPath()]; // while ( (aString = [filesEnumerator nextObject]) ) // { // // We verify for POP3Cache_server.name.com // if ( [aString isEqualToString: [NSString stringWithFormat: @"POP3Cache_%@", // [Utilities flattenPathFromString: aKey // separator: @"/"]]] ) // { // [[NSFileManager defaultManager] removeFileAtPath: [NSString stringWithFormat: @"%@/%@", // GNUMailUserLibraryPath(), aString] // handler: nil]; // } // // We verify for IMAPCache_server.name.com_mailbox // if ( [aString hasPrefix: [NSString stringWithFormat: @"IMAPCache_%@_", // [Utilities flattenPathFromString: aKey // separator: @"/"]]] ) // { // [[NSFileManager defaultManager] removeFileAtPath: [NSString stringWithFormat: @"%@/%@", // GNUMailUserLibraryPath(), aString] // handler: nil]; // } // } // } // } if ([self hasChangesPending]) { NSUserDefaults *aUserDefaults; aUserDefaults = [NSUserDefaults standardUserDefaults]; [aUserDefaults setObject: [[aUserDefaults volatileDomainForName: @"PREFERENCES"] objectForKey: @"ACCOUNTS"] forKey: @"ACCOUNTS"]; // We inform that our account profiles have changed [[NSNotificationCenter defaultCenter] postNotificationName: AccountsHaveChanged object: nil userInfo: nil]; } } // // class methods // + (id) singleInstance { if (!singleInstance) { singleInstance = [[AccountViewController alloc] initWithNibName: @"AccountView"]; } return singleInstance; } @end // // Private methods // @implementation AccountViewController (Private) - (void) _updateAccountsListBecause: (UpdateReason) reason { NSMutableDictionary *allPreferences; NSMutableDictionary *oldAccounts; oldAccounts = allAccounts; // We now get the servers list from the volatile user defaults allPreferences = [[NSMutableDictionary alloc] init]; allAccounts = [[NSMutableDictionary alloc] init]; [allPreferences addEntriesFromDictionary: [[NSUserDefaults standardUserDefaults] volatileDomainForName: @"PREFERENCES"]]; if ([allPreferences objectForKey: @"ACCOUNTS"]) { [allAccounts addEntriesFromDictionary: [allPreferences objectForKey: @"ACCOUNTS"]]; } // We update the volatile user defaults with the new receiving servers list [allPreferences setObject: allAccounts forKey: @"ACCOUNTS"]; // FIXME - This is causing a segfault under OS X #ifndef MACOSX [[NSUserDefaults standardUserDefaults] removeVolatileDomainForName: @"PREFERENCES"]; #endif [[NSUserDefaults standardUserDefaults] setVolatileDomain: allPreferences forName: @"PREFERENCES"]; RELEASE(allPreferences); if (reason == FirstTime || reason == DidRemove) { [tableView deselectAll: self]; [tableView reloadData]; } else if (reason == DidModify || reason == DidAdd) { NSArray *a1 = [[oldAccounts allValues] sortedArrayUsingFunction: sortAccountEntries context: nil]; NSArray *a2 = [[allAccounts allValues] sortedArrayUsingFunction: sortAccountEntries context: nil]; int i, j; int count = [a1 count]; [tableView deselectAll: self]; [tableView reloadData]; for ( i = 0; i < count; i++ ) { j = [a1 indexOfObject: [a2 objectAtIndex: i]]; if (j == NSNotFound) { [tableView selectRow: i byExtendingSelection: NO]; break; } } } TEST_RELEASE(oldAccounts); } @end GNUMail/Bundles/Account/GNUmakefile0100644000014600001460000000221310613064242017623 0ustar monotonemonotoneinclude $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Account BUNDLE_EXTENSION = .prefs BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/GNUMail Account_RESOURCE_FILES = account.tiff Account_OBJC_FILES = \ AccountView.m \ AccountViewController.m \ AccountEditorWindow.m \ AccountEditorWindowController.m \ PersonalView.m \ ReceiveView.m \ SendView.m \ IMAPView.m \ POP3View.m \ UNIXView.m Account_HEADERS = \ AccountView.h \ AccountViewController.h \ AccountEditorWindow.h \ AccountEditorWindowController.h \ PersonalView.h \ ReceiveView.h \ SendView.h \ IMAPView.h \ POP3View.h \ UNIXView.h Account_PRINCIPAL_CLASS = \ AccountViewController ADDITIONAL_OBJCFLAGS += -Wall -Wno-import ADDITIONAL_INCLUDE_DIRS += -I../../Framework/GNUMail ADDITIONAL_LIB_DIRS += -L../../Framework/GNUMail/GNUMail.framework/Versions/Current/$(GNUSTEP_TARGET_LDIR) ADDITIONAL_GUI_LIBS += -lGNUMail -lPantomime # Under Solaris, we include SSL headers / libraries ifeq ($(findstring solaris, $(GNUSTEP_TARGET_OS)), solaris) ADDITIONAL_OBJCFLAGS = -I/usr/local/ssl/include endif include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble GNUMail/Bundles/Account/IMAPView.h0100644000014600001460000000236010424672357017322 0ustar monotonemonotone/* ** IMAPView.h ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_IMAPView #define _GNUMail_H_IMAPView #import @interface IMAPView : NSView { @public NSPopUpButton *imapSupportedMechanismsPopUp; NSTableColumn *imapViewMailboxColumn; NSTableColumn *imapSubscriptionColumn; NSOutlineView *imapOutlineView; NSMatrix *imapMatrix; @private id parent; } - (id) initWithParent: (id) theParent; - (void) layoutView; @end #endif // _GNUMail_H_IMAPView GNUMail/Bundles/Account/IMAPView.m0100644000014600001460000001302710424672357017331 0ustar monotonemonotone/* ** IMAPView.m ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "IMAPView.h" #include "Constants.h" #include "LabelWidget.h" #include "Utilities.h" const NSString *IMAPViewMailboxTableColumnIdentifier = @"all folders"; const NSString *IMAPViewSubscriptionTableColumnIdentifier = @"subscribed folders"; // // // @implementation IMAPView - (void) dealloc { NSDebugLog(@"IMAPView: -dealloc"); RELEASE(imapViewMailboxColumn); RELEASE(imapSubscriptionColumn); RELEASE(imapOutlineView); RELEASE(imapMatrix); [super dealloc]; } // // // - (id) initWithParent: (id) theParent { self = [super init]; parent = theParent; return self; } // // // - (void) layoutView { NSButton *list, *imapSupportedMechanismsButton; NSScrollView *scrollView; LabelWidget *label; NSButtonCell *cell; [self setFrame: NSMakeRect(0,0,400,360)]; [self setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,285,365,50) label: _(@"In this panel, you can subscribe or unsubscribe to\nmailboxes on your IMAP server. To connect and list the\navailable mailboxes, click on the List button.")]; [self addSubview: label]; // // // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,235,115,45) label: _(@"Authentication:") alignment: NSRightTextAlignment]; [self addSubview: label]; imapSupportedMechanismsPopUp = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(130,245,100,ButtonHeight)]; [self addSubview: imapSupportedMechanismsPopUp]; imapSupportedMechanismsButton = [[NSButton alloc] initWithFrame: NSMakeRect(240,245,135,ButtonHeight)]; [imapSupportedMechanismsButton setTitle: _(@"Check supported")]; [imapSupportedMechanismsButton setTarget: parent]; [imapSupportedMechanismsButton setAction: @selector(imapSupportedMechanismsButtonClicked:)]; [self addSubview: imapSupportedMechanismsButton]; // // // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,200,145,45) label: _(@"Show which mailboxes?")]; [self addSubview: label]; cell = [[NSButtonCell alloc] init]; AUTORELEASE(cell); [cell setButtonType: NSSwitchButton]; [cell setBordered: NO]; [cell setImagePosition: NSImageLeft]; imapMatrix = [[NSMatrix alloc] initWithFrame: NSMakeRect(160,215,225,20) mode: NSRadioModeMatrix prototype: cell numberOfRows: 1 numberOfColumns: 2]; [imapMatrix setIntercellSpacing: NSMakeSize(0,0) ]; [imapMatrix setAutosizesCells: NO]; cell = [imapMatrix cellAtRow: 0 column: 0]; [cell setTitle: _(@"all")]; [cell setTag: 0]; cell = [imapMatrix cellAtRow: 0 column: 1]; [cell setTitle: _(@"subscribed only")]; [cell setTag: 1]; [self addSubview: imapMatrix]; imapViewMailboxColumn = [[NSTableColumn alloc] initWithIdentifier: (id)IMAPViewMailboxTableColumnIdentifier]; [imapViewMailboxColumn setEditable: NO]; [[imapViewMailboxColumn headerCell] setStringValue: _(@"Mailboxes")]; [imapViewMailboxColumn setMinWidth: 270]; imapSubscriptionColumn = [[NSTableColumn alloc] initWithIdentifier: (id)IMAPViewSubscriptionTableColumnIdentifier]; [imapSubscriptionColumn setEditable: YES]; [[imapSubscriptionColumn headerCell] setStringValue: _(@"Subscribed")]; imapOutlineView = [[NSOutlineView alloc] initWithFrame: NSMakeRect(5,40,390,185)]; [imapOutlineView addTableColumn: imapViewMailboxColumn]; [imapOutlineView addTableColumn: imapSubscriptionColumn]; [imapOutlineView setOutlineTableColumn: imapViewMailboxColumn]; [imapOutlineView setDrawsGrid: NO]; [imapOutlineView setIndentationPerLevel: 10]; [imapOutlineView setAllowsColumnSelection: NO]; [imapOutlineView setAllowsColumnReordering: NO]; [imapOutlineView setAllowsEmptySelection: NO]; [imapOutlineView setAllowsMultipleSelection: NO]; [imapOutlineView setIndentationMarkerFollowsCell: YES]; [imapOutlineView setAutoresizesOutlineColumn: YES]; [imapOutlineView sizeLastColumnToFit]; [imapOutlineView setDataSource: parent]; [imapOutlineView setDelegate: parent]; [imapOutlineView setTarget: parent]; [imapOutlineView setDoubleAction: @selector(doubleClickedOnNode:)]; scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect(5,40,390,185)]; [scrollView setBorderType: NSBezelBorder]; [scrollView setHasHorizontalScroller: YES]; [scrollView setHasVerticalScroller: YES]; [scrollView setDocumentView: imapOutlineView]; [scrollView setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; [self addSubview: scrollView]; RELEASE(scrollView); list = [[NSButton alloc] initWithFrame: NSMakeRect(5,5,100,ButtonHeight)]; [list setTitle: _(@"List")]; [list setTarget: parent]; [list setAction: @selector(imapList:)]; [list setAutoresizingMask: NSViewMaxXMargin|NSViewMaxYMargin]; [self addSubview: list]; RELEASE(list); } @end GNUMail/Bundles/Account/POP3View.h0100644000014600001460000000227010424672357017315 0ustar monotonemonotone/* ** POP3View.h ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_POP3View #define _GNUMail_H_POP3View #import @interface POP3View : NSView { @public NSPopUpButton *pop3DefaultInboxPopUpButton; NSButton *pop3LeaveOnServer; NSTextField *pop3DaysField; NSButton *pop3UseAPOP; @private id parent; } - (id) initWithParent: (id) theParent; - (void) layoutView; @end #endif // _GNUMail_H_POP3View GNUMail/Bundles/Account/POP3View.m0100644000014600001460000000637410575213556017332 0ustar monotonemonotone/* ** POP3View.m ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "POP3View.h" #include "Constants.h" #include "LabelWidget.h" // // // @implementation POP3View - (void) dealloc { NSDebugLog(@"POP3View: -dealloc"); RELEASE(pop3DefaultInboxPopUpButton); RELEASE(pop3LeaveOnServer); RELEASE(pop3DaysField); RELEASE(pop3UseAPOP); [super dealloc]; } // // // - (id) initWithParent: (id) theParent { self = [super init]; parent = theParent; return self; } // // // - (void) layoutView { LabelWidget *label; self = [super init]; [self setFrame: NSMakeRect(0,0,400,360)]; [self setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; pop3LeaveOnServer = [[NSButton alloc] initWithFrame: NSMakeRect(10,290,210,ButtonHeight)]; [pop3LeaveOnServer setButtonType: NSSwitchButton]; [pop3LeaveOnServer setBordered: NO]; [pop3LeaveOnServer setTitle: _(@"Leave messages on server for")]; [pop3LeaveOnServer setAutoresizingMask: NSViewMinYMargin]; [self addSubview: pop3LeaveOnServer]; pop3DaysField = [[NSTextField alloc] initWithFrame: NSMakeRect(225,293,40,TextFieldHeight)]; [pop3DaysField setAutoresizingMask: NSViewMinYMargin]; [self addSubview: pop3DaysField]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(275,293,50,TextFieldHeight) label: _(@"days")]; [label setAutoresizingMask: NSViewMinYMargin]; [self addSubview: label]; pop3UseAPOP = [[NSButton alloc] initWithFrame: NSMakeRect(10,260,380,ButtonHeight)]; [pop3UseAPOP setButtonType: NSSwitchButton]; [pop3UseAPOP setBordered: NO]; [pop3UseAPOP setTitle: _(@"Use Authenticated Post Office Protocol (APOP)")]; [pop3UseAPOP setAutoresizingMask: NSViewMinYMargin]; [self addSubview: pop3UseAPOP]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,200,380,TextFieldHeight) label: _(@"Save messages received from this account in this mailbox:")]; [self addSubview: label]; pop3DefaultInboxPopUpButton = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(65, 170, 250, ButtonHeight)]; [self addSubview: pop3DefaultInboxPopUpButton]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10, 140, 425, 30) label: _(@"If you don't see all your IMAP mailboxes, first open a connection to this server.")]; [label setFont: [NSFont systemFontOfSize: 10]]; [self addSubview: label]; // // We set the next key views // [pop3LeaveOnServer setNextKeyView: pop3DaysField]; [pop3DaysField setNextKeyView: pop3UseAPOP]; [pop3UseAPOP setNextKeyView: pop3LeaveOnServer]; } @end GNUMail/Bundles/Account/PersonalView.h0100644000014600001460000000273110424672357020361 0ustar monotonemonotone/* ** PersonalView.h ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_PersonalView #define _GNUMail_H_PersonalView #import @class LabelWidget; @interface PersonalView : NSView { @public NSTextField *personalAccountNameField; NSTextField *personalNameField; NSTextField *personalEMailField; NSTextField *personalReplyToField; NSTextField *personalOrganizationField; NSPopUpButton *personalSignaturePopUp; NSTextField *personalSignatureField; NSButton *personalLocationButton; LabelWidget *personalLocationLabel; @private id parent; } - (id) initWithParent: (id) theParent; - (void) layoutView; - (void) dealloc; @end #endif // _GNUMail_H_PersonalView GNUMail/Bundles/Account/PersonalView.m0100644000014600001460000001604710424672357020373 0ustar monotonemonotone/* ** PersonalView.m ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "PersonalView.h" #include "Constants.h" #include "LabelWidget.h" @implementation PersonalView - (id) initWithParent: (id) theParent { self = [super init]; parent = theParent; return self; } // // // - (void) dealloc { NSDebugLog(@"PersonalView: -dealloc"); RELEASE(personalAccountNameField); RELEASE(personalNameField); RELEASE(personalEMailField); RELEASE(personalReplyToField); RELEASE(personalOrganizationField); RELEASE(personalSignaturePopUp); RELEASE(personalSignatureField); RELEASE(personalLocationButton); [super dealloc]; } // // // - (void) layoutView { LabelWidget *label, *nameLabel, *emailLabel, *personalReplyToLabel, *personalOrganizationLabel, *personalSignatureLabel; [self setFrame: NSMakeRect(0,0,400,360)]; [self setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; // // Name of the account // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,310,125,15) label: _(@"Account name:") alignment: NSRightTextAlignment]; [self addSubview: label]; personalAccountNameField = [[NSTextField alloc] initWithFrame: NSMakeRect(145,308,235,TextFieldHeight)]; [personalAccountNameField setEditable: YES]; [self addSubview: personalAccountNameField]; // // // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,255,380,50) label: _(@"Please specify your personal information. You need to\nspecify at least your name and your E-Mail address. You can\nleave the other fields blank.")]; [self addSubview: label]; // // Name of the user // nameLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,225,125,TextFieldHeight) label: _(@"Your name:") alignment: NSRightTextAlignment]; [self addSubview: nameLabel]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,210,125,TextFieldHeight) label: _(@"(Ex: Bob Smith)") alignment: NSRightTextAlignment]; [label setFont: [NSFont systemFontOfSize: 10]]; [self addSubview: label]; personalNameField = [[NSTextField alloc] initWithFrame: NSMakeRect(145,225,235,TextFieldHeight)]; [personalNameField setEditable: YES]; [self addSubview: personalNameField]; // // E-Mail // emailLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,190,130,TextFieldHeight) label: _(@"Your E-Mail address:") alignment: NSRightTextAlignment]; [self addSubview: emailLabel]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,175,125,TextFieldHeight) label: _(@"(Ex: bob@smith.com)") alignment: NSRightTextAlignment]; [label setFont: [NSFont systemFontOfSize: 10]]; [self addSubview: label]; personalEMailField = [[NSTextField alloc] initWithFrame: NSMakeRect(145,190,235,TextFieldHeight)]; [personalEMailField setEditable: YES]; [self addSubview: personalEMailField]; // // Reply-To // personalReplyToLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,155,125,TextFieldHeight) label: _(@"Reply-To address:") alignment: NSRightTextAlignment]; [self addSubview: personalReplyToLabel]; personalReplyToField = [[NSTextField alloc] initWithFrame: NSMakeRect(145,155,235,TextFieldHeight)]; [personalReplyToField setEditable: YES]; [self addSubview: personalReplyToField]; // // PersonalOrganization // personalOrganizationLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,120,125,TextFieldHeight) label: _(@"Organization:") alignment: NSRightTextAlignment]; [self addSubview: personalOrganizationLabel]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,105,125,TextFieldHeight) label: _(@"(Ex: ACME inc.)") alignment: NSRightTextAlignment]; [label setFont: [NSFont systemFontOfSize: 10]]; [self addSubview: label]; personalOrganizationField = [[NSTextField alloc] initWithFrame: NSMakeRect(145,120,235,TextFieldHeight)]; [personalOrganizationField setEditable: YES]; [self addSubview: personalOrganizationField]; // // We add the rest of our UI elements for setting the signature // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,70,390,30) label: _(@"The signature will be appended at the end of your message.")]; [self addSubview: label]; personalSignatureLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,45,150,TextFieldHeight) label: _(@"Obtain signature from:") alignment: NSRightTextAlignment]; [self addSubview: personalSignatureLabel]; personalSignaturePopUp = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(160,45,145,ButtonHeight)]; [personalSignaturePopUp setAutoenablesItems: NO]; [personalSignaturePopUp addItemWithTitle: _(@"content of file")]; [personalSignaturePopUp addItemWithTitle: _(@"program's output")]; [personalSignaturePopUp setTarget: parent]; [personalSignaturePopUp setAction: @selector(selectionInPersonalSignaturePopUpHasChanged:)]; [self addSubview: personalSignaturePopUp]; personalLocationButton = [[NSButton alloc] initWithFrame: NSMakeRect(315,45,65,ButtonHeight)]; [personalLocationButton setTitle: _(@"Choose")]; [personalLocationButton setTarget: parent]; [personalLocationButton setAction: @selector(personalLocationButtonClicked:)]; [self addSubview: personalLocationButton]; personalLocationLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,15,150,TextFieldHeight) label: _(@"File location:") alignment: NSRightTextAlignment]; [self addSubview: personalLocationLabel]; personalSignatureField = [[NSTextField alloc] initWithFrame: NSMakeRect(160,15,220,TextFieldHeight)]; [personalSignatureField setEditable: YES]; [personalSignatureField setSelectable: YES]; [self addSubview: personalSignatureField]; // // We set the next key views // [personalAccountNameField setNextKeyView: personalNameField]; [personalNameField setNextKeyView: personalEMailField]; [personalEMailField setNextKeyView: personalReplyToField]; [personalReplyToField setNextKeyView: personalOrganizationField]; [personalOrganizationField setNextKeyView: personalSignaturePopUp]; [personalSignaturePopUp setNextKeyView: personalLocationButton]; [personalLocationButton setNextKeyView: personalSignatureField]; [personalSignatureField setNextKeyView: personalAccountNameField]; } @end GNUMail/Bundles/Account/ReceiveView.h0100644000014600001460000000271010424672357020155 0ustar monotonemonotone/* ** ReceiveView.h ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ReceiveView #define _GNUMail_H_ReceiveView #import @interface ReceiveView : NSView { @public NSTextField *receiveServerNameField; NSTextField *receiveServerPortField; NSTextField *receiveUsernameField; NSPopUpButton *receivePopUp; NSSecureTextField *receivePasswordSecureField; NSButton *receiveRememberPassword; NSButton *receiveCheckOnStartup; NSPopUpButton *receiveUseSecureConnection; NSMatrix *receiveMatrix; NSTextField *receiveMinutesField; @private id parent; } - (id) initWithParent: (id) theParent; - (void) layoutView; @end #endif // _GNUMail_H_ReceiveView GNUMail/Bundles/Account/ReceiveView.m0100644000014600001460000002152310424672357020165 0ustar monotonemonotone/* ** ReceiveView.m ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ReceiveView.h" #include "LabelWidget.h" #include "Constants.h" // // // @implementation ReceiveView - (void) dealloc { NSDebugLog(@"ReceiveView: -dealloc"); RELEASE(receiveServerNameField); RELEASE(receiveServerPortField); RELEASE(receiveUsernameField); RELEASE(receivePasswordSecureField); RELEASE(receiveRememberPassword); RELEASE(receiveCheckOnStartup); RELEASE(receiveUseSecureConnection); RELEASE(receivePopUp); RELEASE(receiveMatrix); RELEASE(receiveMinutesField); [super dealloc]; } // // // - (id) initWithParent: (id) theParent { self = [super init]; parent = theParent; return self; } // // // - (void) layoutView { LabelWidget *label, *serverNameLabel, *serverPortLabel, *serverTypeLabel, *usernameLabel, *passwordLabel, *minutesLabel, *secureLabel; NSButtonCell *cell; [self setFrame: NSMakeRect(0,0,400,360)]; [self setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,295,380,35) label: _(@"Usually in this panel, you would want to add the information\nrelated to your incoming mail server (often POP3).")]; [self addSubview: label]; // Server type serverTypeLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,265,90,TextFieldHeight) label: _(@"Server type:") alignment: NSRightTextAlignment]; //[serverTypeLabel setAutoresizingMask: NSViewMinYMargin|NSViewMaxYMargin]; [self addSubview: serverTypeLabel]; receivePopUp = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(110,263,125,ButtonHeight)]; [receivePopUp setAutoenablesItems: NO]; [receivePopUp addItemWithTitle: _(@"POP3")]; [receivePopUp addItemWithTitle: _(@"IMAP")]; [receivePopUp addItemWithTitle: _(@"UNIX")]; [receivePopUp setTarget: parent]; [receivePopUp setAction: @selector(setType:)]; //[popup setAutoresizingMask: NSViewWidthSizable|NSViewMaxXMargin|NSViewMinYMargin|NSViewMaxYMargin]; [self addSubview: receivePopUp]; // Server name serverNameLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,235,90,TextFieldHeight) label: _(@"Server name:") alignment: NSRightTextAlignment]; //[serverNameLabel setAutoresizingMask: NSViewMinYMargin|NSViewMaxYMargin]; [self addSubview: serverNameLabel]; receiveServerNameField = [[NSTextField alloc] initWithFrame: NSMakeRect(110,235,150,TextFieldHeight)]; [receiveServerNameField setSelectable: YES]; //[serverNameField setAutoresizingMask: NSViewWidthSizable|NSViewMaxXMargin|NSViewMinYMargin|NSViewMaxYMargin]; [self addSubview: receiveServerNameField]; // Server port serverPortLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,205,90,TextFieldHeight) label: _(@"Server port:") alignment: NSRightTextAlignment]; //[serverPortLabel setAutoresizingMask: NSViewMinXMargin|NSViewMaxXMargin|NSViewMinYMargin|NSViewMaxYMargin]; [self addSubview: serverPortLabel]; receiveServerPortField = [[NSTextField alloc] initWithFrame: NSMakeRect(110,205,150,TextFieldHeight)]; [receiveServerPortField setSelectable: YES]; //[serverPortField setAutoresizingMask: NSViewMinXMargin|NSViewWidthSizable|NSViewMinYMargin|NSViewMaxYMargin]; [self addSubview: receiveServerPortField]; // Username usernameLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,175,90,TextFieldHeight) label: _(@"Username:") alignment: NSRightTextAlignment]; //[usernameLabel setAutoresizingMask: NSViewMinYMargin|NSViewMaxYMargin]; [self addSubview: usernameLabel]; receiveUsernameField = [[NSTextField alloc] initWithFrame: NSMakeRect(110,175,150,TextFieldHeight)]; [receiveUsernameField setSelectable: YES]; //[usernameField setAutoresizingMask: NSViewWidthSizable|NSViewMaxXMargin|NSViewMinYMargin|NSViewMaxYMargin]; [self addSubview: receiveUsernameField]; // Remember password receiveRememberPassword = [[NSButton alloc] initWithFrame: NSMakeRect(10,145,200,ButtonHeight)]; [receiveRememberPassword setButtonType: NSSwitchButton]; [receiveRememberPassword setBordered: NO]; [receiveRememberPassword setTitle: _(@"Remember password")]; [receiveRememberPassword setTarget: parent]; [receiveRememberPassword setAction: @selector(receiveRememberPasswordClicked:)]; //[receiveRememberPassword setAutoresizingMask: NSViewMinYMargin|NSViewMaxYMargin]; [self addSubview: receiveRememberPassword]; // Password passwordLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,120,90,TextFieldHeight) label: _(@"Password:") alignment: NSRightTextAlignment]; //[passwordLabel setAutoresizingMask: NSViewMinYMargin|NSViewMaxYMargin]; [self addSubview: passwordLabel]; receivePasswordSecureField = [[NSSecureTextField alloc] initWithFrame: NSMakeRect(110,120,150,TextFieldHeight)]; [receivePasswordSecureField setSelectable: YES]; //[passwordSecureField setAutoresizingMask: NSViewWidthSizable|NSViewMaxXMargin|NSViewMinYMargin|NSViewMaxYMargin]; [self addSubview: receivePasswordSecureField]; // Check on startup receiveCheckOnStartup = [[NSButton alloc] initWithFrame: NSMakeRect(10,90,250,ButtonHeight)]; [receiveCheckOnStartup setButtonType: NSSwitchButton]; [receiveCheckOnStartup setBordered: NO]; [receiveCheckOnStartup setTitle: _(@"Check for new mail on startup")]; //[receiveCheckOnStartup setAutoresizingMask: NSViewMinYMargin|NSViewMaxYMargin]; [self addSubview: receiveCheckOnStartup]; // Use SSL secureLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,68,190,TextFieldHeight) label: _(@"Use secure connection:") alignment: NSLeftTextAlignment]; [self addSubview: secureLabel]; receiveUseSecureConnection = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(200,68,150,ButtonHeight)]; [receiveUseSecureConnection setTarget: parent]; [receiveUseSecureConnection setAction: @selector(receiveUseSecureConnectionHasChanged:)]; [self addSubview: receiveUseSecureConnection]; // // Matrix // cell = [[NSButtonCell alloc] init]; AUTORELEASE(cell); [cell setButtonType: NSRadioButton]; [cell setBordered: NO]; [cell setImagePosition: NSImageLeft]; receiveMatrix = [[NSMatrix alloc] initWithFrame:NSMakeRect(10,5,200,45) mode: NSRadioModeMatrix prototype: cell numberOfRows: 3 numberOfColumns: 1]; [receiveMatrix setTarget: parent]; [receiveMatrix setIntercellSpacing: NSMakeSize (0,3)]; [receiveMatrix setAutosizesCells: NO]; [receiveMatrix setAllowsEmptySelection: NO]; cell = [receiveMatrix cellAtRow: 0 column: 0]; [cell setTitle: _(@"Check for new mail manually")]; [cell setAction: @selector(receiveSetManually:)]; cell = [receiveMatrix cellAtRow: 1 column: 0]; [cell setTitle: _(@"Check for new mail automatically every")]; [cell setAction: @selector(receiveSetAutomatically:)]; cell = [receiveMatrix cellAtRow: 2 column: 0]; [cell setTitle: _(@"Never check for new mail")]; [cell setAction: @selector(receiveSetAutomatically:)]; [receiveMatrix sizeToFit]; [self addSubview: receiveMatrix]; receiveMinutesField = [[NSTextField alloc] initWithFrame: NSMakeRect(280,25,40,TextFieldHeight)]; [receiveMinutesField setEditable: NO]; [receiveMinutesField setSelectable: YES]; [self addSubview: receiveMinutesField]; minutesLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(325,23,50,TextFieldHeight) label: _(@"minutes")]; [self addSubview: minutesLabel]; // // We set the next key views // [receivePopUp setNextKeyView: receiveServerNameField]; [receiveServerNameField setNextKeyView: receiveServerPortField]; [receiveServerPortField setNextKeyView: receiveUsernameField]; [receiveUsernameField setNextKeyView: receiveRememberPassword]; [receiveRememberPassword setNextKeyView: receivePasswordSecureField]; [receivePasswordSecureField setNextKeyView: receiveCheckOnStartup]; [receiveCheckOnStartup setNextKeyView: receiveUseSecureConnection]; [receiveUseSecureConnection setNextKeyView: receiveMatrix]; [receiveMatrix setNextKeyView: receiveMinutesField]; [receiveMinutesField setNextKeyView: receiveServerNameField]; } @end GNUMail/Bundles/Account/SendView.h0100644000014600001460000000350010424672357017462 0ustar monotonemonotone/* ** SendView.h ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_SendView #define _GNUMail_H_SendView #import @interface SendView: NSView { @public NSPopUpButton *sendTransportMethodPopUpButton; @private id parent; } - (id) initWithParent: (id) theParent; - (void) layoutView; @end // // Mailer // @interface SendMailerView: NSView { @public NSTextField *sendMailerField; @private id parent; } - (id) initWithParent: (id) theParent; - (void) layoutView; @end // // SMTP // @interface SendSMTPView: NSView { @public NSTextField *sendSMTPHostField; NSTextField *sendSMTPPortField; NSTextField *sendSMTPUsernameField; NSSecureTextField *sendSMTPPasswordSecureField; NSButton *sendRememberPassword; NSPopUpButton *sendUseSecureConnection; NSButton *sendAuthenticateUsingButton; NSButton *sendSupportedMechanismsButton; NSPopUpButton *sendSupportedMechanismsPopUp; @private id parent; } - (id) initWithParent: (id) theParent; - (void) layoutView; @end #endif // _GNUMail_H_SendView GNUMail/Bundles/Account/SendView.m0100644000014600001460000001722610424672357017501 0ustar monotonemonotone/* ** SendView.m ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "SendView.h" #include "Constants.h" #include "LabelWidget.h" // // // @implementation SendView - (void) dealloc { NSDebugLog(@"SendView: -dealloc"); RELEASE(sendTransportMethodPopUpButton); [super dealloc]; } // // // - (id) initWithParent: (id) theParent { self = [super init]; parent = theParent; return self; } // // // - (void) layoutView { LabelWidget *label; [self setFrame: NSMakeRect(0,0,400,360)]; [self setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,280,380,50) label: _(@"Usually in this panel, you would want to add the information\nrelated to your outgoing mail server (most of the time,\nSMTP).")]; [self addSubview: label]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,255,120,TextFieldHeight) label: _(@"Transport method:") alignment: NSRightTextAlignment]; [self addSubview: label]; sendTransportMethodPopUpButton = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(140,253,125,ButtonHeight)]; [sendTransportMethodPopUpButton setAutoenablesItems: NO]; [sendTransportMethodPopUpButton addItemWithTitle: _(@"Mailer")]; [sendTransportMethodPopUpButton addItemWithTitle: _(@"SMTP")]; [sendTransportMethodPopUpButton setTarget: parent]; [sendTransportMethodPopUpButton setAction: @selector(sendTransportMethodHasChanged:)]; [self addSubview: sendTransportMethodPopUpButton]; } @end // // Mailer // @implementation SendMailerView - (void) dealloc { RELEASE(sendMailerField); [super dealloc]; } // // // - (id) initWithParent: (id) theParent { self = [super init]; parent = theParent; return self; } // // // - (void) layoutView { LabelWidget *label; [self setFrame: NSMakeRect(0,0,400,260)]; [self setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,220,120,TextFieldHeight) label: _(@"Path:") alignment: NSRightTextAlignment]; [self addSubview: label]; sendMailerField = [[NSTextField alloc] initWithFrame: NSMakeRect(140,220,235,TextFieldHeight)]; [self addSubview: sendMailerField]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(140,195,235,TextFieldHeight) label: _(@"(Ex: /usr/sbin/sendmail -t)") alignment: NSLeftTextAlignment]; //[label setFont: [NSFont systemFontOfSize: 10]]; [self addSubview: label]; } @end // // SMTP // @implementation SendSMTPView - (void) dealloc { RELEASE(sendSMTPHostField); RELEASE(sendSMTPPortField); RELEASE(sendSMTPUsernameField); RELEASE(sendSMTPPasswordSecureField); RELEASE(sendRememberPassword); RELEASE(sendUseSecureConnection); RELEASE(sendAuthenticateUsingButton); RELEASE(sendSupportedMechanismsButton); RELEASE(sendSupportedMechanismsPopUp); [super dealloc]; } // // // - (id) initWithParent: (id) theParent { self = [super init]; parent = theParent; return self; } // // // - (void) layoutView { LabelWidget *label; [self setFrame: NSMakeRect(0,0,400,260)]; [self setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,220,120,TextFieldHeight) label: _(@"Server name:") alignment: NSRightTextAlignment]; [self addSubview: label]; sendSMTPHostField = [[NSTextField alloc] initWithFrame: NSMakeRect(140,220,235,TextFieldHeight)]; [self addSubview: sendSMTPHostField]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,190,120,TextFieldHeight) label: _(@"Server port:") alignment: NSRightTextAlignment]; [self addSubview: label]; sendSMTPPortField = [[NSTextField alloc] initWithFrame: NSMakeRect(140,190,235,TextFieldHeight)]; [self addSubview: sendSMTPPortField]; // // Use secure connection (SSL) // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,160,120,TextFieldHeight) label: _(@"Use secure connection:") alignment: NSRightTextAlignment]; [self addSubview: label]; sendUseSecureConnection = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(140,160,235,ButtonHeight)]; [sendUseSecureConnection setTarget: parent]; [sendUseSecureConnection setAction: @selector(sendUseSecureConnectionHasChanged:)]; [self addSubview: sendUseSecureConnection]; // // SMTP authentication // sendAuthenticateUsingButton = [[NSButton alloc] initWithFrame: NSMakeRect(140,130,235,ButtonHeight)]; [sendAuthenticateUsingButton setButtonType: NSSwitchButton]; [sendAuthenticateUsingButton setBordered: NO]; [sendAuthenticateUsingButton setTitle: _(@"Use SMTP authentication")]; [sendAuthenticateUsingButton setTarget: parent]; [sendAuthenticateUsingButton setAction: @selector(sendAuthenticateUsingButtonClicked:)]; [self addSubview: sendAuthenticateUsingButton]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,100,120,TextFieldHeight) label: _(@"Mechanism:") alignment: NSRightTextAlignment]; [self addSubview: label]; sendSupportedMechanismsPopUp = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(140,100,90,ButtonHeight)]; [self addSubview: sendSupportedMechanismsPopUp]; sendSupportedMechanismsButton = [[NSButton alloc] initWithFrame: NSMakeRect(240,100,135,ButtonHeight)]; [sendSupportedMechanismsButton setTitle: _(@"Check supported")]; [sendSupportedMechanismsButton setTarget: parent]; [sendSupportedMechanismsButton setAction: @selector(sendSupportedMechanismsButtonClicked:)]; [self addSubview: sendSupportedMechanismsButton]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,70,120,TextFieldHeight) label: _(@"Username:") alignment: NSRightTextAlignment]; [self addSubview: label]; sendSMTPUsernameField = [[NSTextField alloc] initWithFrame: NSMakeRect(140,70,235,TextFieldHeight)]; [self addSubview: sendSMTPUsernameField]; // Remember password option sendRememberPassword = [[NSButton alloc] initWithFrame: NSMakeRect(140,40,200,ButtonHeight)]; [sendRememberPassword setButtonType: NSSwitchButton]; [sendRememberPassword setBordered: NO]; [sendRememberPassword setTitle: _(@"Remember password")]; [sendRememberPassword setTarget: parent]; [sendRememberPassword setAction: @selector(sendRememberPasswordClicked:)]; [self addSubview: sendRememberPassword]; // Password label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,10,120,TextFieldHeight) label: _(@"Password:") alignment: NSRightTextAlignment]; [self addSubview: label]; sendSMTPPasswordSecureField = [[NSSecureTextField alloc] initWithFrame: NSMakeRect(140,10,235,TextFieldHeight)]; [self addSubview: sendSMTPPasswordSecureField]; // // We set the next key views // [sendSMTPHostField setNextKeyView: sendSMTPPortField]; [sendSMTPPortField setNextKeyView: sendUseSecureConnection]; [sendUseSecureConnection setNextKeyView: sendAuthenticateUsingButton]; } @end GNUMail/Bundles/Account/UNIXView.h0100644000014600001460000000220510424672357017355 0ustar monotonemonotone/* ** UNIXView.h ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_UNIXView #define _GNUMail_H_UNIXView #import @interface UNIXView : NSView { @public NSPopUpButton *unixDefaultInboxPopUpButton; NSTextField *unixMailspoolFileField; @private id parent; } - (id) initWithParent: (id) theParent; - (void) layoutView; @end #endif // _GNUMail_H_UNIXView GNUMail/Bundles/Account/UNIXView.m0100644000014600001460000000566310424672357017375 0ustar monotonemonotone/* ** UNIXView.m ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "UNIXView.h" #include "Constants.h" #include "LabelWidget.h" // // // @implementation UNIXView - (void) dealloc { NSDebugLog(@"UNIXView: -dealloc"); RELEASE(unixDefaultInboxPopUpButton); RELEASE(unixMailspoolFileField); [super dealloc]; } // // // - (id) initWithParent: (id) theParent { self = [super init]; parent = theParent; return self; } // // // - (void) layoutView { NSButton *unixMailspoolFileButton; LabelWidget *label; self = [super init]; [self setFrame: NSMakeRect(0,0,400,360)]; [self setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,290,150,TextFieldHeight) label: _(@"Mail spool file:")]; [label setAutoresizingMask: NSViewMinYMargin]; [self addSubview: label]; unixMailspoolFileField = [[NSTextField alloc] initWithFrame: NSMakeRect(20,260,250,TextFieldHeight)]; [unixMailspoolFileField setEditable: YES]; [unixMailspoolFileField setSelectable: YES]; [unixMailspoolFileField setAutoresizingMask: NSViewMinYMargin]; [self addSubview: unixMailspoolFileField]; unixMailspoolFileButton = [[NSButton alloc] initWithFrame: NSMakeRect(280,258,75,ButtonHeight)]; [unixMailspoolFileButton setTitle: _(@"Choose file")]; [unixMailspoolFileButton setTarget: parent]; [unixMailspoolFileButton setAction: @selector(unixMailspoolFileButtonClicked:)]; [unixMailspoolFileButton setAutoresizingMask: NSViewMinYMargin]; [self addSubview: unixMailspoolFileButton]; RELEASE(unixMailspoolFileButton); label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,200,380,TextFieldHeight) label: _(@"Save messages received from this account in this mailbox:")]; [self addSubview: label]; unixDefaultInboxPopUpButton = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(65, 170, 250, ButtonHeight)]; [self addSubview: unixDefaultInboxPopUpButton]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10, 140, 425, 30) label: _(@"If you don't see all your IMAP mailboxes, first open a connection to this server.")]; [label setFont: [NSFont systemFontOfSize: 10]]; [self addSubview: label]; } @end GNUMail/Bundles/Account/account.tiff0100644000014600001460000006614010506157372020100 0ustar monotonemonotoneII*002H0$(12*R>Ih.i4l ' 'Adobe Photoshop 7.02006:09:25 01:01:46 4294967295 256 256 1 72/1 72/1 2 2005-02-14T21:04:06-06:00 2005-02-15T12:43:10-06:00 2005-02-15T12:43:10-06:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:3cbf4d67-4c61-11db-8c81-d26e35c2cbb3 application/vnd.adobe.photoshop 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:00:25Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:00:25Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM50000nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIMQ8BIM 00JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?Tv$s\cSm%QY[ 쾶0r6j9$QMr$HoJ*4cm,sZYU0$wٯrF ~ϖ)5PKsw.v]{v!>aTK ZnsZ?c8eV+]S21/;ӫ"fEl܎~Nu==-,,mkjkjh-.-UTS*))vGGEvus999(((-,,111-,,***DDC*))vGGE}*))vGGE*))vHHF***wFED)((v8YXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXY7 00GNUMail/Bundles/Advanced/0040755000014600001460000000000010424710553015672 5ustar monotonemonotoneGNUMail/Bundles/Advanced/English.lproj/0040755000014600001460000000000010424672357020421 5ustar monotonemonotoneGNUMail/Bundles/Advanced/English.lproj/AdvancedView.nib/0040755000014600001460000000000010424672357023530 5ustar monotonemonotoneGNUMail/Bundles/Advanced/English.lproj/AdvancedView.nib/classes.nib0100644000014600001460000000150410424672357025654 0ustar monotonemonotone{ IBClasses = ( { CLASS = AdvancedViewController; LANGUAGE = ObjC; OUTLETS = { enabledColumn = NSTableColumn; optionsColumn = NSTableColumn; tableView = NSTableView; view = id; }; SUPERCLASS = NSObject; }, {CLASS = ExtendedTableColumn; LANGUAGE = ObjC; SUPERCLASS = NSTableColumn; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, {CLASS = NSObject; LANGUAGE = ObjC; }, {CLASS = NSTableColumn; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, {CLASS = StripeTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; }, {CLASS = SwitchTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; } ); IBVersion = 1; }GNUMail/Bundles/Advanced/English.lproj/AdvancedView.nib/info.nib0100644000014600001460000000113010424672357025145 0ustar monotonemonotone IBDocumentLocation 92 111 356 240 0 0 1024 746 IBEditorPositions 5 283 352 458 328 0 0 1024 746 IBFramework Version 291.0 IBLockedObjects IBOpenObjects 5 IBSystem Version 6R73 GNUMail/Bundles/Advanced/English.lproj/AdvancedView.nib/keyedobjects.nib0100644000014600001460000001245010424672357026674 0ustar monotonemonotonebplist00Y$archiverX$versionX$objectsT$top_NSKeyedArchiver (,-348<ELVZcdst|} |!$+,/0237:;=@ACDGOPQTYPZ\]^abeilmqstvwyz|}"VU$null  !"#$%&']NSFontManagerV$classYNSNextOid_NSVisibleWindowsVNSRoot\NSOidsValues_NSClassesValues]NSConnections]NSNamesValues]NSObjectsKeysZNSOidsKeys]NSClassesKeys[NSFramework[NSNamesKeys_NSObjectsValuesusjftrih )*+[NSClassName_AdvancedViewController./01Z$classnameX$classes^NSCustomObject02XNSObject_IBCocoaFramework 567ZNS.objects./9:\NSMutableSet9;2UNSSet 5=>A?@ABCD \^`bd FGHIJKWNSLabel]NSDestinationXNSSource[Z MNO)PQRSTU_NSNextResponderZNSSubviews[NSExtension[NSFrameSizeY XVU 5=WXY  M[\]^_K`abKVNSCellWNSFrameYNSEnabled[NSSuperview _{{11, 226}, {420, 48}} efghijklmnXopqr_NSBackgroundColorYNSSupport]NSControlView\NSCellFlags2[NSTextColor[NSCellFlagsZNSContents@_In this panel, you can set advanced options for GNUMail.app. Generally, most users will simply ignore those advanced options. See the User Manual for documentation on them. uvwxyz{VNSSizeVNSNameXNSfFlags"A0\LucidaGrande./~VNSFont~2 WNSColor]NSCatalogName[NSColorName\NSColorSpaceVSystem\controlColor WNSWhiteI0.666667./2 _controlTextColor B0./_NSTextFieldCell[2\NSActionCell./[NSTextField2\%NSTextFieldYNSControlVNSView[NSResponder MN\^KK]NSContentView[NSVScrollerXNSsFlagsXNSvFlags]NSNextKeyView\NSCornerView\NSScrollAmts[NSHScroller_NSHeaderClipViewTJRS)OA A AAN& 5= MN\^YYYNScvFlagsYNSBGColorYNSDocViewI  !GF 5=ơ Me)P]^bYNSTvFlags_NSIntercellSpacingHeight_NSOriginalClassName\NSHeaderView[NSGridColor^NSTableColumns_NSIntercellSpacingWidth[NSRowHeightE9"B@"@#%$B,"@@"A_StripeTableView[NSTableViewZ{387, 190} MP^(' MN\^YY׀QRY{387, 17}./_NSTableHeaderView2 M\^YY+*_{{388, 0}, {16, 17}}./]_NSCornerView2 5=-; b\NSIsEditableZNSDataCellWNSWidthZNSMinWidth\NSIdentifierZNSMaxWidth\NSHeaderCell:5"Bho"BXo."Dz/Wenabled efhijkn    4120WEnabled I0.333333 3_headerTextColor./_NSTableHeaderCell[2 efghijkl p71@6Q9 uvwx"AP8  B1./"#]NSTableColumn"2 %&'()b*^NSIsResizeable?"Cy"BG߀<=Woptions efhijkn-  .>WOptions efghijkl-p1@\Redwood City./45^NSMutableArray462WNSArray 89DCYgridColor <D0.5./>?^NSClassSwapper>2_{{1, 17}, {387, 185}} BH_controlBackgroundColor./EFZNSClipViewE2 MHI\]^JKYLYMbYNXNSActionXNSTargetYNSPercentMLK"?yC^_{{388, 17}, {15, 185}}\_doScroller:./RSZNSScrollerR2 MHI\^JKYUVYWYXPO"?}_{{-100, -100}, {387, 15}} 5=[_{{1, 0}, {387, 17}}_{{14, 20}, {404, 203}}./_`\NSScrollView_2Z{438, 286} cdYNS.stringW./fg_NSMutableStringfh2XNSString./jk\NSCustomViewj2Tview./no_NSNibOutletConnectornp2^NSNibConnector FGHIr€]ZdataSource FGHIu€_Xdelegate FGHIxaYtableView FGHI{c]optionsColumn FGHI~e]enabledColumn 5gYKX./662 5KYK 5YXK 5klmnopq\File's Owner^NSTableColumn1]NSScrollView1\NSTextField1TView 5 5 5D?ABKXCY@ 5vwxyz{|}~./^NSIBObjectData2]IB.objectdata#,5:LQ\b#.<HTfhjlnprtvxz|~ #07=FHUWY[]_arz!)3?ACEF_ +8:<>@BIVckuw!+2>w&OYcmoqtvxz|  # 2 L X Z \ ^ c h j l n p r t y ~   $ 9 ; = T ] k t }     7 9 ; @ B G I Q ^ h }    & + P _ a f k m o w    ' , 5 D I a v x  )4?dfhjo '09FOT]t{#,.;DIR_hw68:<>@BDFHJLNPRTVXZ\^`bkzGNUMail/Bundles/Advanced/AdvancedView.h0100644000014600001460000000231410424672357020411 0ustar monotonemonotone/* ** AdvancedView.h ** ** Copyright (c) 2003-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_AdvancedView #define _GNUMail_H_AdvancedView #import @interface AdvancedView : NSView { @public NSScrollView *scrollView; NSTableView *tableView; NSTableColumn *enabledColumn; NSTableColumn *optionsColumn; @private id _parent; } - (id) initWithParent: (id) theParent; - (void) layoutView; @end #endif // _GNUMail_H_AdvancedView GNUMail/Bundles/Advanced/AdvancedView.m0100644000014600001460000000534510505707146020420 0ustar monotonemonotone/* ** AdvancedView.m ** ** Copyright (c) 2002-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "AdvancedView.h" #include "Constants.h" #include "LabelWidget.h" // // // @implementation AdvancedView - (id) initWithParent: (id) theParent { self = [super init]; _parent = theParent; return self; } // // // - (void) dealloc { RELEASE(optionsColumn); RELEASE(enabledColumn); RELEASE(tableView); [super dealloc]; } // // // - (void) layoutView { LabelWidget *label; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,180,430,50) label: _(@"In this panel, you can set advanced options for GNUMail.\nGenerally, most users will simply ignore those advanced options.\nSee the User Manual for documentation on them.")]; [self addSubview: label]; optionsColumn = [[NSTableColumn alloc] initWithIdentifier: @"options"]; [optionsColumn setEditable: NO]; [[optionsColumn headerCell] setStringValue: _(@"Options")]; [optionsColumn setMinWidth: 330]; enabledColumn = [[NSTableColumn alloc] initWithIdentifier: @"enabled"]; [enabledColumn setEditable: YES]; [[enabledColumn headerCell] setStringValue: _(@"Enabled")]; [enabledColumn setMinWidth: 50]; tableView = [[NSTableView alloc] initWithFrame: NSMakeRect(5,5,430,165)]; [tableView setDrawsGrid:NO]; [tableView setAllowsColumnSelection: NO]; [tableView setAllowsColumnReordering: NO]; [tableView setAllowsEmptySelection: NO]; [tableView setAllowsMultipleSelection: NO]; [tableView addTableColumn: optionsColumn]; [tableView addTableColumn: enabledColumn]; [tableView setDataSource: _parent]; [tableView setDelegate: _parent]; [tableView setTarget: _parent]; [tableView setDoubleAction: @selector(edit:)]; scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect(5,5,430,165)]; [scrollView setBorderType: NSBezelBorder]; [scrollView setHasHorizontalScroller: NO]; [scrollView setHasVerticalScroller: YES]; [scrollView setDocumentView: tableView]; [self addSubview: scrollView]; RELEASE(scrollView); } @end GNUMail/Bundles/Advanced/AdvancedViewController.h0100644000014600001460000000237410424672357022463 0ustar monotonemonotone/* ** AdvancedViewController.h ** ** Copyright (c) 2003-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_AdvancedViewController #define _GNUMail_H_AdvancedViewController #import #include "PreferencesModule.h" // // // @interface AdvancedViewController : NSObject { // Outlets IBOutlet id view; IBOutlet NSTableView *tableView; IBOutlet NSTableColumn *optionsColumn; IBOutlet NSTableColumn *enabledColumn; // Other ivars } @end #endif // _GNUMail_H_AdvancedViewController GNUMail/Bundles/Advanced/AdvancedViewController.m0100644000014600001460000001342610601706267022463 0ustar monotonemonotone/* ** AdvancedViewController.m ** ** Copyright (c) 2002-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "AdvancedViewController.h" #include "Constants.h" #ifndef MACOSX #include "AdvancedView.h" #endif #include static AdvancedViewController *singleInstance = nil; typedef struct _row { NSString *option; NSString *key; int value; } row; static row *rows; #ifdef MACOSX #define COUNT 14 #else #define COUNT 13 #endif #define SET_VALUES(i, v1, v2, v3) \ rows[i].option = RETAIN(v1); \ rows[i].key = v2; \ rows[i].value = v3 // // // @implementation AdvancedViewController - (id) initWithNibName: (NSString *) theName { NSButtonCell *cell; self = [super init]; rows = (row *)malloc(COUNT * sizeof(row)); SET_VALUES(0, _(@"Compact mailbox when closing"), @"COMPACT_MAILBOX_ON_CLOSE", NSOffState); SET_VALUES(1, _(@"Prompt before compacting a mailbox"), @"PROMPT_BEFORE_COMPACT", NSOffState); SET_VALUES(2, _(@"Automatically thread messages"), @"AutomaticallyThreadMessages", NSOffState); SET_VALUES(3, _(@"Open the Console window on startup"), @"OPEN_CONSOLE_ON_STARTUP", NSOffState); #ifndef MACOSX SET_VALUES(4, _(@"Open the Mailboxes window on startup"), @"OPEN_MAILBOXMANAGER_ON_STARTUP", NSOffState); #else SET_VALUES(4, _(@"Open the Mailboxes drawer automatically"), @"OPEN_MAILBOXMANAGER_ON_STARTUP", NSOffState); #endif SET_VALUES(5, _(@"Enable continuous spell checking"), @"ENABLE_SPELL_CHECKING", NSOffState); SET_VALUES(6, _(@"Open last mailbox on startup"), @"OPEN_LAST_MAILBOX", NSOnState); SET_VALUES(7, _(@"Do not select the first unread message"), @"DoNoSelectFirstUnread", NSOffState); SET_VALUES(8, _(@"Use maildir mailbox format"), @"UseMaildirMailboxFormat", NSOffState); SET_VALUES(9, _(@"Show unread messages count only in INBOX mailboxes"), @"ShowUnreadForInboxOnly", NSOffState); SET_VALUES(10, _(@"Hide deleted messages on startup"), @"HIDE_DELETED_MESSAGES", NSOnState); SET_VALUES(11, _(@"Hide read messages on startup"), @"HIDE_READ_MESSAGES", NSOffState); SET_VALUES(12, _(@"Highlight URLs in message content"), @"HIGHLIGHT_URL", NSOffState); #ifdef MACOSX SET_VALUES(13, _(@"Use small scrollers"), @"SCROLLER_SIZE", NSOffState); #endif #ifdef MACOSX if (![NSBundle loadNibNamed: theName owner: self]) { AUTORELEASE(self); return nil; } RETAIN(view); #else // We link our view view = [[AdvancedView alloc] initWithParent: self]; [view layoutView]; // We link our outlets tableView = ((AdvancedView*)view)->tableView; optionsColumn = ((AdvancedView*)view)->optionsColumn; enabledColumn = ((AdvancedView*)view)->enabledColumn; #endif cell = [[NSButtonCell alloc] init]; [cell setButtonType: NSSwitchButton]; [cell setImagePosition: NSImageOnly]; [cell setControlSize: NSSmallControlSize]; [[tableView tableColumnWithIdentifier: @"enabled"] setDataCell: cell]; RELEASE(cell); // We get our defaults for this panel [self initializeFromDefaults]; return self; } // // // - (void) dealloc { int i; NSDebugLog(@"AdvancedViewController: -dealloc"); // Cocoa bug? #ifdef MACOSX [tableView setDataSource: nil]; #endif for (i = 0; i < COUNT; i++) { RELEASE(rows[i].option); } free(rows); singleInstance = nil; RELEASE(view); [super dealloc]; } // // access methods // - (NSImage *) image { NSBundle *aBundle; aBundle = [NSBundle bundleForClass: [self class]]; return AUTORELEASE([[NSImage alloc] initWithContentsOfFile: [aBundle pathForResource: @"advanced" ofType: @"tiff"]]); } // // // - (NSString *) name { return _(@"Advanced"); } // // // - (NSView *) view { return view; } - (BOOL) hasChangesPending { return YES; } // // // - (void) initializeFromDefaults { int i; for (i = 0; i < COUNT; i++) { if ([[NSUserDefaults standardUserDefaults] objectForKey: rows[i].key]) { rows[i].value = [[NSUserDefaults standardUserDefaults] integerForKey: rows[i].key]; } } } // // // - (void) saveChanges { int i; for (i = 0; i < COUNT; i++) { [[NSUserDefaults standardUserDefaults] setInteger: rows[i].value forKey: rows[i].key]; } } // // Data Source methods // - (int) numberOfRowsInTableView: (NSTableView *)aTableView { return COUNT; } // // // - (id) tableView: (NSTableView *)aTableView objectValueForTableColumn: (NSTableColumn *)aTableColumn row: (int)rowIndex { if (aTableColumn == optionsColumn) { return rows[rowIndex].option; } return [NSNumber numberWithBool: (rows[rowIndex].value == NSOnState)]; } // // // - (void) tableView: (NSTableView *) aTableView setObjectValue: (id) anObject forTableColumn: (NSTableColumn *) aTableColumn row: (int) rowIndex { if (rows[rowIndex].value == NSOnState) { rows[rowIndex].value = NSOffState; } else { rows[rowIndex].value = NSOnState; } } // // class methods // + (id) singleInstance { if (!singleInstance) { singleInstance = [[AdvancedViewController alloc] initWithNibName: @"AdvancedView"]; } return singleInstance; } @end GNUMail/Bundles/Advanced/GNUmakefile0100644000014600001460000000126410613064242017741 0ustar monotonemonotoneinclude $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Advanced BUNDLE_EXTENSION = .prefs BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/GNUMail Advanced_RESOURCE_FILES = advanced.tiff Advanced_OBJC_FILES = \ AdvancedView.m \ AdvancedViewController.m Advanced_HEADERS = \ AdvancedView.h \ AdvancedViewController.h Advanced_PRINCIPAL_CLASS = \ AdvancedViewController ADDITIONAL_OBJCFLAGS = -Wall -Wno-import ADDITIONAL_INCLUDE_DIRS += -I../../Framework/GNUMail ADDITIONAL_LIB_DIRS += -L../../Framework/GNUMail/GNUMail.framework/Versions/Current/$(GNUSTEP_TARGET_LDIR) ADDITIONAL_GUI_LIBS += -lGNUMail include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble GNUMail/Bundles/Advanced/advanced.tiff0100644000014600001460000006650410506157372020326 0ustar monotonemonotoneII*00I0$(12*R>IN/im ' 'Adobe Photoshop 7.02006:09:25 01:02:46 4294967295 256 256 1 72/1 72/1 2 2005-02-14T21:04:06-06:00 2005-02-15T12:43:10-06:00 2005-02-15T12:43:10-06:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:3cbf4d68-4c61-11db-8c81-d26e35c2cbb3 application/vnd.adobe.photoshop 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:00:26Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:00:26Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM.@@XX8BIM8BIM50000nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 00JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?T;mmuK|{_u]m.{`}g˅ְY{-$K`%=Pzs:}2N $a>M}X@Kýw\XZH.d'푷LIOёFEMmoկiQ#?Mm"<ր}ut]6̱Z~))/=Cat~czlI Ż~|vTXӴ/G0:O#:ETWlh@-AQnM$5B@2$cuk?ܭc/oo?sq`S\6ƺ?1zN#ԃ>}IOֺ Xks_wޜV9X'ۥyϸ˗}[?;_VDXmtkڒ"h]-p+@8U kl 6;]]EC`ٗSxm8HIOX6Ty5Gmm>֛;c3~߈6Enƍ`?Jlb8n3cHjJr@u\CZHZqqǯyKtpm5[xkD&5Ԥ8BIM!UAdobe PhotoshopAdobe Photoshop 7.08BIMmoptHTargetSettingsMttCObjc NativeQuadBl longGrn longRd longTrnsbool addMetadatabool fileFormatenum FileFormatPNG24 interlacedbool noMatteColorbooltransparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong8BIM-msetnullVersionlong8BIMms4w!++% rbaa^]]^]]a``&%%.877hggdccdccfeeONN | D [ZZmll;;;XWWdcccbbcbbdccedd?(((lkkcbb+++#=FEEihhdcccbbhgg=<< T*))eddcbbdccdcccbbfee;:: U,++hggcbbdccihhSRRWokjjcbbcbbcbbcbbfeehggjiieddbaa`___^^a``dccihhihhgffcbbcbbcbbcbbkii&&&>>eddbaahhh~~~~}}=<<hhh~}}yxxQPP: Ogffdddyyy~~~[ZZ5ppplkkw$##gggmmm~~~}}}rqq"!!###grrrgff333k666VUUcbbddduuu~~~a``0|||⚙}}}iiicbbYYY>>>} feehggeddbaahgg{{{~~~GFF 777zyy~~~pppcbbdccgffjii E+^]]dcccbbbaakjjxxx...zmlluttcbbcbbdccedd O,^]]dcccbbb``mlltss+++vkjj~~~wwwcbbcbbdccedd P%dcceddcbbb``mllwvvJJJ#""ihh}}}wwwbaacbbeddhgg L 0//\[[hggeddkjj"EDDiii}}}tttcbbhgg```;::!!W:::jii%%%o@cbbonnsrrFEEc+ Pgff~~~888gffvvvpoox%%%jiiXXXtgffhhh|||gff655&&&pooxwwKKKxcbbeddpppqppa``hgg988wuttzyy]]] E0444hggdccedd|||eddcbbcbbjii,++ N{zzsssxxxkjj?>>"!!wu777_]]jii_^^___xxx~~~qpp`__cbbcbbhggxFEEkkkTTT[[[feekjjmllnmmlkkhgg```VVV[[[yyy~~~|||a``cbbcbbgffIHH .ﲱsssXXXNNNSSSVUUVVVUTTOOORRRiii~~~~~~~~~dcc\[[gffihhhff RaGGGf/Wyxx}}}xxxmmmgggeeejjjttt~~~~~~}||cbbq$ X$$$uTTTjiilkk~~~~~~~~~vuucaa\[[,cbbdcc`__baautt|{{hhh`__cbbfee Qbhggcbbcbbbbb`__dcconn~~~uttgff`__baacbbcbbjhh_feefffcbbcbbfeeXWW)))GFFcbbeddfeegfffeedccPOO)((LKKgeecbbcbbfeeiiiF???hggihhTRR Q F^]]dccbaabaacbbfeer8DCCjiiihhLKK`  )BAA j)6?CBBgffcbbcbbeddVVVQ6.T=<< 7  &-01CDOTS'''lkkhgghggkjj999[VSGE731*#  ")07?DMU[^w a^XQHB<5-&  %*17<BGKKJJKJLMID@:4.)"  #&)+,,-,,)($"  00GNUMail/Bundles/Clock/0040755000014600001460000000000010424674042015222 5ustar monotonemonotoneGNUMail/Bundles/Clock/Clock.h0100644000014600001460000000316610424672357016440 0ustar monotonemonotone/* * Clock.h: Interface and declarations for the TimeDateView Class * of the GNUstep GWorkspace application * * Copyright (c) 2001 Enrico Sersale * * Author: Enrico Sersale * Date: August 2001 * * Modified by Ludovic Marcotte * * - renamed from TimeDateView to Clock * - refactored the code * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _GNUMail_H_Clock #define _GNUMail_H_Clock #import @interface Clock : NSView { NSString *pathToResources; NSImage *maskImage; NSImage *hour1Image; NSImage *hour2Image; NSImage *hour3Image; NSImage *minute1Image; NSImage *minute2Image; NSImage *dayweekImage; NSImage *daymont1Image; NSImage *daymont2Image; NSImage *monthImage; } // // // - (id) initWithPathToResources: (NSString *) thePath; // // access / mutation methods // - (void) setDate: (NSCalendarDate *) theDate; @end #endif // _GNUMail_H_Clock GNUMail/Bundles/Clock/Clock.m0100644000014600001460000001502610424672357016443 0ustar monotonemonotone/* * Clock.m: Implementation of the TimeDateView Class * of the GNUstep GWorkspace application * * Copyright (c) 2001 Enrico Sersale * * Author: Enrico Sersale * Date: August 2001 * * Modified by Ludovic Marcotte * * - renamed from TimeDateView to Clock * - refactored the code * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "Clock.h" #include "Constants.h" #define LED_COLON 10 #define LED_AM 11 #define LED_PM 12 static const int tf_posx[11] = {5, 14, 24, 28, 37, 40, 17, 17, 22, 27, 15}; static const int posy[4] = {14, 26, 42, 51}; @implementation Clock // // // - (id) initWithPathToResources: (NSString *) thePath; { self = [super init]; pathToResources = thePath; RETAIN(pathToResources); maskImage = nil; hour1Image = nil; hour2Image = nil; hour3Image = nil; minute1Image = nil; minute2Image = nil; dayweekImage = nil; daymont1Image = nil; daymont2Image = nil; monthImage = nil; [self setDate: [NSCalendarDate calendarDate]]; return self; } // // // - (void) dealloc { RELEASE(pathToResources); TEST_RELEASE(maskImage); TEST_RELEASE(hour1Image); TEST_RELEASE(hour2Image); TEST_RELEASE(hour3Image); TEST_RELEASE(minute1Image); TEST_RELEASE(minute2Image); TEST_RELEASE(dayweekImage); TEST_RELEASE(daymont1Image); TEST_RELEASE(daymont2Image); TEST_RELEASE(monthImage); [super dealloc]; } // // access / mutation methods // - (void) setDate: (NSCalendarDate *) theDate { NSString *imgName; int n, hour, minute, dayOfWeek, dayOfMonth, month; if (theDate == nil) { return; } hour = [theDate hourOfDay]; minute = [theDate minuteOfHour]; dayOfWeek = [theDate dayOfWeek]; dayOfMonth = [theDate dayOfMonth]; month = [theDate monthOfYear]; // We dealloc the previously used images TEST_RELEASE(maskImage); TEST_RELEASE(hour1Image); TEST_RELEASE(hour2Image); TEST_RELEASE(hour3Image); TEST_RELEASE(minute1Image); TEST_RELEASE(minute2Image); TEST_RELEASE(dayweekImage); TEST_RELEASE(daymont1Image); TEST_RELEASE(daymont2Image); TEST_RELEASE(monthImage); // We create our new set of images maskImage = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/Mask.tiff", pathToResources]]; // // hour // n = hour/10; imgName = [NSString stringWithFormat: @"LED-%d", n]; hour1Image = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/%@.tiff", pathToResources, imgName]]; n = hour%10; imgName = [NSString stringWithFormat: @"LED-%d", n]; hour2Image = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/%@.tiff", pathToResources, imgName]]; n = LED_COLON; imgName = [NSString stringWithFormat: @"LED-%d", n]; hour3Image = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/%@.tiff", pathToResources, imgName]]; // // minute // n = minute/10; imgName = [NSString stringWithFormat: @"LED-%d", n]; minute1Image = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/%@.tiff", pathToResources, imgName]]; n = minute%10; imgName = [NSString stringWithFormat: @"LED-%d", n]; minute2Image = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/%@.tiff", pathToResources, imgName]]; // // dayOfWeek // imgName = [NSString stringWithFormat: @"Weekday-%d", dayOfWeek]; dayweekImage = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/%@.tiff", pathToResources, imgName]]; // // dayOfMonth // n = dayOfMonth/10; imgName = [NSString stringWithFormat: @"Date-%d", n]; daymont1Image = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/%@.tiff", pathToResources, imgName]]; n = dayOfMonth%10; imgName = [NSString stringWithFormat: @"Date-%d", n]; daymont2Image = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/%@.tiff", pathToResources, imgName]]; // // month // n = month; imgName = [NSString stringWithFormat: @"Month-%d", n]; monthImage = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/%@.tiff", pathToResources, imgName]]; [self setNeedsDisplay: YES]; } // // Implementation of the inherited methods from NSView // - (BOOL) isOpaque { return YES; } - (NSRect) frame { NSLog(@"FRAME INVOKED"); return NSMakeRect(0,0,55,57); } - (void) drawRect: (NSRect) rect { NSRect r; NSSize s; NSPoint p; float h; if (maskImage == nil) { return; } s = [maskImage size]; h = s.height; r = NSInsetRect(rect, (rect.size.width - s.width)/2, (rect.size.height - s.height)/2); p = NSMakePoint(r.origin.x, r.origin.y); [maskImage compositeToPoint: NSZeroPoint operation: NSCompositeSourceOver]; // // hour // p.x = tf_posx[0]; p.y = h - posy[0]; [hour1Image compositeToPoint: p operation: NSCompositeSourceOver]; p.x = tf_posx[1]; [hour2Image compositeToPoint: p operation: NSCompositeSourceOver]; p.x = tf_posx[2]; [hour3Image compositeToPoint: p operation: NSCompositeSourceOver]; // // minute // p.x = tf_posx[3]; [minute1Image compositeToPoint: p operation: NSCompositeSourceOver]; p.x = tf_posx[4]; [minute2Image compositeToPoint: p operation: NSCompositeSourceOver]; // // dayOfWeek // p.x = tf_posx[6]; p.y = h - posy[1]; [dayweekImage compositeToPoint: p operation: NSCompositeSourceOver]; // // dayOfMonth // p.x = tf_posx[7]; p.y = h - posy[2]; [daymont1Image compositeToPoint: p operation: NSCompositeSourceOver]; p.x = tf_posx[9]; [daymont2Image compositeToPoint: p operation: NSCompositeSourceOver]; // // month // p.x = tf_posx[10]; p.y = h - posy[3]; [monthImage compositeToPoint: p operation: NSCompositeSourceOver]; } @end GNUMail/Bundles/Clock/ClockController.h0100644000014600001460000000224410424672357020500 0ustar monotonemonotone/* ** ClockController.h ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ClockController #define _GNUMail_H_ClockController #import #include "GNUMailBundle.h" #include "PreferencesModule.h" @interface ClockController : NSObject { // ivars id owner; NSMutableArray *allClockViews; NSString *resourcePath; NSView *superview; } @end #endif // _GNUMail_H_ClockController GNUMail/Bundles/Clock/ClockController.m0100644000014600001460000000757510424672357020521 0ustar monotonemonotone/* ** ClockController.m ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ClockController.h" #include "Clock.h" #include "Constants.h" #include static ClockController *singleInstance = nil; @implementation ClockController // // // - (id) initWithOwner: (id) theOwner { NSBundle *aBundle; self = [super init]; owner = theOwner; aBundle = [NSBundle bundleForClass: [self class]]; resourcePath = [aBundle resourcePath]; RETAIN(resourcePath); allClockViews = [[NSMutableArray alloc] init]; return self; } // // // - (void) dealloc { RELEASE(resourcePath); RELEASE(allClockViews); [super dealloc]; } // // // + (id) singleInstance { //NSDebugLog(@"ClockController: -singleInstance"); if (!singleInstance ) { singleInstance = [[ClockController alloc] initWithOwner: nil]; } return singleInstance; } // // access / mutation methods // - (NSString *) name { return @"Clock"; } - (NSString *) description { return @"This is a simple Clock bundle."; } - (NSString *) version { return @"v0.2.0"; } - (void) setOwner: (id) theOwner { owner = theOwner; } // // UI elements // - (BOOL) hasPreferencesPanel { return NO; } - (BOOL) hasComposeViewAccessory { return NO; } - (BOOL) hasViewingViewAccessory { return YES; } - (id) viewingViewAccessory { Clock *aClock; aClock = [[Clock alloc] initWithPathToResources: resourcePath]; [allClockViews addObject: aClock]; return AUTORELEASE(aClock); } // // // - (enum ViewingViewType) viewingViewAccessoryType { return ViewingViewTypeToolbar; } - (void) viewingViewAccessoryWillBeRemovedFromSuperview: (id) theView { if (theView == nil) { return; } else { Clock *aClock; int i; #warning FIXME for (i = 0; i < [allClockViews count]; i++) { aClock = [allClockViews objectAtIndex: i]; if ([aClock isDescendantOf: theView]) { [allClockViews removeObject: aClock]; break; } } } } - (void) setCurrentSuperview: (NSView *) theView { superview = theView; } - (NSArray *) submenuForMenu: (NSMenu *) theMenu { return nil; } - (NSArray *) menuItemsForMenu: (NSMenu *) theMenu { return nil; } // // Pantomime related methods // - (void) messageWasDisplayed: (CWMessage *) theMessage inView: (NSTextView *) theTextView { NSArray *allItems; Clock *aClock; BOOL b; int i; if (superview == nil) { return; } b = NO; for (i = 0; i < [allClockViews count]; i++) { aClock = [allClockViews objectAtIndex: i]; // Since this bundle will be shown in the toolbar, we can't // use [aClock isDescendantOf: superview]. What we'll do // is to get all the view of all visible items and see // if we got our clock view. allItems = [[[theTextView window] toolbar] visibleItems]; #warning does not work as expected when mailwindow > 1 for (i = 0; i < [allItems count]; i++) { if ([[allItems objectAtIndex: i] view] == aClock) { b = YES; break; } } if (b) { [aClock setDate: [theMessage receivedDate]]; break; } } } @end GNUMail/Bundles/Clock/Date-0.tiff0100644000014600001460000000073410424672357017116 0ustar monotonemonotoneII* (! p`ZUb*bdT$bR (j4 :~I#M%Tܙ̔7_qK ?BBJ-T>lŢ$+NٓPAFRdW%P2VoR,J"Y  |  2(=R/home/bjoern/Source/NSTimeDate/Images/Date-0.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/Date-1.tiff0100644000014600001460000000070610424672357017116 0ustar monotonemonotoneII*| hA 8DAaE !x(cF7acN,~iK8\ؙM;m\͔?NlsP2KR d(4Q jDYs&$   f  2ns(=R/home/bjoern/Source/NSTimeDate/Images/Date-1.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/Date-2.tiff0100644000014600001460000000073010424672357017114 0ustar monotonemonotoneII* hC&8UP.p`c;HQ5PC @XiK4HL9bJ,{Yd˘?XTGL5] +_.YJAF ֫U,T)BTȟ6   x  2(=R/home/bjoern/Source/NSTimeDate/Images/Date-2.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/Date-3.tiff0100644000014600001460000000073410424672357017121 0ustar monotonemonotoneII* (! @U8T#?ȁBG NUHQb$vQ:-j†H@AӪN1y|$K8UB!s-xƍ\PŬVBɲTϕZxYj]e h]?GH  |  2(=R/home/bjoern/Source/NSTimeDate/Images/Date-3.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/Date-4.tiff0100644000014600001460000000073010424672357017116 0ustar monotonemonotoneII* h! "pp!C ZA2#,vň@ &VlG˨*/̑&EŊϫLiCL=2/X5F QAlըE4͚gR1   x  2(=R/home/bjoern/Source/NSTimeDate/Images/Date-4.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/Date-5.tiff0100644000014600001460000000072210424672357017120 0ustar monotonemonotoneII* (! &X` Z11cL1ЉH2UP3nѨe "ed3ʔ%b)V#Gp9UU!f(W#Cjt^7fzd  R iZk(=R/home/enrico/Grivei/sviluppo/FileManager/WMFinder/Xws/Inspectors/inspectors/Attributes/Images/LED-1.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/LED-10.tiff0100644000014600001460000000062610424672357016726 0ustar monotonemonotoneII*HP hA"l0anC (H8Jℎ"r;y $K(B 2  5:p?(=R/home/bjoern/Source/NSTimeDate/Images/LED-Colon.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/LED-11.tiff0100644000014600001460000000072610424672357016730 0ustar monotonemonotoneII*P h!B : a"F \(1bF'J mC$QIEɢ&fvrrK$c҄Pb郗HU`heKO5{yd ZBH1fF_ o*(  v  2~(=R/home/bjoern/Source/NSTimeDate/Images/LED-AM.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/LED-12.tiff0100644000014600001460000000072610424672357016731 0ustar monotonemonotoneII*P h!B : a"F \(1bF'J nC0(H4yԡFM,S4ɢ)x͖;IsI- ȉBʹ2dV)hL9A&yrh9|(3L  v  2~(=R/home/bjoern/Source/NSTimeDate/Images/LED-PM.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/LED-2.tiff0100644000014600001460000000067210424672357016650 0ustar monotonemonotoneII*pP hAmh"lP$Q"H1 %Zl@N $yԔSG7x #)WI9_ Hi% e?O蔕  Z  1bg(=R/home/bjoern/Source/NSTimeDate/Images/LED-2.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/LED-3.tiff0100644000014600001460000000067210424672357016651 0ustar monotonemonotoneII*pP hAmh"lP$Q"H1 %Zl@N $yԔSG7zCd"S\)$J,r3dOiK.V>\s&  Z  1bh(=R/home/bjoern/Source/NSTimeDate/Images/LED-3.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/LED-4.tiff0100644000014600001460000000071610424672357016651 0ustar monotonemonotoneII*P h6$ E" #bC @NаH4YBeidI-c8q URD(Z`%3&i +UQ<7lk.=b13  n  1v{(=R/home/bjoern/Source/NSTimeDate/Images/LED-4.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/LED-5.tiff0100644000014600001460000000067610424672357016657 0ustar monotonemonotoneII*tP h!n#d@( :, (") a =f`q"G $d :iƐΞ-gXYcd ?K3W4hX6D I˝1[  ^  1fl(=R/home/bjoern/Source/NSTimeDate/Images/LED-5.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/LED-6.tiff0100644000014600001460000000071210424672357016647 0ustar monotonemonotoneII*P h!n#d@( :, (") a =f`q"G $d :iƐ;FQrg˞5_ gʗ*ARي6SXY)ZE3$)f  j  1rx(=R/home/bjoern/Source/NSTimeDate/Images/LED-6.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/LED-7.tiff0100644000014600001460000000067210424672357016655 0ustar monotonemonotoneII*pP hAmh"lP$Q"H1 %Zl@N $yԔSG7CL#WȹC V :-j ^C$TnGK)r 4ARU(R0_W v+WkX#h@f  An]t(=R/home/bjoern/Source/NSTimeDate/English.lproj/Images/Month-4.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/Month-5.tiff0100644000014600001460000000074010424672357017330 0ustar monotonemonotoneII* h!B &l! 0*(fcʼn%~HU@-m0'(sȬqs$ "X"UҤ @EK#)W!_Ū.[*.v&MX+|@p  Ax]}(=R/home/bjoern/Source/NSTimeDate/English.lproj/Images/Month-5.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/Month-6.tiff0100644000014600001460000000077010424672357017334 0ustar monotonemonotoneII* h!B &l!`4CD#P PK7rI#)|ՉLZϒ8[M6\ U%P- xTɔ+y,TH9E^qe[R*bEߢh5Bg7   A](=R/home/bjoern/Source/NSTimeDate/English.lproj/Images/Month-6.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/Month-7.tiff0100644000014600001460000000075610424672357017341 0ustar monotonemonotoneII* h!B &l!`4CD#P PK7rI @ՉLZ)bϒ8[TiRPU -N5]¼ٓG/X挗#zZTS?Vdil'xkc~  A](=R/home/bjoern/Source/NSTimeDate/English.lproj/Images/Month-7.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/Month-8.tiff0100644000014600001460000000076010424672357017335 0ustar monotonemonotoneII* h!B &l! 0*a(%$ꄉ)|,2@ԒH:X¥ ?HQ3ʜ5{1%>MPV-x𒙲P-T ^VqgKuh"  A](=R/home/bjoern/Source/NSTimeDate/English.lproj/Images/Month-8.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/Month-9.tiff0100644000014600001460000000074010424672357017334 0ustar monotonemonotoneII* h!B &l!W'BXSEu)J"RK5Q@&#Sك;[Ԫ;n|e3P8GjT\4oa -Q*eըAp  Ax]~(=R/home/bjoern/Source/NSTimeDate/English.lproj/Images/Month-9.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/Weekday-0.tiff0100644000014600001460000000071410424672357017630 0ustar monotonemonotoneII*p h!B &l%<(Z8A(nĤM/jGN,S̨e+Is'(#bӄOS*sYe\\eC Z  Cbfh(=R/home/bjoern/Source/NSTimeDate/English.lproj/Images/Weekday-7.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/Weekday-1.tiff0100644000014600001460000000072210424672357017630 0ustar monotonemonotoneII*v h!B &l p #| F (vĸ*JpI>hΞ'W 䍙Hٓ,YX ,Lj*Z\`  Chfn(=R/home/bjoern/Source/NSTimeDate/English.lproj/Images/Weekday-1.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/Weekday-2.tiff0100644000014600001460000000070610424672357017633 0ustar monotonemonotoneII*j h!B &l>D`>f@1D =bxqBH7JAM*]R͐0V\ȓ<[pydTD T@@T  C\fb(=R/home/bjoern/Source/NSTimeDate/English.lproj/Images/Weekday-2.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/Weekday-3.tiff0100644000014600001460000000071610424672357017635 0ustar monotonemonotoneII*r h!B &l pxF #J`bFD`:f@1D 'I񒧈*x郄?A,q%Κ0V<#挕6Xi2THdS+xy \  Cdfi(=R/home/bjoern/Source/NSTimeDate/English.lproj/Images/Weekday-4.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/Weekday-5.tiff0100644000014600001460000000067610424672357017644 0ustar monotonemonotoneII*b h!B &l>D`F =xG7A@Q *L(@0iC=|Pp(y H%AL  CTfZ(=R/home/bjoern/Source/NSTimeDate/English.lproj/Images/Weekday-5.tiffCreated with The GIMPHHGNUMail/Bundles/Clock/Weekday-6.tiff0100644000014600001460000000070410424672357017635 0ustar monotonemonotoneII*h h!B &l%hΞ'W 䍙Hٓ,YX ,Lj*Z\5jܤiƏWijTmW;l+ե~mTиf3fN9~뎞|ܰ֝ʶ:)Yr_g%jm\ҢyOm][sֹwn8y[}ߺsMz}GTys T q|O7kT'a˟ Bu` +t5hOPygC6ȁ#w27B5d_C۰5IȄ7\ ?R܍h 8HG0/V?\NʎK5Ф +}P^S;20*  ;f (=R/home/bjoern/Source/NSTimeDate/Images/English/Weekday.tiffCreated with The GIMPHHGNUMail/Bundles/Colors/0040755000014600001460000000000010424710553015426 5ustar monotonemonotoneGNUMail/Bundles/Colors/English.lproj/0040755000014600001460000000000010424672357020155 5ustar monotonemonotoneGNUMail/Bundles/Colors/English.lproj/ColorsView.nib/0040755000014600001460000000000010424672357023020 5ustar monotonemonotoneGNUMail/Bundles/Colors/English.lproj/ColorsView.nib/classes.nib0100644000014600001460000000125410424672357025146 0ustar monotonemonotone{ IBClasses = ( { ACTIONS = {colorQuoteLevelButtonClicked = id; }; CLASS = ColorsViewController; LANGUAGE = ObjC; OUTLETS = { colorQuoteLevelButton = NSButton; level1ColorWell = NSColorWell; level2ColorWell = NSColorWell; level3ColorWell = NSColorWell; level4ColorWell = NSColorWell; mailHeaderCellColorWell = NSColorWell; view = id; }; SUPERCLASS = NSObject; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }GNUMail/Bundles/Colors/English.lproj/ColorsView.nib/info.nib0100644000014600001460000000117110424672357024442 0ustar monotonemonotone IBDocumentLocation 126 206 356 240 0 0 1024 746 IBEditorPositions 5 117 419 493 281 0 0 1024 746 IBFramework Version 291.0 IBLockedObjects 5 IBOpenObjects 5 IBSystem Version 6I32 GNUMail/Bundles/Colors/English.lproj/ColorsView.nib/keyedobjects.nib0100644000014600001460000001264510424672357026172 0ustar monotonemonotonebplist00Y$archiverX$versionX$objectsT$top_NSKeyedArchiver (,-348<GNXfop    #$%&)*,-01348;<=>BCDGHLNORSVXY[\^_abdehjln~U$null  !"#$%&']NSFontManagerV$classYNSNextOid_NSVisibleWindowsVNSRoot\NSOidsValues_NSClassesValues]NSConnections]NSNamesValues]NSObjectsKeysZNSOidsKeys]NSClassesKeys[NSFramework[NSNamesKeys_NSObjectsValuesqmpo )*+[NSClassName_ColorsViewController./01Z$classnameX$classes^NSCustomObject02XNSObject_IBCocoaFramework 567ZNS.objects./9:\NSMutableSet9;2UNSSet 5=>W?@ABCDEF ^`cegik HIJKLMWNSLabel]NSDestinationXNSSource]\ OPQ)RSTUVW_NSNextResponderZNSSubviews[NSExtension[NSFrameSize[ ZYX 5=YZ[\]^_`abcde (,37<@EJNR OghijkMlmnMVNSCellWNSFrameYNSEnabled[NSSuperview _{{17, 184}, {444, 35}} qrstuvwxyzZ{|}~_NSBackgroundColorYNSSupport]NSControlView\NSCellFlags2[NSTextColor[NSCellFlagsZNSContents@_In this panel, you can set the colors used by GNUMail.app. For example, you can set the colors used for the various quoting levels. VNSSizeVNSNameXNSfFlags"AP\LucidaGrande./VNSFont2 WNSColor]NSCatalogName[NSColorName\NSColorSpaceVSystem\controlColor WNSWhiteI0.666667./2 _controlTextColor B0./_NSTextFieldCellg2\NSActionCell./[NSTextField2\%NSTextFieldYNSControlVNSView[NSResponder OghijMnM'_{{18, 151}, {244, 18}} rstvw[}_NSKeyEquivalent_NSAlternateContents_NSPeriodicDelay^NSButtonFlags2]NSButtonFlags_NSPeriodicInterval_NSAlternateImage&%!H=_{{227, 70}, {86, 17}} qrstuvwxy`|}?ZLevel Four OhijMnnMDCA 56B _{{325, 63}, {94, 30}} OhijMnnMIHF 56!"G _{{325, 106}, {94, 30}} OghijkM'(nMLK_{{227, 113}, {86, 17}} qrstuvwxyc|}+M\Level Three OghijkM./nMPO_{{2, 27}, {311, 17}} qrstuvwxyd|}2Q_.Color used in the cell showing message headers OhijM5n6nM7VUS 569:T _{{325, 20}, {94, 30}} ./?@^NSMutableArray?A2WNSArrayZ{473, 239} ./EF\NSCustomViewE2Tview./IJ_NSNibOutletConnectorIK2^NSNibConnector HIJKM[__colorQuoteLevelButton HIJPQ[ba_colorQuoteLevelButtonClicked:./TU_NSNibControlConnectorTK2 HIJKW]d_level1ColorWell HIJKZ_f_level2ColorWell HIJK]bh_level3ColorWell HIJK`aj_level4ColorWell HIJKcel_mailHeaderCellColorWell 5fgn]^a_[b\ec`ZMd./AiA2 5fkMMMMMMMMMMMM 5fm]^a_[b\ec`ZMd 5fopqrstuvwxyz{|}rstuvwxyz{|}~Q2]NSTextField21S211R21YNSButton4R22\NSTextField2S212]NSTextField22\File's Owner^NSTextField211\NSTextField1TView^NSTextField212 5f7 5f7 5f?\eAc`d]^E_aMZ@[bCFDB 5f     ./^NSIBObjectData2]IB.objectdata#,5:LQ'5CQ\jv/8CEFO\cirt !#,EGIKMOQSUWY[]v}!-8:<>CEJL"'<DR^kmoqsu|%.:GT^eq'5J]_aceginprt    ! , E G I a   - 4 = V c i  & ( * , 5 8 : C [ h ! . O Q S U ^ a c l    , M O  '4=BKbix%68J[]o"?Hegikmoqsuwy{} KTGNUMail/Bundles/Colors/ColorsView.h0100644000014600001460000000234210424672357017702 0ustar monotonemonotone/* ** ColorsView.h ** ** Copyright (c) 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ColorsView #define _GNUMail_H_ColorsView #import @interface ColorsView : NSView { @public NSColorWell *level1ColorWell, *level2ColorWell, *level3ColorWell, *level4ColorWell; NSColorWell *mailHeaderCellColorWell; NSButton *colorQuoteLevelButton; @private id parent; } - (id) initWithParent: (id) theParent; - (void) layoutView; @end #endif // _GNUMail_H_ColorsView GNUMail/Bundles/Colors/ColorsView.m0100644000014600001460000000735610424672357017721 0ustar monotonemonotone/* ** ColorsView.m ** ** Copyright (c) 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ColorsView.h" #include "Constants.h" #include "LabelWidget.h" @implementation ColorsView - (id) initWithParent: (id) theParent { self = [super init]; parent = theParent; return self; } // // // - (void) dealloc { NSDebugLog(@"ColorsView: -dealloc"); RELEASE(colorQuoteLevelButton); RELEASE(level1ColorWell); RELEASE(level2ColorWell); RELEASE(level3ColorWell); RELEASE(level4ColorWell); RELEASE(mailHeaderCellColorWell); [super dealloc]; } // // // - (void) layoutView { LabelWidget *label; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,195,430,35) label: _(@"In this panel, you can set the colors used by GNUMail. For\nexample, you can set the colors used for the various quoting levels.")]; [self addSubview: label]; // // Our checkbox // colorQuoteLevelButton = [[NSButton alloc] initWithFrame: NSMakeRect(5,160,420,ButtonHeight)]; [colorQuoteLevelButton setButtonType: NSSwitchButton]; [colorQuoteLevelButton setBordered: NO]; [colorQuoteLevelButton setTitle: _(@"Color quoted text")]; [colorQuoteLevelButton setTarget: parent]; [colorQuoteLevelButton setAction: @selector(colorQuoteLevelButtonClicked:)]; [self addSubview: colorQuoteLevelButton ]; // // Quote Level 1 // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,130,70,TextFieldHeight) label: _(@"Level One") alignment: NSRightTextAlignment]; [self addSubview: label]; level1ColorWell = [[NSColorWell alloc] initWithFrame: NSMakeRect(85,125,75,30)]; [self addSubview: level1ColorWell]; // // Quote Level 2 // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,90,70,TextFieldHeight) label: _(@"Level Two") alignment: NSRightTextAlignment]; [self addSubview: label]; level2ColorWell = [[NSColorWell alloc] initWithFrame: NSMakeRect(85,85,75,30)]; [self addSubview: level2ColorWell]; // // Quote Level 3 // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(190,130,80,TextFieldHeight) label: _(@"Level Three") alignment: NSRightTextAlignment]; [self addSubview: label]; level3ColorWell = [[NSColorWell alloc] initWithFrame: NSMakeRect(280,125,75,30)]; [self addSubview: level3ColorWell]; // // Quote Level 4 // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(190,90,80,TextFieldHeight) label: _(@"Level Four") alignment: NSRightTextAlignment]; [self addSubview: label]; level4ColorWell = [[NSColorWell alloc] initWithFrame: NSMakeRect(280,85,75,30)]; [self addSubview: level4ColorWell]; // // Mail Header cell // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,25,265,TextFieldHeight) label: _(@"Color used in the message headers cell") alignment: NSRightTextAlignment]; [self addSubview: label]; mailHeaderCellColorWell = [[NSColorWell alloc] initWithFrame: NSMakeRect(280,20,75,30)]; [self addSubview: mailHeaderCellColorWell]; } @end GNUMail/Bundles/Colors/ColorsViewController.h0100644000014600001460000000271110424672357021746 0ustar monotonemonotone/* ** ColorsViewController.h ** ** Copyright (c) 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ColorsViewController #define _GNUMail_H_ColorsViewController #import #include "PreferencesModule.h" // // // @interface ColorsViewController : NSObject { // Outlets IBOutlet id view; IBOutlet NSColorWell *level1ColorWell; IBOutlet NSColorWell *level2ColorWell; IBOutlet NSColorWell *level3ColorWell; IBOutlet NSColorWell *level4ColorWell; IBOutlet NSColorWell *mailHeaderCellColorWell; IBOutlet NSButton *colorQuoteLevelButton; // Other ivars } // // action methods // - (IBAction) colorQuoteLevelButtonClicked: (id) sender; @end #endif // _GNUMail_H_ColorsViewController GNUMail/Bundles/Colors/ColorsViewController.m0100644000014600001460000001204410601435445021743 0ustar monotonemonotone/* ** ColorsViewController.m ** ** Copyright (c) 2002-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ColorsViewController.h" #include "Constants.h" #include "NSColor+Extensions.h" #include "NSUserDefaults+Extensions.h" #ifndef MACOSX #include "ColorsView.h" #endif static ColorsViewController *singleInstance = nil; // // // @implementation ColorsViewController - (id) initWithNibName: (NSString *) theName { self = [super init]; #ifdef MACOSX if (![NSBundle loadNibNamed: theName owner: self] ) { AUTORELEASE(self); return nil; } RETAIN(view); #else // We link our view view = [[ColorsView alloc] initWithParent: self]; [view layoutView]; // We link our outlets level1ColorWell = ((ColorsView *)view)->level1ColorWell; level2ColorWell = ((ColorsView *)view)->level2ColorWell; level3ColorWell = ((ColorsView *)view)->level3ColorWell; level4ColorWell = ((ColorsView *)view)->level4ColorWell; mailHeaderCellColorWell = ((ColorsView *)view)->mailHeaderCellColorWell; colorQuoteLevelButton = ((ColorsView *)view)->colorQuoteLevelButton; #endif // We get our defaults for this panel [self initializeFromDefaults]; return self; } // // // - (void) dealloc { NSDebugLog(@"ColorsViewController: -dealloc"); singleInstance = nil; RELEASE(view); [super dealloc]; } // // access methods // - (NSImage *) image { NSBundle *aBundle; aBundle = [NSBundle bundleForClass: [self class]]; return AUTORELEASE([[NSImage alloc] initWithContentsOfFile: [aBundle pathForResource: @"colors" ofType: @"tiff"]]); } // // // - (NSString *) name { return _(@"Colors"); } // // // - (NSView *) view { return view; } - (BOOL) hasChangesPending { return YES; } // // // - (void) initializeFromDefaults { NSUserDefaults *aUserDefaults; NSColor *aColor; aUserDefaults = [NSUserDefaults standardUserDefaults]; // // COLOR_QUOTED_TEXT // [colorQuoteLevelButton setState: [aUserDefaults integerForKey: @"COLOR_QUOTED_TEXT" default: NSOnState]]; // // QUOTE_COLOR_LEVEL_1 // aColor = [aUserDefaults colorForKey: @"QUOTE_COLOR_LEVEL_1"]; aColor = (aColor ? aColor : [NSColor blueColor]); [level1ColorWell setColor: aColor]; // // QUOTE_COLOR_LEVEL_2 // aColor = [aUserDefaults colorForKey: @"QUOTE_COLOR_LEVEL_2"]; aColor = (aColor ? aColor : [NSColor redColor]); [level2ColorWell setColor: aColor]; // // QUOTE_COLOR_LEVEL_3 // aColor = [aUserDefaults colorForKey: @"QUOTE_COLOR_LEVEL_3"]; aColor = (aColor ? aColor : [NSColor greenColor]); [level3ColorWell setColor: aColor]; // // QUOTE_COLOR_LEVEL_4 // aColor = [aUserDefaults colorForKey: @"QUOTE_COLOR_LEVEL_4"]; aColor = (aColor ? aColor : [NSColor cyanColor]); [level4ColorWell setColor: aColor]; // // MAILHEADERCELL_COLOR // aColor = [aUserDefaults colorForKey: @"MAILHEADERCELL_COLOR"]; aColor = (aColor ? aColor : [NSColor colorWithCalibratedRed: 0.9 green: 0.9 blue: 1.0 alpha: 1.0]); [mailHeaderCellColorWell setColor: aColor]; [self colorQuoteLevelButtonClicked: self]; } // // // - (void) saveChanges { NSUserDefaults *aUserDefaults; aUserDefaults = [NSUserDefaults standardUserDefaults]; [aUserDefaults setInteger: [colorQuoteLevelButton state] forKey: @"COLOR_QUOTED_TEXT"]; [aUserDefaults setColor: [level1ColorWell color] forKey: @"QUOTE_COLOR_LEVEL_1"]; [aUserDefaults setColor: [level2ColorWell color] forKey: @"QUOTE_COLOR_LEVEL_2"]; [aUserDefaults setColor: [level3ColorWell color] forKey: @"QUOTE_COLOR_LEVEL_3"]; [aUserDefaults setColor: [level4ColorWell color] forKey: @"QUOTE_COLOR_LEVEL_4"]; [aUserDefaults setColor: [[mailHeaderCellColorWell color] colorUsingColorSpaceName: NSCalibratedRGBColorSpace] forKey: @"MAILHEADERCELL_COLOR"]; // We flush our quote colors cache [NSColor updateCache]; } // // action methods // - (IBAction) colorQuoteLevelButtonClicked: (id) sender { BOOL aBOOL; aBOOL = ([colorQuoteLevelButton state] == NSOnState ? YES : NO); [level1ColorWell setEnabled: aBOOL]; [level2ColorWell setEnabled: aBOOL]; [level3ColorWell setEnabled: aBOOL]; [level4ColorWell setEnabled: aBOOL]; } // // class methods // + (id) singleInstance { if (!singleInstance) { singleInstance = [[ColorsViewController alloc] initWithNibName: @"ColorsView"]; } return singleInstance; } @end GNUMail/Bundles/Colors/GNUmakefile0100644000014600001460000000123610613064242017474 0ustar monotonemonotoneinclude $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Colors BUNDLE_EXTENSION = .prefs BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/GNUMail Colors_RESOURCE_FILES = colors.tiff Colors_OBJC_FILES = \ ColorsView.m \ ColorsViewController.m Colors_HEADERS = \ ColorsView.h \ ColorsViewController.h Colors_PRINCIPAL_CLASS = \ ColorsViewController ADDITIONAL_OBJCFLAGS = -Wall -Wno-import ADDITIONAL_INCLUDE_DIRS += -I../../Framework/GNUMail ADDITIONAL_LIB_DIRS += -L../../Framework/GNUMail/GNUMail.framework/Versions/Current/$(GNUSTEP_TARGET_LDIR) ADDITIONAL_GUI_LIBS += -lGNUMail include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble GNUMail/Bundles/Colors/colors.tiff0100644000014600001460000006704410506157372017616 0ustar monotonemonotoneII*00I0$(12*R>I.0im ' 'Adobe Photoshop 7.02006:09:25 01:03:33 4294967295 256 256 1 72/1 72/1 2 2005-02-14T21:04:06-06:00 2005-02-15T12:43:10-06:00 2005-02-15T12:43:10-06:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:b459bf34-4c61-11db-8c81-d26e35c2cbb3 application/vnd.adobe.photoshop 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:00:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:00:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIMj@@XX,,>>jj8BIM8BIM50000nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM p00TJFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?Tph.q I:s֗8@OX~aaQST?ѩ) #ged!eod-/~w)t o,Fwge?uv>.=>ۻaiC}:FѲ9edDDӿ?a\5q{|?pppiA'\2z}q(??.]8 FSNs2!s8="\qeIv Iaw~b.(!X֖>3c^d}\$(myV<.FV=\i{\_ctWCqĜRW|N-`y L,zz_mƧKv<{=oc,ic:S^Muv9 >($$.48n4zkllllllfty PgfffffeAKCsZq@8avW8p[kgw8', [%[Rf[~B~s  |שvV6lN<C  =B)!)3,MzkgNg~e~fV3.N œÛ ELd^]sÜeX@3@ܰܦtctyjy%!%)49h~T`yNRrgayџ*#?pn_nxg_gAQZyfy`jWY <4<~zQeq_x515[r\s)&)^vYo|)&)Vlxv<7<EV`q<lu424}.9@]8xlp;;͉nloymdmqF!ns vw:;;ⰲ}}~qmq/,/opBBaa PA0?\{{duu788pp\Eab]3|$ ;NNass^C`hhhgSjJWEQ@KLZBHScc.//]]U?`hhhhot  Wgg_E`hhhhi`r  WYhh OBbhhhhhiJ 4fmctt!!! <0_`hhhhhhm`#{ &uy t?hhhhhiiYm z$$U.q^hhhiXr Epui i9bhk|8 -kuy#..(X0uW[r "k)66MZl~rVf,300GNUMail/Bundles/Compose/0040755000014600001460000000000010424710553015572 5ustar monotonemonotoneGNUMail/Bundles/Compose/English.lproj/0040755000014600001460000000000010424672357020321 5ustar monotonemonotoneGNUMail/Bundles/Compose/English.lproj/ComposeView.nib/0040755000014600001460000000000010424672357023330 5ustar monotonemonotoneGNUMail/Bundles/Compose/English.lproj/ComposeView.nib/classes.nib0100644000014600001460000000103310424672357025451 0ustar monotonemonotone{ IBClasses = ( { CLASS = ComposeViewController; LANGUAGE = ObjC; OUTLETS = { defaultCharsetPopUpButton = NSPopUpButton; forwardPopUpButton = NSPopUpButton; lineWrapLimitField = NSTextField; replyPopUpButton = NSPopUpButton; view = id; }; SUPERCLASS = NSObject; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }GNUMail/Bundles/Compose/English.lproj/ComposeView.nib/info.nib0100644000014600001460000000112710424672357024753 0ustar monotonemonotone IBDocumentLocation 14 46 356 240 0 0 1024 746 IBEditorPositions 6 242 342 540 347 0 0 1024 746 IBFramework Version 291.0 IBLockedObjects IBOpenObjects 6 IBSystem Version 6R73 GNUMail/Bundles/Compose/English.lproj/ComposeView.nib/keyedobjects.nib0100644000014600001460000001577710424672357026513 0ustar monotonemonotonebplist00Y$archiverX$versionX$objectsT$top_NSKeyedArchiver (,-348<DKUcno~  !"$'(-.1458;>?ABFGIJMNPQTUZ]^`bcfgijmnpqtu{}~     U$null  !"#$%&']NSFontManagerV$classYNSNextOid_NSVisibleWindowsVNSRoot\NSOidsValues_NSClassesValues]NSConnections]NSNamesValues]NSObjectsKeysZNSOidsKeys]NSClassesKeys[NSFramework[NSNamesKeys_NSObjectsValuesX )*+[NSClassName_ComposeViewController./01Z$classnameX$classes^NSCustomObject02XNSObject_IBCocoaFramework 567ZNS.objects./9:\NSMutableSet9;2UNSSet 5=>4?@ABC EFGHIJWNSLabel]NSDestinationXNSSource LMN)OPQRST_NSNextResponderZNSSubviews[NSExtension[NSFrameSize~ }|{ 5=VWXYZ[\]^_`ab 8<@MQUYaei LdefghiJjklmJVNSCellXNSvFlagsWNSFrameYNSEnabled[NSSuperview _{{17, 131}, {344, 17}} pqrstuvwxyWz{|}_NSBackgroundColorYNSSupport]NSControlView\NSCellFlags2[NSTextColor[NSCellFlagsZNSContents@_2When forwarding an email, add the signature to the VNSSizeVNSNameXNSfFlags"AP\LucidaGrande./VNSFont2 WNSColor]NSCatalogName[NSColorName\NSColorSpaceVSystem\controlColor WNSWhiteI0.666667./2 _controlTextColor B0./_NSTextFieldCelld2\NSActionCell./[NSTextField2\%NSTextFieldYNSControlVNSView[NSResponder LdefghJkmJ7_{{29, 99}, {105, 26}} qrsuyXmym_NSPreferredEdge_NSKeyEquivalent_NSAlternateContents_NSPeriodicDelayZNSMenuItem_NSArrowPosition_NSUsesItemFromMenu_NSAlternateImage]NSButtonFlags]NSAltersState_NSPeriodicIntervalVNSMenu^NSButtonFlags26" #@AK$ YNS.string!P./_NSMutableString2XNSString ]NSMnemonicLoc\NSMixedImage_NSKeyEquivModMaskWNSStateWNSTitleXNSTargetXNSActionZNSKeyEquivYNSOnImage.+%-&' [NSMenuItems50/Ybeginning )^NSResourceName*()WNSImage_NSMenuCheckmark./_NSCustomResource2_%NSCustomResource ),_NSMenuMixedState__popUpItemAction:./2 ZOtherViews 5=1 23Send./ ^NSMutableArray 2WNSArray./ 2./_NSPopUpButtonCelld2^NSMenuItemCell\NSButtonCell]%NSButtonCell./]NSPopUpButton2XNSButton LdefghiJkmJ:9_{{144, 106}, {105, 17}} pqrstuvwxyYz{|;_of the message. LdefghiJk mJ>=_{{144, 178}, {105, 17}} pqrstuvwxyZz{|#? LdefghJ%k&mJBA_{{29, 171}, {105, 26}} qrsu)y[*my+m,ǀCD@E /%0,FG 23IH 5=6*7J 9%:,KL LdefghiJ<k=mJON_{{17, 203}, {338, 17}} pqrstuvwxy\z{|@P_3When replying to an email, add the signature to the LdefghiJCDEmJSR_{{17, 228}, {486, 57}} pqrstuvwxy]z{|HT_In this panel, you can specify where you want GNUMail.app to automatically add your signature when replying to a mail or when forwarding a mail. You can set your signature in the Personal panel. LdefghiJKkLmJWV_{{17, 73}, {90, 17}} pqrstuvwxy^z{|OX]Wrap lines at LdfghiJRSmJ[Z_{{107, 71}, {44, 22}} pqrstVuvwWy_zXmY_NSDrawsBackground\_qA [\^]_textBackgroundColor _B1 a`YtextColor LdefghiJdkemJcb_{{156, 73}, {347, 17}} pqrstuvwxy`z{|hd_,characters when sending plain/text messages. LdefghiJkklmJgf_{{17, 42}, {317, 17}} pqrstuvwxyaz{|oh_,Default charset used when sending a message: LdfghJrsmJkj_{{29, 10}, {261, 26}} qrsuvywbxmymzǀnmolp | rzqr tsUItem1 5=xux rzvwUItem2 rzyzUItem3Z{520, 305}./\NSCustomView2Tview./_NSNibOutletConnector2^NSNibConnector EFGH[_replyPopUpButton EFGHX_forwardPopUpButton EFGH__lineWrapLimitField EFGHb_defaultCharsetPopUpButton 5b\[*aY^Z7`JX,zWx_]./  2 5JJJ,zXJJJJ,JzJ[bJzJJ 5b[\a*^ZY`JX7,zWx_] 5ʀ^NSPopUpButton2]NSTextField13\File's Owner[NSMenuItem2YPopUpList_NSTextField121111_NSTextField1211]NSTextField11^NSTextField111_NSTextField12111[NSMenuItem1TView^NSPopUpButton1^NSTextField121\NSTextField2 57 57 5ݯ?B[b\A,^_*X@`]xWJCazZ7Y 5߯€ÀĀŀU:P=B;LM68Q4ANTS3W2OR79<5./^NSIBObjectData2]IB.objectdata#,5:LQ)7>H[bo  !#%=FQZinw 3EP\hjlnpr{:NXfs (/4IQ_kxz|~ %2;GTakr~(>P[m     1 8 A J w     ) 8 : < > F X a t { " $ ( 1 @ G O X ] f z   < > P m o q 3 5 7 @ B K x z |  .0f (Macen)+Zwy{egikmo"$&,UWY_js#%:KMirt)2egikmoqsuwy{} +7<KZgpy   !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqs|GNUMail/Bundles/Compose/ComposeView.h0100644000014600001460000000242710424672357020216 0ustar monotonemonotone/* ** ComposeView.h ** ** Copyright (c) 2001, 2002, 2003, 2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ComposeView #define _GNUMail_H_ComposeView #import @interface ComposeView : NSView { @public NSPopUpButton *replyPopUpButton; NSPopUpButton *forwardPopUpButton; NSTextField *lineWrapLimitField; NSPopUpButton *defaultCharsetPopUpButton; NSPopUpButton *defaultEncodingPopUpButton; @private id parent; } - (id) initWithParent: (id) theParent; - (void) layoutView; @end #endif // _GNUMail_H_ComposeView GNUMail/Bundles/Compose/ComposeView.m0100644000014600001460000001107610424672357020223 0ustar monotonemonotone/* ** ComposeView.m ** ** Copyright (c) 2001, 2002, 2003, 2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ComposeView.h" #include "Constants.h" #include "LabelWidget.h" // // // @implementation ComposeView - (id) initWithParent: (id) theParent { self = [super init]; parent = theParent; return self; } // // // - (void) dealloc { NSDebugLog(@"ComposeView: -dealloc"); RELEASE(replyPopUpButton); RELEASE(forwardPopUpButton); RELEASE(lineWrapLimitField); RELEASE(defaultCharsetPopUpButton); RELEASE(defaultEncodingPopUpButton); [super dealloc]; } // // // - (void) layoutView { LabelWidget *replyLabel1, *replyLabel2, *forwardLabel1, *forwardLabel2; LabelWidget *label; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,178,430,54) label: _(@"In this panel, you can specify where you want GNUMail to\nautomatically add your signature when replying to a mail or when\nforwarding a mail.")]; [self addSubview: label]; // Our reply information replyLabel1 = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,155,400,TextFieldHeight) label: _(@"When replying to an E-Mail, add the signature to the") ]; [self addSubview: replyLabel1]; replyPopUpButton = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(20,130,120,ButtonHeight)]; [replyPopUpButton setAutoenablesItems: NO]; [replyPopUpButton addItemWithTitle: _(@"beginning")]; [replyPopUpButton addItemWithTitle: _(@"end")]; [self addSubview: replyPopUpButton]; replyLabel2 = [LabelWidget labelWidgetWithFrame: NSMakeRect(145,130,150,TextFieldHeight) label: _(@"of the message.") ]; [self addSubview: replyLabel2]; // Our forward information forwardLabel1 = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,105,400,TextFieldHeight) label: _(@"When forwarding an E-Mail, add the signature to the") ]; [self addSubview: forwardLabel1]; forwardPopUpButton = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(20,80,120,ButtonHeight)]; [forwardPopUpButton setAutoenablesItems: NO]; [forwardPopUpButton addItemWithTitle: _(@"beginning")]; [forwardPopUpButton addItemWithTitle: _(@"end")]; [self addSubview: forwardPopUpButton]; forwardLabel2 = [LabelWidget labelWidgetWithFrame: NSMakeRect(145,80,150,TextFieldHeight) label: _(@"of the message.") ]; [self addSubview: forwardLabel2]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,50,80,TextFieldHeight) label: _(@"Wrap lines at")]; [self addSubview: label]; lineWrapLimitField = [[NSTextField alloc] initWithFrame: NSMakeRect(90,50,40,TextFieldHeight)]; [self addSubview: lineWrapLimitField]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(135,50,295,TextFieldHeight) label: _(@"characters when sending plain/text messages.")]; [self addSubview: label]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,25,350,TextFieldHeight) label: _(@"Default charset used when sending a message:")]; [self addSubview: label]; defaultCharsetPopUpButton = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(20,0,250,ButtonHeight)]; [defaultCharsetPopUpButton setAutoenablesItems: NO]; [defaultCharsetPopUpButton addItemWithTitle: _(@"Automatic")]; [self addSubview: defaultCharsetPopUpButton]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(270,0,70,TextFieldHeight) label: _(@"encoding:") alignment: NSRightTextAlignment]; [self addSubview: label]; defaultEncodingPopUpButton = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(350,0,80,ButtonHeight)]; [defaultEncodingPopUpButton setAutoenablesItems: NO]; // FIXME - move to controller [defaultEncodingPopUpButton addItemWithTitle: _(@"8bit")]; [defaultEncodingPopUpButton addItemWithTitle: _(@"base64")]; [defaultEncodingPopUpButton addItemWithTitle: _(@"quoted-printable")]; [self addSubview: defaultEncodingPopUpButton]; } @end GNUMail/Bundles/Compose/ComposeViewController.h0100644000014600001460000000266310424672357022264 0ustar monotonemonotone/* ** ComposeViewController.h ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ComposeViewController #define _GNUMail_H_ComposeViewController #import #include "PreferencesModule.h" @interface ComposeViewController : NSObject { // Outlets IBOutlet id view; IBOutlet NSPopUpButton *replyPopUpButton; IBOutlet NSPopUpButton *forwardPopUpButton; IBOutlet NSTextField *lineWrapLimitField; IBOutlet NSPopUpButton *defaultCharsetPopUpButton; // Other ivars } @end // // Private interface // @interface ComposeViewController (Private) - (void) _initializeCharsetPopUpButton; @end #endif // _GNUMail_H_ComposeViewController GNUMail/Bundles/Compose/ComposeViewController.m0100644000014600001460000001214010601435445022250 0ustar monotonemonotone/* ** ComposeViewController.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ComposeViewController.h" #include "Constants.h" #include "NSUserDefaults+Extensions.h" #ifndef MACOSX #include "ComposeView.h" #endif #include static ComposeViewController *singleInstance = nil; // // // @implementation ComposeViewController - (id) initWithNibName: (NSString *) theName { self = [super init]; #ifdef MACOSX if (![NSBundle loadNibNamed: theName owner: self] ) { AUTORELEASE(self); return nil; } RETAIN(view); #else // We link our views view = [[ComposeView alloc] initWithParent: self]; [view layoutView]; replyPopUpButton = ((ComposeView *)view)->replyPopUpButton; forwardPopUpButton = ((ComposeView *)view)->forwardPopUpButton; lineWrapLimitField = ((ComposeView *)view)->lineWrapLimitField; defaultCharsetPopUpButton = ((ComposeView *)view)->defaultCharsetPopUpButton; #endif // We add the items in our charset popup button [self _initializeCharsetPopUpButton]; // We get our defaults for this panel [self initializeFromDefaults]; return self; } // // // - (void) dealloc { singleInstance = nil; RELEASE(view); [super dealloc]; } // // access methods // - (NSImage *) image { NSBundle *aBundle; aBundle = [NSBundle bundleForClass: [self class]]; return AUTORELEASE([[NSImage alloc] initWithContentsOfFile: [aBundle pathForResource: @"MailIcon_create" ofType: @"tiff"]]); } // // // - (NSString *) name { return _(@"Compose"); } // // // - (NSView *) view { return view; } // // // - (BOOL) hasChangesPending { return YES; } // // // - (void) initializeFromDefaults { [replyPopUpButton selectItemAtIndex: [[NSUserDefaults standardUserDefaults] integerForKey: @"SIGNATURE_REPLY_POSITION" default: SIGNATURE_END]]; [forwardPopUpButton selectItemAtIndex: [[NSUserDefaults standardUserDefaults] integerForKey: @"SIGNATURE_FORWARD_POSITION" default: SIGNATURE_BEGINNING]]; [lineWrapLimitField setIntValue: [[NSUserDefaults standardUserDefaults] integerForKey: @"LINE_WRAP_LIMIT" default: 72]]; if ([[NSUserDefaults standardUserDefaults] objectForKey: @"DEFAULT_CHARSET"]) { [defaultCharsetPopUpButton selectItemWithTitle: [[CWCharset allCharsets] objectForKey: [[NSUserDefaults standardUserDefaults] objectForKey: @"DEFAULT_CHARSET"]]]; } else { [defaultCharsetPopUpButton selectItemAtIndex: 0]; } } // // // - (void) saveChanges { NSArray *allKeys; int aValue; [replyPopUpButton synchronizeTitleAndSelectedItem]; [forwardPopUpButton synchronizeTitleAndSelectedItem]; // We save the preferences [[NSUserDefaults standardUserDefaults] setInteger: [replyPopUpButton indexOfSelectedItem] forKey: @"SIGNATURE_REPLY_POSITION"]; [[NSUserDefaults standardUserDefaults] setInteger: [forwardPopUpButton indexOfSelectedItem] forKey: @"SIGNATURE_FORWARD_POSITION"]; aValue = [lineWrapLimitField intValue]; if (aValue <= 0 || aValue > 998) { aValue = 998; } [[NSUserDefaults standardUserDefaults] setInteger: aValue forKey: @"LINE_WRAP_LIMIT"]; [defaultCharsetPopUpButton synchronizeTitleAndSelectedItem]; allKeys = [[CWCharset allCharsets] allKeysForObject: [defaultCharsetPopUpButton titleOfSelectedItem]]; if ([allKeys count]) { [[NSUserDefaults standardUserDefaults] setObject: [allKeys objectAtIndex: 0] forKey: @"DEFAULT_CHARSET"]; } else { [[NSUserDefaults standardUserDefaults] setObject: @"Automatic" forKey: @"DEFAULT_CHARSET"]; } } // // class methods // + (id) singleInstance { if (!singleInstance) { singleInstance = [[ComposeViewController alloc] initWithNibName: @"ComposeView"]; } return singleInstance; } @end // // Private implementation // @implementation ComposeViewController (Private) - (void) _initializeCharsetPopUpButton { NSMutableArray *aMutableArray; [defaultCharsetPopUpButton removeAllItems]; aMutableArray = [[NSMutableArray alloc] init]; [aMutableArray addObjectsFromArray: [[CWCharset allCharsets] allValues]]; [aMutableArray sortUsingSelector: @selector(compare:)]; // We always add our "Automatic" item [aMutableArray insertObject: _(@"Automatic") atIndex: 0]; [defaultCharsetPopUpButton addItemsWithTitles: aMutableArray]; RELEASE(aMutableArray); } @end GNUMail/Bundles/Compose/GNUmakefile0100644000014600001460000000127510613064242017643 0ustar monotonemonotoneinclude $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Compose BUNDLE_EXTENSION = .prefs BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/GNUMail Compose_RESOURCE_FILES = MailIcon_create.tiff Compose_OBJC_FILES = \ ComposeView.m \ ComposeViewController.m Compose_HEADERS = \ ComposeView.h \ ComposeViewController.h Compose_PRINCIPAL_CLASS = \ ComposeViewController ADDITIONAL_OBJCFLAGS = -Wall -Wno-import ADDITIONAL_INCLUDE_DIRS += -I../../Framework/GNUMail ADDITIONAL_LIB_DIRS += -L../../Framework/GNUMail/GNUMail.framework/Versions/Current/$(GNUSTEP_TARGET_LDIR) ADDITIONAL_GUI_LIBS += -lGNUMail -lPantomime include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble GNUMail/Bundles/Compose/MailIcon_create.tiff0100644000014600001460000006007410506157372021473 0ustar monotonemonotoneII*00<0$(12*R)>I(hi` ' 'Adobe Photoshop 7.02006:09:25 00:38:17 adobe:docid:photoshop:68d981f6-4c5e-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMQ00create_48.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM L000JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?<oy"&,~sv?5?|Gav JWi'N pRScIau l0<?Vu5;m0;ޥԬ/?gfU>ޘ2BS# g XjH0Z~qo/@Q%5z{ppq 8k`?9STfߴ@GZǐ_m2`),Ge9ev/IxD Fze[*- ēFG[?B MYYV:jp1kX8BIM!UAdobe PhotoshopAdobe Photoshop 7.0 U|||uuummmeeeRRREEEBBB.+++v###c(((r###f(((r%%%k(((r!##g!z< ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef _GNUMail_H_Face #define _GNUMail_H_Face #import @interface Face : NSView { NSImage *image, *stamp; } - (id) initWithResourcePath: (NSString *) theResourcePath; - (void) setImage: (NSImage *) theImage; @end // // This code has been created by Carl Edman // (C) Copyright 1995, but otherwise this file is perfect freeware. // @interface NSImage (XFace) - (NSImage *) initWithXFaceString:(NSString *)xface; - (NSImage *) initWithXFaceString:(NSString *)xface size:(NSSize)s; @end #endif // _GNUMail_H_Face GNUMail/Bundles/Face/Face.m0100644000014600001460000012076610432175455016055 0ustar monotonemonotone/* ** Face.m ** ** Copyright 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "Face.h" #include "NSUserDefaults+Extensions.h" #include "Constants.h" #include //#include @implementation Face // // // - (id) initWithResourcePath: (NSString *) theResourcePath { self = [super init]; stamp = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/stamp.tiff", theResourcePath]]; image = nil; return self; } // // // - (void) dealloc { NSDebugLog(@"Face: -dealloc"); RELEASE(stamp); TEST_RELEASE(image); [super dealloc]; } // // // - (void) setImage: (NSImage *) theImage { if ( theImage ) { RETAIN(theImage); RELEASE(image); image = theImage; } else { NSDebugLog(@"Face: -setImage. attempted to set a nil image."); DESTROY(image); } } // // // - (NSRect) frame { if ( !image ) { return NSZeroRect; } return NSMakeRect(0,0,81,83); } // // Implementation of the inherited method from NSView // - (void) drawRect: (NSRect) theRect { float width, height, ratio; // Safe guard. if ( !image ) { return; } // We draw our stamp [stamp dissolveToPoint: NSMakePoint(theRect.origin.x,theRect.origin.y) fraction: 1.0]; // We scale the image properly before compositing it [image setScalesWhenResized: YES]; // We get the right ratio, based on the maximum size of the width or the heigh width = [image size].width; height = [image size].height; if ( width > height ) { ratio = 60.0/width; width = 60.0; height = height*ratio; } else { ratio = 60.0/height; height = 60.0; width = width*ratio; } [image setSize: NSMakeSize(width,height)]; [image compositeToPoint: NSMakePoint(theRect.origin.x+10,theRect.origin.y-13) operation: NSCompositeSourceOver]; } @end // // This code has been created by Carl Edman // (C) Copyright 1995, but otherwise this file is perfect freeware. // // The Compface has been created by James Ashton - Sydney University - June 1990. // Written 11th November 1989. // // Permission is given to distribute these sources, as long as the // copyright messages are not removed, and no monies are exchanged. // // No responsibility is taken for any errors on inaccuracies inherent // either to the comments or the code of this program, but if reported // to me, then an attempt will be made to fix them. // // This code has been adapted to Cocoa by Dominik Westner // // #define EMBEDDED /* need to know how many bits per hexadecimal digit for io */ #define BITSPERDIG 4 #ifndef EMBEDDED static char HexDigits[]="0123456789ABCDEF"; #endif /* define the face size - 48x48x1 */ #define WIDTH 48 #define HEIGHT WIDTH /* total number of pixels and digits */ #define PIXELS (WIDTH * HEIGHT) #define DIGITS (PIXELS / BITSPERDIG) /* internal face representation - 1 char per pixel is faster */ static char F[PIXELS]; /* output formatting word lengths and line lengths */ #define DIGSPERWORD 4 #define WORDSPERLINE (WIDTH / DIGSPERWORD / BITSPERDIG) /* compressed output uses the full range of printable characters. * in ascii these are in a contiguous block so we just need to know * the first and last. The total number of printables is needed too */ #define FIRSTPRINT '!' #define LASTPRINT '~' #define NUMPRINTS (LASTPRINT - FIRSTPRINT + 1) /* output line length for compressed data */ #define MAXLINELEN 70 /* Portable, very large unsigned integer arithmetic is needed. * Implementation uses arrays of WORDs. COMPs must have at least * twice as many bits as WORDs to handle intermediate results */ #define WORD unsigned char #define COMP unsigned long #define BITSPERWORD 8 #define WORDCARRY (1 << BITSPERWORD) #define WORDMASK (WORDCARRY - 1) #define MAXWORDS ((PIXELS * 2 + BITSPERWORD - 1) / BITSPERWORD) typedef struct bigint { int b_words; WORD b_word[MAXWORDS]; } BigInt; static BigInt B; /* This is the guess the next pixel table. Normally there are 12 neighbour * pixels used to give 1<<12 cases but in the upper left corner lesser * numbers of neighbours are available, leading to 6231 different guesses */ typedef struct guesses { char g_00[1<<12]; char g_01[1<<7]; char g_02[1<<2]; char g_10[1<<9]; char g_20[1<<6]; char g_30[1<<8]; char g_40[1<<10]; char g_11[1<<5]; char g_21[1<<3]; char g_31[1<<5]; char g_41[1<<6]; char g_12[1<<1]; char g_22[1<<0]; char g_32[1<<2]; char g_42[1<<2]; } Guesses; /* data.h was established by sampling over 1000 faces and icons */ static const Guesses G = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, }, { 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, }, { 0, 1, 0, 1, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, }, { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, }, { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, }, { 0, 0, 0, 1, 0, 1, 1, 1, }, { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, }, { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, }, { 0, 1, }, { 0, }, { 0, 0, 0, 1, }, { 0, 0, 0, 1, } }; /* Data of varying probabilities are encoded by a value in the range 0 - 255. * The probability of the data determines the range of possible encodings. * Offset gives the first possible encoding of the range */ typedef struct prob { WORD p_range; WORD p_offset; } Prob; /* A stack of probability values */ static const Prob *ProbBuf[PIXELS * 2]; static int NumProbs=0; /* Each face is encoded using 9 octrees of 16x16 each. Each level of the * trees has varying probabilities of being white, grey or black. * The table below is based on sampling many faces */ #define BLACK 0 #define GREY 1 #define WHITE 2 static const Prob levels[4][3] = { {{ 1, 255}, {251, 0}, { 4, 251}}, /* Top of tree almost always grey */ {{ 1, 255}, {200, 0}, { 55, 200}}, {{ 33, 223}, {159, 0}, { 64, 159}}, {{131, 0}, { 0, 0}, { 125, 131}} /* Grey disallowed at bottom */ }; /* At the bottom of the octree 2x2 elements are considered black if any * pixel is black. The probabilities below give the distribution of the * 16 possible 2x2 patterns. All white is not really a possibility and * has a probability range of zero. Again, experimentally derived data */ static const Prob freqs[16] = { {0, 0}, {38, 0}, {38, 38}, {13, 152}, {38, 76}, {13, 165}, {13, 178}, {6, 230}, {38, 114}, {13, 191}, {13, 204}, {6, 236}, {13, 217}, {6, 242}, {5, 248}, {3, 253} }; /* successful completion */ #define ERR_OK 0 /* completed OK but some input was ignored */ #define ERR_EXCESS 1 /* insufficient input. Bad face format? */ #define ERR_INSUFF -1 /* Arithmetic overflow or buffer overflow */ #define ERR_INTERNAL -2 #define GEN(g) F[h] ^= G.g[k]; break static jmp_buf comp_env; #ifndef EMBEDDED static int status; #endif static int AllBlack(char *, int, int); static int AllWhite(char *, int, int); static int BigPop(const Prob *); static int Same(char *, int, int); static void BigAdd(unsigned char); static void BigClear(void); static void BigDiv(unsigned char, unsigned char *); static void BigMul(unsigned char); static void BigRead(const char *); static void Compress(char *, int, int, int); static void Gen(char *); static void PopGreys(char *, int, int); static void PushGreys(char *, int, int); static void RevPush(const Prob *); static void UnCompAll(const char *); static void UnCompress(char *, int, int, int); static void UnGenFace(void); #ifndef EMBEDDED static void BigPrint(void); static void BigSub(unsigned char); static void ReadFace(char *); static void WriteFace(char *); #endif static void RevPush(const Prob *p) { if (NumProbs >= PIXELS * 2 - 1) longjmp(comp_env, ERR_INTERNAL); ProbBuf[NumProbs++] = p; } static int BigPop(const Prob *p) { static WORD tmp; int i; BigDiv(0, &tmp); i = 0; while ((tmp < p->p_offset) || (tmp >= p->p_range + p->p_offset)) { p++; i++; } BigMul(p->p_range); BigAdd(tmp - p->p_offset); return i; } #ifndef EMBEDDED /* Print a BigInt in HexaDecimal */ static void BigPrint(void) { int i, c, count; WORD *w; count = 0; w = B.b_word + (i = B.b_words); while (i--) { w--; c = *((*w >> 4) + HexDigits); putc(c, stderr); c = *((*w & 0xf) + HexDigits); putc(c, stderr); if (++count >= 36) { putc('\\', stderr); putc('\n', stderr); count = 0; } } putc('\n', stderr); } #endif /* Divide B by a storing the result in B and the remainder in the word * pointer to by r */ static void BigDiv(WORD a, WORD *r) { int i; WORD *w; COMP c, d; a &= WORDMASK; if ((a == 1) || (B.b_words == 0)) { *r = 0; return; } if (a == 0) /* treat this as a == WORDCARRY */ { /* and just shift everything right a WORD */ i = --B.b_words; w = B.b_word; *r = *w; while (i--) { *w = *(w + 1); w++; } *w = 0; return; } w = B.b_word + (i = B.b_words); c = 0; while (i--) { c <<= BITSPERWORD; c += (COMP)*--w; d = c / (COMP)a; c = c % (COMP)a; *w = (WORD)(d & WORDMASK); } *r = c; if (B.b_word[B.b_words - 1] == 0) B.b_words--; } /* Multiply a by B storing the result in B */ static void BigMul(WORD a) { int i; WORD *w; COMP c; a &= WORDMASK; if ((a == 1) || (B.b_words == 0)) return; if (a == 0) /* treat this as a == WORDCARRY */ { /* and just shift everything left a WORD */ if ((i = B.b_words++) >= MAXWORDS - 1) longjmp(comp_env, ERR_INTERNAL); w = B.b_word + i; while (i--) { *w = *(w - 1); w--; } *w = 0; return; } i = B.b_words; w = B.b_word; c = 0; while (i--) { c += (COMP)*w * (COMP)a; *(w++) = (WORD)(c & WORDMASK); c >>= BITSPERWORD; } if (c) { if (B.b_words++ >= MAXWORDS) longjmp(comp_env, ERR_INTERNAL); *w = (COMP)(c & WORDMASK); } } #ifndef EMBEDDED /* Subtract a from B storing the result in B */ static void BigSub(WORD a) { int i; WORD *w; COMP c; a &= WORDMASK; if (a == 0) return; i = 1; w = B.b_word; c = (COMP)*w - (COMP)a; *w = (WORD)(c & WORDMASK); while (c & WORDCARRY) { if (i >= B.b_words) longjmp(comp_env, ERR_INTERNAL); c = (COMP)*++w - 1; *w = (WORD)(c & WORDMASK); i++; } if ((i == B.b_words) && (*w == 0) && (i > 0)) B.b_words--; } #endif /* Add to a to B storing the result in B */ static void BigAdd(WORD a) { int i; WORD *w; COMP c; a &= WORDMASK; if (a == 0) return; i = 0; w = B.b_word; c = a; while ((i < B.b_words) && c) { c += (COMP)*w; *w++ = (WORD)(c & WORDMASK); c >>= BITSPERWORD; i++; } if ((i == B.b_words) && c) { if (B.b_words++ >= MAXWORDS) longjmp(comp_env, ERR_INTERNAL); *w = (COMP)(c & WORDMASK); } } static void BigClear(void) { B.b_words = 0; } static int Same(char *f, int wid, int hei) { char val, *row; int x; val = *f; while (hei--) { row = f; x = wid; while (x--) if (*(row++) != val) return(0); f += WIDTH; } return 1; } static int AllBlack(char *f, int wid, int hei) { if (wid > 3) { wid /= 2; hei /= 2; return (AllBlack(f, wid, hei) && AllBlack(f + wid, wid, hei) && AllBlack(f + WIDTH * hei, wid, hei) && AllBlack(f + WIDTH * hei + wid, wid, hei)); } else return (*f || *(f + 1) || *(f + WIDTH) || *(f + WIDTH + 1)); } static int AllWhite(char *f, int wid, int hei) { return ((*f == 0) && Same(f, wid, hei)); } static void PopGreys(char *f, int wid, int hei) { if (wid > 3) { wid /= 2; hei /= 2; PopGreys(f, wid, hei); PopGreys(f + wid, wid, hei); PopGreys(f + WIDTH * hei, wid, hei); PopGreys(f + WIDTH * hei + wid, wid, hei); } else { wid = BigPop(freqs); if (wid & 1) *f = 1; if (wid & 2) *(f + 1) = 1; if (wid & 4) *(f + WIDTH) = 1; if (wid & 8) *(f + WIDTH + 1) = 1; } } static void PushGreys(char *f, int wid, int hei) { if (wid > 3) { wid /= 2; hei /= 2; PushGreys(f, wid, hei); PushGreys(f + wid, wid, hei); PushGreys(f + WIDTH * hei, wid, hei); PushGreys(f + WIDTH * hei + wid, wid, hei); } else RevPush(freqs + *f + 2 * *(f + 1) + 4 * *(f + WIDTH) + 8 * *(f + WIDTH + 1)); } static void UnCompress(char *f, int wid, int hei, int lev) { switch (BigPop(&levels[lev][0])) { case WHITE : return; case BLACK : PopGreys(f, wid, hei); return; default : wid /= 2; hei /= 2; lev++; UnCompress(f, wid, hei, lev); UnCompress(f + wid, wid, hei, lev); UnCompress(f + hei * WIDTH, wid, hei, lev); UnCompress(f + wid + hei * WIDTH, wid, hei, lev); return; } } static void Compress(char *f, int wid, int hei, int lev) { if (AllWhite(f, wid, hei)) { RevPush(&levels[lev][WHITE]); return; } if (AllBlack(f, wid, hei)) { RevPush(&levels[lev][BLACK]); PushGreys(f, wid, hei); return; } RevPush(&levels[lev][GREY]); wid /= 2; hei /= 2; lev++; Compress(f, wid, hei, lev); Compress(f + wid, wid, hei, lev); Compress(f + hei * WIDTH, wid, hei, lev); Compress(f + wid + hei * WIDTH, wid, hei, lev); } static void UnCompAll(const char *fbuf) { char *p; BigClear(); BigRead(fbuf); p = F; while (p < F + PIXELS) *(p++) = 0; UnCompress(F, 16, 16, 0); UnCompress(F + 16, 16, 16, 0); UnCompress(F + 32, 16, 16, 0); UnCompress(F + WIDTH * 16, 16, 16, 0); UnCompress(F + WIDTH * 16 + 16, 16, 16, 0); UnCompress(F + WIDTH * 16 + 32, 16, 16, 0); UnCompress(F + WIDTH * 32, 16, 16, 0); UnCompress(F + WIDTH * 32 + 16, 16, 16, 0); UnCompress(F + WIDTH * 32 + 32, 16, 16, 0); } static void BigRead(const char *fbuf) { int c; while ((c=*fbuf++) != '\0') { if ((c < FIRSTPRINT) || (c > LASTPRINT)) continue; BigMul(NUMPRINTS); BigAdd((WORD)(c - FIRSTPRINT)); } } #ifndef EMBEDDED static void ReadFace(char *fbuf) { int c, i; char *s, *t; t = s = fbuf; for(i = strlen(s); i > 0; i--) { c = (int)*(s++); if ((c >= '0') && (c <= '9')) { if (t >= fbuf + DIGITS) { status = ERR_EXCESS; break; } *(t++) = c - '0'; } else if ((c >= 'A') && (c <= 'F')) { if (t >= fbuf + DIGITS) { status = ERR_EXCESS; break; } *(t++) = c - 'A' + 10; } else if ((c >= 'a') && (c <= 'f')) { if (t >= fbuf + DIGITS) { status = ERR_EXCESS; break; } *(t++) = c - 'a' + 10; } else if (((c == 'x') || (c == 'X')) && (t > fbuf) && (*(t-1) == 0)) t--; } if (t < fbuf + DIGITS) longjmp(comp_env, ERR_INSUFF); s = fbuf; t = F; c = 1 << (BITSPERDIG - 1); while (t < F + PIXELS) { *(t++) = (*s & c) ? 1 : 0; if ((c >>= 1) == 0) { s++; c = 1 << (BITSPERDIG - 1); } } } static void WriteFace(char *fbuf) { char *s, *t; int i, bits, digits, words; s = F; t = fbuf; bits = digits = words = i = 0; while (s < F + PIXELS) { if ((bits == 0) && (digits == 0)) { *(t++) = '0'; *(t++) = 'x'; } if (*(s++)) i = i * 2 + 1; else i *= 2; if (++bits == BITSPERDIG) { *(t++) = *(i + HexDigits); bits = i = 0; if (++digits == DIGSPERWORD) { *(t++) = ','; digits = 0; if (++words == WORDSPERLINE) { *(t++) = '\n'; words = 0; } } } } *(t++) = '\0'; } #endif static void Gen(char *f) { int m, l, k, j, i, h; for (j = 0; j < HEIGHT; j++) { for (i = 0; i < WIDTH; i++) { h = i + j * WIDTH; k = 0; for (l = i - 2; l <= i + 2; l++) for (m = j - 2; m <= j; m++) { if ((l >= i) && (m == j)) continue; if ((l > 0) && (l <= WIDTH) && (m > 0)) k = *(f + l + m * WIDTH) ? k * 2 + 1 : k * 2; } switch (i) { case 1 : switch (j) { case 1 : GEN(g_22); case 2 : GEN(g_21); default : GEN(g_20); } break; case 2 : switch (j) { case 1 : GEN(g_12); case 2 : GEN(g_11); default : GEN(g_10); } break; case WIDTH - 1 : switch (j) { case 1 : GEN(g_42); case 2 : GEN(g_41); default : GEN(g_40); } break; case WIDTH : switch (j) { case 1 : GEN(g_32); case 2 : GEN(g_31); default : GEN(g_30); } break; default : switch (j) { case 1 : GEN(g_02); case 2 : GEN(g_01); default : GEN(g_00); } break; } } } } static void UnGenFace(void) { Gen(F); } @implementation NSImage(XFace) - (NSImage *) initWithXFaceString:(NSString *)xfaceString size:(NSSize)size { int x,y,avg; int basex,basey; unsigned char *data; id bitrep; const char *face; [self initWithSize:size]; switch (setjmp(comp_env)) { case ERR_INSUFF: /* insufficient input. Bad face format? */ NSLog(@"Insufficient input decoding X face."); return nil; case ERR_INTERNAL: /* Arithmetic overflow or buffer overflow */ NSLog(@"Internal error in decoding X face."); return nil; case ERR_EXCESS: /* completed OK but some input was ignored */ NSLog(@"Excessive data in X face string ignored."); case ERR_OK: /* successful completion */ default: break; } if(![xfaceString length]) { NSLog(@"Cannot create NSImage from empty xFace String"); return nil; } face = [xfaceString cString]; UnCompAll(face); UnGenFace(); bitrep=[[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL pixelsWide:size.width pixelsHigh:size.height bitsPerSample:1 samplesPerPixel:1 hasAlpha:NO isPlanar:YES colorSpaceName:NSDeviceWhiteColorSpace bytesPerRow:0 bitsPerPixel:0]; data=[bitrep bitmapData]; basex=(size.width-WIDTH)/2; basey=(size.height-HEIGHT)/2; /* This double counts the corners, but that is ok, right ? In a heuristic anyway */ avg=0; for(x=0;x (WIDTH+HEIGHT)); for(y=0;y=basex) && (x=basey) && (y ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_FaceController #define _GNUMail_H_FaceController #import #include "GNUMailBundle.h" #include "PreferencesModule.h" @interface FaceController : NSObject { // ivars id owner; NSMutableArray *allFaceViews; NSString *resourcePath; NSView *superview; NSMutableDictionary *cache; } @end #endif // _GNUMail_H_FaceController GNUMail/Bundles/Face/FaceController.m0100644000014600001460000002041010424672357020106 0ustar monotonemonotone/* ** FaceController.m ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "FaceController.h" #include "Constants.h" #include "Face.h" #include "GNUMail.h" #include "MailHeaderCell.h" #include "MailWindowController.h" #include static FaceController *singleInstance = nil; // // Rationale: // // The behavior of the cache is relatively simple. The key is always a NSString // holding the value of the URL. The value to which the key points to can be // either a NSImage or a (NSURL, NSURLHandle) pair. // // When it's a (NSURL, NSURLHandle) pair, the image is being loaded from the website where // the X-Image-URL resides and we must wait for completion (success or a failure) // before showing the image. // // If it's a NSImage, the image was sucessfully transferred from the website and // it is ready to be shown in the cell. // // In case of load failure, we simply discard the NSString key/value from the cache. // // // // @implementation FaceController - (id) initWithOwner: (id) theOwner { NSBundle *aBundle; self = [super init]; owner = theOwner; aBundle = [NSBundle bundleForClass: [self class]]; resourcePath = [aBundle resourcePath]; RETAIN(resourcePath); allFaceViews = [[NSMutableArray alloc] init]; cache = [[NSMutableDictionary alloc] init]; return self; } // // // - (void) dealloc { NSDebugLog(@"FaceController: -dealloc"); RELEASE(resourcePath); RELEASE(allFaceViews); RELEASE(cache); [super dealloc]; } // // // + (id) singleInstance { NSDebugLog(@"FaceController: -singleInstance"); if (!singleInstance) { singleInstance = [[FaceController alloc] initWithOwner: nil]; } return singleInstance; } // // access / mutation methods // - (NSString *) name { return @"Face"; } - (NSString *) description { return @"This is a simple Face bundle supporting X-Face and X-Image-URL."; } - (NSString *) version { return @"v0.3.0"; } - (void) setOwner: (id) theOwner { owner = theOwner; } // // UI elements // - (BOOL) hasPreferencesPanel { return NO; } - (BOOL) hasComposeViewAccessory { return NO; } - (BOOL) hasViewingViewAccessory { return YES; } // // // - (id) viewingViewAccessory { Face *aFace; aFace = [[Face alloc] initWithResourcePath: resourcePath]; [allFaceViews addObject: aFace]; return AUTORELEASE(aFace); } // // // - (enum ViewingViewType) viewingViewAccessoryType { return ViewingViewTypeHeaderCell; } // // // - (void) viewingViewAccessoryWillBeRemovedFromSuperview: (id) theView { if (!theView) { return; } else { Face *aFace; int i; for (i = 0; i < [allFaceViews count]; i++) { aFace = [allFaceViews objectAtIndex: i]; if ( [theView containsView: aFace] ) { [allFaceViews removeObject: aFace]; break; } } } } // // // - (void) setCurrentSuperview: (NSView *) theView { superview = theView; } // // // - (NSArray *) submenuForMenu: (NSMenu *) theMenu { return nil; } // // // - (NSArray *) menuItemsForMenu: (NSMenu *) theMenu { return nil; } - (Face *) faceFromTextView: (id) theTextView { Face *aFace; int i; aFace = nil; // First, we find the face associated to the textview for (i = 0; i < [allFaceViews count]; i++) { aFace = [allFaceViews objectAtIndex: i]; // Warning: the textview's delegate MUST be the windowController so // the Face is correctly displayed. if ([[[theTextView delegate] mailHeaderCell] containsView: aFace]) { break; } } return aFace; } // // Pantomime related methods // - (void) messageWillBeDisplayed: (CWMessage *) theMessage inView: (NSTextView *) theTextView { NSEnumerator *theEnumerator; NSString *aKey; Face *aFace; BOOL hasFoundHeader; hasFoundHeader = NO; aFace = [self faceFromTextView: theTextView]; if (!aFace) return; // We verify if our header is present. theEnumerator = [[theMessage allHeaders] keyEnumerator]; while ((aKey = [theEnumerator nextObject])) { if ([aKey caseInsensitiveCompare: @"X-Image-URL"] == NSOrderedSame || [aKey caseInsensitiveCompare: @"X-Face"] == NSOrderedSame) { hasFoundHeader = YES; break; } } if (hasFoundHeader) { NSString *aString; aString = [theMessage headerValueForName: aKey]; // We search for X-Image-URL / X-Face if (aString) { id o; // We verify if the image is in our cache. If not, we create it and add it to our cache. o = [cache objectForKey: aString]; if (!o) { // If it's an X-URL-Image if ([aKey caseInsensitiveCompare: @"X-Image-URL"] == NSOrderedSame) { NSURLHandle *aHandle; NSURL *aURL; aURL = [NSURL URLWithString: aString]; aHandle = [aURL URLHandleUsingCache: NO]; [aHandle addClient: self]; [aHandle loadInBackground]; o = [[NSArray alloc] initWithObjects: aURL, aHandle, nil]; } else { o = [[NSImage alloc] initWithXFaceString: aString]; } if (o) { [cache setObject: o forKey: aString]; RELEASE(o); } } if ([o isKindOfClass: [NSArray class]]) { [aFace setImage: nil]; } else { [aFace setImage: o]; } } } else { [aFace setImage: nil]; } [aFace setNeedsDisplay: YES]; } // // // - (NSString *) XImageURLFromHandle: (NSURLHandle *) theHandle { NSArray *allKeys; NSString *aKey; id o; int i, count; allKeys = [cache allKeys]; count = [allKeys count]; for (i = 0; i < count; i++) { aKey = [allKeys objectAtIndex: i]; o = [cache objectForKey: aKey]; if ([o isKindOfClass: [NSArray class]]) { if ([o lastObject] == theHandle) return aKey; } } return nil; } // // // - (void) URLHandleResourceDidBeginLoading: (NSURLHandle *) sender { // We do nothing here for now } - (void) URLHandleResourceDidCancelLoading: (NSURLHandle *) sender { // We do nothing here for now } - (void) URLHandle: (NSURLHandle *) sender resourceDataDidBecomeAvailable: (NSData *) newBytes { // We do nothing here for now } - (void) URLHandle: (NSURLHandle *) sender resourceDidFailLoadingWithReason: (NSString *) reason { // We remove the cache entry [cache removeObjectForKey: [self XImageURLFromHandle: sender]]; } - (void) URLHandleResourceDidFinishLoading: (NSURLHandle *) sender { NSString *aKey; NSData *aData; aKey = [self XImageURLFromHandle: sender]; aData = [sender resourceData]; if (!aData) { [cache removeObjectForKey: aKey]; } else { NSArray *allWindows; CWMessage *aMessage; NSImage *aImage; Face *aFace; id aController; int i, count; aImage = [[NSImage alloc] initWithData: aData]; if (!aImage) { [cache removeObjectForKey: aKey]; return; } [cache setObject: aImage forKey: aKey]; RELEASE(aImage); // We now check if we must refresh our MailHeaderCells! allWindows = [GNUMail allMailWindows]; count = [allWindows count]; for (i = 0; i < count; i++) { aController = [[allWindows objectAtIndex: i] windowController]; aMessage = [aController selectedMessage]; if ([[aMessage headerValueForName: @"X-Image-URL"] isEqualToString: aKey]) { // We now find which Face is associated with that specific textView. aFace = [self faceFromTextView: [aController textView]]; [aFace setImage: aImage]; [[aController textView] setNeedsDisplay: YES]; } } } } @end GNUMail/Bundles/Face/GNUmakefile0100644000014600001460000000117710613064242017075 0ustar monotonemonotoneinclude $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Face BUNDLE_EXTENSION = .bundle BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/GNUMail Face_RESOURCE_FILES = *.tiff Face_OBJC_FILES = \ Face.m \ FaceController.m Face_HEADERS = \ Face.h \ FaceController.h Face_PRINCIPAL_CLASS = \ FaceController ADDITIONAL_OBJCFLAGS = -Wall -Wno-import ADDITIONAL_INCLUDE_DIRS += -I../../Framework/GNUMail ADDITIONAL_LIB_DIRS += -L../../Framework/GNUMail/GNUMail.framework/Versions/Current/$(GNUSTEP_TARGET_LDIR) ADDITIONAL_GUI_LIBS += -lGNUMail -lPantomime include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble GNUMail/Bundles/Face/stamp.tiff0100644000014600001460000006504010424672357017034 0ustar monotonemonotoneII*i      " ''"$(&!#&$"%(&"'*&#),'$,-%$)*%$+*%& --%)/.&* 2-&- 3,&- 0+%- .$ ,VVVpppLJkklcccR [ggg J222pyyyVVVF;;;q~~~PPP HLLLKKK NZZZ@@@Slll>>>V---r"""cyyy'''k%%%d)))m888zϑbOOOمcZZZ|||!!!jqqqnnn###jeee&&&e˺PPP6&  rrrӢ˯Ž򠠠젠槧㵵޻211z2*" =<;A7,"  wvwrqp iPD6)  ! !Xfddr]O>/#  333iYG5' .-.saL:+  ZZ[ljkygQ=-  %$%e~kT@/  EDEmVA0   322oWB1   323lXVVpXC1!  ))*kpYC2!  JIJqYD2!   /..qYD2!  ../p][[rZD2!  %%&a&&&rZE2!  \Z\s[E2!  wvy-,,s[F3"  Wcbbs[F3" 101h755s\F3" ||~hggs\G4" ffg"!!t\G4#  Lpnmt]G4# :::~PPPt]G4# tttiggt]G4#MMLu]G5# Nussu]G5#BBBTTTu]G5#~[YZu]G5#IIHu]G5# :u]G5#FFGza``u]G5#wwwpppu]G5#445o u]G5#Bu]G5#PPPqppu]G5#lll`__v]H5#***k v^H6$ Hv^H6$VVWv^H6$ddeaaav^I6$U w_I6$L776w_I6$QQQw`J7%UUV\[[w`J7%Gw`J7%IQPPx`K8%TUUxaK8%IIHMMMxaK8% @ xaK8&!! UeddxaK8&bbbxaK8&FFEu<;;xaK8&6{{zyaK8&...fwwvyaK8&bbaxaK8&<=5+"  $+3:>BEGGGHHHHHHHHGGGGGGGFFFEEEEEEEEEEEEDDDDDCCCCCCCCCBBBBA@?<94/(!   &+/135555666555555544444333222222222222222222111111000000/.,*&"   ""############""""""!!!!!      QSi ij@jjj(R/root/stamp.tiffQQ HHGNUMail/Bundles/Filtering/0040755000014600001460000000000010424710553016110 5ustar monotonemonotoneGNUMail/Bundles/Filtering/English.lproj/0040755000014600001460000000000010424672357020637 5ustar monotonemonotoneGNUMail/Bundles/Filtering/English.lproj/FilterEditorWindow.nib/0040755000014600001460000000000010424672357025172 5ustar monotonemonotoneGNUMail/Bundles/Filtering/English.lproj/FilterEditorWindow.nib/classes.nib0100644000014600001460000000437410606120765027317 0ustar monotonemonotone{ IBClasses = ( { ACTIONS = { cancelClicked = id; chooseFileButtonClicked = id; criteriaFindOperationSelectionHasChanged = id; criteriaSourceSelectionHasChanged = id; okClicked = id; setMessage = id; }; CLASS = FilterEditorWindowController; LANGUAGE = ObjC; OUTLETS = { actionColorWell = NSColorWell; actionEMailStringButton = NSButton; actionEMailStringField = NSTextField; actionEMailStringPopUpButton = NSPopUpButton; actionFolderNamePopUpButton = NSPopUpButton; activeButton = NSButton; chooseFileButton = NSButton; criteriaBox = NSBox; criteriaConditionPopUpButtonB = NSPopUpButton; criteriaConditionPopUpButtonC = NSPopUpButton; criteriaFindOperationPopUpButtonA = NSPopUpButton; criteriaFindOperationPopUpButtonB = NSPopUpButton; criteriaFindOperationPopUpButtonC = NSPopUpButton; criteriaPopUpButtonA = NSPopUpButton; criteriaPopUpButtonB = NSPopUpButton; criteriaPopUpButtonC = NSPopUpButton; criteriaSourcePopUpButtonA = NSPopUpButton; criteriaSourcePopUpButtonB = NSPopUpButton; criteriaSourcePopUpButtonC = NSPopUpButton; criteriaStringFieldA = NSTextField; criteriaStringFieldB = NSTextField; criteriaStringFieldC = NSTextField; descriptionField = NSTextField; externalProgramButton = NSButton; externalProgramField = NSTextField; externalProgramPopUpButton = NSPopUpButton; filterTypeMatrix = NSMatrix; matrix = NSMatrix; pathToSoundField = NSTextField; }; SUPERCLASS = NSWindowController; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, {CLASS = FolderNodePopUpItem; LANGUAGE = ObjC; SUPERCLASS = NSMenuItem; } ); IBVersion = 1; }GNUMail/Bundles/Filtering/English.lproj/FilterEditorWindow.nib/info.nib0100644000014600001460000000075410606120765026613 0ustar monotonemonotone IBDocumentLocation 649 293 356 240 0 0 1280 1002 IBFramework Version 446.1 IBLockedObjects IBOpenObjects 5 IBSystem Version 8P135 GNUMail/Bundles/Filtering/English.lproj/FilterEditorWindow.nib/objects.nib0100644000014600001460000003556110606120765027315 0ustar monotonemonotone typedstream@NSIBObjectDataNSObjectNSCustomObject)@@NSString+FilterEditorWindowControllerie NSMenuItemNSMenu̔i@@@ OtherViewsNSMutableArrayNSArray i@@IIi@@@@:i@ToNSCustomResource)NSImageNSMenuCheckmarkNSMenuMixedState_popUpItemAction:NSPopUpButtonCell1NSMenuItemCell҄ NSButtonCell? NSActionCellNSCellAiiA@@@@@NSFont$[36c]LucidaGrandef ci: NSPopUpButton̄NSButton NSControl)NSView) NSResponderNSBox* @@@@ffffffff NSTextFieldUUicc@NSTextFieldCell>@ Description:c@@NSColor@@@System controlColorìff?*ìĄcontrolTextColorì: kqA@ʸìĄtextBackgroundColorììĄ textColorɆ*??Activeф ssii@@@@@Hٙ ْ#iiii:::ffffi@@@@@D( Set color to:Hooo曛rrr V`r'''n###  _uCRRRgggQ ,3M"""U  *Y;;;xxxڦ뫫EEE `/*QswV/ 4HTUK7!    RSΰRadioKH8Q6?A 0AProcess with external program:CHqA@oφ HHA@qK@ޘޘޘ OtherViewsuvorrandr=v HHA@|K@ޘޘޘ OtherViewsor}and}=WZZA@K@ޘ OtherViewsToCcTo or CcSubjectFrom Expert...(none)=WZZA@K@ޘ OtherViewsToCcTo or CcSubjectFrom Expert...(none)=A@K@ޘޘޘ OtherViewsIs Equal Has Prefix Has SuffixMatch ExpressionContains=A@K@ޘޘޘ OtherViewsĒşIs Equalş Has Prefixş Has SuffixşMatch ExpressionContains=Q qA@ѸφQqA@ӸφOTOTW:ZZK@ޘ=CcTo or CcSubjectFrom Expert...^ٖ떄NSWindowTemplate iiffffi@@@@@c1Ɓ{ 0x Add a filterNSPanelޘViewX,ȁŖ ٖѻזhcۖ1CAѸٖٖʁŖvqc^jcuvbcHAٖٖٖߖ́Ŗʻlc64|yvqӸPKڛOP΁Ŗ|4׻FAٖA?Ł떁āŖ؛(ܛ o94fc?֛SPKA^ NSMenuItem5 NSMenuItem2NSButton NSMenuItem3߄Panel NSMenuItem1, NSButton1 NSMenuItem1^NSPopUpButton1NSPopUpButton11Ȅ NSMenuItem1 NSMenuItem3 NSMatrix1ф NSButton4لNSViewh NSMenuItem2 PopUpList℘ PopUpList NSMenuItem6ᄘ NSMenuItem21 NSTextField21C NSButton4NSViewф NSTextField1 NSMenuItem4 NSMenuItem22󄘘 NSTextFieldʄ NSMenuItem2 NSPopUpButton NSMenuItem4v PopUpListc PopUpListNSPopUpButton3 NSMenuItemj NSMenuItem3u NSMenuItemb NSMenuItemH NSTextField2 NSMenuItemۄ NSPopUpButton NSMenuItem5 NSTextField1 NSMenuItem3 NSButton1 NSMenuItem6 NSMenuItem5̄ NSMenuItem3ʄ NSTextFieldl NSMenuItem4|NSPopUpButton21y NSMenuItem1 PopUpListqNSPopUpButton2 PopUpListӄ NSTextField2 NSMenuItem4P PopUpList NSMenuItem1ڄ NSMenuItem3 File's Owner PopUpList NSMenuItemO NSMenuItem΄ NSMenuItem4 PopUpList4 NSMatrix1ׄNSBox1 NSMenuItemNSPopUpButton12 NSMenuItem넘 PopUpListF NSTextField愘NSPopUpButton2ANSViewń PopUpList NSMenuItem1Ą NSMenuItem(NSButtonNSBox؄ NSMenuItem2 NSMenuItem1܄ NSMenuItem4 NSMenuItem2o NSTextField NSMenuItem2ꄘ NSMenuItemf NSMenuItem1?NSBox2NSPopUpButton4ք NSMenuItem1 NSTextField2S NSMenuItem1K NSPopUpButton (NSNibOutletConnectorτNSNibConnector߄windowEʄdescriptionFieldEф activeButtonEۄactionFolderNamePopUpButtonE󄘘actionEMailStringFieldE愘actionEMailStringPopUpButtonNSNibControlConnectorρF setMessage:S,cancelClicked:S( okClicked:EmatrixS"criteriaSourceSelectionHasChanged:EߕdelegateEactionEMailStringButtonE4filterTypeMatrixECexternalProgramButtonEFexternalProgramFieldEKexternalProgramPopUpButtonEqcriteriaConditionPopUpButtonBE|criteriaConditionPopUpButtonCE^!criteriaFindOperationPopUpButtonAE!criteriaFindOperationPopUpButtonBE!criteriaFindOperationPopUpButtonCEcriteriaSourcePopUpButtonAEcriteriaSourcePopUpButtonBEcriteriaSourcePopUpButtonCEocriteriaStringFieldAEфcriteriaStringFieldBEӄcriteriaStringFieldCS"criteriaSourceSelectionHasChanged:S"criteriaSourceSelectionHasChanged:NSIBHelpConnector4NSToolTipHelpKeycSelect if the filter is used when receiving messages (Incoming) or when sending messages (Outgoing)FNSToolTipHelpKeyցցcցiցց{ցYFցoցIBCocoaFrameworkGNUMail/Bundles/Filtering/English.lproj/FilterEditorWindow.nib/keyedobjects.nib0100644000014600001460000007336410606120765030342 0ustar monotonemonotonebplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver ]IB.objectdata 156<=AEpx 189>?@DHIJLMV_I`iIjsIt}I~IIIIII "#&)-45@BDMQIRTYbIcjkvxzQIbIIL8I_IiIsI}IIIL(8I1_I:iICsIL}IUI^efqsu~IIIIIIIIII  "#%&'./347:BCKLQRUZ[cdltuII II (01:;?BCE`aituyzy} &#$&-.678?@HIKMTU\]lmrz{} I"I#$&%+,./01256:?@EFKLQRWX]^afglmrsxy~xx  #() Z    +   + +  9 +  k                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u vR w x y z { | } ~  U$null  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRoot opnq 234[NSClassName_FilterEditorWindowController789:X$classesZ$classname:;^NSCustomObjectXNSObject_IBCocoaFramework>?@ZNS.objects78BCCD;\NSMutableSetUNSSet>Fo(GHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn āǁɁˁ́ρсӁՁׁفہ݁߁ ;qrstuv0]NSDestinationWNSLabelXNSSource yz{|}~_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass 0x_{{49, 198}, {635, 521}}\Add a filterWNSPanelYNS.stringTView78;_NSMutableStringXNSString.ZNSSubviews_NSNextResponderWNSFrame>o nsy};[NSSuperview\NSBorderType_NSTitlePosition[NSTitleCellYNSOffsetsXNSvFlags]NSTransparent]NSContentViewYNSBoxType >oÀ;>o܀?Vcq΀;YNSEnabledVNSCell >_{{87, 58}, {90, 26}} _NSAlternateImage[NSCellFlags^NSButtonFlags2]NSButtonFlagsVNSMenuZNSMenuItem_NSAlternateContents_NSPreferredEdge_NSPeriodicDelay\NSCellFlags2]NSAltersState]NSControlView_NSKeyEquivalentYNSSupport_NSUsesItemFromMenu_NSPeriodicInterval_NSArrowPositionA@@ =  K   VNSSizeVNSNameXNSfFlags"AP\LucidaGrande78;VNSFont   P !"#$%&()*+./0]NSMnemonicLoc_NSKeyEquivModMaskWNSStateWNSTitleYNSOnImageZNSKeyEquivXNSTarget\NSMixedImageXNSAction !"&)(!23467^NSNoAutoenable[NSMenuItems* <+RTo:2;<=^NSResourceName$%#WNSImage_NSMenuCheckmark78ABBC;_NSCustomResource_%NSCustomResource:2E<='%#_NSMenuMixedState__popUpItemAction:78K;ZOtherViews>NoPQRST,/258;!"#$%&()X+./^ -"&).RCc!"#$%&()b+./h 0"&)1XTo or Cc!"#$%&()l+./r 3"&)4WSubject!"#$%&()v+./| 6"&)7TFrom!"#$%&()+./ 9"&):YExpert...78;^NSMutableArrayWNSArray78;78;_NSPopUpButtonCell^NSMenuItemCell\NSButtonCell]%NSButtonCell\NSActionCell78;]NSPopUpButtonXNSButtonYNSControlVNSView[NSResponder@ >A_{{174, 58}, {158, 26}} @EDB= ?C  !"#$%&()+./EF"A&)G!36HoʀDJMPS;!"#$%&()+./ԀEK"A&)LXIs Equal!"#$%&()+./ހEN"A&)OZHas Prefix!"#$%&()+./EQ"A&)RZHas Suffix!"#$%&()+./ET"A&)U_Match ExpressionW bX_{{337, 62}, {240, 22}}  _NSBackgroundColor[NSTextColorZNSContents_NSDrawsBackgroundY^V aqA@  WNSColor[NSColorName\NSColorSpace]NSCatalogName\[Z]VSystem_textBackgroundColorWNSWhiteB1]78  ;  `_Z]YtextColor$B0]78'((;_NSTextFieldCell78*++,;[NSTextField\%NSTextField03d >e_{{11, 31}, {72, 26}}789= ihf= cg  !"#$%&7()F+3./Lij"e&)k!3N6PlUo8Whn;!"#$%&7()[+3./aio"e&)pRorfir >s_{{11, 4}, {72, 26}}mnos wvt= qu  !"#$%&m()|+i./wx"s&)y!36z<{L>onv|;!"#$%&m()+i./w}"s&)~ >_{{87, 31}, {90, 26}} =   !"#$%&()+./"&)!236 oÀ;!"#$%&()+./̀"&)!"#$%&()+./ր"&)!"#$%&()+./߀"&)!"#$%&()+./耄"&)!"#$%&()+./񀄀"&)!"#$%&()+./"&) >_{{87, 4}, {90, 26}}  =   !"#$%&()+./"&)!236 <>o!"#$%&;!"#$%&()*+./0"&)!"#$%&()3+./9"&)!"#$%&()<+./B"&)!"#$%&()E+./K"&)!"#$%&()N+./T"&)!"#$%&()W+./]"&)ad >_{{174, 31}, {158, 26}}hijn =   !"#$%&h()w+d./}"&)!36<L>oi€ŀȀˀ;!"#$%&h()+d./À"&)!"#$%&h()+d./ƀ"&)!"#$%&h()+d./ɀ"&)!"#$%&h()+d./̀"&) >_{{174, 4}, {158, 26}} ԀӀр= ΀Ҁ  !"#$%&()+./πԀՀ"Ѐ&)!36Ӏ׀<L>o܀Ӏـ܀߀;!"#$%&()+./Ԁڀ"Ѐ&)!"#$%&()+./Ԁ݀"Ѐ&)!"#$%&()+./Ԁ"Ѐ&)!"#$%&()+./Ԁ"Ѐ&) b_{{337, 32}, {240, 22}}  Y^ a b_{{337, 8}, {240, 22}}  Y^ a_{{2, 2}, {591, 84}}78$;_{{20, 242}, {595, 104}}V{0, 0})*+-ĀYaXCriteria   02_LucidaGrande-Bold5M0 0.80000001]78899;UNSBox=?A b_{{17, 484}, {85, 17}}DEG-Ja@\Description:  MNZ]\controlColorSK0.66666669]  W`Z]_controlTextColor^`b  b_{{107, 482}, {435, 22}}  Y^ aoqrs  _{{554, 482}, {63, 18}}wy{|}~-ĀHo ;   h>o*-5X[b;   >_{{166, 98}, {296, 26}} =   !"#$%&()+./ˁ"&)!36ρ<WMailboxL>o;݁   >_{{166, 66}, {128, 26}} =   !"#$%&()+./ "&)!!36"<#ZBounce To:L>o$';!"#$%&()+./ %"&)&[Forward To:!"#$%&()+./("&))YReply To:  + b,_{{299, 71}, {163, 22}}  Y^* a+-r/  .   /_{{463, 63}, {121, 32}}2345{}~-94210-8^Set message...   <"A0   <@3YHelveticaFGHIJKLMNOPQRSTWYZ\]D[NSCellClassYNSNumRowsZNSCellSizeYNSNumColsWNSCells[NSProtoCell^NSSelectedCell_NSCellBackgroundColor]NSMatrixFlags_NSIntercellSpacing6TR7 U 8W\D(S_{{12, 4}, {151, 153}}>boYdefg8?ACE;jklmo{|}~r]NSNormalImage><:95]Set color to::2v<=;%#]NSRadioButton{=jk~lm{|}-UNSTag><:@5_Transfer to mailbox:jlm |}-Ā<:B5SDo:jlm |}-Ā<:D5^Delete messagejl |}-Ā<GF5ZPlay Sound  VNSReps\NSImageFlagsHPQI X{18, 18}>oJ;>KLO_NSTIFFRepresentationMNOMM*<'''+++555### <uPPPਨTTTuyuuu|||%%%yFjjj浵wwwF BBBJJJ xxxݿ|||$$....$nnnkkk$...,,, C______C ebbbdddee333€𿿿333eCwwC $..$  RS78;_NSBitmapImageRepZNSImageRep78;D0 0]78>>;X%NSImageY{151, 29}V{4, 2}l }-ā<VH8QURadio78צ;XNSMatrixY%NSMatrix߁  Y bZ_{{169, 9}, {290, 22}}  Y^X ar  \  ]_{{463, 6}, {120, 32}}{}~-9a_^[`[Choose file   @3   \NSIsBordered[NSDragTypes  fe gc> @d_NSColor pasteboard type_{{169, 130}, {122, 24}}UNSRGBO0.058130499 0.055541899 1]78;[NSColorWell_{{2, 2}, {591, 163}}_{{20, 56}, {595, 183}}*!-ĀYmlaVAction5])qr,o  p_{{537, 12}, {84, 32}}/2{}~-9r_qnROKQ ;qr>t  u_{{453, 12}, {84, 32}}AD{}~-G9x_vswVCancelPSz b{_{{17, 454}, {75, 17}}DEY-J|ya\Filter type:FGHIJKLMNO^_`adfZ\iD~ W\_{{105, 453}, {184, 18}}>nofp;slv{|}~rā<}XIncomingjl |}-Ā<}XOutgoing  PQ>o;>KONOMM* !' 666666### 2 L222\\\bbb111 _ ;KKKKKK P<<<|||<<<>ooo曛rrr V`r'''n###  _uCRRRgggQ ,3M"""U  *Y;;;xxxڦ뫫EEE `/*QswV/ 4HTUK7!    RSX{82, 18}W{20, 0}l }-ā<Ł>o;>o;r  _{{12, 48}, {230, 18}}w{|}~-Ā_Process with external program:Ӂ b_{{248, 42}, {329, 22}}  Y^ a b_{{89, 11}, {141, 17}}DE-Ja_and apply criteria(s) >_{{245, 5}, {128, 26}} =   !"#$%&()+./ "&)!36<UafterL>o;!"#$%&()+./!"&)Vbefore_{{2, 2}, {591, 75}}_{{20, 349}, {595, 95}}'*)-ĀYa_External Program5]_{{1, 1}, {635, 521}}_{{0, 0}, {1280, 1002}}Z{600, 509}_{3.40282e+38, 509}78344;_NSWindowTemplateVwindow787889;_NSNibOutletConnector^NSNibConnectorqrs<v0_descriptionFieldqrsBv0\activeButtonqrsHv0_actionFolderNamePopUpButtonqrsNv0*_actionEMailStringFieldqrsTv0Á_actionEMailStringPopUpButtonqrs0Z[ŁƁ-[setMessage:78_``9;_NSNibControlConnectorqrs0c[ȁƁs^cancelClicked:qrs0i[ʁƁnZokClicked:qrsov05́Vmatrixqrs0u[Ҁ΁ƀ_"criteriaSourceSelectionHasChanged:qrs0{vtЁ Xdelegateqrsv0-ҁ_actionEMailStringButtonqrsv0}ԁ_filterTypeMatrixqrsv0ց_externalProgramButtonqrsv0؁_externalProgramFieldqrsv0ځ_externalProgramPopUpButtonqrsv0c܁_criteriaConditionPopUpButtonBqrsv0qށ_criteriaConditionPopUpButtonCqrsv0?_!criteriaFindOperationPopUpButtonAqrsv0_!criteriaFindOperationPopUpButtonBqrsv0΁_!criteriaFindOperationPopUpButtonCqrsv0_criteriaSourcePopUpButtonAqrsv0_criteriaSourcePopUpButtonBqrsv0_criteriaSourcePopUpButtonCqrsv0V_criteriaStringFieldAqrsv0_criteriaStringFieldBqrsv0_criteriaStringFieldCqrs0[׀ƀqrs0[؀ƀqVNSFileXNSMarker}_NSToolTipHelpKey_cSelect if the filter is used when receiving messages (Incoming) or when sending messages (Outgoing)78;_NSIBHelpConnectorq_*eTtge$%7d8!&fW"YRhminQSf#pP8?-' s|فEA5 My倕Łb*܀i?EPhDXȁ[߀Sqnc ˁ82w} vԁ$Ӏ΀/n5CVJ,O>e0hmh7ht7hhm  wԁ55  E  Ԁc5?EiE   ԀE}i5 Ԁqw ΁Ԁ  5}E O>^Tt$%78!&W"R0hminQS#P8'- s|?ـ5 My倕Łb*܀iEPhDXȁ[߀Sqnc ˁ2w} ΀vԁ$Ӂn/5VJ,O> [^ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmO[NSMenuItem5[NSMenuItem2[NSMenuItem3UPanel[NSMenuItem1YNSButton1^NSPopUpButton1_NSPopUpButton11YNSMatrix1YNSButton4YPopUpList[NSMenuItem6]NSTextField21\NSTextField1[NSMenuItem4Q2^NSPopUpButton3\NSTextField2_NSPopUpButton21^NSPopUpButton2\File's OwnerVNSBox1_NSPopUpButton12VNSBox2^NSPopUpButton4> O> O> Rf^_QIY`Hb"R$iP\m&hKednpLielYfhSGJW]km0cV#fZ7!g%QW8SaM[gNTtTOjUdXPn|c2C$E/ȁ݁ـπM-,ywD߁sSAv*[8?ԁ5 n ӁŁ}b׀nJ߁'ˀiE܀ṔـXhрĀq ΀5ǀ8 ӁɁ Ձ?ۀˁ VO> l m n o p q r s t u v w x y z { | } ~  rstuvwxyz{|}~ÁāŁƁǁȁɁʁˁ́́΁ρЁсҁӁԁՁցׁ؁فځہ܁݁ށ߁O(*qmGz)6eb5W- Ysgc/9}r+,_:H18lwi  auv fZ|^. 'dnh~tJVxkXy<p?=I`>{F> o;> O> O78 ;^NSIBObjectData#,1:LQVdfrx(DQdky !#BKT_ds| % ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~  / 9 G U b o y    & / @ K ] e g i l n w   ( 6 D N P R T V X Z \ ^ _ a c e n q s u      j }  -7Lasu~  GUiqy '9BI\p} #LNPRTVXZ\e '07FNW\et &(*,-/1J $&/:<>@BDFoqsuwy{}9;=?ACEGI\y{}  4<HUcegikmt%1>[]_abdf}!#%')+-:<>@DMOX]_ac(*,.023579:CENP} 7!#LNPRTVXZ\02468:<>@ikmoqsuwy   LNPRTVXZ\moprt}  79;=?ACEGprtvxz|~3~        ! J L N P R T V X Z !!!!"!$!&!(!)!+!-!E!!!!!!!!!!!!!!!!!!!!!!!!""""""""'")"+"-"/"1"3"\"^"`"b"d"f"h"j"l""""""""""""""""""## # # ######4#6#8#:#;#=#?#X#}#######################$$$"$<$C$`$b$d$f$h$j$o$x$$$$$$$$$$$$$$$$%%%%%=%?%A%C%E%G%I%N%[%p%r%t%v%x%%%%%%%%%%%%%%%%%%&&;&=&?&A&C&E&F&H&e&g&i&l&m&p&s&v&&&&&&&&&&&&&&&&'' '''.'7'B'K'V'''''''''''''''''''''''''''(((( (&()(,(/(0(2(5(N(((((((((((((((((((()))))))))$)-)/)8);)>)@)])`)c)f)g)i)l))))))))))))))))***-*0*2*4*7*9*;*>*K*N*P*S*^*g*i*r*y*|*****************+++++ ++1+4+7+:+;+=+@+Y+~++++++++++++++++, , ,,,,,,,#,2,C,H,J,L,],`,b,l,u,w,,,,,,---(-6-K-N-Q-S-V-Y-\-]-`-c-f-i-k-p-s-u-w------------.... . ....(.5.8.:.<.J.S.V.Y.b.d...........//////"/%/(/*/./m/o/r/u/w/z/}//////////////0000000$0-06090<0>0G0L0O0R0U0^0u0x0{6I6R6Y6l6w666666666666666777777'717N7Q7T7W7X7Z7]7u77777777777777778"8%8(8*8-8083868B8S8V8X8a8c8l8n888888888888888888999#9@9B9K9V9b9y99999999999999999::I:L:O:Q:T:W:Z:\:_:a:~::::::::::::::::::;; ;';);+;.;/;1;4;L;m;o;q;s;v;y;{;;;;;;;;;;;;;;;;<<<F?FHFJFSFUFFFFFFFFFFFFFFFFFFFFFFFGGGGG G GGG,GEGbGdGgGiGlGnGGGGGGGGGHHHHH/H>HOHQHTHWHYHlH}HHHHHHHHHHHHHHHHIIIIII I?IPIRIUIXI[IgIpIwIIIIIIIIIIIIIIIIIIJJJJJJJDJUJWJZJ]J_JhJyJ|JJJJJJJJJJJJJJJKKKKKKK4KEKHKKKNKPKmK~KKKKKKKKKKKKKKKKL"L3L5L8L;L=LaLrLtLwLzL|LLLLLLLLLLLLMM!M#M&M)M+MHMYM[M^MaMcMzMMMMMMMMMMMMMMMMMN N NNNN%N,N5N8N;N>NANTNNNNNNNNNO8OIOLOOOROTOgOxO{O~OOOOOOOOOOOOOOOPPP P PP;PLPNPQPTPVPgPiPlPoPqPPPPPPPQuQwQyQ|QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQRRRRR R RRRRRRRR R"R$R&R)R,R/R2R4R7R9R;R=R?RBRDRFRIRKRMRPRSRURXRZR\R^RaRdRgRpS=S?SASDSGSISKSMSOSQSSSUSXS[S]S`SbSeSgSiSlSnSqSsSvSxSzS|S~SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTT T TTTTTTTTT"T%T(T1TTTTTTTUUUUU U UUUUUUUU U#U&U(U*U,U.U1U4U6U8U:UU@UBUDUFUHUKUMUPURUUUWUZU\U^U`UbUdUfUhUjUlUnUpUrUuUwUyU{U}UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVWWWW W WWWWWWW"W%W(W+W.W1W4W7W:W=W@WCWFWIWLWOWRWUWXW[W^WaWdWgWjWmWpWsWvWyW|WWWWWWWWWWWWWWWWWWWWWWWWXXXX'X1X=XKXXXdXfXuXXXXXXXXXXXXXXYZ!Z$Z'Z)Z+Z-Z/Z1Z4Z7Z9Z]A]D]G]J]M]P]S]V]Y]\]_]b]e]h]k]n]q]t]w]z]}]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]^^^^ ^ ^^^^^^^"^%^(^+^.^1^4^7^:^=^@^C^F^I^L^O^R^U^X^[^^^a^c^e^g^i^k^m^o^q^s^u^w^y^{^}^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^_____ _ _ __________!_#_%_'_)_+_-_/_1_3_5_7_9_;_=_?_A_C_E_G_I_K_M_O_Q_S_U_W_Y_[_]___a_c_e_g_i_k_m_o_q_z_{_}________ _GNUMail/Bundles/Filtering/English.lproj/FilterHeaderEditorWindow.nib/0040755000014600001460000000000010424672357026303 5ustar monotonemonotoneGNUMail/Bundles/Filtering/English.lproj/FilterHeaderEditorWindow.nib/classes.nib0100644000014600001460000000066610424672357030437 0ustar monotonemonotone{ IBClasses = ( { ACTIONS = {addHeader = id; cancelClicked = id; okClicked = id; removeHeader = id; }; CLASS = FilterHeaderEditorWindowController; LANGUAGE = ObjC; OUTLETS = {headerField = id; tableView = id; }; SUPERCLASS = NSWindowController; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }GNUMail/Bundles/Filtering/English.lproj/FilterHeaderEditorWindow.nib/info.nib0100644000014600001460000000070210424672357027724 0ustar monotonemonotone IBDocumentLocation 23 56 356 240 0 0 1024 746 IBFramework Version 291.0 IBOpenObjects 5 IBSystem Version 6L29 GNUMail/Bundles/Filtering/English.lproj/FilterHeaderEditorWindow.nib/objects.nib0100644000014600001460000000565210424672357030433 0ustar monotonemonotone typedstream@NSIBObjectDataNSObjectNSCustomObject)@@NSString+"FilterHeaderEditorWindowControlleri NSButton NSControl)NSView) NSResponder @@@@ffffffffNSMutableArrayNSArray NSScrollView✒ NSClipView: NSTableView=icc@ @@@ff@@f::iNSTableHeaderView@@cccNSColorc@@@SystemcontrolBackgroundColorff?* _NSCornerView NSTableColumn)@fff@@ccB7[#脄NSTableHeaderCellNSTextFieldCell= NSActionCellNSCellAii@@@@HeaderNSFont$[36c]LucidaGrandef i:c@@>headerTextColor1@9$LucidaGrande controlTextColorņ gridColor?@ NSScrollerӛff:?6'b _doScroller:В?}ټs&(&(ϒҒffffi  5 NSButtonCell?ȅԄ ssii@@@@@@ׄNSMutableStringNSCustomResource)NSImageadd NSTextField W??@Header: ȅ޹ controlColorʆ:ߒIUqA@ȅtextBackgroundColorɆ textColorņÅd W W ֳ8Cancelȅ꿁@٘٘[28c]Helvetica  W W ֳOKȅ@ׄ ȅ   15ֳRemoveȅ@٘٘ۖ܄deleteNSWindowTemplate iiffffi@@@@@c  0x Add a headerNSWindow٘ViewffffՁ䞖Ԟ𞖨ޞꞙ NSButtonWindow䄘 NSTextField File's Owner NSTableColumn NSScrollView1Ԅ NSButton1 NSButton3ꄘ NSButton2ބ NSTextField2 NSTableView NSMutableSetNSSetI NSNibOutletConnectorτNSNibConnectorwindow tableView䄘 headerFieldNSNibControlConnector𕄘 okClicked:ꕄcancelClicked:ԕ addHeader: removeHeader: dataSourcedelegateNSIBHelpConnectorԄNSToolTipHelpKeyAdd$%Deletedelegate@i #ϙ !ϢϸϞ) 'Ϩ ϕIBCocoaFrameworkGNUMail/Bundles/Filtering/English.lproj/FilterHeaderEditorWindow.nib/keyedobjects.nib0100644000014600001460000001633610424672357031456 0ustar monotonemonotonebplist00_Y$archiverX$versionX$objectsT$top_NSKeyedArchiver (,-348<KRhijkosz !%')*,/3679<=?BCFNOPSXOY[\]`dewx}~   %&'()-*+,-.0JKLMNUOPQRST$UVWX YucZ[\U$null  !"#$%&']NSFontManagerV$classYNSNextOid_NSVisibleWindowsVNSRoot\NSOidsValues_NSClassesValues]NSConnections]NSNamesValues]NSObjectsKeysZNSOidsKeys]NSClassesKeys[NSFramework[NSNamesKeys_NSObjectsValues )*+[NSClassName_"FilterHeaderEditorWindowController./01Z$classnameX$classes^NSCustomObject02XNSObject_IBCocoaFramework 567ZNS.objects./9:\NSMutableSet9;2UNSSet 5=>6?@ABCDEFGHIJ LMNOPQWNSLabel]NSDestinationXNSSource~ S TUVWXYZ[\]^_`abcdefg\NSWindowViewYNSWTFlags]NSWindowTitleYNSMinSize\NSWindowRect_NSWindowStyleMask_NSWindowBacking\NSScreenRect]NSWindowClass[NSViewClass}0x | { _{{402, 265}, {288, 411}}\Add a headerXNSWindow lmnYNS.stringTView./pq_NSMutableStringpr2XNSString tuvwxy_NSNextResponderZNSSubviewsWNSFramezy 5={|}~KW^elt tuv]]]NSContentView[NSVScrollerXNSsFlagsXNSvFlags]NSNextKeyView\NSCornerView[NSSuperview\NSScrollAmts[NSHScroller_NSHeaderClipViewJ@2IOA A AAD 5= tuv||YNScvFlagsYNSBGColorYNSDocView? 7> 5= t_NSBackgroundColorYNSTvFlags_NSIntercellSpacingHeight\NSHeaderView[NSFrameSizeYNSEnabled[NSGridColor^NSTableColumns_NSIntercellSpacingWidth[NSRowHeight=@"@ :"@@"AZ{277, 263} t[NSTableView tuv||GHY{277, 17}./_NSTableHeaderView2VNSView[NSResponder tv||_{{278, 0}, {16, 17}}./]_NSCornerView2 5=ԡՀ \NSIsEditableZNSDataCellWNSWidthZNSMinWidthZNSMaxWidth^NSIsResizeable\NSHeaderCell5-"C"B7[#"Dz! YNSSupport\NSCellFlags2[NSTextColor[NSCellFlagsZNSContents,&#("VHeader VNSSizeVNSNameXNSfFlags%"A0$\LucidaGrande./VNSFont2 WNSWhite\NSColorSpace'I0.333333./WNSColor2      ]NSCatalogName[NSColorName+)*VSystem_headerTextColor B0./_NSTableHeaderCell2_NSTextFieldCell\NSActionCellVNSCell ]NSControlView41/21@.Q9 "#$"AP0 &B1    ( 3_controlTextColor./+2./-.]NSTableColumn-2./01^NSMutableArray022WNSArray  4 5 98_controlBackgroundColor 8I0.666667  : ; <;YgridColor >D0.5./@A2YNSControl_{{1, 17}, {277, 263}}./DEZNSClipViewD2 tGHvIJ|K|L|MXNSActionXNSTargetYNSPercentCBA"?6'b_{{278, 17}, {15, 263}}\_doScroller:./QRZNSScrollerQA2 tGHvIJ|TU|V|WFE"?}_{{1, 280}, {277, 15}} 5=Z_{{1, 0}, {277, 17}}_{{0, 115}, {294, 296}}./^_\NSScrollView^2 tva]bc]VML_{{49, 53}, {26, 26}} fghijklmno}pq rstuv_NSKeyEquivalent_NSAlternateContents_NSPeriodicDelay^NSButtonFlags2]NSButtonFlags]NSNormalImage_NSPeriodicIntervalUTS@ONVRemove )yz{|^NSResourceNameRPQWNSImageYdelete_20./_NSCustomResource2_%NSCustomResource lmP lm./\NSButtonCell2]%NSButtonCell./XNSButtonA2 tva]]YX_{{13, 53}, {26, 26}} fghijklm~pq rsu]Z[ )yz{\Sadd lm tv]]d`__{{10, 87}, {63, 17}} sb@aXHeader:  4  c\controlColor./[NSTextFieldA2\%NSTextField tv]d]gf_{{73, 85}, {195, 22}} _NSDrawsBackgroundhjqA    i_textBackgroundColor     kYtextColor tva]U]nm_{{100, 12}, {87, 32}} fghijlmqUsu_NSAlternateImagesr8@poVCancel "qYHelvetica lm lm tva]U]vu_{{187, 12}, {87, 32}} fghijlmpqUsuҀx@wROKQ _{{1, 9}, {288, 411}}./ף2_{{0, 0}, {1024, 746}}Z{213, 129}./_NSWindowTemplate2Vwindow./_NSNibOutletConnector2^NSNibConnector LMNOYtableView LMNO[headerField LMNZokClicked:./_NSNibControlConnector2 LMN^cancelClicked: LMN~ZaddHeader: LMN}]removeHeader: LMNOZdataSource LMNOXdelegate M~VNSFileXNSMarker_NSToolTipHelpKeySAdd./_NSIBHelpConnector2 M  }VDelete LMNOQ 5|}~Q]./222 5]|]]]]]Q] 5|}~Q 5 !"#$]NSScrollView1\File's Owner\NSTextField2YNSButton3YNSButton2YNSButton1VWindow 57 57 5/|}IB?@HDACQJ]~FEG 5123456789:;<=>?@ABCDEFGHI€ÀĀ    ./]^^NSIBObjectData]2`a]IB.objectdata#,5:LQ'5<FY`m !#HQ\ety  $2;=?An{  +8AJTV[dv}!/;DM[ht#%'*,.02;>w$&()+-27B[giln   % . 7 : < a n y    ! # % ' ) . 0 7 H O V _ a f h j w      " / 2 ; O Z l y    & / = B K Z a i ~   & 1 : [ d m w y { } 1JS`i+9NPRTY[dikmov #,5@Y[]t"$)+4IKXamz3HJTqsu!>@BZ 3:IZ\fwy  .?AL]_hy"'0GPgp8Atvxz|~bGNUMail/Bundles/Filtering/English.lproj/FilterMessageWindow.nib/0040755000014600001460000000000010424672357025330 5ustar monotonemonotoneGNUMail/Bundles/Filtering/English.lproj/FilterMessageWindow.nib/classes.nib0100644000014600001460000000057310424672357027461 0ustar monotonemonotone{ IBClasses = ( { ACTIONS = {cancelClicked = id; okClicked = id; }; CLASS = FilterMessageWindowController; LANGUAGE = ObjC; OUTLETS = {textView = id; }; SUPERCLASS = NSWindowController; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }GNUMail/Bundles/Filtering/English.lproj/FilterMessageWindow.nib/info.nib0100644000014600001460000000070210424672357026751 0ustar monotonemonotone IBDocumentLocation 16 44 356 240 0 0 1024 746 IBFramework Version 291.0 IBOpenObjects 5 IBSystem Version 6I32 GNUMail/Bundles/Filtering/English.lproj/FilterMessageWindow.nib/objects.nib0100644000014600001460000000376610424672357027464 0ustar monotonemonotone typedstream@NSIBObjectDataNSObjectNSCustomObject)@@NSString+FilterMessageWindowControlleriNSButton NSControl)NSView) NSResponder @@@@ffffffffNSMutableArrayNSArray NSScrollView✒ NSClipView:NSTextTemplateƄNSViewTemplate.ӒNSTextNSFont[28c]Helveticaf cNSColorffӪĂӒ@@ccc@@@SystemcontrolBackgroundColor?*NSCursorNSCustomResource)NSImage NSIBeamCursor NSScrollerӛӒicc@ff: _doScroller:WW?rC<Ւffffi z T T  NSButtonCell? NSActionCellNSCellAii@@@@OK$[36c]LucidaGrande i: ssii@@@@@@ Ņ NSTextFieldNSTextFieldCell=·@(Text to include before original message:ŅȄc@@ controlColorcontrolTextColor:܁>܁>& T T CancelŅ@ƄNSMutableStringŅȞNSWindowTemplate iiffffi@@@@@cЁ܁>0xMessageNSPanel՘Viewffff6ʒ֕ NSButton1Ȅ NSTextField2NSButton NSTextViewքPanel File's Owner NSScrollView2 NSMutableSetNSSetINSNibOutletConnectorτNSNibConnectorքwindowNSNibControlConnector謙cancelClicked:묿 okClicked:֕delegate笕textView @i ʿ ʞʨ ʕ ʢIBCocoaFrameworkGNUMail/Bundles/Filtering/English.lproj/FilterMessageWindow.nib/keyedobjects.nib0100644000014600001460000001334010424672357030473 0ustar monotonemonotonebplist00Y$archiverX$versionX$objectsT$top_NSKeyedArchiver (,-348<DKcdefjnu{  %&'+0&125<=TU]^abgjmnqrswxh^U$null  !"#$%&']NSFontManagerV$classYNSNextOid_NSVisibleWindowsVNSRoot\NSOidsValues_NSClassesValues]NSConnections]NSNamesValues]NSObjectsKeysZNSOidsKeys]NSClassesKeys[NSFramework[NSNamesKeys_NSObjectsValues~uq}ts )*+[NSClassName_FilterMessageWindowController./01Z$classnameX$classes^NSCustomObject02XNSObject_IBCocoaFramework 567ZNS.objects./9:\NSMutableSet9;2UNSSet 5=>?@ABC hkmo EFGHIJWNSLabel]NSDestinationXNSSourcegf L MNOPQRSTUVWXYZ[\]^_`ab\NSWindowViewYNSWTFlags]NSWindowTitleYNSMinSizeYNSMaxSize\NSWindowRect_NSWindowStyleMask_NSWindowBacking\NSScreenRect]NSWindowClass[NSViewClasse0x cd b _{{177, 208}, {476, 318}}WMessageWNSPanel ghiYNS.stringTView./kl_NSMutableStringkm2XNSString opqrst_NSNextResponderZNSSubviewsWNSFramea` 5=vwxyzFQV op|}~qWW]NSContentView[NSVScrollerXNSsFlagsXNSvFlags]NSNextKeyView[NSSuperview[NSHScrollerE=DA 5= opqwwXNSCursorYNScvFlagsYNSBGColorYNSDocView<5 32 5= oPYNSTVFlagsZNSDelegate[NSFrameSize_NSTextContainer\NSSharedData10!Z{419, 211} WNSWidth_NSLayoutManagerZNSTextViewYNSTCFlags "Cр ]NSTextStorage_NSTextContainersYNSLMFlagsm  ghP./2_NSMutableAttributedString_NSAttributedString 5=¡./^NSMutableArray2WNSArray./Ȣ2./ʢ2 _NSBackgroundColor_NSSelectedAttributes_NSInsertionColorWNSFlags/"%$ g WNSWhite\NSColorSpace#B1./WNSColor2 B0 5WNS.keys.(,&' ]NSCatalogName[NSColorName+)*VSystem_selectedTextBackgroundColor I0.666667 -_selectedTextColor./\NSDictionary2./_NSTextViewSharedData2\{452, 1e+07}./2VNSTextVNSView[NSResponder_{{1, 1}, {419, 211}} 4_controlBackgroundColor    WNSImageYNSHotSpot;76W{4, -5} )^NSResourceName:89]NSIBeamCursor./_NSCustomResource2_%NSCustomResource./2./ZNSClipView2 oq w!"w#$wXNSActionXNSTargetZNSCurValue@?"?>_{{420, 1}, {15, 211}}\_doScroller:./()ZNSScroller(*2YNSControl o~q, w-"w#.w/YNSPercentCB"?rC_{{-100, -100}, {87, 18}}_{{20, 60}, {436, 213}}./34\NSScrollView32 o6q78W9:;WVNSCellYNSEnabledPHG _{{378, 12}, {84, 32}} >?@ABCDEFGHIJKLMxNOPQRLS_NSKeyEquivalentYNSSupport_NSAlternateContents]NSControlView\NSCellFlags2_NSPeriodicDelay^NSButtonFlags2]NSButtonFlags[NSCellFlags_NSPeriodicInterval_NSAlternateImageZNSContentsONJM@IROK VWXYZ[\VNSSizeVNSNameXNSfFlagsL"APK\LucidaGrande./_`VNSFont_2Q ./cd\NSButtonCellcef62]%NSButtonCell\NSActionCell./hiXNSButtonh*2 o6q78Wkl;WSR_{{294, 12}, {84, 32}} >?@ABCDEFGHIJoLMyNOPQRLpUTVCancel gh o6q7tWu^v;W_XW_{{17, 281}, {510, 17}} ?AByFIz{Lz|}Q~[NSTextColor^Z@\Y_(Text to include before original message: [\controlColor ]_controlTextColor./_NSTextFieldCellf62./[NSTextField*2\%NSTextField_{{1, 1}, {476, 318}}./2_{{0, 0}, {1024, 746}}Z{310, 202}_{3.40282e+38, 3.40282e+38}./_NSWindowTemplate2Vwindow./_NSNibOutletConnector2^NSNibConnector EFGyji^cancelClicked:./_NSNibControlConnector2 EFGxlZokClicked: EFGHJnXdelegate EFGHpXtextView 5rWywJxz./2 5JwWWWW 5yJwxz 5vwxyz{|\File's OwnerYNSButton1UPanel]NSScrollView2\NSTextField2 57 57 5ŭC@ABWJwyzx? 5ǭԀ     ./^NSIBObjectData2]IB.objectdata#,5:LQrx+9DR^j|~  )467@MTZceprtvxz';MZhtvx}"-579;DMOQSU )3=GIKMPRTVXad(*/13HVisuwy !&;Ofy    ' 3 5 7 9 @ ^ k u     2 G I b o w   ! B K T _ a c f k m  + 4 A J g n x z | ~   + : H T i |  #1>GP[xz|:FHJOQS~6?F^i)0ACN_aj{}!/<ENWr{GNUMail/Bundles/Filtering/English.lproj/FilteringView.nib/0040755000014600001460000000000010424672357024164 5ustar monotonemonotoneGNUMail/Bundles/Filtering/English.lproj/FilteringView.nib/classes.nib0100644000014600001460000000216510424672357026314 0ustar monotonemonotone{ IBClasses = ( {CLASS = ExtendedTableColumn; LANGUAGE = ObjC; SUPERCLASS = NSTableColumn; }, { ACTIONS = { add = id; delete = id; duplicate = id; edit = id; moveDown = id; moveUp = id; }; CLASS = FilteringViewController; LANGUAGE = ObjC; OUTLETS = { activeColumn = id; add = id; delete = id; duplicate = id; edit = id; rulesColumn = id; tableView = id; view = id; }; SUPERCLASS = NSObject; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, {CLASS = NSObject; LANGUAGE = ObjC; }, {CLASS = NSTableColumn; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, {CLASS = StripeTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; }, {CLASS = SwitchTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; } ); IBVersion = 1; }GNUMail/Bundles/Filtering/English.lproj/FilteringView.nib/info.nib0100644000014600001460000000106110424672357025604 0ustar monotonemonotone IBDocumentLocation 12 22 356 240 0 0 1024 746 IBEditorPositions 6 302 294 420 442 0 0 1024 746 IBFramework Version 291.0 IBOpenObjects 6 IBSystem Version 6R73 GNUMail/Bundles/Filtering/English.lproj/FilteringView.nib/keyedobjects.nib0100644000014600001460000001612710424672357027335 0ustar monotonemonotonebplist00XY$archiverX$versionX$objectsT$top_NSKeyedArchiver (,-348<LS]e|~   !#$&'+./14589;>FGHLQGRTUVY]^opuvw{|    !"#$%')CDmEFGHIJKLNMuNOPQRSTUU$null  !"#$%&']NSFontManagerV$classYNSNextOid_NSVisibleWindowsVNSRoot\NSOidsValues_NSClassesValues]NSConnections]NSNamesValues]NSObjectsKeysZNSOidsKeys]NSClassesKeys[NSFramework[NSNamesKeys_NSObjectsValues )*+[NSClassName_FilteringViewController./01Z$classnameX$classes^NSCustomObject02XNSObject_IBCocoaFramework 567ZNS.objects./9:\NSMutableSet9;2UNSSet 5=>9?@ABCDEFGHIJK MNOPQRWNSLabel]NSDestinationXNSSource~ TUV)WXYZ[\_NSNextResponderZNSSubviews[NSExtension[NSFrameSize} |{z 5=^_`abcd N[cks TUfghijklmnopqRrstuvswxRyz{]NSContentView[NSVScrollerXNSsFlagsXNSvFlags]NSNextKeyViewWNSFrame\NSCornerView[NSSuperview\NSScrollAmts[NSHScroller_NSHeaderClipViewM CLOA A AAG 5=}stz{x TUijkm__YNScvFlagsYNSBGColorYNSDocViewB ?> 5= T)Wlmsxs_NSBackgroundColorYNSTvFlags_NSIntercellSpacingHeight_NSOriginalClassName\NSHeaderViewYNSEnabled[NSGridColor^NSTableColumns_NSIntercellSpacingWidth[NSRowHeight=.@"@ :"@@"A_StripeTableView[NSTableViewZ{343, 271} TiWm{{ TUijkm__JKY{343, 17}./_NSTableHeaderView2VNSView[NSResponder Tikm___{{344, 0}, {16, 17}}./]_NSCornerView2 5=3 \NSIsEditableZNSDataCellWNSWidthZNSMinWidth\NSIdentifierZNSMaxWidth^NSIsResizeable\NSHeaderCell2*"BH"B![#Vactive YNSSupport\NSCellFlags2[NSTextColor[NSCellFlagsZNSContents)# %VActive VNSSizeVNSNameXNSfFlags""A0!\LucidaGrande./VNSFont2 WNSWhite\NSColorSpace$I0.333333./WNSColor2 ]NSCatalogName[NSColorName(&'VSystem_headerTextColor B0./_NSTableHeaderCell2_NSTextFieldCell\NSActionCellVNSCell  ]NSControlView1,/1@+Q9   "AP- B1 0_controlTextColor./2./]NSTableColumn2 7"C"AR4"Dz5Urules "6TRule %8\Redwood City./()^NSMutableArray(*2WNSArray ,-<;YgridColor 0D0.5./23^NSClassSwapper22_{{1, 17}, {343, 271}} 67A@_controlBackgroundColor :I0.666667./<=ZNSClipView<2 T?i@kmAB_C_D_EXNSActionXNSTargetYNSPercentFED"?6'b_{{344, 17}, {15, 271}}\_doScroller:./IJZNSScrollerIK2YNSControl T?hi@kmAB_MN_O_PIH"?}_{{-100, -100}, {343, 15}} 5=S_{{1, 0}, {343, 17}}_{{20, 41}, {360, 289}}./WX\NSScrollViewW2 TkmZR[\RZPO_{{20, 8}, {26, 26}} _`abcdefgh`ijklmn_NSKeyEquivalent_NSAlternateContents_NSPeriodicDelay^NSButtonFlags2]NSButtonFlags]NSNormalImage_NSPeriodicIntervalYWV@RQVAdd... )qrst^NSResourceNameUSTWNSImageSadd./xy_NSCustomResourcexz2_%NSCustomResourceP }~{YNS.stringX./_NSMutableString2XNSString./\NSButtonCell2]%NSButtonCell./XNSButtonK2 TkmZRR]\_{{56, 8}, {26, 26}} _`abcdefaijkmba_^VDelete )qrs`Ydelete_20 }~{ }~{ TkmZRRed_{{92, 8}, {26, 26}} _`abcdefbijkmjigfWEdit... )qrshTedit }~{ }~{ TkmZRRml_{{128, 8}, {26, 26}} _`abcdefcijkmrqonYDuplicate )qrspYduplicate }~{ }~{ TikmRRyu t_{{17, 338}, {366, 42}} dkw@v_jIn this panel, you can add Filters used by GNUMail.app to perform actions when sending or receiving mails. 6x\controlColor./[NSTextFieldK2\%NSTextFieldZ{400, 400} }~./\NSCustomView2Tview./_NSNibOutletConnector2^NSNibConnector MNO`Tadd:./_NSNibControlConnector2 MNOaWdelete: MNObUedit: MNOcZduplicate: MNOP[rulesColumn MNOPYtableView MNOPZdataSource MNOPXdelegate NcVNSFileXNSMarker_NSToolTipHelpKey^Duplicate rule./_NSIBHelpConnector2 NbYEdit rule Na[Delete rule N`XAdd rule 5`adRcb_./* *2 5 RRR_RRR 5`a_dRcb 5YNSButton1]NSScrollView1\File's Owner^NSTableColumn1\NSTextField2TViewYNSButton3YNSButton2 5 5& 5(`CBGJEDFHa?b@RAcKId_ 5*+,-./0123456789:;<=>?@AB€ÀĀŀƀǀȀ    ./VW^NSIBObjectDataV2YZ]IB.objectdata#,5:LQ/=DNahu  ')+ENYbqv  %3<>@B[mx!/7DP]i|~  ]q{ $);GRkmpr)2;@BDmz   % 1 < > @ B G I N P W h o v    ! # % ' ) 0 B O R [ o z   ! 4 = F O ] b    2 4 6 @ M R [ j o   * , . 0 5 N [ d o z  !*CEGI_$&(*1>MOQS[_h{#<>@V-/135=JLQZc|~ &(*,.Ghjoq $1<EN[dir &(3DFRceo%')3DFHTegir{}  ,9HUZdnw   !#%')+-/13579;=?ACEGIKMOXglq[GNUMail/Bundles/Filtering/FilterEditorWindow.h0100644000014600001460000000450710606120765022052 0ustar monotonemonotone/* ** FilterEditorWindow.h ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_FilterEditorWindow #define _GNUMail_H_FilterEditorWindow #import @interface FilterEditorWindow : NSWindow { @public NSTextField *descriptionField; NSButton *activeButton; NSMatrix *filterTypeMatrix; // External program NSButton *externalProgramButton; NSTextField *externalProgramField; NSPopUpButton *externalProgramPopUpButton; NSBox *criteriaBox; // First criteria NSPopUpButton *criteriaSourcePopUpButtonA; NSPopUpButton *criteriaFindOperationPopUpButtonA; NSTextField *criteriaStringFieldA; NSPopUpButton *criteriaPopUpButtonA; // Second criteria NSPopUpButton *criteriaConditionPopUpButtonB; NSPopUpButton *criteriaSourcePopUpButtonB; NSPopUpButton *criteriaFindOperationPopUpButtonB; NSTextField *criteriaStringFieldB; NSPopUpButton *criteriaPopUpButtonB; // Third criteria NSPopUpButton *criteriaConditionPopUpButtonC; NSPopUpButton *criteriaSourcePopUpButtonC; NSPopUpButton *criteriaFindOperationPopUpButtonC; NSTextField *criteriaStringFieldC; NSPopUpButton *criteriaPopUpButtonC; // Other UI elements NSMatrix *matrix; NSColorWell *actionColorWell; NSPopUpButton *actionFolderNamePopUpButton; NSPopUpButton *actionEMailStringPopUpButton; NSTextField *actionEMailStringField; NSButton *actionEMailStringButton; NSTextField *pathToSoundField; NSButton *chooseFileButton; } - (void) layoutWindow; @end #endif // _GNUMail_H_FilterEditorWindow GNUMail/Bundles/Filtering/FilterEditorWindow.m0100644000014600001460000003723210606120765022060 0ustar monotonemonotone/* ** FilterEditorWindow.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "FilterEditorWindow.h" #include "Constants.h" #include "LabelWidget.h" // // // @implementation FilterEditorWindow - (void) dealloc { NSDebugLog(@"FilterEditorWindow: -dealloc"); RELEASE(descriptionField); RELEASE(activeButton); RELEASE(filterTypeMatrix); // External program RELEASE(externalProgramButton); RELEASE(externalProgramField); RELEASE(externalProgramPopUpButton); RELEASE(criteriaBox); // First criteria RELEASE(criteriaSourcePopUpButtonA); RELEASE(criteriaFindOperationPopUpButtonA); RELEASE(criteriaStringFieldA); RELEASE(criteriaPopUpButtonA); // Second criteria RELEASE(criteriaConditionPopUpButtonB); RELEASE(criteriaSourcePopUpButtonB); RELEASE(criteriaFindOperationPopUpButtonB); RELEASE(criteriaStringFieldB); RELEASE(criteriaPopUpButtonB); // Third criteria RELEASE(criteriaConditionPopUpButtonC); RELEASE(criteriaSourcePopUpButtonC); RELEASE(criteriaFindOperationPopUpButtonC); RELEASE(criteriaStringFieldC); RELEASE(criteriaPopUpButtonC); RELEASE(matrix); RELEASE(actionColorWell); RELEASE(actionFolderNamePopUpButton); RELEASE(actionEMailStringPopUpButton); RELEASE(actionEMailStringField); RELEASE(actionEMailStringButton); RELEASE(pathToSoundField); RELEASE(chooseFileButton); [super dealloc]; } // // // - (void) layoutWindow { LabelWidget *descriptionLabel, *filterTypeLabel, *externalProgramLabel1, *externalProgramLabel2; NSButton *okButton, *cancelButton; NSButtonCell *cell; NSBox *box; // Descriction & activate descriptionLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,485,80,TextFieldHeight) label: _(@"Description:")]; [[self contentView] addSubview: descriptionLabel]; descriptionField = [[NSTextField alloc] initWithFrame: NSMakeRect(100,485,290,TextFieldHeight)]; [[self contentView] addSubview: descriptionField]; activeButton = [[NSButton alloc] initWithFrame: NSMakeRect(410,485,70,ButtonHeight)]; [activeButton setButtonType: NSSwitchButton]; [activeButton setBordered: NO]; [activeButton setTitle: _(@"Active")]; [[self contentView] addSubview: activeButton]; // Filter type filterTypeLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,455,70,TextFieldHeight) label: _(@"Filter type:")]; [[self contentView] addSubview: filterTypeLabel]; cell = [[NSButtonCell alloc] init]; [cell setButtonType: NSRadioButton]; [cell setBordered: NO]; [cell setImagePosition: NSImageLeft]; filterTypeMatrix = [[NSMatrix alloc] initWithFrame:NSMakeRect(90,453,200,ButtonHeight) mode: NSRadioModeMatrix prototype: cell numberOfRows: 1 numberOfColumns: 2]; [filterTypeMatrix setIntercellSpacing: NSMakeSize(20, 0)]; [filterTypeMatrix setAutosizesCells: NO]; [filterTypeMatrix setAllowsEmptySelection: NO]; RELEASE(cell); [[filterTypeMatrix cellAtRow: 0 column: 0] setTitle: _(@"Incoming")]; [[filterTypeMatrix cellAtRow: 0 column: 1] setTitle: _(@"Outgoing")]; [[self contentView] addSubview: filterTypeMatrix]; // External program box = [[NSBox alloc] initWithFrame: NSMakeRect(10,360,480,90)]; [box setTitle: _(@"External Program")]; externalProgramButton = [[NSButton alloc] initWithFrame: NSMakeRect(10,35,215,TextFieldHeight)]; [externalProgramButton setButtonType: NSSwitchButton]; [externalProgramButton setBordered: NO]; [externalProgramButton setTitle: _(@"Process with external program:")]; [box addSubview: externalProgramButton]; externalProgramField = [[NSTextField alloc] initWithFrame: NSMakeRect(235,35,230,TextFieldHeight)]; [box addSubview: externalProgramField]; externalProgramLabel1 = [LabelWidget labelWidgetWithFrame: NSMakeRect(100,0,130,TextFieldHeight) label: _(@"and apply criteria(s)")]; [box addSubview: externalProgramLabel1]; externalProgramPopUpButton = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(235,0,80,ButtonHeight)]; [externalProgramPopUpButton setAutoenablesItems: NO]; [externalProgramPopUpButton addItemWithTitle: _(@"after")]; [externalProgramPopUpButton addItemWithTitle: _(@"before")]; [box addSubview: externalProgramPopUpButton]; externalProgramLabel2 = [LabelWidget labelWidgetWithFrame: NSMakeRect(325,0,120,TextFieldHeight) label: _(@"program execution.")]; [box addSubview: externalProgramLabel2]; [[self contentView] addSubview: box]; RELEASE(box); // // The criteria box // criteriaBox = [[NSBox alloc] initWithFrame: NSMakeRect(10,225,480,125)]; [criteriaBox setTitle: _(@"Criteria")]; // // First criteria // criteriaSourcePopUpButtonA = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(60,65,80,ButtonHeight)]; [criteriaSourcePopUpButtonA addItemWithTitle: _(@"To")]; [criteriaSourcePopUpButtonA addItemWithTitle: _(@"Cc")]; [criteriaSourcePopUpButtonA addItemWithTitle: _(@"To or Cc")]; [criteriaSourcePopUpButtonA addItemWithTitle: _(@"Subject")]; [criteriaSourcePopUpButtonA addItemWithTitle: _(@"From")]; [criteriaSourcePopUpButtonA addItemWithTitle: _(@"Expert...")]; [criteriaSourcePopUpButtonA setTarget: [self windowController]]; [criteriaSourcePopUpButtonA setAction: @selector(criteriaSourceSelectionHasChanged:)]; [criteriaBox addSubview: criteriaSourcePopUpButtonA]; criteriaFindOperationPopUpButtonA = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(150,65,130,ButtonHeight)]; [criteriaFindOperationPopUpButtonA setAutoenablesItems: NO]; [criteriaFindOperationPopUpButtonA addItemWithTitle: _(@"Contains")]; [criteriaFindOperationPopUpButtonA addItemWithTitle: _(@"Is Equal")]; [criteriaFindOperationPopUpButtonA addItemWithTitle: _(@"Has Prefix")]; [criteriaFindOperationPopUpButtonA addItemWithTitle: _(@"Has Suffix")]; [criteriaFindOperationPopUpButtonA addItemWithTitle: _(@"Match Expression")]; [criteriaFindOperationPopUpButtonA setTarget: [self windowController]]; [criteriaFindOperationPopUpButtonA setAction: @selector(criteriaFindOperationSelectionHasChanged:)]; [criteriaBox addSubview: criteriaFindOperationPopUpButtonA]; criteriaStringFieldA = [[NSTextField alloc] initWithFrame: NSMakeRect(285,65,180,TextFieldHeight)]; [criteriaStringFieldA setEditable: YES]; [criteriaBox addSubview: criteriaStringFieldA]; criteriaPopUpButtonA = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(285,65,180,ButtonHeight)]; // // Second criteria // criteriaConditionPopUpButtonB = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(5,35,50,ButtonHeight)]; [criteriaConditionPopUpButtonB setAutoenablesItems: NO]; [criteriaConditionPopUpButtonB addItemWithTitle: _(@"and")]; [criteriaConditionPopUpButtonB addItemWithTitle: _(@"or")]; [criteriaBox addSubview: criteriaConditionPopUpButtonB]; criteriaSourcePopUpButtonB = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(60,35,80,ButtonHeight)]; [criteriaSourcePopUpButtonB addItemWithTitle: _(@"(none)")]; [criteriaSourcePopUpButtonB addItemWithTitle: _(@"To")]; [criteriaSourcePopUpButtonB addItemWithTitle: _(@"Cc")]; [criteriaSourcePopUpButtonB addItemWithTitle: _(@"To or Cc")]; [criteriaSourcePopUpButtonB addItemWithTitle: _(@"Subject")]; [criteriaSourcePopUpButtonB addItemWithTitle: _(@"From")]; [criteriaSourcePopUpButtonB addItemWithTitle: _(@"Expert...")]; [criteriaSourcePopUpButtonB setTarget: [self windowController]]; [criteriaSourcePopUpButtonB setAction: @selector(criteriaSourceSelectionHasChanged:)]; [criteriaBox addSubview: criteriaSourcePopUpButtonB]; criteriaFindOperationPopUpButtonB = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(150,35,130,ButtonHeight)]; [criteriaFindOperationPopUpButtonB setAutoenablesItems: NO]; [criteriaFindOperationPopUpButtonB addItemWithTitle: _(@"Contains")]; [criteriaFindOperationPopUpButtonB addItemWithTitle: _(@"Is Equal")]; [criteriaFindOperationPopUpButtonB addItemWithTitle: _(@"Has Prefix")]; [criteriaFindOperationPopUpButtonB addItemWithTitle: _(@"Has Suffix")]; [criteriaFindOperationPopUpButtonB addItemWithTitle: _(@"Match Expression")]; [criteriaFindOperationPopUpButtonB setTarget: [self windowController]]; [criteriaFindOperationPopUpButtonB setAction: @selector(criteriaFindOperationSelectionHasChanged:)]; [criteriaBox addSubview: criteriaFindOperationPopUpButtonB]; criteriaStringFieldB = [[NSTextField alloc] initWithFrame: NSMakeRect(285,35,180,TextFieldHeight)]; [criteriaStringFieldB setEditable: YES]; [criteriaBox addSubview: criteriaStringFieldB]; criteriaPopUpButtonB = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(285,35,180,ButtonHeight)]; // // Third criteria // criteriaConditionPopUpButtonC = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(5,5,50,ButtonHeight)]; [criteriaConditionPopUpButtonC setAutoenablesItems: NO]; [criteriaConditionPopUpButtonC addItemWithTitle: _(@"and")]; [criteriaConditionPopUpButtonC addItemWithTitle: _(@"or")]; [criteriaBox addSubview: criteriaConditionPopUpButtonC]; criteriaSourcePopUpButtonC = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(60,5,80,ButtonHeight)]; [criteriaSourcePopUpButtonC addItemWithTitle: _(@"(none)")]; [criteriaSourcePopUpButtonC addItemWithTitle: _(@"To")]; [criteriaSourcePopUpButtonC addItemWithTitle: _(@"Cc")]; [criteriaSourcePopUpButtonC addItemWithTitle: _(@"To or Cc")]; [criteriaSourcePopUpButtonC addItemWithTitle: _(@"Subject")]; [criteriaSourcePopUpButtonC addItemWithTitle: _(@"From")]; [criteriaSourcePopUpButtonC addItemWithTitle: _(@"Expert...")]; [criteriaSourcePopUpButtonC setTarget: [self windowController]]; [criteriaSourcePopUpButtonC setAction: @selector(criteriaSourceSelectionHasChanged:)]; [criteriaBox addSubview: criteriaSourcePopUpButtonC]; criteriaFindOperationPopUpButtonC = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(150,5,130,ButtonHeight)]; [criteriaFindOperationPopUpButtonC setAutoenablesItems: NO]; [criteriaFindOperationPopUpButtonC addItemWithTitle: _(@"Contains")]; [criteriaFindOperationPopUpButtonC addItemWithTitle: _(@"Is Equal")]; [criteriaFindOperationPopUpButtonC addItemWithTitle: _(@"Has Prefix")]; [criteriaFindOperationPopUpButtonC addItemWithTitle: _(@"Has Suffix")]; [criteriaFindOperationPopUpButtonC addItemWithTitle: _(@"Match Expression")]; [criteriaFindOperationPopUpButtonC setTarget: [self windowController]]; [criteriaFindOperationPopUpButtonC setAction: @selector(criteriaFindOperationSelectionHasChanged:)]; [criteriaBox addSubview: criteriaFindOperationPopUpButtonC]; criteriaStringFieldC = [[NSTextField alloc] initWithFrame: NSMakeRect(285,5,180,TextFieldHeight)]; [criteriaStringFieldC setEditable: YES]; [criteriaBox addSubview: criteriaStringFieldC]; criteriaPopUpButtonC = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(285,5,180,ButtonHeight)]; // We add our box [[self contentView] addSubview: criteriaBox]; // // The action box // box = [[NSBox alloc] initWithFrame: NSMakeRect(10,45,480,175)]; [box setTitle: _(@"Action")]; cell = [[NSButtonCell alloc] init]; [cell setButtonType: NSRadioButton]; [cell setBordered: NO]; [cell setImagePosition: NSImageLeft]; matrix = [[NSMatrix alloc] initWithFrame:NSMakeRect(5,5,145,120) mode: NSRadioModeMatrix prototype: cell numberOfRows: 5 numberOfColumns: 1]; [matrix setTarget: [self windowController]]; [matrix setIntercellSpacing: NSMakeSize(0, 5)]; [matrix setAutosizesCells: NO]; [matrix setAllowsEmptySelection: NO]; RELEASE(cell); [[matrix cellAtRow: 0 column: 0] setTitle: _(@"Set the color to:")]; [[matrix cellAtRow: 1 column: 0] setTitle: _(@"Transfer to mailbox:")]; [[matrix cellAtRow: 2 column: 0] setTitle: _(@"Do...")]; [[matrix cellAtRow: 3 column: 0] setTitle: _(@"Delete the message")]; [[matrix cellAtRow: 4 column: 0] setTitle: _(@"Play Sound")]; [box addSubview: matrix]; actionColorWell = [[NSColorWell alloc] initWithFrame: NSMakeRect(155,120,125,ButtonHeight)]; [box addSubview: actionColorWell]; actionFolderNamePopUpButton = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(155,90,310,ButtonHeight)]; [box addSubview: actionFolderNamePopUpButton]; actionEMailStringPopUpButton = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(155,60,90,ButtonHeight)]; [actionEMailStringPopUpButton setAutoenablesItems: NO]; [actionEMailStringPopUpButton addItemWithTitle: _(@"Bounce to:")]; [actionEMailStringPopUpButton addItemWithTitle: _(@"Forward to:")]; [actionEMailStringPopUpButton addItemWithTitle: _(@"Reply to:")]; [box addSubview: actionEMailStringPopUpButton]; actionEMailStringField = [[NSTextField alloc] initWithFrame: NSMakeRect(255,60,100,TextFieldHeight)]; [actionEMailStringField setEditable: YES]; [box addSubview: actionEMailStringField]; actionEMailStringButton = [[NSButton alloc] initWithFrame: NSMakeRect(365,58,100, ButtonHeight)]; [actionEMailStringButton setStringValue: _(@"Set message")]; [actionEMailStringButton setTarget: [self windowController]]; [actionEMailStringButton setAction: @selector(setMessage:)]; [box addSubview: actionEMailStringButton]; // // For setting the path to the sound file // pathToSoundField = [[NSTextField alloc] initWithFrame: NSMakeRect(155,5,200,TextFieldHeight)]; [pathToSoundField setEditable: YES]; [box addSubview: pathToSoundField]; chooseFileButton = [[NSButton alloc] initWithFrame: NSMakeRect(365,3,100,ButtonHeight)]; [chooseFileButton setTitle: _(@"Choose file")]; [chooseFileButton setTarget: [self windowController]]; [chooseFileButton setAction: @selector(chooseFileButtonClicked:)]; [box addSubview: chooseFileButton]; [[self contentView] addSubview: box]; RELEASE(box); cancelButton = [[NSButton alloc] initWithFrame: NSMakeRect(320,10,80,ButtonHeight)];; [cancelButton setButtonType: NSMomentaryPushButton]; [cancelButton setKeyEquivalent: @"\e"]; [cancelButton setTitle: _(@"Cancel")]; [cancelButton setTarget: [self windowController]]; [cancelButton setAction: @selector(cancelClicked:) ]; [[self contentView] addSubview: cancelButton]; RELEASE(cancelButton); okButton = [[NSButton alloc] initWithFrame: NSMakeRect(410,10,80,ButtonHeight)]; [okButton setButtonType: NSMomentaryPushButton]; [okButton setKeyEquivalent: @"\r"]; [okButton setImagePosition: NSImageRight]; [okButton setImage: [NSImage imageNamed: @"common_ret"]]; [okButton setAlternateImage: [NSImage imageNamed: @"common_retH"]]; [okButton setTitle: _(@"OK")]; [okButton setTarget: [self windowController]]; [okButton setAction: @selector(okClicked:)]; [[self contentView] addSubview: okButton]; RELEASE(okButton); // We set the initial responder and the next key views [self setInitialFirstResponder: descriptionField]; [descriptionField setNextKeyView: activeButton]; // FIXME [activeButton setNextKeyView: criteriaSourcePopUpButtonA]; [criteriaSourcePopUpButtonA setNextKeyView: criteriaFindOperationPopUpButtonA]; [criteriaFindOperationPopUpButtonA setNextKeyView: criteriaStringFieldA]; [criteriaStringFieldA setNextKeyView: descriptionField]; } @end GNUMail/Bundles/Filtering/FilterEditorWindowController.h0100644000014600001460000001015510606120765024112 0ustar monotonemonotone/* ** FilterEditorWindowController.h ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_FilterEditorWindowController #define _GNUMail_H_FilterEditorWindowController #import @class Filter; @class FilterCriteria; @class FilterManager; @class FolderNode; @class FolderNodePopUpItem; // // // @interface FilterEditorWindowController: NSWindowController { // Outlets IBOutlet NSTextField *descriptionField; IBOutlet NSButton *activeButton; IBOutlet NSMatrix *filterTypeMatrix; IBOutlet NSButton *externalProgramButton; IBOutlet NSTextField *externalProgramField; IBOutlet NSPopUpButton *externalProgramPopUpButton; // First criteria IBOutlet NSPopUpButton *criteriaSourcePopUpButtonA; IBOutlet NSPopUpButton *criteriaFindOperationPopUpButtonA; IBOutlet NSTextField *criteriaStringFieldA; IBOutlet NSPopUpButton *criteriaPopUpButtonA; // Second criteria IBOutlet NSPopUpButton *criteriaConditionPopUpButtonB; IBOutlet NSPopUpButton *criteriaSourcePopUpButtonB; IBOutlet NSPopUpButton *criteriaFindOperationPopUpButtonB; IBOutlet NSTextField *criteriaStringFieldB; IBOutlet NSPopUpButton *criteriaPopUpButtonB; // Third criteria IBOutlet NSPopUpButton *criteriaConditionPopUpButtonC; IBOutlet NSPopUpButton *criteriaSourcePopUpButtonC; IBOutlet NSPopUpButton *criteriaFindOperationPopUpButtonC; IBOutlet NSTextField *criteriaStringFieldC; IBOutlet NSPopUpButton *criteriaPopUpButtonC; // Other UI elements IBOutlet NSMatrix *matrix; IBOutlet NSBox *criteriaBox; IBOutlet NSColorWell *actionColorWell; IBOutlet NSPopUpButton *actionFolderNamePopUpButton; IBOutlet NSPopUpButton *actionEMailStringPopUpButton; IBOutlet NSTextField *actionEMailStringField; IBOutlet NSButton *actionEMailStringButton; IBOutlet NSTextField *pathToSoundField; IBOutlet NSButton *chooseFileButton; // Other ivar Filter *filter; FilterManager *filterManager; FolderNode *allNodes; BOOL mustAddFilterToFilterManager; } - (id) initWithWindowNibName: (NSString *) windowNibName; - (void) dealloc; // // delegate methods // - (void) windowWillClose: (NSNotification *) theNotification; - (void) windowDidLoad; // // action methods // - (IBAction) okClicked: (id) sender; - (IBAction) cancelClicked: (id) sender; - (IBAction) chooseFileButtonClicked: (id) sender; - (IBAction) setMessage: (id) sender; - (IBAction) criteriaFindOperationSelectionHasChanged: (id) sender; - (IBAction) criteriaSourceSelectionHasChanged: (id) sender; // // access/mutation methods // - (FilterManager *) filterManager; - (void) setFilterManager: (FilterManager *) theFilterManager; - (Filter *) filter; - (void) setFilter: (Filter *) theFilter; @end // // private methods // @interface FilterEditorWindowController (Private) - (void) _initializeCriteriaSourcePopUpButton: (NSPopUpButton *) theCriteriaSourcePopUpButton criteriaFindOperationPopUpButton: (NSPopUpButton *) theCriteriaFindOperationPopUpButton criteriaConditionPopUpButton: (NSPopUpButton *) theCriteriaConditionPopUpButton criteriaStringField: (NSTextField *) theCriteriaStringField criteriaPopUpButton: (NSPopUpButton *) theCriteriaPopUpButton usingFilterCriteria: (FilterCriteria *) theFilterCriteria; - (void) _setupGroupsPopUpButton: (NSPopUpButton *) button; @end #endif // _GNUMail_H_FilterEditorWindowController GNUMail/Bundles/Filtering/FilterEditorWindowController.m0100644000014600001460000006404010606120765024121 0ustar monotonemonotone/* ** FilterEditorWindowController.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "FilterEditorWindowController.h" #include "Filter.h" #include "FilterHeaderEditorWindowController.h" #include "FilterManager.h" #include "FilterMessageWindowController.h" #include "MailboxManagerController.h" #include "GNUMail.h" #include "Constants.h" #include "Utilities.h" #include "FolderNode.h" #include "FolderNodePopUpItem.h" #include #include #include #include #include #ifndef MACOSX #include "FilterEditorWindow.h" #endif @implementation FilterEditorWindowController // // // - (id) initWithWindowNibName: (NSString *) windowNibName { #ifdef MACOSX self = [super initWithWindowNibName: windowNibName]; criteriaPopUpButtonA = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(337,60,240,22)]; criteriaPopUpButtonB = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(337,33,240,22)]; criteriaPopUpButtonC = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(337,7,240,22)]; #else FilterEditorWindow *filterEditorWindow; filterEditorWindow = [[FilterEditorWindow alloc] initWithContentRect: NSMakeRect(300,300,500,520) styleMask: NSTitledWindowMask backing: NSBackingStoreRetained defer: NO]; self = [super initWithWindow: filterEditorWindow]; [filterEditorWindow layoutWindow]; [filterEditorWindow setDelegate: self]; // We link our outlets descriptionField = filterEditorWindow->descriptionField; activeButton = filterEditorWindow->activeButton; filterTypeMatrix = filterEditorWindow->filterTypeMatrix; externalProgramButton = filterEditorWindow->externalProgramButton; externalProgramField = filterEditorWindow->externalProgramField; externalProgramPopUpButton = filterEditorWindow->externalProgramPopUpButton; criteriaBox = filterEditorWindow->criteriaBox; // First criteria criteriaSourcePopUpButtonA = filterEditorWindow->criteriaSourcePopUpButtonA; criteriaFindOperationPopUpButtonA = filterEditorWindow->criteriaFindOperationPopUpButtonA; criteriaStringFieldA = filterEditorWindow->criteriaStringFieldA; criteriaPopUpButtonA = filterEditorWindow->criteriaPopUpButtonA; // Second criteria criteriaConditionPopUpButtonB = filterEditorWindow->criteriaConditionPopUpButtonB; criteriaSourcePopUpButtonB = filterEditorWindow->criteriaSourcePopUpButtonB; criteriaFindOperationPopUpButtonB = filterEditorWindow->criteriaFindOperationPopUpButtonB; criteriaStringFieldB = filterEditorWindow->criteriaStringFieldB; criteriaPopUpButtonB = filterEditorWindow->criteriaPopUpButtonB; // Third criteria criteriaConditionPopUpButtonC = filterEditorWindow->criteriaConditionPopUpButtonC; criteriaSourcePopUpButtonC = filterEditorWindow->criteriaSourcePopUpButtonC; criteriaFindOperationPopUpButtonC = filterEditorWindow->criteriaFindOperationPopUpButtonC; criteriaStringFieldC = filterEditorWindow->criteriaStringFieldC; criteriaPopUpButtonC = filterEditorWindow->criteriaPopUpButtonC; matrix = filterEditorWindow->matrix; actionColorWell = filterEditorWindow->actionColorWell; actionFolderNamePopUpButton = filterEditorWindow->actionFolderNamePopUpButton; actionEMailStringPopUpButton = filterEditorWindow->actionEMailStringPopUpButton; actionEMailStringField = filterEditorWindow->actionEMailStringField; actionEMailStringButton = filterEditorWindow->actionEMailStringButton; pathToSoundField = filterEditorWindow->pathToSoundField; chooseFileButton = filterEditorWindow->chooseFileButton; RELEASE(filterEditorWindow); #endif // This MUST be the first step allNodes = RETAIN([Utilities initializeFolderNodesUsingAccounts: [[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"]]); [[self window] setTitle: _(@"Add a filter")]; [Utilities addItemsToPopUpButton: actionFolderNamePopUpButton usingFolderNodes: allNodes]; return self; } // // // - (void) dealloc { #ifdef MACOSX RELEASE(criteriaStringFieldA); RELEASE(criteriaStringFieldB); RELEASE(criteriaStringFieldC); RELEASE(criteriaPopUpButtonA); RELEASE(criteriaPopUpButtonB); RELEASE(criteriaPopUpButtonC); #endif RELEASE(allNodes); [super dealloc]; } // // delegate methods // - (void) windowWillClose: (NSNotification *) theNotification { RELEASE(filterManager); TEST_RELEASE(filter); AUTORELEASE(self); } - (void) windowDidLoad { [super windowDidLoad]; RETAIN(criteriaStringFieldA); RETAIN(criteriaStringFieldB); RETAIN(criteriaStringFieldC); } // // action methods // - (IBAction) okClicked: (id) sender { CWLocalStore *aStore; NSString *aString; Filter *aFilter; FolderNode *aFolderNode; aStore = [[MailboxManagerController singleInstance] storeForName: @"GNUMAIL_LOCAL_STORE" username: NSUserName()]; // We first synchronize all our popups [externalProgramPopUpButton synchronizeTitleAndSelectedItem]; [criteriaSourcePopUpButtonA synchronizeTitleAndSelectedItem]; [criteriaFindOperationPopUpButtonA synchronizeTitleAndSelectedItem]; [criteriaConditionPopUpButtonB synchronizeTitleAndSelectedItem]; [criteriaSourcePopUpButtonB synchronizeTitleAndSelectedItem]; [criteriaFindOperationPopUpButtonB synchronizeTitleAndSelectedItem]; [criteriaConditionPopUpButtonC synchronizeTitleAndSelectedItem]; [criteriaSourcePopUpButtonC synchronizeTitleAndSelectedItem]; [criteriaFindOperationPopUpButtonC synchronizeTitleAndSelectedItem]; [actionFolderNamePopUpButton synchronizeTitleAndSelectedItem]; [actionEMailStringPopUpButton synchronizeTitleAndSelectedItem]; // // FIXME: We must verify for, at least, local store if the folder is "selectable". // Also, which value do we put here in case of an error? // We verify if the selected folder in actionFolderNamePopUpButton holds message or folders aFolderNode = [(FolderNodePopUpItem *)[actionFolderNamePopUpButton selectedItem] folderNode]; if ( [aFolderNode parent] == allNodes ) { NSDebugLog(@"Selected an invalid mailbox, Default to default Inbox folder."); #warning FIXME - This is wrong aString = [[NSUserDefaults standardUserDefaults] objectForKey: @"INBOXFOLDERNAME"]; } else { aString = [Utilities stringValueOfURLNameFromFolderNode: aFolderNode serverName: nil username: nil]; } // FIXME // if ( [aStore folderTypeForFolderName: aString] == HOLDS_FOLDERS ) // { // NSRunInformationalAlertPanel(_(@"Error!"), // _(@"The selected target folder (%@) holds folders, not messages."), // _(@"OK"), // NULL, // NULL, // aString); // return; // } if ([externalProgramButton state] == NSOnState && ([matrix selectedRow] + 1 ) == SET_COLOR) { NSRunInformationalAlertPanel(_(@"Warning!"), _(@"Defining a coloring filter that uses an external program is a BAD idea.\nThis will slow down drastically the application."), _(@"OK"), NULL, NULL, aString); } aFilter = [self filter]; if (mustAddFilterToFilterManager) { [filterManager addFilter: aFilter]; } // Description [aFilter setDescription: [descriptionField stringValue]]; [aFilter setIsActive: ([activeButton state] == NSOnState ? YES : NO)]; [aFilter setType: ([filterTypeMatrix selectedColumn] + 1)]; // External program [aFilter setUseExternalProgram: ([externalProgramButton state] == NSOnState ? YES : NO)]; [aFilter setExternalProgramName: [[externalProgramField stringValue] stringByTrimmingWhiteSpaces]]; [aFilter setExternalProgramOperation: ([externalProgramPopUpButton indexOfSelectedItem] + 1)]; // First criteria [[[aFilter allCriterias] objectAtIndex: 0] setCriteriaSource: ([criteriaSourcePopUpButtonA indexOfSelectedItem] + 1)]; [[[aFilter allCriterias] objectAtIndex: 0] setCriteriaFindOperation: ([criteriaFindOperationPopUpButtonA indexOfSelectedItem] + 1)]; if ([criteriaFindOperationPopUpButtonA indexOfSelectedItem] == 6) { [[[aFilter allCriterias] objectAtIndex: 0] setCriteriaString: [[criteriaPopUpButtonA selectedItem] representedObject]]; } else { [[[aFilter allCriterias] objectAtIndex: 0] setCriteriaString: [criteriaStringFieldA stringValue]]; } // Second criteria [[[aFilter allCriterias] objectAtIndex: 1] setCriteriaCondition: ([criteriaConditionPopUpButtonB indexOfSelectedItem] + 1)]; [[[aFilter allCriterias] objectAtIndex: 1] setCriteriaSource: [criteriaSourcePopUpButtonB indexOfSelectedItem]]; [[[aFilter allCriterias] objectAtIndex: 1] setCriteriaFindOperation: ([criteriaFindOperationPopUpButtonB indexOfSelectedItem] + 1)]; [[[aFilter allCriterias] objectAtIndex: 1] setCriteriaString: [criteriaStringFieldB stringValue]]; if ([criteriaFindOperationPopUpButtonB indexOfSelectedItem] == 6) { [[[aFilter allCriterias] objectAtIndex: 1] setCriteriaString: [[criteriaPopUpButtonB selectedItem] representedObject]]; } else { [[[aFilter allCriterias] objectAtIndex: 1] setCriteriaString: [criteriaStringFieldB stringValue]]; } // Third criteria [[[aFilter allCriterias] objectAtIndex: 2] setCriteriaCondition: ([criteriaConditionPopUpButtonC indexOfSelectedItem] + 1)]; [[[aFilter allCriterias] objectAtIndex: 2] setCriteriaSource: [criteriaSourcePopUpButtonC indexOfSelectedItem]]; [[[aFilter allCriterias] objectAtIndex: 2] setCriteriaFindOperation: ([criteriaFindOperationPopUpButtonC indexOfSelectedItem] + 1)]; [[[aFilter allCriterias] objectAtIndex: 2] setCriteriaString: [criteriaStringFieldC stringValue]]; if ([criteriaFindOperationPopUpButtonC indexOfSelectedItem] == 6) { [[[aFilter allCriterias] objectAtIndex: 2] setCriteriaString: [[criteriaPopUpButtonC selectedItem] representedObject]]; } else { [[[aFilter allCriterias] objectAtIndex: 2] setCriteriaString: [criteriaStringFieldC stringValue]]; } // Action [aFilter setAction: ([matrix selectedRow] + 1)]; [aFilter setActionColor: [actionColorWell color]]; [aFilter setActionFolderName: aString]; [aFilter setActionEMailOperation: ([actionEMailStringPopUpButton indexOfSelectedItem] + 1)]; [aFilter setActionEMailString: [actionEMailStringField stringValue]]; [aFilter setPathToSound: [pathToSoundField stringValue]]; [NSApp stopModal]; [self close]; } // // // - (IBAction) cancelClicked: (id) sender { [NSApp stopModalWithCode: NSRunAbortedResponse]; [self close]; } // // // - (IBAction) chooseFileButtonClicked: (id) sender { NSOpenPanel *oPanel; int result; oPanel = [NSOpenPanel openPanel]; [oPanel setAllowsMultipleSelection: NO]; result = [oPanel runModalForDirectory: [GNUMail currentWorkingPath] file: nil types: nil]; if (result == NSOKButton) { NSArray *fileToOpen; int count; fileToOpen = [oPanel filenames]; count = [fileToOpen count]; if (count > 0) { NSString *aString; aString = [fileToOpen objectAtIndex: 0]; [pathToSoundField setStringValue: aString]; [GNUMail setCurrentWorkingPath: [aString stringByDeletingLastPathComponent]]; } } } // // // - (IBAction) setMessage: (id) sender { FilterMessageWindowController *aFilterMessageWindowController; aFilterMessageWindowController = [[FilterMessageWindowController alloc] initWithWindowNibName: @"FilterMessageWindow"]; [aFilterMessageWindowController setMessageString: [[self filter] actionMessageString]]; [NSApp runModalForWindow: [aFilterMessageWindowController window]]; [[self filter] setActionMessageString: [aFilterMessageWindowController messageString]]; RELEASE(aFilterMessageWindowController); } // // // - (IBAction) criteriaSourceSelectionHasChanged: (id) sender { NSPopUpButton *theCriteriaSourcePopUpButton, *theCriteriaFindOperationPopUpButton; NSTextField *theCriteriaStringField; NSPopUpButton *theCriteriaPopUpButton; FilterCriteria *aFilterCriteria; theCriteriaSourcePopUpButton = sender; if ( theCriteriaSourcePopUpButton == criteriaSourcePopUpButtonA ) { theCriteriaFindOperationPopUpButton = criteriaFindOperationPopUpButtonA; theCriteriaStringField = criteriaStringFieldA; theCriteriaPopUpButton = criteriaPopUpButtonA; aFilterCriteria = [[filter allCriterias] objectAtIndex: 0]; } else if ( theCriteriaSourcePopUpButton == criteriaSourcePopUpButtonB ) { theCriteriaFindOperationPopUpButton = criteriaFindOperationPopUpButtonB; theCriteriaStringField = criteriaStringFieldB; theCriteriaPopUpButton = criteriaPopUpButtonB; aFilterCriteria = [[filter allCriterias] objectAtIndex: 1]; } else { theCriteriaFindOperationPopUpButton = criteriaFindOperationPopUpButtonC; theCriteriaStringField = criteriaStringFieldC; theCriteriaPopUpButton = criteriaPopUpButtonC; aFilterCriteria = [[filter allCriterias] objectAtIndex: 2]; } [theCriteriaSourcePopUpButton synchronizeTitleAndSelectedItem]; // If we have selected To, Cc, To or Cc, From we add a new item in our Address Book if ( [[theCriteriaSourcePopUpButton titleOfSelectedItem] isEqualToString: _(@"To")] || [[theCriteriaSourcePopUpButton titleOfSelectedItem] isEqualToString: _(@"Cc")] || [[theCriteriaSourcePopUpButton titleOfSelectedItem] isEqualToString: _(@"To or Cc")] || [[theCriteriaSourcePopUpButton titleOfSelectedItem] isEqualToString: _(@"From")] ) { if ( ![theCriteriaFindOperationPopUpButton itemWithTitle: _(@"Is in Address Book")] ) { [theCriteriaFindOperationPopUpButton addItemWithTitle: _(@"Is in Address Book")]; [theCriteriaFindOperationPopUpButton addItemWithTitle: _(@"Is in Group")]; } } else { if ( [[theCriteriaFindOperationPopUpButton titleOfSelectedItem] isEqualToString: _(@"Is in Address Book")] ) { [theCriteriaFindOperationPopUpButton selectItemAtIndex: 0]; [theCriteriaFindOperationPopUpButton synchronizeTitleAndSelectedItem]; } // We remove the item, if we need too. if ( [theCriteriaFindOperationPopUpButton itemWithTitle: _(@"Is in Address Book")] ) { [theCriteriaFindOperationPopUpButton removeItemWithTitle: _(@"Is in Address Book")]; [theCriteriaFindOperationPopUpButton removeItemWithTitle: _(@"Is in Group")]; } } if ( [theCriteriaFindOperationPopUpButton indexOfSelectedItem] == 6 ) { // changing away from the string field? in that case, the string // is no longer valid (it's a regular string, not a UID) if([theCriteriaStringField superview]) [aFilterCriteria setCriteriaString: @""]; [theCriteriaStringField removeFromSuperview]; [criteriaBox addSubview: theCriteriaPopUpButton]; [self _setupGroupsPopUpButton: theCriteriaPopUpButton]; [theCriteriaPopUpButton selectItemAtIndex: [theCriteriaPopUpButton indexOfItemWithRepresentedObject: [aFilterCriteria criteriaString]]]; } else if ([theCriteriaFindOperationPopUpButton indexOfSelectedItem] == 5) { [theCriteriaStringField removeFromSuperview]; [theCriteriaPopUpButton removeFromSuperview]; [aFilterCriteria setCriteriaString: @""]; } else { // changing away from the popup? in that case, the string is no // longer valid (it's a UID, not a regular string) if ([theCriteriaPopUpButton superview]) [aFilterCriteria setCriteriaString: @""]; [theCriteriaPopUpButton removeFromSuperview]; [criteriaBox addSubview: theCriteriaStringField]; [theCriteriaStringField setStringValue: [aFilterCriteria criteriaString]]; } // We verify if it's the last item (Expert...) that has been selected if ( [theCriteriaSourcePopUpButton indexOfSelectedItem] == ([theCriteriaSourcePopUpButton numberOfItems] - 1) ) { FilterHeaderEditorWindowController *filterHeaderEditorWindowController; int result; filterHeaderEditorWindowController = [[FilterHeaderEditorWindowController alloc] initWithWindowNibName: @"FilterHeaderEditorWindow"]; [filterHeaderEditorWindowController setHeaders: [aFilterCriteria criteriaHeaders]]; result = [NSApp runModalForWindow: [filterHeaderEditorWindowController window]]; // If "OK" was clicked, we must update our array of headers if ( result == NSRunStoppedResponse ) { [aFilterCriteria setCriteriaHeaders: [NSArray arrayWithArray: [filterHeaderEditorWindowController allHeaders]]]; } RELEASE(filterHeaderEditorWindowController); } } // // // - (IBAction) criteriaFindOperationSelectionHasChanged: (id) sender { NSPopUpButton *theCriteriaFindOperationPopUpButton; NSTextField *theCriteriaStringField; NSPopUpButton *theCriteriaPopUpButton; FilterCriteria *aFilterCriteria; int findOperation; theCriteriaFindOperationPopUpButton = sender; findOperation = [theCriteriaFindOperationPopUpButton indexOfSelectedItem]+1; if ( theCriteriaFindOperationPopUpButton == criteriaFindOperationPopUpButtonA ) { theCriteriaStringField = criteriaStringFieldA; theCriteriaPopUpButton = criteriaPopUpButtonA; aFilterCriteria = [[filter allCriterias] objectAtIndex: 0]; } else if ( theCriteriaFindOperationPopUpButton == criteriaFindOperationPopUpButtonB ) { theCriteriaStringField = criteriaStringFieldB; theCriteriaPopUpButton = criteriaPopUpButtonB; aFilterCriteria = [[filter allCriterias] objectAtIndex: 1]; } else { theCriteriaStringField = criteriaStringFieldC; theCriteriaPopUpButton = criteriaPopUpButtonC; aFilterCriteria = [[filter allCriterias] objectAtIndex: 2]; } if (findOperation == 7) { // changing away from the string field? in that case, the string // is no longer valid (it's a regular string, not a UID) if([theCriteriaStringField superview]) [aFilterCriteria setCriteriaString: @""]; [theCriteriaStringField removeFromSuperview]; [criteriaBox addSubview: theCriteriaPopUpButton]; [self _setupGroupsPopUpButton: theCriteriaPopUpButton]; [theCriteriaPopUpButton selectItemAtIndex: [theCriteriaPopUpButton indexOfItemWithRepresentedObject: [aFilterCriteria criteriaString]]]; } else if (findOperation == 6) { [theCriteriaStringField removeFromSuperview]; [theCriteriaPopUpButton removeFromSuperview]; [aFilterCriteria setCriteriaString: @""]; } else { // changing away from the popup? in that case, the string is no // longer valid (it's a UID, not a regular string) if([theCriteriaPopUpButton superview]) [aFilterCriteria setCriteriaString: @""]; [theCriteriaPopUpButton removeFromSuperview]; [criteriaBox addSubview: theCriteriaStringField]; [theCriteriaStringField setStringValue: [aFilterCriteria criteriaString]]; } } // // access/mutation methods // - (FilterManager *) filterManager { return filterManager; } // // // - (void) setFilterManager: (FilterManager *) theFilterManager { ASSIGN(filterManager, theFilterManager); } // // // - (Filter *) filter { return filter; } // // // - (void) setFilter: (Filter *) theFilter { if (theFilter) { FolderNodePopUpItem *theItem; ASSIGN(filter, theFilter); mustAddFilterToFilterManager = NO; // Description [descriptionField setStringValue: [filter description]]; [activeButton setState: ([filter isActive] ? NSOnState : NSOffState)]; [filterTypeMatrix selectCellAtRow: 0 column: ([filter type] - 1)]; // External program [externalProgramButton setState: ([filter useExternalProgram] ? NSOnState : NSOffState)]; [externalProgramField setStringValue: [filter externalProgramName]]; [externalProgramPopUpButton selectItemAtIndex: ([filter externalProgramOperation] - 1)]; // First criteria [self _initializeCriteriaSourcePopUpButton: criteriaSourcePopUpButtonA criteriaFindOperationPopUpButton: criteriaFindOperationPopUpButtonA criteriaConditionPopUpButton: nil criteriaStringField: criteriaStringFieldA criteriaPopUpButton: criteriaPopUpButtonA usingFilterCriteria: [[filter allCriterias] objectAtIndex: 0]]; // Second criteria [self _initializeCriteriaSourcePopUpButton: criteriaSourcePopUpButtonB criteriaFindOperationPopUpButton: criteriaFindOperationPopUpButtonB criteriaConditionPopUpButton: criteriaConditionPopUpButtonB criteriaStringField: criteriaStringFieldB criteriaPopUpButton: criteriaPopUpButtonB usingFilterCriteria: [[filter allCriterias] objectAtIndex: 1]]; // Third criteria [self _initializeCriteriaSourcePopUpButton: criteriaSourcePopUpButtonC criteriaFindOperationPopUpButton: criteriaFindOperationPopUpButtonC criteriaConditionPopUpButton: criteriaConditionPopUpButtonC criteriaStringField: criteriaStringFieldC criteriaPopUpButton: criteriaPopUpButtonC usingFilterCriteria: [[filter allCriterias] objectAtIndex: 2]]; // Action [matrix selectCellAtRow: [filter action]-1 column: 0]; [actionColorWell setColor: [filter actionColor]]; // We try to select our folder, if it has been deleted (or renamed), we select Inbox. theItem = [Utilities folderNodePopUpItemForURLNameAsString: [filter actionFolderName] usingFolderNodes: allNodes popUpButton: actionFolderNamePopUpButton account: nil]; if (theItem) { [actionFolderNamePopUpButton selectItem: theItem]; } else { NSDebugLog(@"Item not found!"); //FIXME //acctionFolderNamePopUpButton selectItemWithTitle: [[NSUserDefaults standardUserDefaults] //objectForKey: @"INBOXFOLDERNAME"]]; } [actionEMailStringPopUpButton selectItemAtIndex: ([filter actionEMailOperation] - 1)]; [actionEMailStringField setStringValue: [filter actionEMailString]]; [pathToSoundField setStringValue: ([filter pathToSound] ? (id)[filter pathToSound] : (id)@"")]; } else { RELEASE(filter); filter = [[Filter alloc] init]; mustAddFilterToFilterManager = YES; // We set the initial selection of the UI elements [externalProgramPopUpButton selectItemAtIndex: 0]; [criteriaSourcePopUpButtonA selectItemAtIndex: 0]; [criteriaFindOperationPopUpButtonA selectItemAtIndex: 0]; [criteriaConditionPopUpButtonB selectItemAtIndex: 0]; [criteriaSourcePopUpButtonB selectItemAtIndex: 0]; [criteriaFindOperationPopUpButtonB selectItemAtIndex: 0]; [criteriaConditionPopUpButtonC selectItemAtIndex: 0]; [criteriaSourcePopUpButtonC selectItemAtIndex: 0]; [criteriaFindOperationPopUpButtonC selectItemAtIndex: 0]; [actionFolderNamePopUpButton selectItemAtIndex: 0]; [actionEMailStringPopUpButton selectItemAtIndex: 0]; [activeButton setState: NSOnState]; } } @end // // private methods // @implementation FilterEditorWindowController (Private) - (void) _initializeCriteriaSourcePopUpButton: (NSPopUpButton *) theCriteriaSourcePopUpButton criteriaFindOperationPopUpButton: (NSPopUpButton *) theCriteriaFindOperationPopUpButton criteriaConditionPopUpButton: (NSPopUpButton *) theCriteriaConditionPopUpButton criteriaStringField: (NSTextField *) theCriteriaStringField criteriaPopUpButton: (NSPopUpButton *) theCriteriaPopUpButton usingFilterCriteria: (FilterCriteria *) theFilterCriteria { if ( theCriteriaConditionPopUpButton ) { [theCriteriaConditionPopUpButton selectItemAtIndex: ([theFilterCriteria criteriaCondition] - 1)]; } if ( theCriteriaSourcePopUpButton == criteriaSourcePopUpButtonA ) { [theCriteriaSourcePopUpButton selectItemAtIndex: ([theFilterCriteria criteriaSource] - 1)]; } else { [theCriteriaSourcePopUpButton selectItemAtIndex: [theFilterCriteria criteriaSource]]; } // We verify if we need to add the "Is in Address Book" item: TO == 1, CC == 2, TO_OR_CC == 3 // and FROM == 5 switch ( [theFilterCriteria criteriaSource] ) { case 1: case 2: case 3: case 5: [theCriteriaFindOperationPopUpButton addItemWithTitle: _(@"Is in Address Book")]; [theCriteriaFindOperationPopUpButton addItemWithTitle: _(@"Is in Group")]; break; default: break; } [theCriteriaFindOperationPopUpButton selectItemAtIndex: ([theFilterCriteria criteriaFindOperation] - 1)]; if ( [theFilterCriteria criteriaFindOperation] == 7 ) { [theCriteriaStringField removeFromSuperview]; [criteriaBox addSubview: theCriteriaPopUpButton]; [self _setupGroupsPopUpButton: theCriteriaPopUpButton]; [theCriteriaPopUpButton selectItemAtIndex: [theCriteriaPopUpButton indexOfItemWithRepresentedObject: [theFilterCriteria criteriaString]]]; } else { [theCriteriaPopUpButton removeFromSuperview]; [criteriaBox addSubview: theCriteriaStringField]; [theCriteriaStringField setStringValue: [theFilterCriteria criteriaString]]; } } // // // - (void) _setupGroupsPopUpButton: (NSPopUpButton *) thePopUpButton { NSEnumerator *theEnumerator; ABGroup *aGroup; [thePopUpButton removeAllItems]; theEnumerator = [[[ABAddressBook sharedAddressBook] groups] objectEnumerator]; while ((aGroup = [theEnumerator nextObject])) { [thePopUpButton addItemWithTitle: [aGroup valueForProperty: kABGroupNameProperty]]; [thePopUpButton setAutoenablesItems: NO]; [[thePopUpButton itemAtIndex: [thePopUpButton numberOfItems]-1] setRepresentedObject: [aGroup uniqueId]]; } } @end GNUMail/Bundles/Filtering/FilterHeaderEditorWindow.h0100644000014600001460000000234610424672357023171 0ustar monotonemonotone/* ** FilterHeaderEditorWindow.h ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_FilterHeaderEditorWindow #define _GNUMail_H_FilterHeaderEditorWindow #import @interface FilterHeaderEditorWindow : NSWindow { NSTextField *headerField; NSTableView *tableView; } - (void) layoutWindow; - (void) dealloc; // // access/mutation methods // - (NSTextField *) headerField; - (NSTableView *) tableView; @end #endif // _GNUMail_H_FilterHeaderEditorWindow GNUMail/Bundles/Filtering/FilterHeaderEditorWindow.m0100644000014600001460000001036310424672357023174 0ustar monotonemonotone/* ** FilterHeaderEditorWindow.m ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "FilterHeaderEditorWindow.h" #include "Constants.h" #include "LabelWidget.h" @implementation FilterHeaderEditorWindow - (void) dealloc { NSDebugLog(@"FilterHeaderEditorWindow: -dealloc"); RELEASE(headerField); RELEASE(tableView); [super dealloc]; } - (void) layoutWindow { NSButton *removeHeader, *addHeader, *okButton, *cancelButton; NSTableColumn *tableColumn; NSScrollView *scrollView; LabelWidget *headerLabel; // We begin with our table view tableColumn = [[NSTableColumn alloc] initWithIdentifier: @"header"]; AUTORELEASE(tableColumn); [tableColumn setEditable: NO]; [[tableColumn headerCell] setStringValue: _(@"Header")]; [tableColumn setWidth: 240]; tableView = [[NSTableView alloc] initWithFrame: NSMakeRect(10,110,220,225)]; [tableView setDrawsGrid:NO]; [tableView setAllowsColumnSelection: NO]; [tableView setAllowsColumnReordering: NO]; [tableView setAllowsEmptySelection: NO]; [tableView setAllowsMultipleSelection: NO]; [tableView addTableColumn: tableColumn]; [tableView setDataSource: [self windowController]]; [tableView setDelegate: [self windowController]]; scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect(10,110,220,225)]; [scrollView setBorderType: NSBezelBorder]; [scrollView setHasHorizontalScroller:NO]; [scrollView setDocumentView:tableView]; [[self contentView] addSubview: scrollView]; RELEASE(scrollView); // We add our label and our text field headerLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,80,50,TextFieldHeight) label: _(@"Header:") ]; [[self contentView] addSubview: headerLabel]; headerField = [[NSTextField alloc] initWithFrame: NSMakeRect(65,80,165,TextFieldHeight)]; [[self contentView] addSubview: headerField]; // We finish with our four buttons removeHeader = [[NSButton alloc] initWithFrame: NSMakeRect(10,45,105, ButtonHeight)]; [removeHeader setStringValue: _(@"Remove")]; [removeHeader setTarget: [self windowController]]; [removeHeader setAction:@selector(removeHeader:)]; [[self contentView] addSubview: removeHeader]; RELEASE(removeHeader); addHeader = [[NSButton alloc] initWithFrame: NSMakeRect(125,45,105, ButtonHeight)]; [addHeader setStringValue: _(@"Add")]; [addHeader setTarget: [self windowController]]; [addHeader setAction:@selector(addHeader:)]; [[self contentView] addSubview: addHeader]; RELEASE(addHeader); cancelButton = [[NSButton alloc] initWithFrame: NSMakeRect(10,10,105,ButtonHeight)];; [cancelButton setButtonType:NSMomentaryPushButton]; [cancelButton setTitle: _(@"Cancel")]; [cancelButton setTarget: [self windowController]]; [cancelButton setAction: @selector(cancelClicked:) ]; [[self contentView] addSubview: cancelButton]; RELEASE(cancelButton); okButton = [[NSButton alloc] initWithFrame: NSMakeRect(125,10,105,ButtonHeight)]; [okButton setButtonType: NSMomentaryPushButton]; [okButton setKeyEquivalent: @"\r"]; [okButton setImagePosition: NSImageRight]; [okButton setImage: [NSImage imageNamed: @"common_ret"]]; [okButton setAlternateImage: [NSImage imageNamed: @"common_retH"]]; [okButton setTitle: _(@"OK")]; [okButton setTarget: [self windowController]]; [okButton setAction: @selector(okClicked:)]; [[self contentView] addSubview: okButton]; RELEASE(okButton); } // // access/mutation methods // - (NSTextField *) headerField { return headerField; } - (NSTableView *) tableView { return tableView; } @end GNUMail/Bundles/Filtering/FilterHeaderEditorWindowController.h0100644000014600001460000000331410424672357025231 0ustar monotonemonotone/* ** FilterHeaderEditorWindowController.h ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_FilterHeaderEditorWindowController #define _GNUMail_H_FilterHeaderEditorWindowController #import @interface FilterHeaderEditorWindowController: NSWindowController { // Outlets IBOutlet NSTextField *headerField; IBOutlet NSTableView *tableView; // Other ivar NSMutableArray *allHeaders; } - (id) initWithWindowNibName: (NSString *) windowNibName; - (void) dealloc; // // delegate methods // - (void) windowWillClose: (NSNotification *) theNotification; - (void) windowDidLoad; // // action methods // - (IBAction) okClicked: (id) sender; - (IBAction) cancelClicked: (id) sender; - (IBAction) addHeader : (id) sender; - (IBAction) removeHeader: (id) sender; // // access/mutation methods // - (NSMutableArray *) allHeaders; - (void) setHeaders: (NSArray *) theHeaders; @end #endif // _GNUMail_H_FilterHeaderEditorWindowController GNUMail/Bundles/Filtering/FilterHeaderEditorWindowController.m0100644000014600001460000000766310424672357025251 0ustar monotonemonotone/* ** FilterHeaderEditorWindowController.m ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "FilterHeaderEditorWindowController.h" #include "Constants.h" #ifndef MACOSX #include "FilterHeaderEditorWindow.h" #endif #include @implementation FilterHeaderEditorWindowController // // // - (id) initWithWindowNibName: (NSString *) windowNibName { #ifdef MACOSX self = [super initWithWindowNibName: windowNibName]; #else FilterHeaderEditorWindow *filterHeaderEditorWindow; filterHeaderEditorWindow = [[FilterHeaderEditorWindow alloc] initWithContentRect: NSMakeRect(300,300,240,345) styleMask: NSTitledWindowMask backing: NSBackingStoreRetained defer: NO]; self = [super initWithWindow: filterHeaderEditorWindow]; [filterHeaderEditorWindow layoutWindow]; [filterHeaderEditorWindow setDelegate: self]; // We link our outlets headerField = [filterHeaderEditorWindow headerField]; tableView = [filterHeaderEditorWindow tableView]; RELEASE(filterHeaderEditorWindow); #endif [[self window] setTitle: _(@"Add a header")]; return self; } - (void) dealloc { NSDebugLog(@"FilterHeaderEditorWindowController: -dealloc"); // Cocoa bug? #ifdef MACOSX [tableView setDataSource: nil]; #endif RELEASE(allHeaders); [super dealloc]; } // // delegate methods // - (id) tableView: (NSTableView *) aTableView objectValueForTableColumn: (NSTableColumn *) aTableColumn row:(int) rowIndex { return [allHeaders objectAtIndex: rowIndex]; } - (void) tableViewSelectionDidChange:(NSNotification *) aNotification { if ([tableView selectedRow] >= 0) { [headerField setStringValue: [allHeaders objectAtIndex: [tableView selectedRow]]]; } } - (int) numberOfRowsInTableView: (NSTableView *) aTableView { return [allHeaders count]; } - (void) windowWillClose: (NSNotification *) theNotification { NSDebugLog(@"FilterHeaderEditorWindowController: -windowWillClose"); } - (void) windowDidLoad { allHeaders = [[NSMutableArray alloc] init]; [super windowDidLoad]; } // // action methods // - (IBAction) okClicked: (id) sender { [NSApp stopModal]; [self close]; } - (IBAction) cancelClicked: (id) sender { [NSApp stopModalWithCode: NSRunAbortedResponse]; [self close]; } - (IBAction) addHeader: (id) sender { if ( [[[headerField stringValue] stringByTrimmingWhiteSpaces] length] > 0 ) { [allHeaders addObject: [[headerField stringValue] stringByTrimmingWhiteSpaces]]; [tableView reloadData]; [headerField setStringValue: @""]; } else { NSBeep(); } } - (IBAction) removeHeader: (id) sender { if ([tableView selectedRow] >= 0) { id obj = [allHeaders objectAtIndex: [tableView selectedRow]]; if ( obj ) { [allHeaders removeObject: obj]; [tableView reloadData]; [tableView setNeedsDisplay: YES]; } } else { NSBeep(); } } // // access/mutation methods // - (NSMutableArray *) allHeaders { return allHeaders; } - (void) setHeaders: (NSArray *) theHeaders { if ( theHeaders ) { [allHeaders addObjectsFromArray: theHeaders]; [tableView reloadData]; } } @end GNUMail/Bundles/Filtering/FilterMessageWindow.h0100644000014600001460000000233010424672357022207 0ustar monotonemonotone/* ** FilterMessageWindow.h ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_FilterMessageWindow #define _GNUMail_H_FilterMessageWindow #import @class LabelWidget; @interface FilterMessageWindow : NSWindow { LabelWidget *label; NSScrollView *scrollView; NSTextView *textView; } - (void) layoutWindow; // // access/mutation methods // - (NSTextField *) label; - (NSTextView *) textView; @end #endif // _GNUMail_H_FilterMessageWindow GNUMail/Bundles/Filtering/FilterMessageWindow.m0100644000014600001460000000676710424672357022236 0ustar monotonemonotone/* ** FilterMessageWindow.m ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "FilterMessageWindow.h" #include "Constants.h" #include "LabelWidget.h" @implementation FilterMessageWindow - (void) dealloc { NSDebugLog(@"FilterMessageWindow: -dealloc"); RELEASE(label); RELEASE(textView); RELEASE(scrollView); [super dealloc]; } - (void) layoutWindow { NSButton *cancelButton, *okButton; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,225,490,TextFieldHeight) label: _(@"Text to include before original message:")]; [label setAutoresizingMask: NSViewMinYMargin]; [[self contentView] addSubview: label]; RETAIN(label); scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect(5,40,490,180)]; textView = [[NSTextView alloc] initWithFrame: [[scrollView contentView] frame]]; [textView setTextContainerInset: NSMakeSize(5,5)]; [textView setBackgroundColor: [NSColor whiteColor]]; [textView setRichText: NO]; [textView setUsesFontPanel: NO]; [textView setHorizontallyResizable: NO]; [textView setVerticallyResizable: YES]; [textView setMinSize: NSMakeSize (0, 0)]; [textView setMaxSize: NSMakeSize (1E7, 1E7)]; [textView setAutoresizingMask: NSViewHeightSizable|NSViewWidthSizable]; [[textView textContainer] setContainerSize: NSMakeSize([[scrollView contentView] frame].size.width, 1E7)]; [[textView textContainer] setWidthTracksTextView: YES]; [textView setEditable: YES]; [scrollView setDocumentView: textView]; [scrollView setHasHorizontalScroller: YES]; [scrollView setHasVerticalScroller: NO]; [scrollView setBorderType: NSBezelBorder]; [scrollView setAutoresizingMask: (NSViewWidthSizable|NSViewHeightSizable)]; [[self contentView] addSubview: scrollView]; cancelButton = [[NSButton alloc] initWithFrame: NSMakeRect(315,5,75,ButtonHeight)]; [cancelButton setTitle: _(@"Cancel")]; [cancelButton setTarget: [self windowController]]; [cancelButton setAction: @selector(cancelClicked:)]; [cancelButton setAutoresizingMask: NSViewMinXMargin]; [[self contentView] addSubview: cancelButton]; RELEASE(cancelButton); okButton = [[NSButton alloc] initWithFrame: NSMakeRect(400,5,75,ButtonHeight)]; [okButton setTitle: _(@"OK")]; [okButton setKeyEquivalent: @"\r"]; [okButton setImagePosition: NSImageRight]; [okButton setImage: [NSImage imageNamed: @"common_ret"]]; [okButton setAlternateImage: [NSImage imageNamed: @"common_retH"]]; [okButton setTarget: [self windowController]]; [okButton setAction: @selector(okClicked:)]; [okButton setAutoresizingMask: NSViewMinXMargin]; [[self contentView] addSubview: okButton]; RELEASE(okButton); } // // access/mutation methods // - (NSTextField *) label { return label; } - (NSTextView *) textView { return textView; } @end GNUMail/Bundles/Filtering/FilterMessageWindowController.h0100644000014600001460000000305210424672357024255 0ustar monotonemonotone/* ** FilterMessageWindowController.h ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_FilterMessageWindowController #define _GNUMail_H_FilterMessageWindowController #import @interface FilterMessageWindowController: NSWindowController { // Outlets IBOutlet NSTextView *textView; // Other ivar NSString *messageString; } - (id) initWithWindowNibName: (NSString *) windowNibName; - (void) dealloc; // // delegate methods // - (void) windowWillClose: (NSNotification *) theNotification; // // action methods // - (IBAction) cancelClicked: (id) sender; - (IBAction) okClicked: (id) sender; // // access/mutation methods // - (NSString *) messageString; - (void) setMessageString: (NSString*) theMessageString; @end #endif // _GNUMail_H_FilterMessageWindowController GNUMail/Bundles/Filtering/FilterMessageWindowController.m0100644000014600001460000000503710424672357024267 0ustar monotonemonotone/* ** FilterMessageWindowController.m ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "FilterMessageWindowController.h" #include "Constants.h" #ifndef MACOSX #include "FilterMessageWindow.h" #endif @implementation FilterMessageWindowController - (id) initWithWindowNibName: (NSString *) windowNibName { #ifdef MACOSX self = [super initWithWindowNibName: windowNibName]; #else FilterMessageWindow *filterMessageWindow; filterMessageWindow = [[FilterMessageWindow alloc] initWithContentRect:NSMakeRect(100,100,500,250) styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSResizableWindowMask) backing: NSBackingStoreBuffered defer: NO]; self = [super initWithWindow: filterMessageWindow]; [filterMessageWindow layoutWindow]; [filterMessageWindow setDelegate: self]; // We set out outlets textView = [filterMessageWindow textView]; RELEASE(filterMessageWindow); #endif [[self window] setTitle: @""]; return self; } - (void) dealloc { NSDebugLog(@"FilterMessageWindowController: -dealloc"); RELEASE(messageString); [super dealloc]; } // // delegate methods // - (void) windowWillClose: (NSNotification *) theNotification { // do nothing } - (void) windowDidLoad { } // // action methods // - (IBAction) cancelClicked: (id) sender { [NSApp stopModal]; [self close]; } - (IBAction) okClicked: (id) sender { [self setMessageString: [textView string]]; [NSApp stopModalWithCode: NSRunAbortedResponse]; [self close]; } // // access/mutation methods // - (NSString *) messageString { return messageString; } - (void) setMessageString: (NSString*) theMessageString { RETAIN(theMessageString); RELEASE(messageString); messageString = theMessageString; [textView setString: messageString]; } @end GNUMail/Bundles/Filtering/Filtering.tiff0100644000014600001460000006663410506157372020726 0ustar monotonemonotoneII*00pI0$(12*R>I/ipm ' 'Adobe Photoshop 7.02006:09:25 01:04:19 4294967295 256 256 1 72/1 72/1 2 2005-02-14T21:04:06-06:00 2005-02-15T12:43:10-06:00 2005-02-15T12:43:10-06:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:b459bf35-4c61-11db-8c81-d26e35c2cbb3 application/vnd.adobe.photoshop 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:00:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:00:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM50000nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIMZ8BIM 800JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?svѮu|6s҈4 G%m @ₓnHO9aҋzn6SsD@v}Q]C# l.ΩmmsgfַzsۣwWYHTh][ kн>y_UT=ULYNkFW)_׳>Xej-ϱ]}?gEWΧzSX]ϻwkzK͹LtW}QUjxA>mUf#%۬vܒf[m.Ķnc` S}a;3~Xs@ݻZB}4:9nLVhaOc:m"ѡtC2Z=\lUK{Oo?XP86~Z~m}Ofo>}\yI6ڭc%iikU[޴̬*Tƹ՟5w~Ml?wwwמ:Vُf #[G湭EKͮю_WWc~}Xj?;?zQf_ 6oѭNw%p+b2{w׋Aq>}[WWOïkk^5oc^ywr״59Ivxq]?8BIM!UAdobe PhotoshopAdobe Photoshop 7.08BIMmoptHTargetSettingsMttCObjc NativeQuadBl longGrn longRd longTrnsbool addMetadatabool fileFormatenum FileFormatPNG24 interlacedbool noMatteColorbooltransparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong8BIM-msetnullVersionlong8BIMms4w &&%k̊XHHH**)wHGF)('vHHG)('vHHG)('vHHG)('vHGF)('vHGFпe$b e%h(h(j+ m/c Ma))(vHGFϿg(h)s8$|E$|E6UQl%~GI_*))vHGF̻g(i*t9&}G&~H9XUo(ID]*))vHGFb!k,u:)I(J=ZZs.N*{H*))vHGFcw_k-u;*J*J?\]u4Tg(̾*))vHGFdz k-e$k,t:'~I'I-M'~Hu; o2o3l.i*h(g'k,t9&}G&}G9WTn3Rg&h)j, m0o3p4 zB)J,Mj+0L*))vGGE l.#|E7U0Ox?q5s8 n1k,i)f'g&k,t:'~H&~H:XVp5Tf%g'j*l.p4r7q6&~H3R6U m00M**)vIHGPhi)+K@^:X!zCs9u:p4 m/j+f$e%g'k-u;)I)J>[[t8Vf'c g'k- n1r7u;t9/O=[>\r7%zE`u+**wPLNԽ^o4 l/2RHdB_)Jw=x?s7 n0j,g& }Bp k.j+u;)J*K?\\u0PB[kn,h(l.p3u:x?w>6TFbGcw=/N~[.H&'%xU>aJ"~E"yAs9o4=ZPkIe-Lx?!{Cu:p3k-k)X)7-EOGg(k,t:'~H&~H:XVp/P%]9FBB:h%j* m/r5w>"{Dy@y@r6 n0j,h(g'[# g6c%l,t9&}G&}G9WSm:Z.9f'g'i*l-o2u:y@+KNj ]+ Jw6z<n,n,m*l)l)l)l)n)l): n^gb$k,t9&}G&}G9WSm;[7 JqN%s+l)l)l)l)l)m,o- r1BIg...---.-0  Et,m*f'f&k,t9&}G&}G9WSm;Ye%u9{8Q1(.------.( E;m)h'h) m/t9%}G&}G9WQkFb7VFdr7n9l)h( l/t9&}G%}G ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_FilteringView #define _GNUMail_H_FilteringView #import @interface FilteringView : NSView { @public NSTableColumn *activeColumn; NSTableColumn *rulesColumn; NSScrollView *scrollView; NSTableView *tableView; NSButton *add, *delete, *duplicate, *edit; NSButton *moveUp, *moveDown; @private id _parent; } - (id) initWithParent: (id) theParent; - (void) layoutView; @end #endif // _GNUMail_H_FilteringView GNUMail/Bundles/Filtering/FilteringView.m0100644000014600001460000001040410424672357021051 0ustar monotonemonotone/* ** FilteringView.m ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "FilteringView.h" #include "FilteringViewController.h" #include "Constants.h" #include "LabelWidget.h" @implementation FilteringView // // // - (id) initWithParent: (id) theParent { self = [super init]; _parent = theParent; return self; } // // // - (void) dealloc { RELEASE(rulesColumn); RELEASE(activeColumn); RELEASE(tableView); [super dealloc]; } // // // - (void) layoutView { LabelWidget *label; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,195,430,35) label: _(@"In this panel, you can add Filters used by GNUMail to perform\nactions when sending or receiving mails.")]; [self addSubview: label]; rulesColumn = [[NSTableColumn alloc] initWithIdentifier: @"rules"]; [rulesColumn setEditable: NO]; [[rulesColumn headerCell] setStringValue: _(@"Rules")]; [rulesColumn setMinWidth: 275]; activeColumn = [[NSTableColumn alloc] initWithIdentifier: @"active"]; [activeColumn setEditable: YES]; [[activeColumn headerCell] setStringValue: _(@"Active")]; [activeColumn setMinWidth: 50]; tableView = [[NSTableView alloc] initWithFrame: NSMakeRect(5,40,430,145)]; [tableView setDrawsGrid:NO]; [tableView setAllowsColumnSelection: NO]; [tableView setAllowsColumnReordering: NO]; [tableView setAllowsEmptySelection: NO]; [tableView setAllowsMultipleSelection: NO]; [tableView addTableColumn: rulesColumn]; [tableView addTableColumn: activeColumn]; [tableView setDataSource: _parent]; [tableView setDelegate: _parent]; [tableView setTarget: _parent]; [tableView setDoubleAction: @selector(edit:)]; scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect(5,40,430,145)]; [scrollView setBorderType: NSBezelBorder]; [scrollView setHasHorizontalScroller: NO]; [scrollView setHasVerticalScroller: YES]; [scrollView setDocumentView: tableView]; [self addSubview: scrollView]; RELEASE(scrollView); add = [[NSButton alloc] initWithFrame: NSMakeRect(5,5,75,ButtonHeight)]; [add setTitle: _(@"Add")]; [add setTarget: _parent]; [add setAction: @selector(add:)]; [self addSubview: add]; RELEASE(add); edit = [[NSButton alloc] initWithFrame: NSMakeRect(85,5,75,ButtonHeight)]; [edit setTitle: _(@"Edit")]; [edit setTarget: _parent]; [edit setAction: @selector(edit:)]; [self addSubview: edit]; RELEASE(edit); delete = [[NSButton alloc] initWithFrame: NSMakeRect(165,5,75,ButtonHeight)]; [delete setTitle: _(@"Delete")]; [delete setTarget: _parent]; [delete setAction: @selector(delete:)]; [self addSubview: delete]; RELEASE(delete); duplicate = [[NSButton alloc] initWithFrame: NSMakeRect(245,5,75,ButtonHeight)]; [duplicate setTitle: _(@"Duplicate")]; [duplicate setTarget: _parent]; [duplicate setAction: @selector(duplicate:)]; [self addSubview: duplicate]; RELEASE(duplicate); moveUp = [[NSButton alloc] initWithFrame: NSMakeRect(330,5,50,ButtonHeight)]; [moveUp setTitle: @""]; [moveUp setImagePosition: NSImageOnly]; [moveUp setImage: [NSImage imageNamed: @"sort_up.tiff"]]; [moveUp setTarget: _parent]; [moveUp setAction: @selector(moveUp:)]; [self addSubview: moveUp]; RELEASE(moveUp); moveDown = [[NSButton alloc] initWithFrame: NSMakeRect(385,5,50,ButtonHeight)]; [moveDown setTitle: @""]; [moveDown setImagePosition: NSImageOnly]; [moveDown setImage: [NSImage imageNamed: @"sort_down.tiff"]]; [moveDown setTarget: _parent]; [moveDown setAction: @selector(moveDown:)]; [self addSubview: moveDown]; RELEASE(moveDown); } @end GNUMail/Bundles/Filtering/FilteringViewController.h0100644000014600001460000000353610424672357023120 0ustar monotonemonotone/* ** FilteringViewController.h ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_FilteringViewController #define _GNUMail_H_FilteringViewController #import #include "PreferencesModule.h" @class FilterManager; @interface FilteringViewController : NSObject { // Outlets IBOutlet id view; IBOutlet NSTableView *tableView; IBOutlet NSTableColumn *rulesColumn; IBOutlet NSTableColumn *activeColumn; IBOutlet NSButton *add; IBOutlet NSButton *delete; IBOutlet NSButton *edit; IBOutlet NSButton *duplicate; // Other ivars FilterManager *filterManager; } // // action methods // - (IBAction) add: (id) sender; - (IBAction) delete: (id) sender; - (IBAction) duplicate: (id) sender; - (IBAction) edit: (id) sender; - (IBAction) moveDown: (id) sender; - (IBAction) moveUp: (id) sender; // // other methods // - (NSNumber *) editFilter: (NSNumber *) theIndex; @end // // Custom NSButton cell // @interface ExtendedButtonCell : NSButtonCell { NSColor* color; } - (void) setColor: (NSColor *) theColor; @end #endif // _GNUMail_H_FilteringViewController GNUMail/Bundles/Filtering/FilteringViewController.m0100644000014600001460000003133310601435445023111 0ustar monotonemonotone/* ** FilteringViewController.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "FilteringViewController.h" #include "Constants.h" #include "Filter.h" #include "FilterEditorWindowController.h" #include "FilterManager.h" #ifndef MACOSX #include "FilteringView.h" #endif static FilteringViewController *singleInstance = nil; static NSString *FilterPboardType = @"FilterPboardType"; static NSArray *draggedFilters; // // // @implementation FilteringViewController - (id) initWithNibName: (NSString *) theName { ExtendedButtonCell *cell; self = [super init]; filterManager = [FilterManager singleInstance]; #ifdef MACOSX if (![NSBundle loadNibNamed: theName owner: self]) { AUTORELEASE(self); return nil; } RETAIN(view); rulesColumn = [tableView tableColumnWithIdentifier: @"rules"]; [tableView setTarget: self]; [tableView setDoubleAction: @selector(edit:)]; #else // We link our view view = [[FilteringView alloc] initWithParent: self]; [view layoutView]; // We link our outlets tableView = ((FilteringView *)view)->tableView; rulesColumn = ((FilteringView *)view)->rulesColumn; activeColumn = ((FilteringView *)view)->activeColumn; add = ((FilteringView *)view)->add; delete = ((FilteringView *)view)->delete; duplicate = ((FilteringView *)view)->duplicate; edit = ((FilteringView *)view)->edit; #endif cell = [[ExtendedButtonCell alloc] init]; [cell setButtonType: NSSwitchButton]; [cell setImagePosition: NSImageOnly]; [cell setControlSize: NSSmallControlSize]; [[tableView tableColumnWithIdentifier: @"active"] setDataCell: cell]; RELEASE(cell); // We set the intercell spacing of our table view [tableView setIntercellSpacing: NSZeroSize]; // We register for dragged types [tableView registerForDraggedTypes: [NSArray arrayWithObject: FilterPboardType]]; // We get our defaults for this panel [self initializeFromDefaults]; return self; } // // // - (void) dealloc { singleInstance = nil; // Cocoa bug? #ifdef MACOSX [tableView setDataSource: nil]; #endif RELEASE(view); [super dealloc]; } // // Data Source methods // - (int) numberOfRowsInTableView: (NSTableView *)aTableView { return [[filterManager filters] count]; } // // // - (id) tableView: (NSTableView *)aTableView objectValueForTableColumn: (NSTableColumn *)aTableColumn row: (int)rowIndex { Filter *aFilter; aFilter = [[filterManager filters] objectAtIndex: rowIndex]; if ( aTableColumn == rulesColumn ) { return [aFilter description]; } return [NSNumber numberWithBool: [aFilter isActive]]; } // // // - (void) tableView: (NSTableView *) aTableView setObjectValue: (id) anObject forTableColumn: (NSTableColumn *) aTableColumn row: (int) rowIndex { Filter *aFilter; aFilter = [[filterManager filters] objectAtIndex: rowIndex]; if (![aFilter isActive]) { [aFilter setIsActive: YES]; } else { [aFilter setIsActive: NO]; } } // // // - (void) tableView: (NSTableView *) aTableView willDisplayCell: (id) aCell forTableColumn: (NSTableColumn *) aTableColumn row: (int) rowIndex { Filter *aFilter; // Don't use the color on a selected row. if ([aTableView selectedRow] == rowIndex) { if ([aCell isKindOfClass: [NSTextFieldCell class]]) { [aCell setDrawsBackground: NO]; } else { [aCell setColor: nil]; } return; } aFilter = [[filterManager filters] objectAtIndex: rowIndex]; if ([aCell isKindOfClass: [NSTextFieldCell class]]) { if ([aFilter action] == SET_COLOR) { [aCell setDrawsBackground: YES]; [aCell setBackgroundColor: [aFilter actionColor]]; } else { [aCell setDrawsBackground: NO]; } } else { if ([aFilter action] == SET_COLOR) { [aCell setColor: [aFilter actionColor]]; } else { [aCell setColor: nil]; } } } // // NSTableView Drag and drop // - (BOOL) tableView: (NSTableView *) aTableView writeRows: (NSArray *) rows toPasteboard: (NSPasteboard *) pboard { NSMutableArray *propertyList; int i, row; draggedFilters = RETAIN(rows); propertyList = [[NSMutableArray alloc] initWithCapacity: [rows count]]; for (i = 0; i < [rows count]; i++) { Filter *aFilter; row = [[rows objectAtIndex: i] intValue]; aFilter = [[filterManager filterAtIndex: row] copy]; [propertyList addObject: [NSArchiver archivedDataWithRootObject: aFilter]]; RELEASE(aFilter); } [pboard declareTypes: [NSArray arrayWithObject: FilterPboardType] owner: self]; [pboard setPropertyList: propertyList forType: FilterPboardType]; RELEASE(propertyList); return YES; } // // NSTableView Drag and drop // - (NSDragOperation) tableView: (NSTableView *) aTableView validateDrop: (id ) info proposedRow: (int) row proposedDropOperation: (NSTableViewDropOperation) operation { if ([info draggingSourceOperationMask] & NSDragOperationGeneric) { return NSDragOperationGeneric; } else if ([info draggingSourceOperationMask] & NSDragOperationCopy) { return NSDragOperationCopy; } else { return NSDragOperationNone; } } // // NSTableView Drag and drop // - (BOOL) tableView: (NSTableView *) aTableView acceptDrop: (id ) info row: (int) row dropOperation: (NSTableViewDropOperation) operation { NSDragOperation dragOperation; NSArray *propertyList; int i, j, count; if ([info draggingSourceOperationMask] & NSDragOperationGeneric) { dragOperation = NSDragOperationGeneric; } else if ([info draggingSourceOperationMask] & NSDragOperationCopy) { dragOperation = NSDragOperationCopy; } else { dragOperation = NSDragOperationNone; } propertyList = [[info draggingPasteboard] propertyListForType: FilterPboardType]; count = [propertyList count]; for ( i = count - 1; i >= 0; i-- ) { Filter *aFilter; aFilter = (Filter*)[NSUnarchiver unarchiveObjectWithData: [propertyList objectAtIndex: i]]; [filterManager addFilter: aFilter atIndex: row]; } if (dragOperation == NSDragOperationGeneric) { for ( i = count - 1; i >= 0; i-- ) { j = [[draggedFilters objectAtIndex: i] intValue]; if (j >= row) { j += count; } [filterManager removeFilter: [filterManager filterAtIndex: j]]; } } [aTableView reloadData]; return YES; } // // action methods // - (IBAction) add: (id) sender { FilterEditorWindowController *filterEditorWindowController; int result; filterEditorWindowController = [[FilterEditorWindowController alloc] initWithWindowNibName: @"FilterEditorWindow"]; [filterEditorWindowController setFilterManager: filterManager]; [filterEditorWindowController setFilter: nil]; result = [NSApp runModalForWindow: [filterEditorWindowController window]]; if (result == NSRunStoppedResponse) { [tableView reloadData]; } // We reorder our Preferences window to the front [[view window] orderFrontRegardless]; } // // // - (IBAction) delete: (id) sender { int choice; if ([tableView numberOfSelectedRows] == 0 || [tableView numberOfSelectedRows] > 1) { NSBeep(); return; } choice = NSRunAlertPanel(_(@"Delete..."), _(@"Are you sure you want to delete this filter?"), _(@"Cancel"), // default _(@"Yes"), // alternate nil); // If we delete it... if (choice == NSAlertAlternateReturn) { [filterManager removeFilter: [filterManager filterAtIndex:[tableView selectedRow]]]; [tableView reloadData]; } } // // // - (IBAction) duplicate: (id) sender { if ([tableView numberOfSelectedRows] == 0 || [tableView numberOfSelectedRows] > 1) { NSBeep(); return; } else { Filter *aFilter; aFilter = [[filterManager filterAtIndex: [tableView selectedRow]] copy]; [aFilter setDescription: [NSString stringWithFormat: @"%@ (copy)", [aFilter description]]]; [filterManager addFilter: aFilter]; RELEASE(aFilter); [tableView reloadData]; } } // // // - (IBAction) edit: (id) sender { int result; if ([tableView numberOfSelectedRows] == 0 || [tableView numberOfSelectedRows] > 1) { NSBeep(); return; } result = [[self editFilter: [NSNumber numberWithInt: [tableView selectedRow]]] intValue]; if (result == NSRunStoppedResponse) { [tableView reloadData]; } // We reorder our Preferences window to the front [[view window] orderFrontRegardless]; } // // // - (IBAction) moveDown: (id) sender { if ([tableView numberOfSelectedRows] == 0 || [tableView numberOfSelectedRows] > 1 || [tableView selectedRow] == ([[filterManager filters] count] - 1)) { NSBeep(); return; } else { Filter *aFilter; int index; index = [tableView selectedRow]; aFilter = [filterManager filterAtIndex: index]; RETAIN(aFilter); [filterManager removeFilter: aFilter]; [filterManager addFilter: aFilter atIndex: (index + 1)]; [tableView reloadData]; [tableView selectRow: (index + 1) byExtendingSelection: NO]; RELEASE(aFilter); } } // // // - (IBAction) moveUp: (id) sender { if ([tableView numberOfSelectedRows] == 0 || [tableView numberOfSelectedRows] > 1 || [tableView selectedRow] == 0) { NSBeep(); return; } else { Filter *aFilter; int index; index = [tableView selectedRow]; aFilter = [filterManager filterAtIndex: index]; RETAIN(aFilter); [filterManager removeFilter: aFilter]; [filterManager addFilter: aFilter atIndex: (index - 1)]; [tableView reloadData]; [tableView selectRow: (index - 1) byExtendingSelection: NO]; RELEASE(aFilter); } } // // other methods // - (NSNumber *) editFilter: (NSNumber *) theIndex { Filter *aFilter; aFilter = [filterManager filterAtIndex: [theIndex intValue]]; FilterEditorWindowController *filterEditorWindowController; filterEditorWindowController = [[FilterEditorWindowController alloc] initWithWindowNibName: @"FilterEditorWindow"]; [[filterEditorWindowController window] setTitle: _(@"Edit a filter")]; [filterEditorWindowController setFilterManager: filterManager]; [filterEditorWindowController setFilter: aFilter]; return [NSNumber numberWithInt: [NSApp runModalForWindow: [filterEditorWindowController window]]]; } // // // - (void) updateView { [tableView reloadData]; } // // access methods // - (NSImage *) image { NSBundle *aBundle; aBundle = [NSBundle bundleForClass: [self class]]; return AUTORELEASE([[NSImage alloc] initWithContentsOfFile: [aBundle pathForResource: @"Filtering" ofType: @"tiff"]]); } - (NSString *) name { return _(@"Filtering"); } - (NSView *) view { return view; } // // // - (BOOL) hasChangesPending { return YES; } // // // - (void) initializeFromDefaults { } // // // - (void) saveChanges { [filterManager synchronize]; [[NSNotificationCenter defaultCenter] postNotificationName: FiltersHaveChanged object: nil userInfo: nil]; } // // class methods // + (id) singleInstance { if (!singleInstance) { singleInstance = [[FilteringViewController alloc] initWithNibName: @"FilteringView"]; } return singleInstance; } @end // // Custom NSButton cell // @implementation ExtendedButtonCell - (void) dealloc { TEST_RELEASE(color); [super dealloc]; } - (id) copyWithZone: (NSZone *) theZone { ExtendedButtonCell *cell; cell = [[ExtendedButtonCell alloc] init]; [cell setColor: color]; return cell; } - (void) setColor: (NSColor *) theColor { ASSIGN(color, theColor); } - (void) drawInteriorWithFrame: (NSRect) theRect inView: (NSView *) theView { if (color) { [color set]; NSRectFill(theRect); } [super drawInteriorWithFrame: theRect inView: theView]; } @end GNUMail/Bundles/Filtering/GNUmakefile0100644000014600001460000000206710613064242020161 0ustar monotonemonotoneinclude $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Filtering BUNDLE_EXTENSION = .prefs BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/GNUMail Filtering_RESOURCE_FILES = Filtering.tiff Filtering_OBJC_FILES = \ FilteringView.m \ FilteringViewController.m \ FilterEditorWindow.m \ FilterEditorWindowController.m \ FilterHeaderEditorWindow.m \ FilterHeaderEditorWindowController.m \ FilterMessageWindow.m \ FilterMessageWindowController.m Filtering_HEADERS = \ FilteringView.h \ FilteringViewController.h \ FilterEditorWindowController.h \ FilterHeaderEditorWindow.h \ FilterHeaderEditorWindowController.h \ FilterMessageWindow.h \ FilterMessageWindowController.h Filtering_PRINCIPAL_CLASS = \ FilteringViewController ADDITIONAL_OBJCFLAGS = -Wall -Wno-import ADDITIONAL_INCLUDE_DIRS += -I../../Framework/GNUMail ADDITIONAL_LIB_DIRS += -L../../Framework/GNUMail/GNUMail.framework/Versions/Current/$(GNUSTEP_TARGET_LDIR) ADDITIONAL_GUI_LIBS += -lAddresses -lGNUMail -lPantomime include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble GNUMail/Bundles/Fonts/0040755000014600001460000000000010424710553015256 5ustar monotonemonotoneGNUMail/Bundles/Fonts/English.lproj/0040755000014600001460000000000010424672357020005 5ustar monotonemonotoneGNUMail/Bundles/Fonts/English.lproj/FontsExpertView.nib/0040755000014600001460000000000010424672357023670 5ustar monotonemonotoneGNUMail/Bundles/Fonts/English.lproj/FontsExpertView.nib/classes.nib0100644000014600001460000000200510424672357026011 0ustar monotonemonotone{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {checkboxClicked = id; selectionInPopUpHasChanged = id; }; CLASS = FontsViewController; LANGUAGE = ObjC; OUTLETS = { checkbox = NSButton; currentView = id; expertView = id; headerNamePopUp = NSPopUpButton; headerNameSizePopUp = NSPopUpButton; headerValuePopUp = NSPopUpButton; headerValueSizePopUp = NSPopUpButton; messagePopUp = NSPopUpButton; messageSizePopUp = NSPopUpButton; plainTextMessagePopUp = NSPopUpButton; plainTextMessageSizePopUp = NSPopUpButton; previewLabel = NSTextField; previewTextField = NSTextField; view = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }GNUMail/Bundles/Fonts/English.lproj/FontsExpertView.nib/info.nib0100644000014600001460000000106310424672357025312 0ustar monotonemonotone IBDocumentLocation 12 75 356 240 0 0 1280 1002 IBEditorPositions 5 416 497 448 380 0 0 1280 1002 IBFramework Version 291.0 IBOpenObjects 5 IBSystem Version 6G30 GNUMail/Bundles/Fonts/English.lproj/FontsExpertView.nib/objects.nib0100644000014600001460000002035610424672357026016 0ustar monotonemonotone typedstream@NSIBObjectDataNSObjectNSCustomObject)@@NSString+FontsViewControlleriU NSMenuItemNSMenu̔i@@@NSMutableString OtherViewsNSMutableArrayNSArray i@@IIi@@@@:i@8NSCustomResource)NSImageNSMenuCheckmarkNSMenuMixedState_popUpItemAction:NSPopUpButtonCell1NSMenuItemCell҄ NSButtonCell? NSActionCellNSCellAiiA@@@@NSFont$[36c]LucidaGrandef ci: NSPopUpButton̄NSButton NSControl)NSView) NSResponder NSCustomView) @@@@ffffffff NSTextField-^^icc@NSTextFieldCell>@ Header name:c@@NSColor@@@System controlColor­ff?*­ÄcontrolTextColor­:%ff@ Header value:ɹƆJAA@Content:̹Ɔ 2@(Font used when displaying a message for:ϹƆA҄ ssii@@@@@K@$LucidaGrande  OtherViews׆Item3Ӓi@i=AܾK@օ OtherViewsItem3ݒ=A征K@ OtherViews膅Item3撅= ((@Size:Ɔ ((@Size:Ɔ ###@Size:Ɔ MNNAK@օ OtherViews 891011121416182024283248= MNNAK@օ OtherViews 891011121416182024283248=  11,Use fixed-width font for plain text messages8HK@օ OtherViewsBItem3?=C MsNNAGK@օ OtherViews L8HL9HL10HL11HL12HL14HL16HL18HL20HL24HL28HL32HK48H=L %yff@Plain text font:hƆ #y##@Size:kƆ Rjj@!Font preview for the header name:nƆ%11Q@@This is an example...q­ÄtextBackgroundColor­­Ä textColorȆRRNSView NSResponder MNNK@օ48= 10111214161820242832}9>'/+8UL qҖ 5C>_LBC̹3ܖؖcLҹ]L}KLYL)GeLaL!ᖁQLSLh1#[LnϹLG%ܹɹWLk幖-OLV؄ PopUpList NSTextField2 NSMenuItem17' NSMenuItem13+ NSMenuItem15܄NSPopUpButton2[ NSMenuItem158 NSButton4>NSPopUpButton4C PopUpList NSMenuItem2 NSMenuItem15NSPopUpButton32a NSMenuItem18 NSMenuItem15 NSMenuItem21 NSMenuItem183 NSMenuItem19 NSMenuItem13ᄘ PopUpListNSTextField241 NSMenuItem19c NSMenuItem19脘 NSMenuItem2 NSMenuItem NSMenuItem16e NSMenuItem191- NSMenuItem16] NSMenuItem16儘NSPopUpButton1NSPopUpButton31nNSTextField211 NSMenuItem NSMenuItem16̄ NSTextField23 NSMenuItem14τ NSTextField22O NSMenuItemL PopUpList NSMenuItem12 NSMenuItem191 NSMenuItem1B NSMenuItem2U NSMenuItem12View NSMenuItem191) NSMenuItem14 NSMenuItem11Y NSMenuItem14 NSMenuItem12S NSMenuItem11 PopUpList NSMenuItem175 NSMenuItem191턘 NSTextField24 NSMenuItem18q NSTextField_ NSMenuItem17 PopUpList҄ NSPopUpButton NSMenuItem19! NSMenuItem1NSPopUpButton3 NSMenuItem13% NSMenuItem12GNSPopUpButton33鄘 PopUpList NSMenuItem14 NSMenuItem2Q NSMenuItem1h NSTextField25kNSTextField2421ׄ NSMenuItem2󄘘NSTextField242K NSMenuItem2} NSMenuItem2 PopUpListW NSMenuItem13Ʉ NSTextField21 NSMenuItem NSMenuItem18 NSMenuItem11/ NSMenuItem17 File's Owner NSMenuItem1# NSMenuItem11 NSMutableSetNSSetINSNibOutletConnectorτNSNibConnector҄headerNamePopUpﻕheaderNameSizePopUpﻕ儘headerValuePopUpﻕheaderValueSizePopUpﻕ8checkboxﻕ܄ messagePopUpﻕmessageSizePopUpﻕ>plainTextMessagePopUpﻕGplainTextMessageSizePopUpNSNibControlConnectorρ8checkboxClicked:ﻕqpreviewTextFieldﻕn previewLabelҕselectionInPopUpHasChanged:selectionInPopUpHasChanged:啄selectionInPopUpHasChanged:selectionInPopUpHasChanged:ܕselectionInPopUpHasChanged:selectionInPopUpHasChanged:>selectionInPopUpHasChanged:GselectionInPopUpHasChanged:ﻕ expertViewk@iP"ǁRǁev}K+ǁ|DǁTǁLǼǁ~9_f>gǁ %ǁH$ǁ4<6-XFǁǁǁLp?/Gj,%bǁ}kyCǁn= AdzSUx>ǁ 0cuanǁ QmhoǛMǁIdǁ B]SqYYk1:'[Or5V57Kl8ecE/WBi1`WhǹOǁ+a)\ǁ{3_ǁQqǕ;ǁ[wǙJǁU@ǁ ǁN!^ǁCtǁzǁG8ǁǁ]s#ZIBCocoaFrameworkGNUMail/Bundles/Fonts/English.lproj/FontsView.nib/0040755000014600001460000000000010424672357022500 5ustar monotonemonotoneGNUMail/Bundles/Fonts/English.lproj/FontsView.nib/classes.nib0100644000014600001460000000205210424672357024623 0ustar monotonemonotone{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {checkboxClicked = id; selectionInPopUpHasChanged = id; }; CLASS = FontsViewController; LANGUAGE = ObjC; OUTLETS = { checkbox = NSButton; headerNamePopUp = NSPopUpButton; headerNameSizePopUp = NSPopUpButton; headerValuePopUp = NSPopUpButton; headerValueSizePopUp = NSPopUpButton; messageListPopUp = NSPopUpButton; messageListSizePopUp = NSPopUpButton; messagePopUp = NSPopUpButton; messageSizePopUp = NSPopUpButton; plainTextMessagePopUp = NSPopUpButton; plainTextMessageSizePopUp = NSPopUpButton; previewLabel = NSTextField; previewTextField = NSTextField; view = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }GNUMail/Bundles/Fonts/English.lproj/FontsView.nib/info.nib0100644000014600001460000000116510424672357024125 0ustar monotonemonotone IBDocumentLocation 9 50 356 240 0 0 1024 746 IBEditorPositions 5 163 40 448 420 0 0 1024 746 IBFramework Version 291.0 IBLockedObjects 5 IBOpenObjects 5 IBSystem Version 6L60 GNUMail/Bundles/Fonts/English.lproj/FontsView.nib/keyedobjects.nib0100644000014600001460000004342010424672357025645 0ustar monotonemonotonebplist00gY$archiverX$versionX$objectsT$top_NSKeyedArchiver (,-348<V]g  #$)*+/123579=?EILMRSTW#2Z[]`afgj#2mnptuwx{|w~w22222222222222222222 2 2222222"%&+,-0234C2F2I2L2O2R2U2X2[2^2a2d2g2jmnqruv|}#222222222222222w  #2"#%()./03267F2I2L2O2R2U2X2[2^2a2d2g2j2mpqwstwx|~01F234051267410380259:;9111<=>5?@9A:BCD19=ECF@BG1=AAHBCA2CIJ@B::K2@5LMNO94PQ:3543=242AR3@2SB=21T120CUVWY      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdU$null  !"#$%&']NSFontManagerV$classYNSNextOid_NSVisibleWindowsVNSRoot\NSOidsValues_NSClassesValues]NSConnections]NSNamesValues]NSObjectsKeysZNSOidsKeys]NSClassesKeys[NSFramework[NSNamesKeys_NSObjectsValuesƀ><Ё́=;ρ )*+[NSClassName_FontsViewController./01Z$classnameX$classes^NSCustomObject02XNSObject_IBCocoaFramework 567ZNS.objects./9:\NSMutableSet9;2UNSSet 5=>>?@ABCDEFGHIJKLMNOPQRSTU āƁȁ WXYZ[\WNSLabel]NSDestinationXNSSource ^_`)abcdef_NSNextResponderZNSSubviews[NSExtension[NSFrameSize  5=hijklmnopqrstuvwxyz{|}~ !%)BMW[_cǀPTXc ^\\VNSCellXNSvFlagsWNSFrameYNSEnabled[NSSuperview _{{45, 320}, {94, 17}} i_NSBackgroundColorYNSSupport]NSControlView\NSCellFlags2[NSTextColor[NSCellFlagsZNSContents@\Header name: VNSSizeVNSNameXNSfFlags"AP\LucidaGrande./VNSFont2 WNSColor]NSCatalogName[NSColorName\NSColorSpaceVSystem\controlColor WNSWhiteI0.666667./2 _controlTextColor B0./_NSTextFieldCell2\NSActionCell./[NSTextField2\%NSTextFieldYNSControlVNSView[NSResponder ^\\_{{37, 280}, {102, 17}} jр ]Header value: ^\\#"_{{77, 240}, {62, 17}} k؀$XContent: ^\\'&_{{17, 345}, {271, 17}} l߀(_(Font used when displaying a message for: ^\\A+*_{{149, 314}, {128, 26}} m_NSPreferredEdge_NSKeyEquivalent_NSAlternateContents_NSPeriodicDelayZNSMenuItem_NSArrowPosition_NSUsesItemFromMenu_NSAlternateImage]NSButtonFlags]NSAltersState_NSPeriodicIntervalVNSMenu^NSButtonFlags2@/-0,@AK1  YNS.string.P./ _NSMutableString 2XNSString   ]NSMnemonicLoc\NSMixedImage_NSKeyEquivModMaskWNSStateWNSTitleXNSTargetXNSActionZNSKeyEquivYNSOnImage;82:34  !"[NSMenuItems?=2./@A_NSPopUpButtonCell@BCD2^NSMenuItemCell\NSButtonCell]%NSButtonCell./FG]NSPopUpButtonFH2XNSButton ^\JK\DC_{{149, 234}, {128, 26}} NOnPQFEGH    UJVQIJ  XYLK 6 5=\P ^\^_\ON_{{149, 274}, {128, 26}} bocdePQ@R   h^ieST  klVU 6 5=oc ^\qrs\Y X_{{286, 320}, {40, 17}} pvZUSize: ^\yrz\]\_{{286, 280}, {40, 17}} q}^ ^\r\a`_{{291, 240}, {35, 17}} rb ^\r\ed_{{333, 314}, {78, 26}} sgfhi    jk  mlQ8 6 5=nqtwz}  opQ9  rsR10  uvR11  xyR12  {|R13  ~R14  R16  R18  R20  R24  R28  R32  R48 ^\r\_{{333, 274}, {78, 26}} t      ꀟ 6 5=                           €   !ŀ ^\#r$\ɀ_{{333, 234}, {78, 26}} '(u)*ˀʀ̀    .#/*΀  12р 6 5=5)6789:;<=>?@ABҀՀ؀ۀހ  D#E*Ӏ  G#H*ր  J#K*ـ  M#N*܀  P#Q*߀  S#T*  V#W*  Y#Z*  \#]*  _#`*  b#c*  e#f*  h#i* ^\kl\_{{17, 70}, {362, 17}} vop@_!Font preview for the header name: ^\st\_{{29, 13}, {262, 49}} wxwoyz{_NSDrawsBackgroundQ@_This is an example... ~_textBackgroundColor B1 YtextColor ^\\_{{18, 197}, {314, 18}} x HADGJM  *+  -.  01  34  67  9:  <=  ?@  BC  EF  HI  KL  NO ^\r\RQ_{{291, 169}, {35, 17}} | S ^\  \VU_{{17, 108}, {125, 17}} }W_Message list font: ^\\ZY_{{149, 103}, {128, 26}} ~\[]^    _`   !ba 6 5=$ ^\&r'\ed_{{333, 103}, {78, 26}} *+,-gfhi    1&2-jk  45ml 6 5=8,9:;<=>?@ABCDEnqtwz}  G&H-op  J&K-rs  M&N-uv  P&Q-xy  S&T-{|  V&W-~  Y&Z-  \&]-  _&`-  b&c-  e&f-  h&i-  k&l- ^\nro\_{{291, 109}, {35, 17}} rZ{428, 378}./uv\NSCustomViewu2Tview./yz_NSNibOutletConnectory{2^NSNibConnector WXYZ}m_headerNamePopUp WXYZs_headerNameSizePopUp WXYZo_headerValuePopUp WXYZt_headerValueSizePopUp WXYZn\messagePopUp WXYZu_messageSizePopUp WXYZw_previewTextField WXYZv\previewLabel WXYm_selectionInPopUpHasChanged:./_NSNibControlConnector{2 WXYs WXYo WXYt WXYn WXYu WXYZz_plainTextMessagePopUp WXYZ{_plainTextMessageSizePopUp WXYZxXcheckbox WXYx_checkboxClicked: WXYz WXY{ WXYZ~_messageListPopUp WXYZ_messageListSizePopUp 5ͯnm=<A-r>e}68,*QkpCy=)9w:?P{ovA~7:s<itB@j?;q|zDu;cx@l>B\nE9./<<2 5nz\*--\\*~o\**-un\\-\-*-\**Qt\\\\*s\*-\*\\-*\--\\\{-\*e\-\-*\-*m 5ïjm=A<A-wrk6o,*Qep;{y8)9??}v~7:s<i\B@jP;>qlztDuCcx@|>BnE9 5ůj      !"#$%&'()*+,-./сҁӁԁՁցׁ؁فځہ܁݁ށ߁      !"#$%&'()*+,-./0123456789:\NSMenuItem13YPopUpList[NSMenuItem2\NSMenuItem16]NSMenuItem191\NSMenuItem17^NSTextField242_NSTextField24211]NSTextField23[NSMenuItem1\NSMenuItem19^NSPopUpButton1]NSTextField24\NSMenuItem14_NSPopUpButton321^NSTextField231\NSMenuItem12\NSMenuItem11\NSMenuItem18\NSMenuItem15_NSTextField2311_NSPopUpButton3211^NSTextField211_NSPopUpButton211^NSPopUpButton3\NSTextField2TView]NSTextField21^NSTextField241]NSTextField22_NSPopUpButton21_NSPopUpButton31_NSPopUpButton32\File's OwnerYNSButton4_NSTextField2421^NSPopUpButton2 57 57 5Xp;CS:@q:Q|7@uDEm?yswUTAivA=8AczLDklBxG*IJ-e?P?KjNM>@rB9;R}BEP~FC<t\o6nH=<,9{>QO) 5Z[\]^_`abcdefghijklmnopqrstuvwxyz{|}~?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Á5T\Bz6ZO_YD"J9E{IFXbV1N8Gc$0%,`H C:AMW7;|]}SL4>^/P?<@aRUQ[+=d./ef^NSIBObjectDatae2hi]IB.objectdata#,5:LQ&4;EX_l~  ')+AJU^mr{  !$'*-0369<?BEHYaox{~     " $ & ( * , . 0 2 4 6 9 < ? B E H K N Q n u ~  # / : < > @ E G L N [ l s z    ' 1 3 < A V X Z m z }    4 U W e  % ' R o q s u w (3EZm{ %.7dr!#%'/AJ]dx .=LYgp~ "+4acertv )VXZgikt}@B_ac|$&(*,5>kmo|~#%'*SUWZCEGJsuwz /136SUWp )FHJLNPRTVXZ\^`=?Ajln "KMOxz|*,.02;Dqsu%')RTV 357`bd135Mnsu     5 J M P f s v !! ! !!!!!!!N!W!c!f!i!r!{!!!!!!!!!!"""1"N"Q"T"n"""""""### ####&#/#2#O#R#U#n#######$$$ $$$$&$/$L$O$R$U$X$[$^$a$d$g$j$m$p$s$$$$$$$$%%)%,%/%X%[%^%%%%%%%%%&&&&C&F&I&r&u&x&&&&&&&&&''/'2'O'R'U'n'''''''(0(3(6(9(<(E(N({(~((((((((((()0)3)6)9)<)E)N){)~))))))))))))))))))))****B*E*H*q*t*w*******+++-+0+3+\+_+b+++++++++,,,,C,F,I,f,i,l,,,,,,,,,,,---"-4-E-H-^-o-r----------. . ..0.3.@.Q.T.W.u.~...........////-/>/A/]/n/q/z//////////0000$0'11111222333333333333333333333334444 4 4444444"4%4(4+4.4144474:4=4@4C4F4I4L4O4R4U4X4[4^4a4d4g4j4m4p4s4v4y4|4444444444444444444444444444444444444444445555*585E5T5g5u555555555666 646C6V6e6r6w666666667777"7+8:8C9R9U9X9[9^9a9d9g9j9m9p9s9v9y9|9999999999999999999999999999999999999999999:::: : :::::::!:$:':*:-:0:3:6:9:<:?:B:E:H:K:N:Q:T:W:Z:]:`:c:f:i:l:o:r:u:x:{:~:::::::::::::::::::::::::::::::::::::::::::::::;;;;;; ; ;;;;;;;;;; ;";$;&;(;*;,;.;0;2;4;6;8;:;<;>;@;B;D;F;H;J;L;N;P;R;T;V;X;Z;\;^;`;b;d;f;h;j;l;n;p;r;t;v;x;z;|;~;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<< <j<GNUMail/Bundles/Fonts/FontsView.h0100644000014600001460000000275110424672357017366 0ustar monotonemonotone/* ** FontsExpertView.h ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_FontsView #define _GNUMail_H_FontsView #import @class LabelWidget; @interface FontsView : NSView { @public NSPopUpButton *headerNamePopUp; NSPopUpButton *headerNameSizePopUp; NSPopUpButton *headerValuePopUp; NSPopUpButton *headerValueSizePopUp; NSPopUpButton *messagePopUp; NSPopUpButton *messageSizePopUp; NSButton *checkbox; NSPopUpButton *plainTextMessagePopUp; NSPopUpButton *plainTextMessageSizePopUp; LabelWidget *previewLabel; NSTextField *previewTextField; @private id parent; } - (id) initWithParent: (id) theParent; - (void) layoutView; @end #endif // _GNUMail_H_FontsView GNUMail/Bundles/Fonts/FontsView.m0100644000014600001460000002304210424672357017367 0ustar monotonemonotone/* ** FontsView.m ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "FontsView.h" #include "Constants.h" #include "LabelWidget.h" // // // @implementation FontsView - (id) initWithParent: (id) theParent { self = [super init]; parent = theParent; return self; } // // // - (void) dealloc { RELEASE(headerNamePopUp); RELEASE(headerNameSizePopUp); RELEASE(headerValuePopUp); RELEASE(headerValueSizePopUp); RELEASE(messagePopUp); RELEASE(messageSizePopUp); RELEASE(checkbox); RELEASE(plainTextMessagePopUp); RELEASE(plainTextMessageSizePopUp); RELEASE(previewTextField); [super dealloc]; } // // // - (void) layoutView { LabelWidget *headerNameLabel, *headerValueLabel, *messageLabel, *plainTextMessageLabel; LabelWidget *label, *headerNameSizeLabel, *headerValueSizeLabel, *messageSizeLabel, *plainTextMessageSizeLabel; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(5, 215, 300, TextFieldHeight) label: _(@"Font used when displaying a message for:")]; [self addSubview: label]; // // Header name // headerNameLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(5, 185, 130, TextFieldHeight) label: _(@"Header name:") alignment: NSRightTextAlignment]; [self addSubview: headerNameLabel]; headerNamePopUp = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(150, 185, 150, ButtonHeight)]; [headerNamePopUp setAutoenablesItems: NO]; [headerNamePopUp setTarget: parent]; [headerNamePopUp setAction: @selector(selectionInPopUpHasChanged:)]; [self addSubview: headerNamePopUp]; headerNameSizeLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(310, 185, 40, TextFieldHeight) label: _(@"Size:")]; [self addSubview: headerNameSizeLabel]; headerNameSizePopUp = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(350, 185, 50, ButtonHeight)]; [headerNameSizePopUp setAutoenablesItems: NO]; [headerNameSizePopUp addItemWithTitle: @"8"]; [headerNameSizePopUp addItemWithTitle: @"9"]; [headerNameSizePopUp addItemWithTitle: @"10"]; [headerNameSizePopUp addItemWithTitle: @"11"]; [headerNameSizePopUp addItemWithTitle: @"12"]; [headerNameSizePopUp addItemWithTitle: @"13"]; [headerNameSizePopUp addItemWithTitle: @"14"]; [headerNameSizePopUp addItemWithTitle: @"16"]; [headerNameSizePopUp addItemWithTitle: @"18"]; [headerNameSizePopUp addItemWithTitle: @"20"]; [headerNameSizePopUp addItemWithTitle: @"24"]; [headerNameSizePopUp addItemWithTitle: @"28"]; [headerNameSizePopUp addItemWithTitle: @"32"]; [headerNameSizePopUp addItemWithTitle: @"48"]; [headerNameSizePopUp setTarget: parent]; [headerNameSizePopUp setAction: @selector(selectionInPopUpHasChanged:)]; [self addSubview: headerNameSizePopUp]; // // Header value // headerValueLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(5, 155, 130, TextFieldHeight) label: _(@"Header value:") alignment: NSRightTextAlignment]; [self addSubview: headerValueLabel]; headerValuePopUp = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(150, 155, 150, ButtonHeight)]; [headerValuePopUp setAutoenablesItems: NO]; [headerValuePopUp setTarget: parent]; [headerValuePopUp setAction: @selector(selectionInPopUpHasChanged:)]; [self addSubview: headerValuePopUp]; headerValueSizeLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(310, 155, 40, TextFieldHeight) label: _(@"Size:")]; [self addSubview: headerValueSizeLabel]; headerValueSizePopUp = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(350, 155, 50, ButtonHeight)]; [headerValueSizePopUp setAutoenablesItems: NO]; [headerValueSizePopUp addItemWithTitle: @"8"]; [headerValueSizePopUp addItemWithTitle: @"9"]; [headerValueSizePopUp addItemWithTitle: @"10"]; [headerValueSizePopUp addItemWithTitle: @"11"]; [headerValueSizePopUp addItemWithTitle: @"12"]; [headerValueSizePopUp addItemWithTitle: @"13"]; [headerValueSizePopUp addItemWithTitle: @"14"]; [headerValueSizePopUp addItemWithTitle: @"16"]; [headerValueSizePopUp addItemWithTitle: @"18"]; [headerValueSizePopUp addItemWithTitle: @"20"]; [headerValueSizePopUp addItemWithTitle: @"24"]; [headerValueSizePopUp addItemWithTitle: @"28"]; [headerValueSizePopUp addItemWithTitle: @"32"]; [headerValueSizePopUp addItemWithTitle: @"48"]; [headerValueSizePopUp setTarget: parent]; [headerValueSizePopUp setAction: @selector(selectionInPopUpHasChanged:)]; [self addSubview: headerValueSizePopUp]; // // Content of message // messageLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(0, 125, 135, TextFieldHeight) label: _(@"Content of message:") alignment: NSRightTextAlignment]; [self addSubview: messageLabel]; messagePopUp = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(150, 125, 150, ButtonHeight)]; [messagePopUp setAutoenablesItems: NO]; [messagePopUp setTarget: parent]; [messagePopUp setAction: @selector(selectionInPopUpHasChanged:)]; [self addSubview: messagePopUp]; messageSizeLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(310, 125, 40, TextFieldHeight) label: _(@"Size:")]; [self addSubview: messageSizeLabel]; messageSizePopUp = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(350, 125, 50, ButtonHeight)]; [messageSizePopUp setAutoenablesItems: NO]; [messageSizePopUp addItemWithTitle: @"8"]; [messageSizePopUp addItemWithTitle: @"9"]; [messageSizePopUp addItemWithTitle: @"10"]; [messageSizePopUp addItemWithTitle: @"11"]; [messageSizePopUp addItemWithTitle: @"12"]; [messageSizePopUp addItemWithTitle: @"13"]; [messageSizePopUp addItemWithTitle: @"14"]; [messageSizePopUp addItemWithTitle: @"16"]; [messageSizePopUp addItemWithTitle: @"18"]; [messageSizePopUp addItemWithTitle: @"20"]; [messageSizePopUp addItemWithTitle: @"24"]; [messageSizePopUp addItemWithTitle: @"28"]; [messageSizePopUp addItemWithTitle: @"32"]; [messageSizePopUp addItemWithTitle: @"48"]; [messageSizePopUp setTarget: parent]; [messageSizePopUp setAction: @selector(selectionInPopUpHasChanged:)]; [self addSubview: messageSizePopUp]; // Fixed width for plain messages checkbox = [[NSButton alloc] initWithFrame: NSMakeRect(5,95,300,ButtonHeight)]; [checkbox setButtonType: NSSwitchButton]; [checkbox setBordered: NO]; [checkbox setTitle: _(@"Use fixed-width font for plain text messages")]; [checkbox setTarget: parent]; [checkbox setAction: @selector(checkboxClicked:)]; [self addSubview: checkbox]; plainTextMessageLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(5, 70, 130, TextFieldHeight) label: _(@"Plain text font:") alignment: NSRightTextAlignment]; [self addSubview: plainTextMessageLabel]; plainTextMessagePopUp = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(150, 70, 150, ButtonHeight)]; [plainTextMessagePopUp setAutoenablesItems: NO]; [plainTextMessagePopUp setTarget: parent]; [plainTextMessagePopUp setAction: @selector(selectionInPopUpHasChanged:)]; [self addSubview: plainTextMessagePopUp]; plainTextMessageSizeLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(310, 70, 40, TextFieldHeight) label: _(@"Size:")]; [self addSubview: plainTextMessageSizeLabel]; plainTextMessageSizePopUp = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(350, 70, 50, ButtonHeight)]; [plainTextMessageSizePopUp setAutoenablesItems: NO]; [plainTextMessageSizePopUp addItemWithTitle: @"8"]; [plainTextMessageSizePopUp addItemWithTitle: @"9"]; [plainTextMessageSizePopUp addItemWithTitle: @"10"]; [plainTextMessageSizePopUp addItemWithTitle: @"11"]; [plainTextMessageSizePopUp addItemWithTitle: @"12"]; [plainTextMessageSizePopUp addItemWithTitle: @"13"]; [plainTextMessageSizePopUp addItemWithTitle: @"14"]; [plainTextMessageSizePopUp addItemWithTitle: @"16"]; [plainTextMessageSizePopUp addItemWithTitle: @"18"]; [plainTextMessageSizePopUp addItemWithTitle: @"20"]; [plainTextMessageSizePopUp addItemWithTitle: @"24"]; [plainTextMessageSizePopUp addItemWithTitle: @"28"]; [plainTextMessageSizePopUp addItemWithTitle: @"32"]; [plainTextMessageSizePopUp addItemWithTitle: @"48"]; [plainTextMessageSizePopUp setTarget: parent]; [plainTextMessageSizePopUp setAction: @selector(selectionInPopUpHasChanged:)]; [self addSubview: plainTextMessageSizePopUp]; previewLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(5, 45, 250, TextFieldHeight) label: _(@"Font preview for the header name:")]; [self addSubview: previewLabel]; previewTextField = [[NSTextField alloc] initWithFrame: NSMakeRect(5,0,295,40)]; [previewTextField setStringValue: _(@"This is an example...")]; [previewTextField setEditable: NO]; [previewTextField setSelectable: NO]; [previewTextField setBezeled: YES]; [previewTextField setDrawsBackground: YES]; [previewTextField setBackgroundColor: [NSColor controlBackgroundColor]]; [self addSubview: previewTextField]; } @end GNUMail/Bundles/Fonts/FontsViewController.h0100644000014600001460000000374410424672357021435 0ustar monotonemonotone/* ** FontsViewController.h ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_FontsViewController #define _GNUMail_H_FontsViewController #import #include "PreferencesModule.h" @interface FontsViewController : NSObject { // Outlets IBOutlet id view; IBOutlet NSPopUpButton *headerNamePopUp; IBOutlet NSPopUpButton *headerNameSizePopUp; IBOutlet NSPopUpButton *headerValuePopUp; IBOutlet NSPopUpButton *headerValueSizePopUp; IBOutlet NSPopUpButton *messagePopUp; IBOutlet NSPopUpButton *messageSizePopUp; IBOutlet NSButton *checkbox; IBOutlet NSPopUpButton *plainTextMessagePopUp; IBOutlet NSPopUpButton *plainTextMessageSizePopUp; #ifdef MACOSX IBOutlet NSPopUpButton *messageListPopUp; IBOutlet NSPopUpButton *messageListSizePopUp; #endif IBOutlet NSTextField *previewLabel; IBOutlet NSTextField *previewTextField; } // // action methods // - (IBAction) checkboxClicked: (id) sender; - (IBAction) selectionInPopUpHasChanged: (id) sender; @end // // FontsViewController's private interface // @interface FontsViewController (Private) - (void) _initializePopUpButtons; - (void) _synchronizePopUpButtons; @end #endif // _GNUMail_H_FontsViewController GNUMail/Bundles/Fonts/FontsViewController.m0100644000014600001460000003126510601435446021432 0ustar monotonemonotone/* ** FontsViewController.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "FontsViewController.h" #include "Constants.h" #include "NSFont+Extensions.h" #ifndef MACOSX #include "FontsView.h" #endif static FontsViewController *singleInstance = nil; // // // @implementation FontsViewController - (id) initWithNibName: (NSString *) theName { self = [super init]; #ifdef MACOSX if ( ![NSBundle loadNibNamed: theName owner: self] ) { AUTORELEASE(self); return nil; } RETAIN(view); #else // We link our view view = [[FontsView alloc] initWithParent: self]; [view layoutView]; headerNamePopUp = ((FontsView *)view)->headerNamePopUp; headerNameSizePopUp = ((FontsView *)view)->headerNameSizePopUp; headerValuePopUp = ((FontsView *)view)->headerValuePopUp; headerValueSizePopUp = ((FontsView *)view)->headerValueSizePopUp; messagePopUp = ((FontsView *)view)->messagePopUp; messageSizePopUp = ((FontsView *)view)->messageSizePopUp; checkbox = ((FontsView *)view)->checkbox; plainTextMessagePopUp = ((FontsView *)view)->plainTextMessagePopUp; plainTextMessageSizePopUp = ((FontsView *)view)->plainTextMessageSizePopUp; previewLabel = (NSTextField *)((FontsView *)view)->previewLabel; previewTextField = ((FontsView *)view)->previewTextField; #endif // We get our defaults for this panel [self _initializePopUpButtons]; [self initializeFromDefaults]; return self; } // // // - (void) dealloc { NSDebugLog(@"FontsViewController: -dealloc"); singleInstance = nil; RELEASE(view); [super dealloc]; } // // action methods // - (IBAction) checkboxClicked: (id) sender { if ( [checkbox state] == NSOnState ) { [plainTextMessagePopUp setEnabled: YES]; [plainTextMessageSizePopUp setEnabled: YES]; } else { [plainTextMessagePopUp setEnabled: NO]; [plainTextMessageSizePopUp setEnabled: NO]; } } // // // - (IBAction) selectionInPopUpHasChanged: (id) sender { NSString *aLabel, *aFontName; NSFont *aFont; int aSize, aTrait; if ( ![sender isKindOfClass: [NSPopUpButton class]] ) { return; } [self _synchronizePopUpButtons]; if (sender == headerNamePopUp || sender == headerNameSizePopUp) { aLabel = _(@"Font preview for the header name:"); aFontName = [headerNamePopUp titleOfSelectedItem]; aSize = [[headerNameSizePopUp titleOfSelectedItem] intValue]; aTrait = NSBoldFontMask; } else if (sender == headerValuePopUp || sender == headerValueSizePopUp) { aLabel = _(@"Font preview for the header value:"); aFontName = [headerValuePopUp titleOfSelectedItem]; aSize = [[headerValueSizePopUp titleOfSelectedItem] intValue]; aTrait = NSUnboldFontMask; } else if (sender == messagePopUp || sender == messageSizePopUp) { aLabel = _(@"Font preview for the content of message:"); aFontName = [messagePopUp titleOfSelectedItem]; aSize = [[messageSizePopUp titleOfSelectedItem] intValue]; aTrait = NSUnboldFontMask; } #ifdef MACOSX else if (sender == messageListPopUp || sender == messageListSizePopUp) { aLabel = _(@"Font preview for the message list:"); aFontName = [messageListPopUp titleOfSelectedItem]; aSize = [[messageListSizePopUp titleOfSelectedItem] intValue]; aTrait = NSUnboldFontMask; } #endif else { aLabel = _(@"Font preview for the plain text:"); aFontName = [plainTextMessagePopUp titleOfSelectedItem]; aSize = [[plainTextMessageSizePopUp titleOfSelectedItem] intValue]; aTrait = NSFixedPitchFontMask; } [previewLabel setStringValue: aLabel]; aFont = [NSFont fontFromFamilyName: aFontName trait: aTrait size: aSize]; [previewTextField setFont: aFont]; [previewLabel setNeedsDisplay: YES]; [previewTextField setNeedsDisplay: YES]; } // // access methods // - (NSImage *) image { NSBundle *aBundle; aBundle = [NSBundle bundleForClass: [self class]]; return AUTORELEASE([[NSImage alloc] initWithContentsOfFile: [aBundle pathForResource: @"fonts" ofType: @"tiff"]]); } // // // - (NSString *) name { return _(@"Fonts"); } // // // - (NSView *) view { return view; } // // // - (BOOL) hasChangesPending { return YES; } // // // - (void) initializeFromDefaults { int aFontSize; #ifdef MACOSX aFontSize = 13; #else aFontSize = 0; #endif // // Header name // if ( [[NSUserDefaults standardUserDefaults] objectForKey: @"HEADER_NAME_FONT_NAME"] ) { [headerNamePopUp selectItemWithTitle: [[NSUserDefaults standardUserDefaults] stringForKey: @"HEADER_NAME_FONT_NAME"]]; [headerNameSizePopUp selectItemWithTitle: [[NSUserDefaults standardUserDefaults] stringForKey: @"HEADER_NAME_FONT_SIZE"]]; } else { NSFont *aFont; aFont = [NSFont systemFontOfSize: aFontSize]; [headerNamePopUp selectItemWithTitle: [aFont familyName]]; [headerNameSizePopUp selectItemWithTitle: [NSString stringWithFormat: @"%d", (int)[aFont pointSize]]]; } // // Header value // if ( [[NSUserDefaults standardUserDefaults] objectForKey: @"HEADER_VALUE_FONT_NAME"] ) { [headerValuePopUp selectItemWithTitle: [[NSUserDefaults standardUserDefaults] stringForKey: @"HEADER_VALUE_FONT_NAME"]]; [headerValueSizePopUp selectItemWithTitle: [[NSUserDefaults standardUserDefaults] stringForKey: @"HEADER_VALUE_FONT_SIZE"]]; } else { NSFont *aFont; aFont = [NSFont systemFontOfSize: aFontSize]; [headerValuePopUp selectItemWithTitle: [aFont familyName]]; [headerValueSizePopUp selectItemWithTitle: [NSString stringWithFormat: @"%d", (int)[aFont pointSize]]]; } // // Message font // if ( [[NSUserDefaults standardUserDefaults] objectForKey: @"MESSAGE_FONT_NAME"] ) { [messagePopUp selectItemWithTitle: [[NSUserDefaults standardUserDefaults] stringForKey: @"MESSAGE_FONT_NAME"]]; [messageSizePopUp selectItemWithTitle: [[NSUserDefaults standardUserDefaults] stringForKey: @"MESSAGE_FONT_SIZE"]]; } else { NSFont *aFont; aFont = [NSFont systemFontOfSize: aFontSize]; [messagePopUp selectItemWithTitle: [aFont familyName]]; [messageSizePopUp selectItemWithTitle: [NSString stringWithFormat: @"%d", (int)[aFont pointSize]]]; } // // Plain text message font // if ( [[NSUserDefaults standardUserDefaults] objectForKey: @"USE_FIXED_FONT_FOR_TEXT_PLAIN_MESSAGES"] && [[NSUserDefaults standardUserDefaults] integerForKey: @"USE_FIXED_FONT_FOR_TEXT_PLAIN_MESSAGES"] == NSOnState ) { [checkbox setState: NSOnState]; [plainTextMessagePopUp setEnabled: YES]; [plainTextMessageSizePopUp setEnabled: YES]; } else { [checkbox setState: NSOffState]; [plainTextMessagePopUp setEnabled: NO]; [plainTextMessageSizePopUp setEnabled: NO]; } if ( [[NSUserDefaults standardUserDefaults] objectForKey: @"PLAIN_TEXT_MESSAGE_FONT_NAME"] ) { [plainTextMessagePopUp selectItemWithTitle: [[NSUserDefaults standardUserDefaults] stringForKey: @"PLAIN_TEXT_MESSAGE_FONT_NAME"]]; [plainTextMessageSizePopUp selectItemWithTitle: [[NSUserDefaults standardUserDefaults] stringForKey: @"PLAIN_TEXT_MESSAGE_FONT_SIZE"]]; } else { NSFont *aFont; aFont = [NSFont systemFontOfSize: aFontSize]; [plainTextMessagePopUp selectItemWithTitle: [aFont familyName]]; [plainTextMessageSizePopUp selectItemWithTitle: [NSString stringWithFormat: @"%d", (int)[aFont pointSize]]]; } #ifdef MACOSX // // Message list font // if ( [[NSUserDefaults standardUserDefaults] objectForKey: @"MESSAGE_LIST_FONT_NAME"] ) { [messageListPopUp selectItemWithTitle: [[NSUserDefaults standardUserDefaults] stringForKey: @"MESSAGE_LIST_FONT_NAME"]]; [messageListSizePopUp selectItemWithTitle: [[NSUserDefaults standardUserDefaults] stringForKey: @"MESSAGE_LIST_FONT_SIZE"]]; } else { NSFont *aFont; aFont = [NSFont systemFontOfSize: aFontSize]; [messageListPopUp selectItemWithTitle: [aFont familyName]]; [messageListSizePopUp selectItemWithTitle: [NSString stringWithFormat: @"%d", (int)[aFont pointSize]-2]]; } #endif // We 'select' the first popup button (so that the correct font is set in the label) [self selectionInPopUpHasChanged: headerNamePopUp]; } // // // - (void) saveChanges { // We synchronize our popup buttons [self _synchronizePopUpButtons]; [[NSUserDefaults standardUserDefaults] setObject: [headerNamePopUp titleOfSelectedItem] forKey: @"HEADER_NAME_FONT_NAME"]; [[NSUserDefaults standardUserDefaults] setObject: [headerNameSizePopUp titleOfSelectedItem] forKey: @"HEADER_NAME_FONT_SIZE"]; [[NSUserDefaults standardUserDefaults] setObject: [headerValuePopUp titleOfSelectedItem] forKey: @"HEADER_VALUE_FONT_NAME"]; [[NSUserDefaults standardUserDefaults] setObject: [headerValueSizePopUp titleOfSelectedItem] forKey: @"HEADER_VALUE_FONT_SIZE"]; [[NSUserDefaults standardUserDefaults] setObject: [messagePopUp titleOfSelectedItem] forKey: @"MESSAGE_FONT_NAME"]; [[NSUserDefaults standardUserDefaults] setObject: [messageSizePopUp titleOfSelectedItem] forKey: @"MESSAGE_FONT_SIZE"]; [[NSUserDefaults standardUserDefaults] setInteger: [checkbox state] forKey: @"USE_FIXED_FONT_FOR_TEXT_PLAIN_MESSAGES"]; [[NSUserDefaults standardUserDefaults] setObject: [plainTextMessagePopUp titleOfSelectedItem] forKey: @"PLAIN_TEXT_MESSAGE_FONT_NAME"]; [[NSUserDefaults standardUserDefaults] setObject: [plainTextMessageSizePopUp titleOfSelectedItem] forKey: @"PLAIN_TEXT_MESSAGE_FONT_SIZE"]; #ifdef MACOSX [[NSUserDefaults standardUserDefaults] setObject: [messageListPopUp titleOfSelectedItem] forKey: @"MESSAGE_LIST_FONT_NAME"]; [[NSUserDefaults standardUserDefaults] setObject: [messageListSizePopUp titleOfSelectedItem] forKey: @"MESSAGE_LIST_FONT_SIZE"]; #endif [NSFont updateCache]; // FIXME - do not post if the fonts haven't changed [[NSNotificationCenter defaultCenter] postNotificationName: FontValuesHaveChanged object: nil userInfo: nil]; } // // class methods // + (id) singleInstance { if ( !singleInstance ) { singleInstance = [[FontsViewController alloc] initWithNibName: @"FontsView"]; } return singleInstance; } @end // // FontsViewController's private interface // @implementation FontsViewController (Private) // // // - (void) _initializePopUpButtons { NSMutableArray *availableFontFamilies; availableFontFamilies = [[NSMutableArray alloc] initWithArray: [[NSFontManager sharedFontManager] availableFontFamilies]]; [availableFontFamilies sortUsingSelector: @selector(compare:)]; [headerNamePopUp removeAllItems]; [headerNamePopUp addItemsWithTitles: availableFontFamilies]; [headerValuePopUp removeAllItems]; [headerValuePopUp addItemsWithTitles: availableFontFamilies]; [messagePopUp removeAllItems]; [messagePopUp addItemsWithTitles: availableFontFamilies]; [plainTextMessagePopUp removeAllItems]; [plainTextMessagePopUp addItemsWithTitles: availableFontFamilies]; #ifdef MACOSX [messageListPopUp removeAllItems]; [messageListPopUp addItemsWithTitles: availableFontFamilies]; #endif RELEASE(availableFontFamilies); } // // // - (void) _synchronizePopUpButtons { [headerNamePopUp synchronizeTitleAndSelectedItem]; [headerNameSizePopUp synchronizeTitleAndSelectedItem]; [headerValuePopUp synchronizeTitleAndSelectedItem]; [headerValueSizePopUp synchronizeTitleAndSelectedItem]; [messagePopUp synchronizeTitleAndSelectedItem]; [messageSizePopUp synchronizeTitleAndSelectedItem]; [plainTextMessagePopUp synchronizeTitleAndSelectedItem]; [plainTextMessageSizePopUp synchronizeTitleAndSelectedItem]; } @end GNUMail/Bundles/Fonts/GNUmakefile0100644000014600001460000000122310613064242017320 0ustar monotonemonotoneinclude $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Fonts BUNDLE_EXTENSION = .prefs BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/GNUMail Fonts_RESOURCE_FILES = fonts.tiff Fonts_OBJC_FILES = \ FontsView.m \ FontsViewController.m Fonts_HEADERS = \ FontsView.h \ FontsViewController.h Fonts_PRINCIPAL_CLASS = \ FontsViewController ADDITIONAL_OBJCFLAGS = -Wall -Wno-import ADDITIONAL_INCLUDE_DIRS += -I../../Framework/GNUMail ADDITIONAL_LIB_DIRS += -L../../Framework/GNUMail/GNUMail.framework/Versions/Current/$(GNUSTEP_TARGET_LDIR) ADDITIONAL_GUI_LIBS += -lGNUMail include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble GNUMail/Bundles/Fonts/fonts.tiff0100644000014600001460000006641410506157372017276 0ustar monotonemonotoneII*00H0$(12*R>I/il ' 'Adobe Photoshop 7.02006:09:25 01:05:04 4294967295 256 256 1 72/1 72/1 2 2005-02-14T21:04:06-06:00 2005-02-15T12:43:10-06:00 2005-02-15T12:43:10-06:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:b459bf36-4c61-11db-8c81-d26e35c2cbb3 application/vnd.adobe.photoshop 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:00:31Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:00:31Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM.@@XX8BIM8BIM50000nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 00uJFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%,Hh.q5$zUfwOe;Ic}&cu{>? \}OK^r?_[z'̊gXI$STY?Zz} 'KOZe- Jp17O_Gvn^_Pju7O(Z}L͏:x#[k~e$> lj=cK:WRyx#Se]c} mwk/;XgG鿧} M6*kSUhXt!ظ.Q,M'w]f;qي ,nV]_\OeOWK=jݻoZJ{<*ɢ{Us,ikjzcZcsMnwC1K/ψ۬=f]_VGjߡƽ<9gk HFI?*ޡ~Muڋxe.މ:2rh=5lS_zJ8BIM!UAdobe PhotoshopAdobe Photoshop 7.08BIMmoptHTargetSettingsMttCObjc NativeQuadBl longGrn longRd longTrnsbool addMetadatabool fileFormatenum FileFormatPNG24 interlacedbool noMatteColorbooltransparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong8BIM-msetnullVersionlong8BIMms4wA8 qrV\@Ly%t?\1S} ,cpJ;l,G ,PGj} # cNvW9>>>>>>>>>>>6o ,?fj-o3=(^e&B>P c=!kC=pq# 00GNUMail/Bundles/MIME/0040755000014600001460000000000010424710553014714 5ustar monotonemonotoneGNUMail/Bundles/MIME/English.lproj/0040755000014600001460000000000010424672357017443 5ustar monotonemonotoneGNUMail/Bundles/MIME/English.lproj/MIMEView.nib/0040755000014600001460000000000010424672357021574 5ustar monotonemonotoneGNUMail/Bundles/MIME/English.lproj/MIMEView.nib/classes.nib0100644000014600001460000000131110424672357023714 0ustar monotonemonotone{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {add = id; delete = id; edit = id; }; CLASS = MIMEViewController; LANGUAGE = ObjC; OUTLETS = { add = NSButton; delete = NSButton; edit = NSButton; fileExtensionsColumn = NSTableColumn; mimeTypesColumn = NSTableColumn; tableView = NSTableView; view = id; }; SUPERCLASS = NSObject; }, {CLASS = StripeTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; } ); IBVersion = 1; }GNUMail/Bundles/MIME/English.lproj/MIMEView.nib/info.nib0100644000014600001460000000106510424672357023220 0ustar monotonemonotone IBDocumentLocation 57 65 356 240 0 0 1280 1002 IBEditorPositions 6 430 482 420 412 0 0 1280 1002 IBFramework Version 291.0 IBLockedObjects 6 IBSystem Version 6L60 GNUMail/Bundles/MIME/English.lproj/MIMEView.nib/objects.nib0100644000014600001460000000571110424672357023720 0ustar monotonemonotone typedstream@NSIBObjectDataNSObjectNSCustomObject)@@NSString+MIMEViewControlleri NSClassSwapper*@#StripeTableView NSTableView= NSControl)NSView) NSResponder NSClipView: NSScrollView➒ NSCustomView) @@@@ffffffffNSMutableArrayNSArrayNSButtonicc@ NSButtonCell? NSActionCellNSCellAii@@@@NSFont$[36c]LucidaGrandef ci: ssii@@@@@@NSMutableStringNSCustomResource)NSImageadd\Edit@edit8Delete@ delete_20 NSTextField ,n9n9NSTextFieldCell>@In this panel, you can add MIME types used by GNUMail.app to view or perform actions on attachments based on their Content-Type.Ƅc@@NSColor@@@System controlColor̰ff?*̰̈́controlTextColor̰:rrNSView NSResponder NSScrollerӝXْff:?6'b _doScroller:גWW?}پNSTableHeaderViewٙWWْWWےۄ@@ccc̰̈́controlBackgroundColorφ _NSCornerViewX9hh뒤ْ֒ؒ߄ffffi WWْ݅WWْ @@@ff@@f::i߄ NSTableColumn)@fff@@cc mime-type(脄NSTableHeaderCellɫ MIME type$LucidaGrande ̰>̰̈́headerTextColor҆ɫ1@9̰Іńfile-extensionsC5Bˁ竂File extension(s)酅놄ɫ1@ Redwood CityЇ݄̰́ gridColor̰?@Ƥ㙖𙖸 NSTableView NSButton2NSButtonNSTableColumn1 NSButton1 NSScrollView1ㄘ NSTableColumn File's OwnerViewƄ NSTextField2 NSMutableSetNSSetINSNibOutletConnectorτNSNibConnectorviewaddeditdeleteNSNibControlConnector add:edit:delete: dataSourcedelegate tableViewNSIBHelpConnectorNSToolTipHelpKey Add mime-typeNSToolTipHelpKeyDelete mime-typeNSToolTipHelpKeyEdit mime-typeㄘmimeTypesColumnfileExtensionsColumn@i*5./-Ι)0Τ*΢+Ω 6 "1(4Εθ ,ο %27IBCocoaFrameworkGNUMail/Bundles/MIME/English.lproj/MIMEView.nib/keyedobjects.nib0100644000014600001460000001575210424672357024750 0ustar monotonemonotonebplist00MY$archiverX$versionX$objectsT$top_NSKeyedArchiver (,-348<NU_fop    #23<=AGJPQRTX^_acdfioprsuvz}~  g456789:;<=>?@ABCDEFGHIJU$null  !"#$%&']NSFontManagerV$classYNSNextOid_NSVisibleWindowsVNSRoot\NSOidsValues_NSClassesValues]NSConnections]NSNamesValues]NSObjectsKeysZNSOidsKeys]NSClassesKeys[NSFramework[NSNamesKeys_NSObjectsValues7 )*+[NSClassName_MIMEViewController./01Z$classnameX$classes^NSCustomObject02XNSObject_IBCocoaFramework 567ZNS.objects./9:\NSMutableSet9;2UNSSet 5=>U?@ABCDEFGHIJKLM wy{} OPQRSTWNSLabel]NSDestinationXNSSourcevu VWX)YZ[\]^_NSNextResponderZNSSubviews[NSExtension[NSFrameSizet srq 5=`abcde #+j VghijkTlmnTVNSCellWNSFrameYNSEnabled[NSSuperview _{{20, 15}, {26, 26}} qrstuvwxyz{|}~a_NSKeyEquivalentYNSSupport_NSAlternateContents]NSControlView\NSCellFlags2_NSPeriodicDelay^NSButtonFlags2]NSButtonFlags[NSCellFlags]NSNormalImage_NSPeriodicIntervalZNSContents@P VNSSizeVNSNameXNSfFlags"AP\LucidaGrande./VNSFont2 )^NSResourceNameWNSImageSadd./_NSCustomResource2_%NSCustomResource YNS.string./_NSMutableString2XNSString./\NSButtonCellg2]%NSButtonCell\NSActionCell./XNSButton2YNSControlVNSView[NSResponder VghijkTnT_{{92, 15}, {26, 26}} qrstuvwxyz{|}b"!@TEdit ) Tedit VghijkTnT%$_{{56, 15}, {26, 26}} qrstuvwxyz{|}cʀ*)'&VDelete )̀(Ydelete_20 VWhjTT]NSContentView[NSVScrollerXNSsFlagsXNSvFlags]NSNextKeyView\NSCornerView\NSScrollAmts[NSHScroller_NSHeaderClipViewi,-_h7OA A AAc4 5= VWhjddYNScvFlagsYNSBGColorYNSDocView^. /V] 5= V)Yijn _NSBackgroundColorYNSTvFlags_NSIntercellSpacingHeight_NSOriginalClassName\NSHeaderView[NSGridColor^NSTableColumns_NSIntercellSpacingWidth[NSRowHeight\0@"@132Y:"@@"A_StripeTableView[NSTableViewZ{343, 217} V Yj65 VWhjddfgY{343, 17}./_NSTableHeaderView2 Vhjdd98_{{344, 0}, {16, 17}}./]_NSCornerView2 5= !";O $% &'()*+,-./0n1ZNSDataCellWNSWidthZNSMinWidth\NSIdentifierZNSMaxWidth^NSIsResizeable\NSHeaderCellNH"C"B <"Dz=Ymime-type ru4y|56789:;[NSTextColorGA?C>YMIME type >?@"A0@ BCDEFWNSWhite\NSColorSpaceBI0.333333./HIWNSColorH2 HKLCDMNO]NSCatalogName[NSColorNameFDEVSystem_headerTextColor BCDSFB0./UV_NSTableHeaderCellUWg2_NSTextFieldCell rtu4y|YZ8[\]MJK1@IQ9 BCD`FB1 HKLCDMNbL_controlTextColor./WeWg2./gh]NSTableColumng2 $% &'()*+jklm0nnS"C5"BˀPQ_file-extensions ru4y|56789:qR_File extension(s) rtu4y|YZ8[\tT\Redwood City./wx^NSMutableArraywy2WNSArray HKLCD{N|XW_controlBackgroundColor BCDFI0.666667 HKLCDN[ZYgridColor BCDFD0.5./^NSClassSwapper2_{{1, 17}, {343, 217}}./ZNSClipView2 VhjdddXNSActionXNSTargetYNSPercentba`"?6'b_{{344, 17}, {15, 217}}\_doScroller:./ZNSScroller2 Vhjddded"?}_{{-100, -100}, {343, 15}} 5=_{{1, 0}, {343, 17}}_{{20, 57}, {360, 235}}./\NSScrollView2 VghijTnTpl k_{{17, 300}, {366, 57}} rtu4y|Ye[n@m_In this panel, you can add MIME types used by GNUMail.app to view or perform actions on attachments based on their Content-Type. HKLCD{No\controlColor./[NSTextField2\%NSTextFieldZ{400, 370}./\NSCustomView2Tview./_NSNibOutletConnector2^NSNibConnector OPQRax OPQRbz OPQRc|Vdelete OPQa~Tadd:./_NSNibControlConnector2 OPQbUedit: OPQcWdelete: OPQRZdataSource OPQRXdelegate OPQRYtableView PaVNSFileXNSMarker_NSToolTipHelpKey]Add mime-type./_NSIBHelpConnector2 Pc_Delete mime-type Pb^Edit mime-type OPQR!_mimeTypesColumn OPQR"_fileExtensionsColumn 5eTcda!"b./yy2 5dTTTTT 5ca"bd!Te 5    YNSButton2^NSTableColumn1YNSButton1]NSScrollView1\File's OwnerTView\NSTextField2 5 5 5MGHFICT"dBa?e@JLbD!cAEK 5 !"#$%&'()*+,-./0123€5./-)0*+ 614 ,2./KL^NSIBObjectDataK2NO]IB.objectdata#,5:LQ#18BU\i{4=HQ`en,579;Tfq} BT^t -4;DFKMO\elq~ ,7ER[doy (1JLNe  ' 0 9 G T a m         a u          $ 6 B M f h k m    # ( * , Q \ d o |    " / 7 D F P R [ c h } !#%',.0=@UWjs|35BKZai~%09Zclvxz|4MVclWln{ "35FHO`bdir-4=?ACVdm !*,?HMVir '\e(P*GNUMail/Bundles/MIME/English.lproj/MimeTypeEditorWindow.nib/0040755000014600001460000000000010424672357024302 5ustar monotonemonotoneGNUMail/Bundles/MIME/English.lproj/MimeTypeEditorWindow.nib/classes.nib0100644000014600001460000000164110424672357026430 0ustar monotonemonotone{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { cancelClicked = id; chooseDataHandlerCommand = id; chooseIcon = id; okClicked = id; selectionHasChanged = id; }; CLASS = MimeTypeEditorWindowController; LANGUAGE = ObjC; OUTLETS = { actionMatrix = NSMatrix; dataHandlerCommandButton = NSButton; dataHandlerCommandField = NSTextField; descriptionField = NSTextField; fileExtensionsField = NSTextField; iconButton = NSButton; mimeTypeField = NSTextField; viewMatrix = NSMatrix; }; SUPERCLASS = NSWindowController; } ); IBVersion = 1; }GNUMail/Bundles/MIME/English.lproj/MimeTypeEditorWindow.nib/info.nib0100644000014600001460000000057610424672357025734 0ustar monotonemonotone IBDocumentLocation 3 53 356 240 0 0 1280 1002 IBFramework Version 291.0 IBSystem Version 6L60 GNUMail/Bundles/MIME/English.lproj/MimeTypeEditorWindow.nib/objects.nib0100644000014600001460000001337110424672357026427 0ustar monotonemonotone typedstream@NSIBObjectDataNSObjectNSCustomObject)@@NSString+MimeTypeEditorWindowControlleri NSButtonCell? NSActionCellNSCellAii@@@@Open with external program:NSFont$[36c]LucidaGrandef ci:NSMatrix> NSControl)NSView) NSResponderNSBox* @@@@ffffffffNSMutableArrayNSArray NSTextFieldicc@NSTextFieldCell>@Mime-Type (ex: image/jpeg): c@@NSColor@@@System controlColorff?*controlTextColor:@#File extensions (ex: jpeg,jpg,jpe):qA@textBackgroundColor textColorqA@į†mTT@ Description: ƯjkVVqA@ɯ†\LL@2Please choose an icon to represent this Mime-Type:˯NSButton@@@@NSMutableStringButton΄ ssii@@@@@@ҘҘϒr T T 8OKն@ [28c]Helvetica ϒ T T 8Cancelڶ@ҘҘمߙ J&J&ᒅ#iiii:::ffffi@@@@@JD('Display if possible (as icon otherwise)㶁H 4294967295 256 256 1 72/1 72/1 2 2005-02-14T21:04:06-06:00 2005-02-15T12:43:10-06:00 2005-02-15T12:43:10-06:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:b459bf37-4c61-11db-8c81-d26e35c2cbb3 application/vnd.adobe.photoshop 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:00:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:00:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM.@@XX8BIM8BIM50000nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM e00IJFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ? 9{^ȉ=w?rcYCIktmUĹť%]F颳mߤtII=7O?5?:I[2JlX}cIP:\dA'ȖB2kcYic)}19=PemXuNOqx26i +d3Y[\ֽ}-lwǷ-αp+eEmmlKuσdÁ݁,\zslϜj+uCI!m44oS1gZ@ke+u/@+VU}~uj~T ~ϖ''FÜ='[9xOo&?AL Ou>L 6ϽQ$kJoT7{>Dyk}ni.ql k8BIM!UAdobe PhotoshopAdobe Photoshop 7.08BIMmoptHTargetSettingsMttCObjc NativeQuadBl longGrn longRd longTrnsbool addMetadatabool fileFormatenum FileFormatPNG24 interlacedbool noMatteColorbooltransparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong8BIM-msetnullVersionlong8BIMms4w &&&izzzssskkkaaaKKKEEE444tMMM*GGG-GGG/GGG2GGG :GGGAFFFIOOOb QQPN"!!u, ]FEDyyw0Lvvvyyyyyyyyyyyyzzzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyxxxttt//.t&vvvtttRQP =sssuuusqpWooopppppp::9iiiddd```iii$IHFcccXXXXXXccc1HGF[[[PPPOOOZZZ0HGFSSS```]]]XXXppp???TTT0HGFLLLzzzbbbCCChhhBBB>>>wwwMMM0HGFCCCyyyJJJ:::888rrrDDD0HGF;;;FFFCCC[[[333888111jjj8880HGF011|||iii***...---222111***```JJI0HGFqqq444PPPqqq+++)))******+++)))ZYY0HGF~~@@@""""""###"""hgd0HGF+**%%%$$$$$$%%%%%%""#!!!TTR0HGF0HGF0HGF0HGF0GGF0GGF0GGF0GGE0GGE0GGE0GGE0GGE0GGE0HHF0EED08YXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXV 00GNUMail/Bundles/PGP/0040755000014600001460000000000010424674042014615 5ustar monotonemonotoneGNUMail/Bundles/PGP/English.lproj/0040755000014600001460000000000010424672357017342 5ustar monotonemonotoneGNUMail/Bundles/PGP/English.lproj/PGPView.nib/0040755000014600001460000000000010424672357021372 5ustar monotonemonotoneGNUMail/Bundles/PGP/English.lproj/PGPView.nib/classes.nib0100644000014600001460000000151110424672357023514 0ustar monotonemonotone{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {removePassphraseFromCacheButtonClicked = id; }; CLASS = PGPViewController; LANGUAGE = ObjC; OUTLETS = { alwaysEncrypt = NSButton; alwaysSign = NSButton; alwaysUseMultipartPGP = NSButton; gpgPathField = NSTextField; removePassphraseFromCacheButton = NSButton; removePassphraseFromCacheField = NSTextField; useFromForSigning = NSButton; userEMailAddressField = NSTextField; versionLabel = NSTextField; view = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }GNUMail/Bundles/PGP/English.lproj/PGPView.nib/info.nib0100644000014600001460000000116710424672357023021 0ustar monotonemonotone IBDocumentLocation 47 34 356 240 0 0 1024 746 IBEditorPositions 5 185 301 434 304 0 0 1024 746 IBFramework Version 291.0 IBLockedObjects 5 IBOpenObjects 5 IBSystem Version 6R73 GNUMail/Bundles/PGP/English.lproj/PGPView.nib/objects.nib0100644000014600001460000000351710424672357023520 0ustar monotonemonotone typedstream@NSIBObjectDataNSObjectNSCustomObject)@@NSString+PGPViewControlleri NSTextField NSControl)NSView) NSResponder NSCustomView) @@@@ffffffffNSMutableArrayNSArrayicc@NSTextFieldCell= NSActionCellNSCellAii@@@@@GPG/PGP executable path:NSFont$[36c]LucidaGrandef c i:c@@NSColor@@@System controlColorff?*controlTextColor:  ;@Version: vX.Y.Z$LucidaGrande   xx@User E-Mail address:$LucidaGrande  qA@$LucidaGrande textBackgroundColor textColorNSButton؁   NSButtonCell?#Use FROM E-Mail address for signingĄ ssii@@@@@HS?@ABCDEFGHI []_acegiln KLMNOPWNSLabel]NSDestinationXNSSourceZY RST)UVWXYZ_NSNextResponderZNSSubviews[NSExtension[NSFrameSizeX WUT 5=\]^_`abcdefgh (,03<@DGKO RjklmnoPpqrsPVNSCellXNSvFlagsWNSFrameYNSEnabled[NSSuperview _{{157, 176}, {237, 22}} vwxyz{|}~]s_NSBackgroundColorYNSSupport]NSControlView\NSCellFlags2[NSTextColor_NSDrawsBackground[NSCellFlagsZNSContents@qAP VNSSizeVNSNameXNSfFlags"AP\LucidaGrande./VNSFont2 WNSColor]NSCatalogName[NSColorName\NSColorSpaceVSystem_textBackgroundColor WNSWhiteB1./2 YtextColor B0./_NSTextFieldCellj2\NSActionCell./[NSTextField2\%NSTextFieldYNSControlVNSView[NSResponder RjklmnoPsP_{{2, 178}, {150, 14}} vwxyz|}~^#!& _GPG/PGP executable path: "A0" %$\controlColor I0.666667 '_controlTextColor RjklmnoPsP* )_{{268, 206}, {129, 14}} vwxyz|}~_@+_Version: vX.Y.Z RjklmnoPsP.-_{{32, 140}, {120, 14}} vwxyz|}~`܀/_User E-Mail address: RjklmnoPqsP21_{{157, 138}, {237, 22}} vwxyz{|}~as RjklmnPsP;54_{{3, 102}, {269, 18}} wxy|}b_NSKeyEquivalent_NSAlternateContents_NSPeriodicDelay^NSButtonFlags2]NSButtonFlags_NSPeriodicInterval_NSAlternateImage:H=_{{3, 36}, {393, 18}} wxy|}c ?_Always use Multipart PGP style RjlmnPsPBA_{{3, 14}, {262, 18}} wxy|}dC_"Remove passphrase from cache after RjlmnoPsPFE_{{265, 14}, {53, 22}} vwxyz{|}~es RjlmnoPsPIH_{{329, 16}, {68, 17}} vwxyz|}~f JWminutes RjlmnP#$sPML_{{3, 80}, {183, 18}} wxy|}g'N_Always encrypt messages RjlmnP*+sPQP_{{3, 58}, {162, 18}} wxy|}h.R_Always sign messages./12^NSMutableArray132WNSArrayZ{414, 240} 67YNS.stringV./9:_NSMutableString9;2XNSString./=>\NSCustomView=2Tview./AB_NSNibOutletConnectorAC2^NSNibConnector KLMNE]\\gpgPathField KLMNHa^_userEMailAddressField KLMNKb`_useFromForSigning KLMNN_b\versionLabel KLMNQcd_alwaysUseMultipartPGP KLMNTdf_removePassphraseFromCacheButton KLMNWeh_removePassphraseFromCacheField KLMZ[dkj_'removePassphraseFromCacheButtonClicked:./^__NSNibControlConnector^C2 KLMNagm]alwaysEncrypt KLMNdhoZalwaysSign 5ghq^abef_]P`hdcg./3j32 5glPPPPPPPPPPPP 5gn^abcf]_Phdeg` 5gpqrstuvwxyz{|}~uvwxyz{|}~\NSTextField1\NSTextField2YNSButton4ZNSButton41]NSTextField21]NSTextField11TView\File's OwnerZNSButton44ZNSButton42\NSTextField3ZNSButton43]NSTextField12 5g7 5g7 5g_^P]GDf`gAHIcbCBeEd?F@ha 5g   ./^NSIBObjectData2]IB.objectdata#,5:LQ !3AO]hv%8ALNOXelr{} ".02468AZ\^`bdfhjlnpr#1>J^juwy{')+-/18N[cfhqv &CEGIa+HJLNh  3 5 7 Q v  / = R e g i k m r t v x    % 0 I K M d % ' L e g i   ! # : o q  %,4?HRT]ov  $57K\^k|~>G_fwy#,IKMOQSUWY[]_acerNWGNUMail/Bundles/PGP/GNUmakefile0100644000014600001460000000126110613064242016657 0ustar monotonemonotoneinclude $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = PGP BUNDLE_EXTENSION = .bundle BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/GNUMail PGP_RESOURCE_FILES = *.tiff PGP_OBJC_FILES = \ PGPController.m \ PGPView.m \ PGPViewController.m PGP_HEADERS = \ PGPController.h \ PGPView.h \ PGPViewController.h PGP_PRINCIPAL_CLASS = \ PGPController ADDITIONAL_OBJCFLAGS = -Wall -Wno-import ADDITIONAL_INCLUDE_DIRS += -I../../Framework/GNUMail ADDITIONAL_LIB_DIRS += -L../../Framework/GNUMail/GNUMail.framework/Versions/Current/$(GNUSTEP_TARGET_LDIR) ADDITIONAL_GUI_LIBS += -lGNUMail -lPantomime include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble GNUMail/Bundles/PGP/PGPController.h0100644000014600001460000000323310443040415017446 0ustar monotonemonotone/* ** PGPController.h ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_PGPController #define _GNUMail_H_PGPController #import #include "GNUMailBundle.h" #include "PreferencesModule.h" #define NOT_ENCRYPTED 0 #define ENCRYPTED 1 #define NOT_SIGNED 0 #define SIGNED 2 #define SIGNED_AND_ENCRYPTED 3 @class CWMessage; @class PGPImageView; // // PGPController class; // @interface PGPController : NSObject { // UI elements for our viewing and compose view NSButton *encrypt, *sign; NSView *superview; NSImage *sImage, *eImage, *seImage; PGPImageView *view; // ivars NSMutableDictionary *passphraseCache; NSString *resourcePath; NSTimer *timer; id owner; } // // action methods // - (IBAction) encryptClicked: (id) sender; - (IBAction) signClicked: (id) sender; // // other methods // - (void) updateAndRestartTimer; @end #endif // _GNUMail_H_PGPController GNUMail/Bundles/PGP/PGPController.m0100644000014600001460000015523610556071302017472 0ustar monotonemonotone/* ** PGPController.m ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** Tomio Arisaka ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "PGPController.h" #include "PGPViewController.h" // GNUMail headers #include "Constants.h" #include "MailWindowController.h" #include "NSAttributedString+Extensions.h" #include "NSUserDefaults+Extensions.h" #include "PasswordPanelController.h" #include "Utilities.h" // Pantomime headers #include #include #include #include #include #include #include #include #include #include static PGPController *singleInstance = nil; #define CHECK_FOR_RAW_SOURCE() ({ \ if (![theMessage rawSource]) \ { \ [theMessage setProperty: theTextView forKey: @"NSTextView"]; \ [theMessage setProperty: [NSNumber numberWithBool: YES] forKey: @"Loading"]; \ return; \ } \ }) // // Private methods // @interface PGPController (Private) - (BOOL) _analyseTaskOutput: (NSMutableData *) theMutableData message: (NSMutableString *) theMessage; - (void) _decryptPart: (CWPart *) thePart multipart: (BOOL) aBOOL message: (CWMessage *) theMessage; - (void) _verifyPart: (CWPart *) thePart allPart: (CWPart *) allPart rawSource: (NSData *) rawData signaturePart: (CWPart *) signPart message: (CWMessage *) theMessage; - (CWMessage *) _encryptMessage: (CWMessage *) theMessage multipart: (BOOL) aBOOL; - (NSString *) _passphraseForID: (NSString *) theID; - (void) _tick; @end // // View class // @interface PGPImageView : NSView { @private NSImage *_image; } - (NSImage *) image; - (void) setImage: (NSImage *) theImage; @end @implementation PGPImageView - (NSImage *) image { return _image; } - (void) setImage: (NSImage *) theImage { // No need to retain the image here since it's retained // in PGPController _image = theImage; } @end // // Passphrase class // @interface Passphrase : NSObject { @private NSString *_value; NSDate *_date; } - (id) initWithValue: (NSString *) theValue; - (NSString *) value; - (void) setValue: (NSString *) theValue; - (NSDate *) date; - (void) setDate: (NSDate *) theDate; @end @implementation Passphrase - (id) initWithValue: (NSString *) theValue { self = [super init]; [self setValue: theValue]; [self setDate: [NSDate date]]; return self; } - (void) dealloc { RELEASE(_value); RELEASE(_date); [super dealloc]; } - (NSString *) value { return _value; } - (void) setValue: (NSString *) theValue { ASSIGN(_value, theValue); } - (NSDate *) date { return _date; } - (void) setDate: (NSDate *) theDate { ASSIGN(_date, theDate); } @end // // // @implementation PGPController - (id) initWithOwner: (id) theOwner { NSBundle *aBundle; self = [super init]; owner = theOwner; aBundle = [NSBundle bundleForClass: [self class]]; resourcePath = [aBundle resourcePath]; RETAIN(resourcePath); sImage = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/signed_80.tiff", resourcePath]]; eImage = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/encrypted_80.tiff", resourcePath]]; seImage = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/signed+encrypted_80.tiff", resourcePath]]; view = [[PGPImageView alloc] init]; // We create our passphrase cache passphraseCache = [[NSMutableDictionary alloc] init]; [self updateAndRestartTimer]; // We register for our notification [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_messageFetchCompleted:) name: @"PantomimeMessageFetchCompleted" object: nil]; return self; } // // // - (void) dealloc { [[NSNotificationCenter defaultCenter] removeObserver: self]; RELEASE(resourcePath); RELEASE(view); RELEASE(sImage); RELEASE(eImage); RELEASE(seImage); RELEASE(encrypt); RELEASE(sign); RELEASE(passphraseCache); if (timer) { [timer invalidate]; RELEASE(timer); } [super dealloc]; } // // // + (id) singleInstance { if (!singleInstance) { singleInstance = [[PGPController alloc] initWithOwner: nil]; } return singleInstance; } // // access / mutation methods // - (NSString *) name { return @"PGP"; } // // // - (NSString *) description { return @"This is the PGP/GPG bundle for GNUMail."; } // // // - (NSString *) version { return @"v0.9.1"; } // // // - (void) setOwner: (id) theOwner { owner = theOwner; } // // UI elements // - (BOOL) hasPreferencesPanel { return YES; } // // // - (PreferencesModule *) preferencesModule { return [PGPViewController singleInstance]; } // // // - (BOOL) hasComposeViewAccessory { return YES; } // // // - (id) composeViewAccessory { NSImage *icon; NSView *aView; aView = [[NSView alloc] initWithFrame: NSMakeRect(0,0,68,32)]; // // Encrypt / clear button // encrypt = [[NSButton alloc] initWithFrame: NSMakeRect(0,0,32,32)]; [encrypt setImagePosition: NSImageOnly]; [encrypt setBordered: NO]; icon = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/clear_20.tiff", resourcePath]]; [encrypt setImage: icon]; RELEASE(icon); [encrypt setTarget: self]; [encrypt setAction: @selector(encryptClicked:)]; [encrypt setTag: NOT_ENCRYPTED]; [aView addSubview: encrypt]; if ([[NSUserDefaults standardUserDefaults] integerForKey: @"PGPBUNDLE_ALWAYS_ENCRYPT" default: NSOffState] == NSOnState) { [self encryptClicked: nil]; } // // Signed / Unsigned button // sign = [[NSButton alloc] initWithFrame: NSMakeRect(36,0,32,32)]; [sign setImagePosition: NSImageOnly]; [sign setBordered: NO]; icon = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/unsigned_20.tiff", resourcePath]]; [sign setImage: icon]; RELEASE(icon); [sign setTarget: self]; [sign setAction: @selector(signClicked:)]; [sign setTag: NOT_SIGNED]; [aView addSubview: sign]; if ([[NSUserDefaults standardUserDefaults] integerForKey: @"PGPBUNDLE_ALWAYS_SIGN" default: NSOffState] == NSOnState) { [self signClicked: nil]; } return AUTORELEASE(aView); } // // // - (BOOL) hasViewingViewAccessory { return YES; } // // // - (id) viewingViewAccessory { return view; } // // // - (enum ViewingViewType) viewingViewAccessoryType { return ViewingViewTypeHeaderCell; } // // // - (void) viewingViewAccessoryWillBeRemovedFromSuperview: (id) theView { } // // // - (void) setCurrentSuperview: (NSView *) theView { superview = theView; } // // // - (NSArray *) submenuForMenu: (NSMenu *) theMenu { return nil; } // // // - (NSArray *) menuItemsForMenu: (NSMenu *) theMenu { return nil; } // // action methods // - (IBAction) encryptClicked: (id) sender { NSImage *icon; if ([encrypt tag] == NOT_ENCRYPTED) { [encrypt setTag: ENCRYPTED]; icon = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/encrypted_20.tiff", resourcePath]]; [encrypt setImage: icon]; RELEASE(icon); } else { [encrypt setTag: NOT_ENCRYPTED]; icon = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/clear_20.tiff", resourcePath]]; [encrypt setImage: icon]; RELEASE(icon); } } // // // - (IBAction) signClicked: (id) sender { NSImage *icon; if ([sign tag] == NOT_SIGNED) { [sign setTag: SIGNED]; icon = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/signed_20.tiff", resourcePath]]; [sign setImage: icon]; RELEASE(icon); } else { [sign setTag: NOT_SIGNED]; icon = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithFormat: @"%@/unsigned_20.tiff", resourcePath]]; [sign setImage: icon]; RELEASE(icon); } } // // other methods // - (void) updateAndRestartTimer { if (timer) { [timer invalidate]; DESTROY(timer); } if ([[NSUserDefaults standardUserDefaults] integerForKey: @"PGPBUNDLE_PASSPHRASE_EXPIRY"] == NSOnState) { timer = [NSTimer scheduledTimerWithTimeInterval: 60*[[NSUserDefaults standardUserDefaults] integerForKey: @"PGPBUNDLE_PASSPHRASE_EXPIRY_VALUE"] target: self selector: @selector(_tick) userInfo: nil repeats: YES]; RETAIN(timer); } } // // Pantomime related methods // - (CWMessage *) messageWasEncoded: (CWMessage *) theMessage { CWMessage *aMessage; // We first verify if we must at least sign OR encrypt if ([sign tag] == NOT_SIGNED && [encrypt tag] == NOT_ENCRYPTED) { return theMessage; } // If our content isn't a multipart if ([theMessage isMIMEType: @"text" subType: @"*"]) { if ([[NSUserDefaults standardUserDefaults] boolForKey: @"PGPBUNDLE_ALWAYS_MULTIPART"]) { CWMIMEMultipart *aMimeMultipart; NSData *aBoundaryData, *aData; CWPart *aPart; NSRange aRange; // We create our new multipart object aMimeMultipart = [[CWMIMEMultipart alloc] init]; // We add our message part aPart = [[CWPart alloc] init]; [aPart setContentTransferEncoding: [theMessage contentTransferEncoding]]; [aPart setContentType: [theMessage contentType]]; [aPart setCharset: [theMessage charset]]; aData = [theMessage dataValue]; aRange = [aData rangeOfCString: "\n\n"]; aData = [aData subdataFromIndex: (aRange.location + 2)]; if ([theMessage contentTransferEncoding] == PantomimeEncodingQuotedPrintable) { aData = [aData decodeQuotedPrintableInHeader: NO]; } else if ([theMessage contentTransferEncoding] == PantomimeEncodingBase64) { aData = [aData decodeBase64]; } [aPart setContent: aData]; [aPart setSize: [aData length]]; [aMimeMultipart addPart: aPart]; RELEASE(aPart); // We add our dummy part aPart = [[CWPart alloc] init]; [aPart setContentTransferEncoding: PantomimeEncodingNone]; [aPart setContentType: @"text/plain"]; [aPart setCharset: @"us-ascii"]; [aPart setContentDisposition: PantomimeAttachmentDisposition]; [aPart setFilename: @"RFC3156.txt"]; [aPart setContent: [@"RFC3156 defines security multipart formats for MIME with OpenPGP." dataUsingEncoding: NSASCIIStringEncoding]]; [aPart setSize: [(NSData *)[aPart content] length]]; [aMimeMultipart addPart: aPart]; RELEASE(aPart); // We generate a new boundary aBoundaryData = [CWMIMEUtility globallyUniqueBoundary]; // We set the new boundary, the new Content-Type and the Content-Transfer-Encoding to our message [theMessage setBoundary: aBoundaryData]; [theMessage setContentType: @"multipart/mixed"]; [theMessage setContentTransferEncoding: PantomimeEncodingNone]; // We finally set the new multipart content [theMessage setContent: aMimeMultipart]; RELEASE(aMimeMultipart); // We got a multipart content! aMessage = [self _encryptMessage: theMessage multipart: YES]; return aMessage; } aMessage = [self _encryptMessage: theMessage multipart: NO]; } else { // We got a multipart content! aMessage = [self _encryptMessage: theMessage multipart: YES]; } return aMessage; } // // // - (void) messageWasDisplayed: (CWMessage *) theMessage inView: (NSTextView *) theTextView { id o; o = [theMessage propertyForKey: @"Loading"]; if (o && [o boolValue]) { [[theTextView textStorage] deleteCharactersInRange: NSMakeRange(0, [[theTextView textStorage] length])]; [[theTextView textStorage] insertAttributedString: [NSAttributedString attributedStringFromHeadersForMessage: theMessage showAllHeaders: NO useMailHeaderCell: YES] atIndex: 0]; [[theTextView textStorage] appendAttributedString: [NSAttributedString attributedStringWithString: _(@"Loading message...") attributes: nil]]; } } // // FIXME: Consider the Content-Type's protocol! // - (void) messageWillBeDisplayed: (CWMessage *) theMessage inView: (NSTextView *) theTextView { // // We DO NOT check if the message's content IS NOT a NSString. This could // happen if the decoding op in Pantomime failed. // if ([theMessage content] && [[theMessage content] isKindOfClass: [NSData class]] && [theMessage isMIMEType: @"text" subType: @"plain"]) { if ([(NSData *)[theMessage content] hasCPrefix: "-----BEGIN PGP MESSAGE-----"] || [(NSData *)[theMessage content] hasCPrefix: "-----BEGIN PGP SIGNED MESSAGE-----"]) { CHECK_FOR_RAW_SOURCE(); [self _decryptPart: theMessage multipart: NO message: theMessage]; } } // // VERIFY IF: // multipart/encrypted // // contains exactly TWO parts: application/pgp-encrypted // application/octet-stream // // else if ([theMessage isMIMEType: @"multipart" subType: @"encrypted"]) { CWMIMEMultipart *aMimeMultipart; int i; CHECK_FOR_RAW_SOURCE(); // We search for our octet-stream part. aMimeMultipart = (CWMIMEMultipart *)[theMessage content]; for (i = ([aMimeMultipart count] - 1); i >= 0; i--) { CWPart *aPart; aPart = [aMimeMultipart partAtIndex: i]; if ([aPart isMIMEType: @"application" subType: @"octet-stream"]) { [self _decryptPart: aPart multipart: YES message: theMessage]; } else if ([aPart isMIMEType: @"application" subType: @"pgp-encrypted"]) { [aMimeMultipart removePart: aPart]; } } } // // VERIFY IF: // multipart/signed // else if ([theMessage isMIMEType: @"multipart" subType: @"signed"]) { CWMIMEMultipart *aMimeMultipart; int i; CHECK_FOR_RAW_SOURCE(); aMimeMultipart = (CWMIMEMultipart *)[theMessage content]; for (i = 1; i < [aMimeMultipart count]; i++) { CWPart *aPart; aPart = [aMimeMultipart partAtIndex: i]; if ([aPart isMIMEType: @"application" subType: @"pgp-signature"]) { [self _verifyPart: [aMimeMultipart partAtIndex: 0] allPart: nil rawSource: nil signaturePart: aPart message: theMessage]; [aMimeMultipart removePart: aPart]; break; } } } if ([theMessage propertyForKey: @"CONTENT-STATUS"] && [[theMessage propertyForKey: @"CONTENT-STATUS"] intValue] == ENCRYPTED) { [view setImage: eImage]; } else if ([theMessage propertyForKey: @"CONTENT-STATUS"] && [[theMessage propertyForKey: @"CONTENT-STATUS"] intValue] == SIGNED) { [view setImage: sImage]; } else if ([theMessage propertyForKey: @"CONTENT-STATUS"] && [[theMessage propertyForKey: @"CONTENT-STATUS"] intValue] == SIGNED_AND_ENCRYPTED) { [view setImage: seImage]; } else { [view setImage: nil]; } } @end // // Private methods // @implementation PGPController (Private) // // When this method is called, all results to --status-fd=2 (stderr) // have been produced by the GPG task. So, we simply read it, // and toss the irrelevant information. // - (BOOL) _analyseTaskOutput: (NSMutableData *) theMutableData message: (NSMutableString *) theMessage { NSArray *allLines; BOOL aBOOL; int i, c; allLines = [theMutableData componentsSeparatedByCString: "\n"]; c = [allLines count]; aBOOL = YES; for (i = 0; i < c; i++) { if ([[allLines objectAtIndex: i] hasCPrefix: "[GNUPG:] "]) { NSString *aString; aString = [[NSString alloc] initWithData: [[allLines objectAtIndex: i] subdataFromIndex: 9] encoding: NSUTF8StringEncoding]; NSLog(@"READ = |%@|", aString); // We analyse our task's output. if ([aString hasPrefix: @"BAD_PASSPHRASE"]) { [theMessage appendString: _(@"\nThe supplied passphrase was wrong or not given")]; aBOOL = NO; break; } else if ([aString hasPrefix: @"DECRYPTION_FAILED"]) { [theMessage appendString: _(@"\nWrong passphrase (or something else)")]; aBOOL = NO; break; } else if ([aString hasPrefix: @"NODATA"]) { [theMessage appendString: _(@"\nNo data has been found")]; aBOOL = NO; break; } else if ([aString hasPrefix: @"SIGEXPIRED"] || [aString hasPrefix: @"KEYEXPIRED"]) { [theMessage appendString: _(@"\nYour key is expired. You must generate a new one\nbefore trying to send again any signed or encrypted messages.")]; aBOOL = NO; break; } // We check errors for the signature else if ([aString hasPrefix: @"BADSIG"]) { [theMessage appendString:_(@"\nThe signature has NOT been VERIFIED okay.")]; aBOOL = NO; break; } else if ([aString hasPrefix: @"ERRSIG"]) { [theMessage appendString:_(@"\nIt was NOT possible to CHECK the signature.\nThis may be caused by a missing public key or an unsupported algorithm.")]; aBOOL = NO; break; } RELEASE(aString); } // if ( [[allLines objectAtIndex: i] hasCPrefix: "[GNUPG:] "] ) else { NSArray *aLanguagesArray; aLanguagesArray = [[NSUserDefaults standardUserDefaults] stringArrayForKey: @"AppleLanguages"]; // We check the user's preferred language. // FIXME: Use the right encoding depending of the user's preferred language // or simply use UTF8? if ([(NSString *)[aLanguagesArray objectAtIndex: 0] isEqualToString: @"Japanese"]) { NSString *aString; aString = [[NSString alloc] initWithData: [allLines objectAtIndex: i] encoding: NSJapaneseEUCStringEncoding]; [theMessage appendFormat: @"\n%@", aString]; RELEASE(aString); } else { [theMessage appendFormat: @"\n%@", [[allLines objectAtIndex: i] asciiString]]; } } } return aBOOL; } // // GPG commands: // // --batch Use batch mode. Never ask, do not allow inter // active commands. // // --status-fd n // Write special status strings to the file // descriptor n. See the file DETAILS in the docu // mentation for a listing of them. // // --passphrase-fd n // Read the passphrase from file descriptor n. If // you use 0 for n, the passphrase will be read // from stdin. This can only be used if only // one passphrase is supplied. Don't use this // option if you can avoid it. // - (void) _decryptPart: (CWPart *) thePart multipart: (BOOL) aBOOL message: (CWMessage *) theMessage { NSString *aLaunchPath, *inFilename, *outFilename, *aPassphrase, *aUserID; NSPipe *standardInput, *standardError; NSMutableString *aWarningMessage; NSMutableData *aMutableData; NSMutableArray *arguments; NSTask *aTask; BOOL is_signed_only; char *s1, *s2; // We generate temporary filenames s1 = tempnam([GNUMailTemporaryDirectory() cString], NULL); inFilename = [NSString stringWithCString: s1]; s2 = tempnam([GNUMailTemporaryDirectory() cString], NULL); outFilename = [NSString stringWithFormat: @"%s.out", s2]; // // We get our User ID (E-Mail address only). We use it to obtain the GPG passphrase: // if (![[NSUserDefaults standardUserDefaults] objectForKey: @"PGPBUNDLE_USE_FROM_FOR_SIGNING"] || [[NSUserDefaults standardUserDefaults] integerForKey: @"PGPBUNDLE_USE_FROM_FOR_SIGNING"] == NSOnState) { aUserID = [[theMessage from] address]; } else { aUserID = [[NSUserDefaults standardUserDefaults] stringForKey: @"PGPBUNDLE_USER_EMAIL_ADDRESS"]; } // We set the right property, depending on the content's prefix if ([(NSData *)[thePart content] hasCPrefix: "-----BEGIN PGP MESSAGE-----"]) { [theMessage setProperty: [NSNumber numberWithInt: ENCRYPTED] forKey: @"CONTENT-STATUS"]; is_signed_only = NO; } else { [theMessage setProperty: [NSNumber numberWithInt: SIGNED] forKey: @"CONTENT-STATUS"]; is_signed_only = YES; } // We first get our launch path aLaunchPath = [[NSUserDefaults standardUserDefaults] stringForKey: @"PGPBUNDLE_GPG_PATH"]; if (!aLaunchPath || [aLaunchPath length] == 0) { #ifdef MACOSX aLaunchPath = @"/usr/local/bin/gpg"; #else aLaunchPath = @"/usr/bin/gpg"; #endif } // We now verify if our launch path exists and is executable if (![[NSFileManager defaultManager] isExecutableFileAtPath: aLaunchPath]) { NSRunAlertPanel(_(@"Error!"), _(@"The file %@ does not exist or is not executable"), _(@"OK"), // default NULL, // alternate NULL, aLaunchPath); return; } // We create our task object aTask = [[NSTask alloc] init]; [aTask setLaunchPath: aLaunchPath]; // // We initialize our basic arguments // arguments = [[NSMutableArray alloc] initWithObjects: @"--batch", @"--no-tty", @"--status-fd", @"2", @"-o", outFilename, nil]; // We write our mail content to a temporary file [(NSData *)[thePart content] writeToFile: inFilename atomically: YES]; [[NSFileManager defaultManager] enforceMode: 0600 atPath: inFilename]; if (!is_signed_only) { [arguments addObject: @"--passphrase-fd"]; [arguments addObject: @"0"]; // We create our standard input handle pipe standardInput = [NSPipe pipe]; // We write our passphrase on the pipe aPassphrase = [self _passphraseForID: aUserID]; // ex: ludovic@Sophos.ca [[standardInput fileHandleForWriting] writeData: [aPassphrase dataUsingEncoding: NSASCIIStringEncoding]]; [[standardInput fileHandleForWriting] closeFile]; // We set the stdin / stdout [aTask setStandardInput: standardInput]; } // We add the extra arguments, to decrypt the filename instead of reading // everything on stdin [arguments addObject: @"--decrypt"]; [arguments addObject: inFilename]; // We set our task's standard error standardError = [NSPipe pipe]; [aTask setStandardError: standardError]; // We set our task's arguments [aTask setArguments: arguments]; RELEASE(arguments); // We create our mutable data and string object aWarningMessage = [[NSMutableString alloc] initWithString: _(@"Decryption failed due the following reason(s):\n")]; aMutableData = [[NSMutableData alloc] init]; // We lauch our task [aTask launch]; // While the task is dunning, we accumulate the infoz read on stderr // into aMutableData. while ([aTask isRunning]) { [aMutableData appendData: [[standardError fileHandleForReading] availableData]]; } // We analyse the output of our GPG task to stderr. If it the decryption // failed, we do some cleanups. if (![self _analyseTaskOutput: aMutableData message: aWarningMessage]) { // We show the reason why decryption failed NSRunAlertPanel(_(@"Error!"), aWarningMessage, _(@"OK"), // default NULL, // alternate NULL); // FIXME: move to the _analyseTaskOutput:: method // We remove the passphrase for this ID [passphraseCache removeObjectForKey: aUserID]; // We remove our temporary files and we free some vars [[NSFileManager defaultManager] removeFileAtPath: inFilename handler: nil]; [[NSFileManager defaultManager] removeFileAtPath: outFilename handler: nil]; free(s1); free(s2); RELEASE(aMutableData); RELEASE(aWarningMessage); RELEASE(aTask); return; } else { // We check the signed message // We check the decrypted PGP-Combined-message whether it has a good signature or not. // We check the decrypted OpenPGP-Combined-message whether it has a good signature or not. if ([theMessage propertyForKey: @"CONTENT-STATUS"]) { NSRange aRange; int status; aRange = [aMutableData rangeOfCString: "GOODSIG" options: NSCaseInsensitiveSearch]; status = [[theMessage propertyForKey: @"CONTENT-STATUS"] intValue]; if (status == ENCRYPTED) { if (aRange.length > 0) { [theMessage setProperty: [NSNumber numberWithInt: SIGNED_AND_ENCRYPTED] forKey: @"CONTENT-STATUS"]; } } else if (status == SIGNED) { if (aRange.length == 0) { [theMessage setProperty: [NSNumber numberWithInt: NOT_SIGNED] forKey: @"CONTENT-STATUS"]; } } } } RELEASE(aMutableData); RELEASE(aWarningMessage); // // Decryption is done. We now set the new content of the message // by replacing the actual one. // if (!aBOOL) { [thePart setContent: [NSData dataWithContentsOfFile: outFilename]]; } else { NSMutableData *aMutableData; NSData *aData; NSRange aRange, sRange, eRange; BOOL noHeader; // We replace all occurences of \r\n by \n aMutableData = [[NSMutableData alloc] initWithData: [NSData dataWithContentsOfFile: outFilename]]; [aMutableData replaceCRLFWithLF]; // We unfold all lines aData = [aMutableData unfoldLines]; noHeader = NO; // // We grab only the headers we are interested in to and we parse them. // We parse and set the Content-Transfer-Encoding // sRange = [aData rangeOfCString: "Content-Transfer-Encoding:" options: NSCaseInsensitiveSearch]; if (sRange.length > 0) { sRange.length = [aData length] - sRange.location; eRange = [aData rangeOfCString: "\n" options: 0 range: sRange]; aRange.location = sRange.location; aRange.length = eRange.location - sRange.location; [CWParser parseContentTransferEncoding: [aData subdataWithRange: aRange] inPart: thePart]; } else { [thePart setContentTransferEncoding: PantomimeEncodingNone]; } // // We parse and set the Content-Type & boundary // sRange = [aData rangeOfCString:"Content-Type:" options: NSCaseInsensitiveSearch]; if (sRange.length > 0) { NSData *cData; sRange.length = [aData length] - sRange.location; eRange = [aData rangeOfCString: "\n" options: 0 range: sRange]; aRange.location = sRange.location; aRange.length = eRange.location - sRange.location + 1; [CWParser parseContentType: [aData subdataWithRange: aRange] inPart: thePart]; // We set the protocol eRange = [aData rangeOfCString: "application/pgp-signature" options: NSCaseInsensitiveSearch]; if (eRange.length > 0) { [thePart setProtocol: [[NSString stringWithString: @"application/pgp-signature"] dataUsingEncoding: NSASCIIStringEncoding]]; } // We parse the boundary and remove the quotation-mark in it cData = [thePart boundary]; eRange = [cData rangeOfCString: "\"" options: NSCaseInsensitiveSearch]; if ((eRange.location == 0) && (eRange.length > 0)) { cData = [cData subdataFromIndex: 1]; eRange = [cData rangeOfCString: "\"" options: NSCaseInsensitiveSearch]; if ( eRange.length > 0 ) { [thePart setBoundary: [cData subdataToIndex: eRange.location]]; } } } else { [thePart setContentType: @"text/plain"]; noHeader = YES; } // We set the raw content aRange = [aData rangeOfCString: "\n\n"]; // The body is separated from the header by an empty line if ((aRange.length > 0) && !noHeader) { if ([[thePart boundary] length] > 0) { aRange = [aData rangeOfCString: [[NSString stringWithFormat: @"--%s", [[thePart boundary] cString]] cString]]; } else { aRange.location += 2; } } else { aRange.location = 0; } [CWMIMEUtility setContentFromRawSource: [aData subdataFromIndex: aRange.location] inPart: thePart]; // // We must check encapsulated-signed-message. // if ([thePart isMIMEType: @"multipart" subType: @"signed"]) { CWMIMEMultipart *aMimeMultipart; int i, c; aMimeMultipart = (CWMIMEMultipart *)[thePart content]; c = [aMimeMultipart count]; for (i = 1; i < c; i++) { CWPart *aPart; aPart = [aMimeMultipart partAtIndex:i]; if ([aPart isMIMEType: @"application" subType: @"pgp-signature"]) { [self _verifyPart: [aMimeMultipart partAtIndex: 0] allPart: thePart rawSource: (NSData *)aMutableData signaturePart: aPart message: theMessage]; [aMimeMultipart removePart: aPart]; break; } } } RELEASE(aMutableData); } // Cleanups [[NSFileManager defaultManager] removeFileAtPath: inFilename handler: nil]; [[NSFileManager defaultManager] removeFileAtPath: outFilename handler: nil]; free(s1); free(s2); RELEASE(aTask); } // // GPG commands: // // --batch Use batch mode. Never ask, do not allow inter // active commands. // // --status-fd n // Write special status strings to the file // descriptor n. See the file DETAILS in the docu // mentation for a listing of them. // - (void) _verifyPart: (CWPart *) thePart allPart: (CWPart *) allPart rawSource: (NSData *) rawData signaturePart: (CWPart *) signPart message: (CWMessage *) theMessage { NSString *aLaunchPath, *outFilename, *signFilename, *dataFilename, *aBoundary; NSPipe *standardInput, *standardError; NSMutableString *aWarningMessage; NSMutableData *aMutableData; NSMutableArray *arguments; NSTask *aTask; NSData *aData; NSRange aRange; char *s1, *s2; // We generate tempory filenames s1 = tempnam([GNUMailTemporaryDirectory() cString], NULL); dataFilename = [NSString stringWithFormat: @"%s", s1]; signFilename = [NSString stringWithFormat: @"%s.sig", s1]; s2 = tempnam([GNUMailTemporaryDirectory() cString], NULL); outFilename = [NSString stringWithFormat: @"%s.out", s2]; // We first get our launch path aLaunchPath = [[NSUserDefaults standardUserDefaults] stringForKey: @"PGPBUNDLE_GPG_PATH"]; if (!aLaunchPath || ([aLaunchPath length] == 0)) { #ifdef MACOSX aLaunchPath = @"/usr/local/bin/gpg"; #else aLaunchPath = @"/usr/bin/gpg"; #endif } // We now verify if file exist & is executable if (![[NSFileManager defaultManager] isExecutableFileAtPath: aLaunchPath]) { NSRunAlertPanel(_(@"Error!"), _(@"The file %@ does not exist or is not executable"), _(@"OK"), // default NULL, // alternate NULL, aLaunchPath); return; } // We create our task object aTask = [[NSTask alloc] init]; [aTask setLaunchPath: aLaunchPath]; // We initialize our arguments arguments = [[NSMutableArray alloc] initWithObjects: @"--batch", // Use batch mode. @"--no-tty", // Make sure that the TTY (terminal) is // never used for any output. @"--status-fd", @"2", // Write special status strings to the file // descriptor 2. @"-o", outFilename, // Write output to file. @"--verify", signFilename, // signature file name dataFilename, // signed file name nil]; // We write our signature to a temporary file [(NSData *)[signPart content] writeToFile: signFilename atomically: YES]; [[NSFileManager defaultManager] enforceMode: 0600 atPath: signFilename]; // We create our standard input handle pipe standardInput = [NSPipe pipe]; // We the raw source of our part / message isn't available, let's obtain it. if (rawData == nil) { // We replace all occurences of \r\n by \n aMutableData = AUTORELEASE([[NSMutableData alloc] initWithData: [theMessage rawSource]]); [aMutableData replaceCRLFWithLF]; aData = aMutableData; aBoundary = [NSString stringWithFormat: @"--%s", [[theMessage boundary] cString]]; } else { aData = rawData; aBoundary = [NSString stringWithFormat: @"--%s", [[allPart boundary] cString]]; } // We get the data enclosed in our boundary. First we search for // a starting point. aRange = [aData rangeOfCString: [aBoundary cString]]; aData = [aData subdataFromIndex: NSMaxRange(aRange)+1]; // Then we search for an ending point, trimming everything // to that ending point. aRange = [aData rangeOfCString: [aBoundary cString]]; aRange.length = aRange.location-1; aRange.location = 0; aData = [aData subdataWithRange: aRange]; // Before feeding everything to gpg, we must replace // all occurences of LF by CRLF. aMutableData = AUTORELEASE([[NSMutableData alloc] initWithData: aData]); aData = (NSData *)[aMutableData replaceLFWithCRLF]; // We finally write our data to a file. We'll use this // file for verification. [aData writeToFile: dataFilename atomically: YES]; [[NSFileManager defaultManager] enforceMode: 0600 atPath: dataFilename]; // We set the stdin / stdout [aTask setStandardInput: standardInput]; // We set our task's standard error standardError = [NSPipe pipe]; [aTask setStandardError: standardError]; // We set our task's arguments [aTask setArguments: arguments]; RELEASE(arguments); // We create our mutable data and string object aWarningMessage = [[NSMutableString alloc] initWithString: _(@"Authentication failed due the following reason(s):\n")]; aMutableData = [[NSMutableData alloc] init]; // We lauch our task [aTask launch]; // While the task is dunning, we accumulate the infoz read on stderr // into aMutableData. while ([aTask isRunning]) { [aMutableData appendData: [[standardError fileHandleForReading] availableData]]; } // We analyse the output of our GPG task to stderr. If it the authentication // failed, we do some cleanups. if (![self _analyseTaskOutput: aMutableData message: aWarningMessage]) { // We show the reason why authentication failed NSRunAlertPanel(_(@"Error!"), aWarningMessage, _(@"OK"), // default NULL, // alternate NULL); // We remove our temporary files and we free some vars [[NSFileManager defaultManager] removeFileAtPath: dataFilename handler:nil]; [[NSFileManager defaultManager] removeFileAtPath: signFilename handler:nil]; [[NSFileManager defaultManager] removeFileAtPath: outFilename handler:nil]; free(s1); free(s2); RELEASE(aMutableData); RELEASE(aWarningMessage); RELEASE(aTask); return; } else { if ([aMutableData rangeOfCString: "GOODSIG" options: NSCaseInsensitiveSearch].length > 0) { [theMessage setProperty: [NSNumber numberWithInt: SIGNED] forKey: @"CONTENT-STATUS"]; } } // Cleanups [[NSFileManager defaultManager] removeFileAtPath: dataFilename handler:nil]; [[NSFileManager defaultManager] removeFileAtPath: signFilename handler:nil]; [[NSFileManager defaultManager] removeFileAtPath: outFilename handler:nil]; free(s1); free(s2); RELEASE(aMutableData); RELEASE(aWarningMessage); RELEASE(aTask); } // // // GPG commands: // // SIGN ONLY to ludovic@Sophos.ca: OR // SIGN ONLY to foo@bar.com // // /usr/bin/gpg --batch --no-tty --status-fd 2 // --comment 'Using GnuPG with Mozilla - http://enigmail.mozdev.org' // --always-trust --encrypt-to ludovic@Sophos.ca --clearsign -u ludovic@Sophos.ca --passphrase-fd 0 // // // ENCRYPT ONLY to ludovic@Sophos.ca // // To encrypt, we must have the public key of -r // // // /usr/bin/gpg --batch --no-tty --status-fd 2 // --comment 'Using GnuPG with Mozilla - http://enigmail.mozdev.org' // --always-trust --encrypt-to ludovic@Sophos.ca -a -e -u ludovic@Sophos.ca -r ludovic@Sophos.ca // // // ENCRYPT ONLY to foo@bar.com // // /usr/bin/gpg --batch --no-tty --status-fd 2 // --comment 'Using GnuPG with Mozilla - http://enigmail.mozdev.org' // --always-trust --encrypt-to ludovic@Sophos.ca -a -e -u ludovic@Sophos.ca -r foo@bar.com // // // -a, --armor // Create ASCII armored output. // // -e, --encrypt // Encrypt data. This option may be combined with // --sign. // // // ENCRYPT AND SIGN to ludovic@Sophos.ca // // /usr/bin/gpg --batch --no-tty --status-fd 2 // --comment 'Using GnuPG with Mozilla - http://enigmail.mozdev.org' // --always-trust --encrypt-to ludovic@Sophos.ca -a -e -s -u ludovic@Sophos.ca -r ludovic@Sophos.ca // --passphrase-fd 0 // // FIXME: Should return the new message instead of modifying directly :) // - (CWMessage *) _encryptMessage: (CWMessage *) theMessage multipart: (BOOL) aBOOL { NSString *aLaunchPath, *aUserID, *aRecipientUserID, *inFilename, *outFilename, *aPassphrase; NSPipe *standardInput, *standardError; NSMutableString *aWarningMessage; NSMutableData *aMutableData; NSMutableArray *arguments; NSArray *allRecipients; NSTask *aTask; BOOL encapsulationFlag; char *s1, *s2; int i; encapsulationFlag = NO; // We generate our filename s1 = tempnam([GNUMailTemporaryDirectory() cString], NULL); outFilename = [NSString stringWithCString: s1]; s2 = tempnam([GNUMailTemporaryDirectory() cString], NULL); inFilename = [NSString stringWithCString: s2]; // We get our User ID (E-Mail address only). We use it for the following GPG parameters // (and also to obtain the GPG passphrase): // // --encrypt-to // -u // if (![[NSUserDefaults standardUserDefaults] objectForKey: @"PGPBUNDLE_USE_FROM_FOR_SIGNING"] || [[NSUserDefaults standardUserDefaults] integerForKey: @"PGPBUNDLE_USE_FROM_FOR_SIGNING"] == NSOnState) { aUserID = [[theMessage from] address]; } else { aUserID = [[NSUserDefaults standardUserDefaults] stringForKey: @"PGPBUNDLE_USER_EMAIL_ADDRESS"]; } // We get our recipient User ID // FIXME: Support more than 1 recipient allRecipients = [theMessage recipients]; aRecipientUserID = nil; for (i = 0; i < [allRecipients count]; i++) { CWInternetAddress *aInternetAddress; aInternetAddress = [allRecipients objectAtIndex: i]; if ([aInternetAddress type] == PantomimeToRecipient) { aRecipientUserID = [aInternetAddress address]; break; } } // We first get our launch path aLaunchPath = [[NSUserDefaults standardUserDefaults] stringForKey: @"PGPBUNDLE_GPG_PATH"]; if (!aLaunchPath || [aLaunchPath length] == 0) { #ifdef MACOSX aLaunchPath = @"/usr/local/bin/gpg"; #else aLaunchPath = @"/usr/bin/gpg"; #endif } // We now verify if file exist & is executable if (![[NSFileManager defaultManager] isExecutableFileAtPath: aLaunchPath]) { NSRunAlertPanel(_(@"Error!"), _(@"The file %@ does not exist or is not executable"), _(@"OK"), // default NULL, // alternate NULL, aLaunchPath); return nil; } // We create our task object aTask = [[NSTask alloc] init]; [aTask setLaunchPath: aLaunchPath]; // Let's create our array of arguments arguments = [[NSMutableArray alloc] initWithObjects: @"--batch", @"--no-tty", @"--status-fd", @"2", @"--comment", @"Using the GPG bundle for GNUMail", @"--always-trust", @"--encrypt-to", aUserID, // ex: ludovic@Sophos.ca nil]; // // If we sign ONLY // if ([sign tag] == SIGNED && [encrypt tag] == NOT_ENCRYPTED) { if (aBOOL) { [arguments addObject: @"-a"]; // ASCII armored output [arguments addObject: @"-s"]; // make a signature [arguments addObject: @"-b"]; // make a detached signature } else { [arguments addObject: @"--clearsign"]; // make a clear text signature } } // // If we encrypt ONLY // else if ([sign tag] == NOT_SIGNED && [encrypt tag] == ENCRYPTED ) { [arguments addObject: @"-a"]; // ASCII armored output [arguments addObject: @"-e"]; // encrypt [arguments addObject: @"-r"]; // recipient user-id [arguments addObject: aRecipientUserID]; } // // If we BOTH sign AND encrypt // else if ([sign tag] == SIGNED && [encrypt tag] == ENCRYPTED) { if (aBOOL) { encapsulationFlag = YES; [arguments addObject: @"-a"]; // ASCII armored output [arguments addObject: @"-s"]; // make a signature [arguments addObject: @"-b"]; // make a detached signature } else { [arguments addObject: @"-a"]; // ASCII armored output [arguments addObject: @"-e"]; // encrypt [arguments addObject: @"-s"]; // and sign [arguments addObject: @"-r"]; // recipient user-id [arguments addObject: aRecipientUserID]; } } // // Last standard arguments // [arguments addObject: @"-u"]; [arguments addObject: aUserID]; // ex: ludovic@Sophos.ca [arguments addObject: @"--passphrase-fd"]; [arguments addObject: @"0"]; [arguments addObject: @"-o"]; [arguments addObject: outFilename]; if (aBOOL) { [arguments addObject: inFilename]; } [aTask setArguments: arguments]; RELEASE(arguments); if (aBOOL) { // We generate our raw data of the "Part"'s part of our Message NSMutableData *rawSourceOfPart; NSData *aData; NSRange aRange; rawSourceOfPart = [[NSMutableData alloc] init]; // We add our Content-Type: abc/def; boundary="--foo" to our message if ([theMessage isMIMEType: @"multipart" subType: @"signed"] && [encrypt tag] == ENCRYPTED && [sign tag] == NOT_SIGNED) { [rawSourceOfPart appendCFormat: @"Content-Type: multipart/signed; protocol=\"application/pgp-signature\"; micalg=pgp-sha1;\n\tboundary=\"%s\"\n\n", [[theMessage boundary] cString]]; // We append our message content aData = [theMessage dataValue]; aRange = [aData rangeOfCString: "\n\n"]; aData = [aData subdataFromIndex: (aRange.location + 2)]; [rawSourceOfPart appendData: aData]; // We write our mail content to a temporary file [[rawSourceOfPart replaceLFWithCRLF] writeToFile: inFilename atomically: YES]; [[NSFileManager defaultManager] enforceMode: 0600 atPath: inFilename]; } else { [rawSourceOfPart appendCFormat: @"Content-Type: %@;\n", [theMessage contentType]]; [rawSourceOfPart appendCFormat: @"\tboundary=\""]; [rawSourceOfPart appendData: [theMessage boundary]]; [rawSourceOfPart appendCFormat: @"\"\n\n"]; // We append our message content aData = [theMessage dataValue]; aRange = [aData rangeOfCString: "\n\n"]; aData = [aData subdataFromIndex: (aRange.location + 2)]; [rawSourceOfPart appendData: aData]; // We write our mail content to a temporary file if ([sign tag] == SIGNED) { [[rawSourceOfPart replaceLFWithCRLF] writeToFile: inFilename atomically: YES]; [[NSFileManager defaultManager] enforceMode: 0600 atPath: inFilename]; } else { [rawSourceOfPart writeToFile: inFilename atomically: YES]; [[NSFileManager defaultManager] enforceMode: 0600 atPath: inFilename]; } } RELEASE(rawSourceOfPart); } // We create our standard input handle pipe and we set the stdin standardInput = [NSPipe pipe]; [aTask setStandardInput: standardInput]; // We set our task's standard error standardError = [NSPipe pipe]; [aTask setStandardError: standardError]; // We obtain our passphrase aPassphrase = [self _passphraseForID: aUserID]; // ex: ludovic@Sophos.ca // We lauch our task [aTask launch]; // We write everything to the pipe [[standardInput fileHandleForWriting] writeData: [aPassphrase dataUsingEncoding: NSASCIIStringEncoding]]; // We 'flush' the passphrase by writing a \n [[standardInput fileHandleForWriting] writeData: [NSData dataWithBytes: "\n" length: 1]]; // We write our part content if (!aBOOL) { NSData *aData; NSRange aRange; int encoding; encoding = [NSString encodingForCharset: [[theMessage charset] dataUsingEncoding: NSASCIIStringEncoding]]; if (encoding == -1) { encoding = NSASCIIStringEncoding; } // We set our message content aData = [theMessage dataValue]; aRange = [aData rangeOfCString: "\n\n"]; aData = [aData subdataFromIndex: (aRange.location + 2)]; if ([theMessage contentTransferEncoding] == PantomimeEncodingQuotedPrintable) { aData = [aData decodeQuotedPrintableInHeader: NO]; if (encoding == NSISO2022JPStringEncoding) { // ISO-2022-JP message does not need quoted-printable encoding, because ISO-2022-JP is 7bit code [theMessage setContentTransferEncoding: PantomimeEncodingNone]; } else if (encoding == NSUTF8StringEncoding) { // If the encoding of Japanese messages is UTF-8, base64 is better than quoted-printable [theMessage setContentTransferEncoding: PantomimeEncodingBase64]; } } else if ([theMessage contentTransferEncoding] == PantomimeEncodingBase64) { aData = [aData decodeBase64]; } // We write the data to our pipe [[standardInput fileHandleForWriting] writeData: aData]; } [[standardInput fileHandleForWriting] closeFile]; // We create our mutable data and string object aWarningMessage = [[NSMutableString alloc] initWithString: _(@"Encryption failed due the following reason(s):\n")]; aMutableData = [[NSMutableData alloc] init]; // While the task is dunning, we accumulate the infoz read on stderr // into aMutableData. while ([aTask isRunning]) { [aMutableData appendData: [[standardError fileHandleForReading] availableData]]; } // We analyse the output of our GPG task to stderr. If it the encryption // failed, we do some cleanups. if (![self _analyseTaskOutput: aMutableData message: aWarningMessage] || [aTask terminationStatus] > 0) { // We show the reason why decryption failed NSRunAlertPanel(_(@"Error!"), aWarningMessage, _(@"OK"), // default NULL, // alternate NULL); // FIXME: move to the _analyseTaskOutput:: method // We remove the passphrase for this ID [passphraseCache removeObjectForKey: aUserID]; // We remove our temporary file and we free some vars [[NSFileManager defaultManager] removeFileAtPath: outFilename handler: nil]; if (aBOOL) { [[NSFileManager defaultManager] removeFileAtPath: inFilename handler: nil]; } free(s2); free(s1); RELEASE(aWarningMessage); RELEASE(aMutableData); RELEASE(aTask); return nil; } RELEASE(aWarningMessage); RELEASE(aMutableData); // // Encryption or signing (or both!) has completed. We now replace the // actual content of the message with the new one. // if (!aBOOL) { [theMessage setContent: [NSData dataWithContentsOfFile: outFilename]]; } else if (([sign tag] == SIGNED && [encrypt tag] == NOT_ENCRYPTED) || encapsulationFlag) { NSMutableData *rawSource, *aMutableData; NSString *aString, *aBoundary; NSData *aBoundaryData, *aData; NSRange aRange; // We generate a new boundary aBoundaryData = [CWMIMEUtility globallyUniqueBoundary]; aBoundary = [NSString stringWithFormat: @"\n--%s", [aBoundaryData cString]]; aString = [NSString stringWithFormat: @"Content-type: multipart/signed; protocol=\"application/pgp-signature\"; micalg=pgp-sha1;\n\tboundary=\"%s\"\n", [aBoundaryData cString]]; aString = [NSString stringWithFormat: @"%@%@\nContent-Type: multipart/mixed; boundary=\"%s\"\n", aString, aBoundary, [[theMessage boundary] cString]]; rawSource = [[NSMutableData alloc] init]; [rawSource appendCFormat: @"%@\n", aString]; // We replace all occurences of \r\n by \n aMutableData = [[NSMutableData alloc] initWithData: [NSData dataWithContentsOfFile: inFilename]]; [aMutableData replaceCRLFWithLF]; aData = aMutableData; aRange = [aData rangeOfCString: "\n\n"]; aData = [aData subdataFromIndex: (aRange.location + 2)]; [rawSource appendData: aData]; RELEASE(aMutableData); // We set our signature [rawSource appendCFormat: @"%@\ncontent-type: application/pgp-signature\n\n%@%@--\n", aBoundary, [NSString stringWithContentsOfFile: outFilename], aBoundary]; [theMessage setBoundary: aBoundaryData]; [theMessage setContentType: @"multipart/signed"]; [theMessage setProtocol: [[NSString stringWithString: @"application/pgp-signature"] dataUsingEncoding: NSASCIIStringEncoding]]; [theMessage setContentTransferEncoding: PantomimeEncodingNone]; [CWMIMEUtility setContentFromRawSource: rawSource inPart: (CWPart *)theMessage]; RELEASE(rawSource); if (encapsulationFlag) { [sign setTag: NOT_SIGNED]; [self _encryptMessage: theMessage multipart: YES]; } } else { CWMIMEMultipart *aMimeMultipart; NSData *aBoundary; NSString *aString; CWPart *aPart; // We create our new multipart object aMimeMultipart = [[CWMIMEMultipart alloc] init]; // // We add our extra part (Version: 1) // aPart = [[CWPart alloc] init]; [aPart setContentTransferEncoding: PantomimeEncodingNone]; [aPart setContentType: @"application/pgp-encrypted"]; [aPart setContent: [@"Version: 1" dataUsingEncoding: NSASCIIStringEncoding]]; [aPart setSize: 10]; [aMimeMultipart addPart: aPart]; RELEASE(aPart); // // We add our encrypted part // // This is safe since our output is ASCII armored when encrypted aString = [NSString stringWithContentsOfFile: outFilename]; aString = [aString stringByAppendingString: @"\n"]; aPart = [[CWPart alloc] init]; [aPart setContentTransferEncoding: PantomimeEncodingNone]; [aPart setContentType: @"application/octet-stream"]; [aPart setContent: [aString dataUsingEncoding: NSASCIIStringEncoding]]; [aPart setSize: [aString length]]; [aMimeMultipart addPart: aPart]; RELEASE(aPart); // We generate a new boundary aBoundary = [CWMIMEUtility globallyUniqueBoundary]; // We set the new boundary, the new Content-Type and the Content-Transfer-Encoding to our message [theMessage setBoundary: aBoundary]; [theMessage setContentType: @"multipart/encrypted"]; [theMessage setProtocol: [[NSString stringWithString: @"application/pgp-encrypted"] dataUsingEncoding: NSASCIIStringEncoding]]; [theMessage setContentTransferEncoding: PantomimeEncodingNone]; // We finally set the new multipart content [theMessage setContent: aMimeMultipart]; RELEASE(aMimeMultipart); } // Cleanups [[NSFileManager defaultManager] removeFileAtPath: outFilename handler: nil]; if (aBOOL) { [[NSFileManager defaultManager] removeFileAtPath: inFilename handler: nil]; } free(s2); free(s1); RELEASE(aTask); return theMessage; } // // // - (void) _messageFetchCompleted: (NSNotification *) theNotification { NSTextView *aTextView; CWMessage *aMessage; aMessage = [[theNotification userInfo] objectForKey: @"Message"]; aTextView = [aMessage propertyForKey: @"NSTextView"]; RETAIN(aTextView); // We flush the previous properties [aMessage setProperty: nil forKey: @"NSTextView"]; [aMessage setProperty: nil forKey: @"Loading"]; if (aTextView && [aTextView window] && [[aTextView window] isVisible]) { id aController; aController = [aTextView delegate]; if ([aController selectedMessage] == aMessage) { // We decode our message for real now since we have our raw source. [self messageWillBeDisplayed: aMessage inView: aTextView]; // We display it! [Utilities showMessage: aMessage target: aTextView showAllHeaders: NO]; } } RELEASE(aTextView); } // // The ID is, for example: ludovic@Sophos.ca // - (NSString *) _passphraseForID: (NSString *) theID { Passphrase *aPassphrase; // We first verify in our cache aPassphrase = [passphraseCache objectForKey: theID]; // If we must prompt for the password if (!aPassphrase) { PasswordPanelController *theController; int result; theController = [[PasswordPanelController alloc] initWithWindowNibName: @"PasswordPanel"]; [[theController window] setTitle: [NSString stringWithFormat: _(@"Passphrase for %@"), theID]]; result = [NSApp runModalForWindow: [theController window]]; // If the user has entered a password... if (result == NSRunStoppedResponse) { // Let's cache this password... aPassphrase = [[Passphrase alloc] initWithValue: [theController password]]; [passphraseCache setObject: aPassphrase forKey: theID]; RELEASE(aPassphrase); } else { aPassphrase = nil; } RELEASE(theController); } return [aPassphrase value]; } // // // - (void) _tick { NSEnumerator *theEnumerator; NSCalendarDate *date; NSString *aKey; int minutes, value; theEnumerator = [passphraseCache keyEnumerator]; value = [[NSUserDefaults standardUserDefaults] integerForKey: @"PGPBUNDLE_PASSPHRASE_EXPIRY_VALUE"]; date = (NSCalendarDate *)[NSCalendarDate date]; while ((aKey = [theEnumerator nextObject])) { Passphrase *aPassphrase; aPassphrase = [passphraseCache objectForKey: aKey]; [date years: NULL months: NULL days: NULL hours: NULL minutes: &minutes seconds: NULL sinceDate: [aPassphrase date]]; // We must remove the passphrase from the cache if (minutes >= value) { [passphraseCache removeObjectForKey: aKey]; } } } @end GNUMail/Bundles/PGP/PGPView.h0100644000014600001460000000256610424672357016264 0ustar monotonemonotone/* ** PGPView.h ** ** Copyright (c) 2001-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_PGPView #define _GNUMail_H_PGPView #import @interface PGPView : NSView { @public NSTextField *versionLabel; NSTextField *gpgPathField; NSTextField *userEMailAddressField; NSButton *useFromForSigning; NSButton *alwaysSign; NSButton *alwaysEncrypt; NSButton *alwaysUseMultipartPGP; NSButton *removePassphraseFromCacheButton; NSTextField *removePassphraseFromCacheField; @private id parent; } - (id) initWithParent: (id) theParent; - (void) layoutView; @end #endif // _GNUMail_H_PGPView GNUMail/Bundles/PGP/PGPView.m0100644000014600001460000001075710424672357016272 0ustar monotonemonotone/* ** PGPView.m ** ** Copyright (c) 2001-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "PGPView.h" #include "Constants.h" #include "LabelWidget.h" @implementation PGPView - (id) initWithParent: (id) theParent { self = [super init]; parent = theParent; return self; } // // // - (void) dealloc { RELEASE(versionLabel); RELEASE(gpgPathField); RELEASE(userEMailAddressField); RELEASE(useFromForSigning); RELEASE(alwaysSign); RELEASE(alwaysEncrypt); RELEASE(alwaysUseMultipartPGP); RELEASE(removePassphraseFromCacheButton); RELEASE(removePassphraseFromCacheField); [super dealloc]; } // // // - (void) layoutView { LabelWidget *label; // // Version of the Bundle // versionLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(5, 210, 430, TextFieldHeight) label: @"Version: v0.0.0" alignment: NSRightTextAlignment]; RETAIN(versionLabel); [self addSubview: versionLabel]; // // GPG path // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(5, 170, 170, TextFieldHeight) label: _(@"GPG/PGP executable path:") alignment: NSRightTextAlignment]; [self addSubview: label]; gpgPathField = [[NSTextField alloc] initWithFrame: NSMakeRect(185,170,235,TextFieldHeight)]; [self addSubview: gpgPathField]; // // User ID // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(5, 140, 170, TextFieldHeight) label: _(@"User E-Mail address:") alignment: NSRightTextAlignment]; [self addSubview: label]; userEMailAddressField = [[NSTextField alloc] initWithFrame: NSMakeRect(185,140,235,TextFieldHeight)]; [self addSubview: userEMailAddressField]; // // Use FROM for signing // useFromForSigning = [[NSButton alloc] initWithFrame: NSMakeRect(5,105,300,ButtonHeight)]; [useFromForSigning setButtonType: NSSwitchButton]; [useFromForSigning setBordered: NO]; [useFromForSigning setTitle: _(@"Use FROM E-Mail address for signing")]; [self addSubview: useFromForSigning]; // // Always encrypt // alwaysEncrypt = [[NSButton alloc] initWithFrame: NSMakeRect(5,80,300,ButtonHeight)]; [alwaysEncrypt setButtonType: NSSwitchButton]; [alwaysEncrypt setBordered: NO]; [alwaysEncrypt setTitle: _(@"Always encrypt messages")]; [self addSubview: alwaysEncrypt]; // // Always sign // alwaysSign = [[NSButton alloc] initWithFrame: NSMakeRect(5,55,300,ButtonHeight)]; [alwaysSign setButtonType: NSSwitchButton]; [alwaysSign setBordered: NO]; [alwaysSign setTitle: _(@"Always sign messages")]; [self addSubview: alwaysSign]; // // Always use Multipart PGP style // alwaysUseMultipartPGP = [[NSButton alloc] initWithFrame: NSMakeRect(5,30,300,ButtonHeight)]; [alwaysUseMultipartPGP setButtonType: NSSwitchButton]; [alwaysUseMultipartPGP setBordered: NO]; [alwaysUseMultipartPGP setTitle: _(@"Always use Multipart PGP style")]; [self addSubview: alwaysUseMultipartPGP]; // // Remove passphrase after X minutes // removePassphraseFromCacheButton = [[NSButton alloc] initWithFrame: NSMakeRect(5,5,260,ButtonHeight)]; [removePassphraseFromCacheButton setButtonType: NSSwitchButton]; [removePassphraseFromCacheButton setBordered: NO]; [removePassphraseFromCacheButton setTitle: _(@"Remove passphrase from cache after")]; [removePassphraseFromCacheButton setTarget: parent]; [removePassphraseFromCacheButton setAction: @selector(removePassphraseFromCacheButtonClicked:)]; [self addSubview: removePassphraseFromCacheButton]; removePassphraseFromCacheField = [[NSTextField alloc] initWithFrame: NSMakeRect(275,5,50,TextFieldHeight)]; [self addSubview: removePassphraseFromCacheField]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(335, 5, 100, TextFieldHeight) label: _(@"minutes") alignment: NSLeftTextAlignment]; [self addSubview: label]; } @end GNUMail/Bundles/PGP/PGPViewController.h0100644000014600001460000000305510424672357020322 0ustar monotonemonotone/* ** PGPViewController.h ** ** Copyright (c) 2001-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_PGPViewController #define _GNUMail_H_PGPViewController #import #include "PreferencesModule.h" @interface PGPViewController : NSObject { // Outlets IBOutlet id view; IBOutlet NSTextField *versionLabel; IBOutlet NSTextField *gpgPathField; IBOutlet NSTextField *userEMailAddressField; IBOutlet NSButton *useFromForSigning; IBOutlet NSButton *alwaysSign; IBOutlet NSButton *alwaysEncrypt; IBOutlet NSButton *alwaysUseMultipartPGP; IBOutlet NSButton *removePassphraseFromCacheButton; IBOutlet NSTextField *removePassphraseFromCacheField; } // // action methods // - (IBAction) removePassphraseFromCacheButtonClicked: (id) sender; @end #endif // _GNUMail_H_PGPViewController GNUMail/Bundles/PGP/PGPViewController.m0100644000014600001460000001453310601435446020323 0ustar monotonemonotone/* ** PGPViewController.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "PGPViewController.h" #include "Constants.h" #include "NSUserDefaults+Extensions.h" #include "PGPController.h" #ifndef MACOSX #include "PGPView.h" #endif static PGPViewController *singleInstance = nil; @implementation PGPViewController - (id) initWithNibName: (NSString *) theName { self = [super init]; #ifdef MACOSX if (![NSBundle loadNibNamed: theName owner: self]) { AUTORELEASE(self); return nil; } RETAIN(view); #else // We link our view view = [[PGPView alloc] initWithParent: self]; [view layoutView]; // We link our outlets versionLabel = ((PGPView *)view)->versionLabel; gpgPathField = ((PGPView *)view)->gpgPathField; userEMailAddressField = ((PGPView *)view)->userEMailAddressField; useFromForSigning = ((PGPView *)view)->useFromForSigning; alwaysSign = ((PGPView *)view)->alwaysSign; alwaysEncrypt = ((PGPView *)view)->alwaysEncrypt; alwaysUseMultipartPGP = ((PGPView *)view)->alwaysUseMultipartPGP; removePassphraseFromCacheButton = ((PGPView *)view)->removePassphraseFromCacheButton; removePassphraseFromCacheField = ((PGPView *)view)->removePassphraseFromCacheField; #endif // We get our defaults for this panel [self initializeFromDefaults]; // We set the version label value [versionLabel setStringValue: [NSString stringWithFormat: _(@"Version: %@"), [[PGPController singleInstance] version]]]; return self; } // // // - (void) dealloc { singleInstance = nil; RELEASE(view); [super dealloc]; } // // action methods // // // access methods // - (NSImage *) image { NSBundle *aBundle; aBundle = [NSBundle bundleForClass: [self class]]; return AUTORELEASE([[NSImage alloc] initWithContentsOfFile: [aBundle pathForResource: @"pgp-mail" ofType: @"tiff"]]); } - (NSString *) name { return _(@"PGP"); } - (NSView *) view { return view; } - (BOOL) hasChangesPending { return YES; } // // // - (void) initializeFromDefaults { NSString *aString; // // GPG/PGP path // aString = [[NSUserDefaults standardUserDefaults] stringForKey: @"PGPBUNDLE_GPG_PATH"]; if ( aString ) { [gpgPathField setStringValue: aString]; } else { #ifdef MACOSX [gpgPathField setStringValue: @"/usr/local/bin/gpg"]; #else [gpgPathField setStringValue: @"/usr/bin/gpg"]; #endif } // // User's E-Mail address // aString = [[NSUserDefaults standardUserDefaults] stringForKey: @"PGPBUNDLE_USER_EMAIL_ADDRESS"]; if (aString) { [userEMailAddressField setStringValue: aString]; } else { [userEMailAddressField setStringValue: @""]; } [useFromForSigning setState: [[NSUserDefaults standardUserDefaults] integerForKey: @"PGPBUNDLE_USE_FROM_FOR_SIGNING" default: NSOnState]]; [alwaysSign setState: [[NSUserDefaults standardUserDefaults] integerForKey: @"PGPBUNDLE_ALWAYS_SIGN" default: NSOffState]]; [alwaysEncrypt setState: [[NSUserDefaults standardUserDefaults] integerForKey: @"PGPBUNDLE_ALWAYS_ENCRYPT" default: NSOffState]]; [alwaysUseMultipartPGP setState: [[NSUserDefaults standardUserDefaults] integerForKey: @"PGPBUNDLE_ALWAYS_MULTIPART" default: NSOffState]]; [removePassphraseFromCacheButton setState: [[NSUserDefaults standardUserDefaults] integerForKey: @"PGPBUNDLE_PASSPHRASE_EXPIRY" default: NSOffState]]; [removePassphraseFromCacheField setIntValue: [[NSUserDefaults standardUserDefaults] integerForKey: @"PGPBUNDLE_PASSPHRASE_EXPIRY_VALUE" default: 5]]; [self removePassphraseFromCacheButtonClicked: nil]; } // // // - (void) saveChanges { int aValue; [[NSUserDefaults standardUserDefaults] setObject: [gpgPathField stringValue] forKey: @"PGPBUNDLE_GPG_PATH"]; [[NSUserDefaults standardUserDefaults] setObject: [userEMailAddressField stringValue] forKey: @"PGPBUNDLE_USER_EMAIL_ADDRESS"]; [[NSUserDefaults standardUserDefaults] setInteger: [useFromForSigning state] forKey: @"PGPBUNDLE_USE_FROM_FOR_SIGNING"]; [[NSUserDefaults standardUserDefaults] setInteger: [alwaysUseMultipartPGP state] forKey: @"PGPBUNDLE_ALWAYS_MULTIPART"]; [[NSUserDefaults standardUserDefaults] setInteger: [removePassphraseFromCacheButton state] forKey: @"PGPBUNDLE_PASSPHRASE_EXPIRY"]; [[NSUserDefaults standardUserDefaults] setInteger: [alwaysSign state] forKey: @"PGPBUNDLE_ALWAYS_SIGN"]; [[NSUserDefaults standardUserDefaults] setInteger: [alwaysEncrypt state] forKey: @"PGPBUNDLE_ALWAYS_ENCRYPT"]; aValue = [removePassphraseFromCacheField intValue]; if (aValue <= 0) aValue = 5; // // We restart our timer if the value has changed // if (aValue != [[NSUserDefaults standardUserDefaults] integerForKey: @"PGPBUNDLE_PASSPHRASE_EXPIRY_VALUE"]) { [[NSUserDefaults standardUserDefaults] setInteger: aValue forKey: @"PGPBUNDLE_PASSPHRASE_EXPIRY_VALUE"]; [[PGPController singleInstance] updateAndRestartTimer]; } } // // action methods // - (IBAction) removePassphraseFromCacheButtonClicked: (id) sender { if ([removePassphraseFromCacheButton state] == NSOnState) { [removePassphraseFromCacheField setEditable: YES]; } else { [removePassphraseFromCacheField setEditable: NO]; } } // // Dumb impementation to keep the compiler quiet. // - (int) mode { return MODE_STANDARD; }; - (void) setMode: (int) theMode { } // // class methods // + (id) singleInstance { if (!singleInstance) { singleInstance = [[PGPViewController alloc] initWithNibName: @"PGPView"]; } return singleInstance; } @end GNUMail/Bundles/PGP/clear_20.tiff0100644000014600001460000000350610424672357017066 0ustar monotonemonotoneII*H3333R"""f=\븸fff)))=333)))DDDNNNcccf"""f333QQQ(((zwww3333"""f333DDDwww3333"""f333DDDwww3333zzzzQQQz\:::NNN3JJJf|QWrQWQW~QW~_dQWrQWQWQWrEH)#/fRRXXXf~~kks~~~ro):XXXf~~aai_b{~~ro):3333JJJf|QWrcgE|lKue4Yb4J@KKKUZeEH3333___ffgs6 M3333QQQfgluxgcva|pEUNY\~gl\['3333QQQfglgluyuxDEQSW~glgl\['3333___fQWr6 M3333R/4h/5P/5t/5\/5\/5t/5P/5h/5h/5P*-m'$NQSq3\""""""""""""""""""""""""0*5eTvRRRR"""f"""f"""f"""f"""f"""f"""f"""f"""f'''f) "@@6>(R/tmp/clear_20.tiffHHGNUMail/Bundles/PGP/clear_48.tiff0100644000014600001460000000122210424672357017071 0ustar monotonemonotoneII* P8$ BaPd6DbQ8V-FcQv=HdR9$X'ʲDY+fPsm7Ng2t}T7j{?It+R鴊vAUke׭P{5 )h*s{uwv bqXf6Do8x%hvBPLc;sy AsK>AkLl۽L8[Qh4K'Y1wos7޴_rƌOٚwGӼa^o Mk`;V=ok8:{[=B;>è|>C#G;o .F|S!Cȑ|Z "ָoġ)J1p-ƒr&*0,s,3Kc/Ml79Γ;=ϓ?%%z(R ' 'GNUMail/Bundles/PGP/encrypted_20.tiff0100644000014600001460000000351210424672357017772 0ustar monotonemonotoneII*HR"""f"""f"""f"""f\뻻(((zR333NNN(((z 999666VXX`bdgde"""745 3fffDDDegbsygacXXX눈"""}qp33fffDDD]]]DDD̈"""}qp33fffDDD|rfffDDD̈"""nf^3lll)(((\)ghvg`glglvnc|glvg\vglglvD;V2.6ughg`g`tqwwwwY\~g\ghg`D;h  LX\̔fgsq[ DDDQReXNcsQ]eQieQie+3/TUXQWe.+<DDD~~~~~knmUUw~y[K}DDD~~~y~~_kiadc~~~y[K}DDDQReQG~QW~_ds>Bo47@N?bQWQWe.+<DDD̔_aq[4DDD(z#$W#E#E#$W#<# N# N#<#$W#E) MA@uLX\ 333333333333333333333333333NCZhdk$/3R 33333333333 "@@:B(R/tmp/encrypted_20.tiffHHGNUMail/Bundles/PGP/encrypted_48.tiff0100644000014600001460000000127010424672357020003 0ustar monotonemonotoneII* P8$ BaPd6DbQ8V-FcQv=HdR8VLeyLU-LfPkm7Ng*3Hfy'Y}AFhsjt,'Y=F gӊUBYYm2*8-8 Eun R%^ mRv=1hFC9ޯ쬆ujuZK!W؋hBMe;]wbky3=ѫTNW֜w+-˗-0oWN\Fw~{0>H8hv7MK >Zz (2'?zC5J2"E4"#1KddM9J D@2j0?s@% TMEєmG%IҔ-K5MӔ*%%(R ' 'GNUMail/Bundles/PGP/pgp-mail.tiff0100644000014600001460000006157010506157373017207 0ustar monotonemonotoneII*00J?0$4<(1D2XR>l I|(iLccreated with The GIMP ' 'Adobe Photoshop 7.02006:09:25 09:24:18 adobe:docid:photoshop:43bd4efe-4ca6-11db-8c81-d26e35c2cbb3 created with The GIMP xcreated with The GIMP8BIM!xcreated with The GIMP8BIM%NP[ Q8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:23:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:23:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:23:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:23:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:23:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:23:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:23:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:23:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:23:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMO00 pgp-mail.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 00JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TNUR@t k w_m $ ye q#G{7mQ8[.arJtAUg_k@!.cvW7SJ1/ MW7JC\psOpd,x6Yi_SCk1?A-We=OZH]FSk>r~5e vZY?6E`6Ɠ>NJ(}4nq*UsC)%[V?WK}1[hR?땠 ,3'S Hc8:y%ɋG!Js;5NϢַ^&/ܛ옿k4rT-d \ U+F&/ܜb4ژQ?8BIM!UAdobe PhotoshopAdobe Photoshop 7.0%>>>R___z^^^y<<n===n>==!! n@?>$$#nEEC&&%nIHG&&%nIHG&&%nYYY///---WWWIIG&&%nppp+++222333***mmm¿IIG&&%n~___+++111111+++^^^IIG&&%npppnnn******+++***lllppoIIG&&%nnnn}}}YYY777222WWW~~~lllIIG&&%n~}|fefxxxxxxeeeIIG&&%n}|{XXW\\]pppyyyyyypppYYYXXX~IIG&&%nsrqZ[ZIIIHHHZZZvvu¿IIG&&%nIIG&&%nIIG&&%nIIG&&%nIIG&&%nIIG&&%nIIG(('pNML h>==,QQOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPS600GNUMail/Bundles/PGP/signed_20.tiff0100644000014600001460000000350410424672357017247 0ustar monotonemonotoneII*H)X&1{SN,'!e,..x]i]X'#!k~|twQNX%{F&kxKPaxQ-xrHY7D05kU.{kBV5r>+1#kQ-xkBY8o>*;"xF'krHV5q>*=#{F'knDY7rA+;%xQ-xrHY7l<+9 kU.{kBV5o>+4 kQ-xkBY8o>*9"xF'krHV5q>*=#{F'knDY7o>+9"x,9yTY7l<+4 k_b\eZ2,:%k%bYcA") 9  b2  "@@4<(R/tmp/pgp2_20.tiffHHGNUMail/Bundles/PGP/signed_48.tiff0100644000014600001460000000102610424672357017256 0ustar monotonemonotoneII*P P8$ BaPd6@c#Cb)}oI!̖J3K(8|D'ya$PaB|̏<' O _"5 *?LE}D?+}JW薚}'u҅vW!~A`1zч/8ȏ Fq9LfC%b . i >$*qk58]T^oE@P7:444ba<8a =[j fhihflG9""oi)30 CffjFH-)M;@C$$d#(nfiab>AJ!!# i**ffF" s>(^Wj haED  !fbbf4Y0qGY8z6*do%N [fW(eff7_4 rHU3s>+K2T&,hT 6$#qj \7%^dd<j9#kCY7o=+?&*b\%f73f< +maf2 T4q>+F'ak6&#iX hD<3_ffv&J.pC9g, iX iM22j9#qH<%ff<z77g,ib35f> _4 kCW5q>+Yad7cj4#%iE(+gk#' #Y0rHY7p>+F++mdf4`a 6  `f@3qGU3r=+C'%^ff>O++gX =+%yf}F-p>+?&(ebgi `K.(O/"y53fiK KifV33  wuՖQR[ff[ 9H)-H@?C$%6Shi V!&_:=qirB!-V:.Y.*lffhhhffm`<@P>"(,!q   < JR()]T\gQ`sy̟.KT`>|/ T~YMRVuvfG|GBY,HR|.C7*JaT"Ȅ/܄Xuމr ! r%Gy_Mai_cV>4ڍP4tإ6cBy /CfBMJ>S栝>MM'H[kr_v?sm߄2!˓(`薩C>0^!rA ,!܄"DhB&.~m[!\!/ î2GbF<%@1Tl䋱k KȊ9)z0E=,j.}D,T}LtSj2[AVP`RLLRI-AX8 $YzjUց6M/E.xBpz"5 !}.2 uw yޗ{%%Y (R ' 'GNUMail/Bundles/PGP/encrypted_80.tiff0100644000014600001460000006243210424672357020006 0ustar monotonemonotoneII*d  # ")1 .+ $    4 J#`+u2#7"7"7"9"9#9": 74-y%e E*    C#`3!72-y%eOKK > B CNV#a+s18"=!:4#`1/$b3!:/~&f ; !  $)* 20#9"]4 8 BU&h2"D # (-4 ?V*r7'?7 X #,'k":6 Y) "/"\-yJ2 2#8 )B ##^!\)C '#` "/ " !/ F%e6'A 7JO8 8#^ % 8/}(D W#; X ;";3%e"9U'j4T2Q E(B#9!7&<"^4 " ;%e"9'A2 ; .-z#;.{1)"]%<&h0%B0 #`26WF,  7)E0+G)o,J%?4$<*H'j'j2.| C+s$=%>"\ 95 9P*%e!YN!9*F :B0M%=%=.}.*E7) 4   3  F0/}#; 63R+H'k(A W*E3   J5'B+u M 96 :I!6,u'A%>(m#<#<R0 BF81$b 4,v*p(k'i#`'i!ZQ E ( Y-y-zN": E*F3P.|*D30U$<.}/ F&> 6*E >'@ @*EO % A0 C1#=$= ;1#;1/05!9!<#<92*pO ? " <$;+F&? &1 7+v)E(m%e&A#9 5 T"=+v !.,J)p+F)C*,w#` ' <G-x#<'A!6'i ; $ 6 $ & & / : G V*p6#="=2#^ ? 5 # @ (&g-J @(@T'@&; 8 N!<,v - 5+I$cT!79 M#`$?&?(m @  #)* +, + + ,. 27 BU*q8$? 5P .* V#>"\#;!7 B & M(@&: 4 9 9.~ #+-"9+u $ AFO!8&?+v : !,, '        %3 H'j!8&A2 :  U.M*q8 L&A5 '066.K <-)p 4 C(k(D2 C #/)   $ B(n%=%=![ .)C N$; 6 "\*D0 /~ 9 :#a+F 8Q5#=)m " /,      M7)C/+ !2#_.{0 ((l(C&g "]!=M %@#a C*D ,35&?N+/   9/|+G8Y;Z0JO *)o*B 63 4%e/}2#`%d 1#> D+ :*s 7.K2S#`/-z25 8 >  0*  2A5Q?`DdDd7T7UCcDd?_ :"]'@98 %0$;,E"98 ;$>5)(m!;5, W!Y&>9[&@* W7!8 : 1 " D'?6T9W6TBa(?'$9AaDdDd"\ '6SDdDd'>P'@94!\'C'@/M(B 3 '#_%A#` ;"=$c25W";7-I)o12&? @ ! 2  ( !7AaDd9X7SBbDd@` 81NDdDd(=L(BDdDd,HK O(A 5 8 &'A(C11   4!8 8-y8 )!Z 8!7+G :93(E V "R(k$;3N>]@`<[$: .zCcDd(> &3>]@_)m 4' ?$c+E0 7<\DdDdDd7U*B?^DdCc 3 <ZDd@` HDMK"\'jNL*pDdDdCb@`Dd?^$;QM?+v(C"\  L&?'A(B :26 : *p9*(l/~L,u.J 5P65 ( 7(m7TDdDd%; $:DdDd9W(lBcDdAa&fM B 2'h)@,G#9 "DDdDdCd/I"8 /*MM/ %6#;7&@ ' 6UN#=#^ &8'kP)DF/"<-1*DJ)+ !2DdDd5QQ1CcDd7U"7DdDdCc5M(m<ZCcDdDd7T "@^DdDd*oK <KM >  E'@+s !"8*s X&g#` <4/}2J!< @3O"7 3 J$=2  1!VDdDd=[*r-JDdBc(?.yBbDdDd4Q U$a,D@`DdA`P ! %9VDdDd)C!XA 2 -z!< G 5/~,H+I@%e#?.{/}#6 .|5 # '* 4"])D G 1  .AbDdDdBbDd>^%9T U7VDdDdBc+C. 9VDd:X VM/}?_DdDdBc%=  9"<-y "*s%B!9)C(B*A,C-G,G*B # &!9#a0  F#;5  #/  ?^DdDd.I1+ MM*q<\DdDdDd;Z6UBc@` 5MM24S1L,C 4P . )$b,F1O/H+E)C+D)?+C,E2#`K  ="; B  8 Y <4#=T0 6ODdDd%=MFLL ? ;4QAaDdDdBc6S#] 8ML @MML /  G+q!6(>)B*B*B'@(@*A$9$aI @ &- ' 3 9 5 5 4#_ :/)1#9%<(m Y";1 /*ADdDd8V,vA) +s"8#9/}K 3IM 2 I"\,t 5#8$;(?*B)B*B'@&<#9 3$b&e . :/ 2 5 5 5 4 1-' -z1 /#;!5+t6 02 , # 2:XDdDdBb-G 2 BMMMMJ = 3!W!1$:(?)A*B)B)B(?$9 4*p,u4G5Q<Z"8A`/L > 5 3 0) 4)n 1Q-H)CV V$?#` 0 .)@(?"6/~ UC 6*q%;,E(A(>(A*B*B)B(> 5.{,u*p-x#6<Z3N+t9Y(mCdBc&;@_Dd/~  !"8![ "#_)E&@%>*!Z&B A /  7MMM A  9&d"5'?(B*B*B(@'=)?&<1(m#`&<"9@aBc22P&\ >*s Y9XDd*B9XDd1N 5*":J B :'k >+t%> 2) & N'i!2'='='@*B*B*B'?'<&< 6&d/~,u)o6R1O-ECd/G+F'k=[Dd.{*r/}DdAa!6%? 1LDd2O3PDd6UO(2#; C/~#<%<%=3:/ 8 (.   $I,t#6'='@+B*B)B'>%;"7*p)n 0 D1L:X!5:X,G3Dd?^$;Dd=]02NDd*AJQ@aDd%<$>S#5Dd9X,GDd0IM ? @)m"5#^:#:> 6&A!5 5(n,v2 6#_,u"6&;'>)A*B*C)A&="5/|*r/~ 6-D8V!6?_8V V3NDd=\ 5/~![AbDd"7Dd6T!Z 5(>Dd3OM 3;ZDd'=(k4Q2Dd@_&@:W WMS 9$^!4%:'=)@+B*B)B0;$:93U B 3&<%<0L,E)B-H+D*C(@%:1(l-xH-x4Q+t9Y)o8WDd*A:YCc'jE?]Dd.I4S@_Dd&<(?HML1Dd<ZS 51LDd1K+D:X$c"63"8)B*B.I-G*B*B)C)A&<)C(B ;  ! S+E!8(@*C-F/I+C*A*A(?&>"6/~M"]5O9W7?_,DK=^@_QM"]/IDd1L0M1LP @5CcBb*p+7VDd+DM 'KKOCb>]#^C#_/|!8,D+B)@.J,E/L/J,G1N&;!3!Z ($c I-y!; C 5 5 4/C'=)A)C+B)B+D(?$<-xI5 6.G9W"61L0NM<ZDd3R'?5P$cCdCc V 9&?Dd;Y%;S ;M >A_Cc$8 :.EDd3ON, 3 ! $-y5*A-G)A*B-H/K-G(@*D0'g W 9/ 6"<&@(A0O%e3 ; E > $ 6'=#7.xM3 ; $ %- / 2 7>\Dd#:J"8L2A`Cc&@.I*sDdDd%:M0%dDdBb&>:W$bH9UBb(AL*r"6!72$9#8'=(A)B+D/J.I%;0~%dO3 #., /M'A.| E'?%=!;&A G02 %, '. 2 5 5 5 41+ #2LDd.I(?L @,G%>Dd@`"9N>]Dd-HS)CJAaDd%=@`2O 7$b/~&?,D)B&>,G0L.J(A'< 2&c 9 6* '. 1 2 4 4 4 3U(A Y/ @ 2)E3O":0 $ - 1 30 &  %8Dd8X)@+s-8U.|9VDd7U =0@_6T$:;[ 9#9 23(@(@,G*@&>)A.I1L-G$8.{&h ; ".1 1 3 5 5 41(  C#<:P)B"9(F 14$;*r # , 'eDd=]$a";4/J;Z#7@^?_5 % A3(@*C'<+E.E/K0K)D.H-G#6 T <) " )1 4 6 8 5 6(l(@1L3N 5$b9-'k-I": %T&A![ ") 8DdAb38W(A3+F42'?+D,F)C,E0L.J(@*E%90![- " &)- 2 4 5 5 2 @ 2/H6R/I)p?_DdDd1L3/}0)@(A#: Z $#a!> B & ' &= 7#9+F'='?,E,G1K-F/J/G&=+rL = (-)-0 3 5 5 ?+t Y* 0AbDdDd&='iDdDd+E %+0"< V(%>)E!9"\ 9)o 9.* " *Q 0~$:'<(@0K0L-E,F,B 4/}G* & '* /1 3 5 @ WH* !#8Bc>]'i*ADdDd 5.M@_Dd9VSGW"<4 " A*s'i- B41 . B+o&:&>'=(@*B+B+C1L,F2!Y (/+) 3 21 5 = 7 3 . $'i=[Bb,E&=DdDd?^N TDdDd.IMF5PDd?^#] >32 + $1. @#>'j  1"6)B*B)B)B(?&>)A$9(C B*r%=T 4 5 5 4 2 1 1$b3N;Z3O 1LDdDd$b'=BbCcDd:[ 7 +AbDd7TQ 2'>DdAb,uF &2P  E"=N1 +(l"= B . *p#: 10&@ E G4Q&B0O 6V&@3 D / ! &g=]DdDd,F&@^DdDd1D =2P2$:BcDd0M =[Dd>]!Z ;.{DdDd&>$`"9Ba)05 # B4(m.{4  & (  F#<3)o-z&f N"<,u/%d#?"]1DdDdDd"9.{BcDdDd)@M0 %>^+s-w@`DdBc#9 4ODdAb0F/|DdDd@a>^Aa8U&f&?S*)F%e(n!7.!:%d0   ;.|$?![ "5VM$< $6 8 <NDdDdDdCbAaAbBcDd3MM)!YBcAbBa@`DdDd=]$b3QDdDd=^04R5Q,E(?!4#^ 5(A 6 #$b": 5&?2%d"; 6 0."8,w+#a&A'B+v A K&A/ +@`4R?_DdCc 56TDd=[ W 3&;>_+t*q%d?]DdDd>_!67U7T0G3R,LMJL#9-G G 5$;5T*rS(E P&@,x ( ((m"<O '#9'A'>"\(k(B$b:Y!8&=BcAb(k0NDdBb3*p<ZAa 7K!49W3P+C 2N 0MMG 8IC @(n(B&h0"81P#_'@T%e)D F 1 1":0* $<%>31 $4'@O  5S-GR6Q8W#^6TDdDd7W+E2N)<![L 7 $DMMF $DIC /   >!:/~ +t&>4(C2R%d W : 7 # $,  %e$?"\(l(B2R&?'B <4 :#> E  !:XA`$;#^ 4 W&>!4)n$`N  9L)GE ;+    974. <1P7W.{D$b X1&AH1  & 7#: : :(C%?6&h =&>$> E ?+C"5"]@ 7K .MMG-H?' I :":02*s(B)o+ %> E%=!\ <8)D*r $ A ;  &g"</. $2 *r$= < Q"9&A C+ ( %3'A M V%>!6![+D +-{*C 6 C ;0"<$c  $c 2#^Q'j'C-z  10$;$< ?!8*D @ & #_%=(A/ @ 2)p!:4 G 4'A!Z(m*D'k 1  D#>";8 N%@!8![&?  =-y$>&@1P+ 8&g!97!Z $2'?5 8+G 1 M!<110 &  K&A:9+(A+t/N 9  I+v":&@!;1![ <+   2#`0"9 4$a)$:K3#9":$b*D ( P!=/ ",*  K$@%<S$>(F$b  8-J 6 H  # C"],u5!<$= ;72,x,x,w0.|2!6 5&f D #93!Z&> >-I'?#< P1$?-y #*- G$;&@$bL6 #<+t,x &@ %&g > 34 AN W#_(k,x,w-y(l)o'i)p8 & S$=3%>'@14$a+ % D6'@3 $*. 7!8)C*qM24-J0K'A2+G-F"9#`!["\ 8476 3 . ' 'U"8 (2$="8/O 9 7,D H*q >)o > D%<)C.{.+../})D"9'i C$cT3$;0L.I 9 =(C,G3!64&@*p '()*4(B D+v,)D+I 9 5 6 < # ?G-z&@6 F/+#_#;(B0 @0 IJ'A8+D(C 8R9[&@ A 7M &=(?L'k ?&@!6$=1 ,H%f!;$>/} & 1 & 3*r%>'@0%e8 :*U W$aG1'@01R"7'A $#;,w-{L 7 ?/#_";#?-y :*0    G.{$<%A4$a A4 5-  =2*s#^(B![-   & 8   W-y&?'@-z A !0)  " I*q6$=!<0&g X E- A0)C*s04  E1$a,w!9!< 5&h 7 .-   $ =V,v5!9!= 95/+s,w'j W$b*s%e#a)o 54!64$b = % ".,    0 ? J W&f+s025%<%>&<220'kU ?.  !) / (  -388 6 5 5 3 1 & & "  ! &* . '  %*-./..+,+ ' !     PPd dd@e ee(R/root/encrypted_80.tiffPPHHGNUMail/Bundles/PGP/signed+encrypted_80.tiff0100644000014600001460000006244210424672357021254 0ustar monotonemonotoneII*d  # " ) 1 . + $  4J`%!u+%/)/).)2+1+1,1+0)-'&"y eE *  C`,'/)+%&"y dOIH;>?IR]$p*%/*4-1+-'`1 /b,&1+(#~ e:   )&"y/)S * -7K`)$4-3,*%Q #6$p0*/* f8  ! & +8 ) ( )1++&[6/M - / 149M"j-(5./)X # ,"k2,/(Y '  'Y'"zS-(;1+ 81 &a[81 % f *: . -6E^,&7/.(IO1*0*^ $  -&"x92`3-\=2,,& f1+Ub F= E=B711+/)3-b< ' -Ac/*60*%:  .'!z3,'"{ 1 Y4.#o*%91(#^ & H@7  /) :3*$;4%!u >66/ +&2,=5"k#o:*$J$ r3-4.Z 9.(0*P $^TS2,<5<B @92,3,'"{8 ;4?8   7R)$(#}3-.( D<;4c60Q :3,& (Q,'70% q M1+.(: A.)'"{716/#m2,1+\=:F9(#~ g,&'"z$p!k!i!g!hNVJ V&"y(#}T1+8 :3 # Z)$92*% .U4-(#} .C3--(<5F703;3J "? /F+%4.2,3,*%2,+%(#($-'0*5.6/2,.(% tZE .2,=55/3 *4&"y ;4% t"l71/) 2 T4.%!v   ) >6$q=5 92 +%!u` !6A'#{3-601+#nI '< $ 0=M"j-(5.4--("lP= (A ($p ?7A60[600*4 N4.&!v  %-( ?8`E-( ( !H!h6/60% sI    & * - , . . 0 0 1:L!i/)6/-'X "7R6/\2,-(5T700* /92+)$~ " # 1 $1+"l3BKK2,5.'#|A  # * - % " ( /7E d/(6/*%A ' + U @9%!v6S71,& " 0.(.( -G5 1&"w $G%!t81,&J  * . '  ! /G"k3-4-Y - 92]/*/)b 92&!z)#~1*9\ <4? [-'5.%!v "  ( 0 %  +S-(71'#| )3,&]%!u'"{ *$q:3a  ]5.M6/aI92 +3/)70N ! 1 (5$ s81-( 0,'\,&)$Wa #+&5.= +1+$ s 1 ?8 G>b)$$q2.(0*A  ) 0   d600*3 &,&1+ :33- -<6/-' ##m3,5 'S^5/ LC5/7R.(/*:  / +9`,'/)$pb71/* /\9270 @881 + "a81] ;4.b*% I@3,/* ?7!f &-'6/?  0 ' 8*%UPKBPF E= 5/OEQG4.Z81,&3 ,92 92)$*% -(0* 1'"y1* (V/*0*<59F*% :3]  1 & ?bQ 70 F= I@ 6/ ;4 D< :3RH3-+&RHPF;a:3#o*%0* D;$ p ' J60 f:4-[C92Q81 E<4-5^ ;4*% 0 ' ]&!x (MOEMDF 71RH 4. O &,&RH C;8bRHRH*% 1'"{92V "[6092816+&/)5$ p1+ )!h($P#o =5CJ/)/) +  + ) D(#~,' 70 )ZNDRH KB&"z,& E< HRH E<+& E<9A+&QGMCYNNDRH-(K4/)2, 070 !.(XN5.] &1*"kL:3G%!u5. &*%:3I " 0 *#o+&3 3-NE 71 <5QG.(*$RHRHQG B: 81MDLROEQG B: H? #BWOEPF#o eOE JAbM (G70#o0*'"zX^P8-')$ .J4-?2S.)+&K6/+& #a3-3--(7 KBRHND5!jQG 91 %!uLBPFOEQGRHRHPF"lP H?QG(#~"k9 I@8PFRH E< I@ E<PDM -(#|4-B5(#} ?7 >6= e6/'"z'"{-( (#|-' " # .  / b92O5/QG B: =5OF\#mRHLC :3RH2, I0* :30*JLC.)-(LCRHRH'#|K H?RH B: 92 JA D<)$ 70*%*%% s #>M ":4.&"y$r81-( 71 70 5/ 71 <5 :3 70 # &2+` .  %D2,/)POFRH3,DX ! 0QGQG!i B:RH G>Q ?7OFRH0+D F=4-N_ ;3PF60$ s F= ;4 6/.(R@  , EM *JB )b ;4 B: ;4 92 81 ;4 5. 70 :3,&cH =3,B9\<<6.T3MDRHRHRHND5/WLBRH-(1+QGQG ;5 d E<LC  >NDND)$=:&!w#oN 14M - GQc(#{1+ 5/ 6/ 70 71 71 60 6/ 700*`F@ . + )<435_2+ . &+%1+4-"mY2, /'"y C;NDQGRHOE@ D<RH <5Z 6/OFRHOFI@%!uBY)$B@ 0 CM4<O[#o.( 5.4- 70 71 71 71 5/ 2,0*+&bd ' /  .6 14553 1 , % '"z*$  -3,-'% t,')$*% . <4C e <5RH H@J H?RHND*$ (H-(*%<;M ;FZ'#|+% 70 60 60 71 71 70 5.0*,&$ p%!u,&; C;JA.)PF >7?5553 / ' -'#n 1S =581XR4-_ 1 5.MD F=OE JA'"{V1+ fYO2AMJ3DB "&"y 2, 704-4- 60 71 71 704--''"{%!u#p%!t*%JA @8'"{ LB"jRHQG3,OEQG*%  !1*[ ` :3705/ &\92A 0 U$ rN4=ML -MH?$p.) 6/ 60 70 71 71 6/3- 4.3-)$"m`1+.)PFQG,' C;2,RHKB=&!xbI@RH60 I?RH @8  *1+J@2,"l '?$q60 1 & ) .8 .M=a+& 3- 4. 5/ 70 71 70 5.3-2,-(d(#~$ s!i D< @8 81RH :3;4"jKBRH'"{&"w*$RHPF+&3- % ?8RH B: C;RH F=N  23,B(#}4-2,4.)$9(#1+ ' - ^(#~2, 6/ 4. 6/ 71 71 70 4.2,.)$p#n ,: ?7I@*% JA ;4+%RHND3,RHLC)% * A9RH 2,;RPFRH2,4.S.(RH I@ <4RH =6M: @#m-'^:1+=.(70-(-'% t  )$+&5_%!v-( 1+4- 60 71 81 603-,&'#|$ r(#~ - 92 G>+&NE F=S A9RHLC.(+&aPFRH-'RH F=P "4-RH A9M /KBRH3-"k D;&"yRHOE6/H?ZMR9^,&1+3- 6/ 71 71 70(#;1+8,&UA+&1+.( ?7 :3 70 <5 :2 81 6/1+*$"l&!xD#o C;#o LC#m H?RH 70JAQG$ sSMDRH ;4 )ONDRH2, 5.JMI)$RHI@S 1 ?8RH >6 92 I@"l+&,&/) 60 81 =5 <4 70 71 81 603- 8181;   S :3/) 6/ 81 :3 ;3 81 92 :3 5.4-.((#LW A9H?,&NE 81LNDNERU f >6RH >7 ?7 ?7B *+%QGQG!g 1 H?RH 82M &LLUQGMD^?_("}/* 92 70 70 =5 :3 ?7 >6 <4 B: 5.+&Z &_9"k/)9 145 /@ 3, 60 81 71 81 92 4.2,)%]C; ;3H?-( @9 @8LI@RH E< 60 C;!hRHRHV %5/RHI@2+O>M:NDQG/* / ;4RH B:N *C7 &&"y.( 60 ;3 6/ 71 =5 ?7 ;3 5. 92)$&!w!g1+)$ %2,8181 A9 e,'2,D7 1 ( 13-.(&!xM 27  $ ,4KBRH1+L1+P+%PFQG5. <5"kRHRH0*M -#mRHQG4. H? eM  F=QG 70J"k-(/)+%/)0*4- 60 71 92 ?7 =5 1+(#~#mb?   0  (I60'"zE705./)70U,',' * -   0:43554 0 @9RH <54.G? :35.RHPF.)XMCRH <5S81JOFRH3-OF C;Bb(# 5/ 92 704. <4 ?7 >6 602,*%c;H5  . 0 1355Z81 f;F5;4-'G/*)$ # -  4553 . $ .)RH H@6/$ p7 G>'"z G>RH G>4,&OE E=1+ LB9/*+&,& 5/ 6/ 92 4. 5. 70 >6 ?8 ;4/)($'"zN  & 1 1 14553 0 &F3,9N 921+:3 $ .2,$ s " ,  eRHMDa2-)$ <4JA,&NDNE+& &B-'60 712, 81 :3 @7 ?7 81 <4 ;4,&TH< & ' -4879 d0* >6 B9Jb1+ ,!i >62,5 .\82^ ! *8RHPF+% H@ 92+& :3-'*$ 6/ 92 92 81 ;4 ?7 =6 5. 920*,&#m4 , )  ( 0355A&"y 81 D< @8)$OERHRH ?8+&(#} .70702,KZ6/C % ( 3,/)0* :34- 5/ 81 <4 >6 <5 >6 <42,$ r[Q '3 # + . 13?$pW 2 - &,&QGRHRH3,!iRHRH 81 03-V &5.:30*Z:'"y2+ - ( # *Q(#~0*3- 60 ?7 @7 92 92 70,'+%L9 -  ! - 02@UF3 0 (3-QGMD"k 60RHRH)$8NERH G>QKW4-3 B% t!f7I+&*$ - B#o 1+4-3- 6/ 71 71 81 ?8 ;4/)"l 28 ' . 1 1 2=6553%!wLCPF ;43,RHRHNDLTRHRH <5LL D<RHND]>,&*% ( '2 (=6.!i 1-' 70 71 71 70 4.4- 600*81?  f2+K + /3554 1` @9KB E< ' ?8RHRHa 3-PFQGRHJA ) +PFRH F=Q2 5.RHPF%!uD $ C;E5.N 07$ s5/A 0 $p1*($(#60@@ D;70'#|G3T6/,&A 2 / * !gLCRHRH :3 &NDRHRH$ r 0 * C;*%1+QGRH ?7JARHMCZ7'"zRHRH5._/*QG ))$-( ">-'#o(#},' # * 83,*%#n$r dQ5.#o8$q71^)$RHRHRH,'&!wQGRHRH 6/M9 &ND$ s&!wOFRHQG,' A9RHPF)$C'"{RHRHPFNDQG G>X5.S '<4!i$p/) .2, d . ! !=)$60\ 0/*MD5. $/)0*6NRHRHRHQGOEPFQGRH ?8M (YQGPFQGOFRHRHMDU C;RHRHND(# D< D< :36/,&X  ,70.( !_2,.(4. $a3,5 1 11+'"y &c92:2%!u5L70(#~ +NE E<OERHQG+& E<RHKBW /1+OE$ s#m eMDRHRHOE,& G> E= <5,&R &LMC6.( <5J22, H?$ rE<4[4.&"w $ +#m4.M (0*706/Y#m92] JA0*4-QGPF f ?7RHQG+&#nJAOF-(I,& H? B: 81*%H  ,MM; *MLN(#| ;3% v )0* D<]70Id :3D 0  13,)$ %4-3-*$+& %-(60I  D< ;4T D< I@^ G>RHRH H@ 92 @8 2,VMF; .GMM9BMMB " F2,(#~$q4.-(92 F=^V2,.( #  0  f60Y"l:3 E<4.81663,4.@ !I@PF2-].(W5.-'$q`N .K HMK@ 9/)-' .8 C; JA(#}G#nZ+&60T . " '/*1+4:8170/) e A5.3-A? 81,'`< BL (MM> 'KM9 </*/)3 6/&!w81 G>'#|a92%!t  0H60%!v3 e$q 92'"{1,SF4.5.M3HC<LB . J1+-(4 /)-(/*5.O3-5/8 1  %!u 81"j (70L4-] C1+81#n # GJ3  !g4-)$ - 2 %% t2,I]/)5/B % -  &-'70GP60-'a 923)#81-'A ;*$4.c\3 # dG$o;3(#}223-2-; 0*:3: ' $ e3-6/(#}?  2$p2,-'G ,71a&!v70#m ) . &H601+3 X5..(c4- F'"z4-6.*%P +8!g1+/*Y "  (4.;2+ =6 ) M4.-(3 * - P821*5 ,81"l B:J  'N$q0*6/3-)$[< +   2`($1+-'a (0*J-'3,2,b81P4-(# " % / Q703,O5. =5!i  ( >6/*J .FW#n,&3,4-3,/)+%&!x&!x&!w($'#|*%.(-( eD /**%`60C >64-3,M)$5.&"y " " 1 N3-6/_K212(#~&!x6/ %!kG=9=FMW e%!t% t'"x"k"n!h$o6 #J3,+%6/81+&-'X % 08-'81*% " ! 1 ?0*81#nQ #? ?7)$K6/'"z:3 ;41+!h dc= 2 0 - ( #L.()$3-/) C;C1+ ;3I"l 0$ s5E3- :3&"y: " 1 6)$811+$ sIcT*%2, A9 >66 181 <5,&0*/(81&!w 0 / . .-( 81I&"y6;4 >6=-'*% , #B:(#5/1+K " ( 1 ! e1,70($@ %ED60/*9281-(E MC6/C/*R5.60O eB5.*%2,)$ 06B!i5.7/(#{ $  , .=$ s4-6/(#~"jD7 0IX!hO*%70,'(#}H,&70 $1+$q'"{U !9A *^3-70'!z:  0 * (M&"y3,60-'!gJG9 $A+&&"xZ60 f3  !@U)#4-70(#A  * 0  ,M#m-'3-4-*$#o dR6H)$;3(#~ / 1  A;^&!w0*5..(#n:  & 0 ' .@P#n+&0*5.2+/(+%&!w'"{ eZ\%!v ea#o/)-'/*,' d= #  ' / )  )7>BM]#m(#}*&.(6/6/5/-'+&(#"kU> ,   , . % +33 2 . + ) ,3 , " , - &  # * . 0 / . - + + ) - , + ) &    PPd de@ eee(R/root/signed+encrypted_80.tiffPPHHGNUMail/Bundles/PGP/signed_80.tiff0100644000014600001460000006243010424672357017260 0ustar monotonemonotoneII*d  # " )1.+ $   4 J!`)u/444666641*y#e E*    C!`04/*y#d O I H ; > ? IR ]'p.5971!`1/"b06,~#e :    )*y4S*- 7 K!`-98/ Q #6'p54#f 8  ! &+ 8 ) ( )60[< M-/14 9 M%j2;4X #,%k73Y '  'Y+zS2 ;6  ? &"a [? %$f* :.-6 E!^0<3 I O55 ^ $ -*x!@!`9 \ =81$f6U"b(O'N B>649"b < '- A"c5</ : .+z8+{1  Y:'o/?.!^ &)Q 7  4!A."B)u"D; 08#D%k'o :. J(r9:Z 926 P $!^TS8!C < B%H78+{ 8!B ?  8   7R-,}83'M!C"c=Q A1 ( Q1>'q  M63 :  A4+{><&m76 \ = : F 9,~$g0+z'p%k%i$g$h NV J V+y,}T6 8!@ #  Z- ?/.U9,}. C92"C F=3!B J " ?/ F/:78/8/--26:<82(tZ E.8#D;3*4+y"B(t&l>42 T:)v  )#E'q#D @+)u!` !6 A+{8;6&n I ' <   $0 = M%j2:91&l P = ( A ('p$E A=[=64 N9*v   %3#E!` E2 ( ! H$h<;(s I    &*-,..001 : L%i3;2X "7R; \835 T>5/ 96,~ "  #1 $6&l3 B K K7;,| A  #*- %  " (/7 E#d3;/ A '+ U%H*v6S>0 "033- G51*w $ G(t>0 J *. '  !/ G%k89Y- ? ]54"b @+z,~6 9 \"B ? [2:)v "  (0 % +S3>+| )30 ])u+{*'q A"a   ]: M <"a I @+34= N  !1 (5(s>201 \0.W"a #0: =+7(s1$G(O"b.(q235 A  )0  #d=53 &07!A9- <<2 #&m85 'S!^;,V< 7R35 : /+ 9"`25'p"b=5/ \ ?=%G>+ ""a> ]  ;:"b/*R85$E$f &1; ? 0 '  8.UP,U/[(O</Y0]:Z >03, ? ?./ 351+y5 (V55"C 9  F/!A ] 1 &  ?"bQ ?)O*S<"C(M !B1^:01^/[ ;"a @'o.6'L'p ' J=$f :9 [ C ? Q>'M95 ^!B/0 ' !]*x( M.[-W F >1^;  O &11^'L 8"b1^1^/1+{ @V " [< @?6/45'p6 )$h- P'o#D C J44+ + )  D-~2 >)Z.X1^,V,z1(N  H1^(N0(N 9 A00]-WY N.Y1^2 K4470= !3X N: ] &5%k L!A G)u; &. @ I  "0*(o13 :.Y ?#D0]4/1^1^0]&K ?.W L R/Z0]&K*Q # BW/[/\'o#e/Z+T"b M ( G='o5+zX!^ P 82-. J9 ?2S40  K;0 #"a9:2 7,U1^-X 5&j0] @ )u L B/[.[0]1^1^0\&l P*R0],~%k 9*S 80\1^(N*S(NP D M-,|9 B5,}$E#E =#e;+z,{3 ,|2 " #. / "b!@ O<0]&K#E.Z \&m1^-W"B1^8 I5!A6 J,W43,V1^1^,| K*Q1^%J!@+T(M.>//(s # > M " ::*y (r?3 ?>< >"C!B> # &6!`.  % D74 P/[1^9 DX !00]0]%i&K1^)Q Q$G/[1^6 D)O: N!_!B/[=(s)O#C<3R @ , E M*  J B)"b"B&K"C @ @"B; ?"C7,~ L  =8 B 9 \ < <;T3-W1^1^1^-X<W,V1^270]0]"C#d(N,V >.X-X- = :*w'o N14 M- G  Q"c+{7<<> > ?=< ?:0$f'q"B"C6.Z>535!_7. &/69&mY8/+y'L-X0]1^.Y @(M1^#DZ</[1^.Z+S)u BY. B @0  C M4 < O ['o3;:> > > ><94. C 1 @*w*S>-1^.Y91^.Y F, % +z. -83(t1./ ."B C#e"C1^*R J*R1^-X. ( H3/ < ; M  ; FZ,|0>== > ?>;5*wN M4:+{,T6 9'M0\$f#e > \1^0\40]-X A1&n1S"D >X R9!_1;-X)O.Y+T+{V7$fY O2 A M J3 D B "+y8>::= > ?>:/!\0 %g1^0\51^/\*w0\1^+y  $ B-X1^<&I)s M H  !5[ !`!A<: & \ ? A 0 U(r N4 = M L- M H ?'p4<=> > ><::91!`(q(  %/3554 M/[1^5/Z/[+{0\1^;<&J/)P1^!B N $ M L*7 J @7&l ' ?(q=1 & ). 8. M ="a09;<? ?>;961&k,~$g 5'L-V11^,T O5531.) +S1^ ?(N3W,U1^&K'K1^->1^'L Q ) H A28 B,}99:- 9-5 '- !^,~8<;< > >>;84)s*x 8 6&K(t"D(NW.Y1^50]0](r "   E0#E1^$G N* G71^+T"C0\ M+y$G:$f%h-~5!^ :7 =3=31(t -05!_*v37:= > ?=91&j ?  !#D)O00\+SR$H1^6 ;1 I*Q1^9,V-X$g5#D0\851^*R Q2 @ K)r"C49-} > @ ?#F#F ?>- ;7 80U A074$G!B>"C!A ?<7*uM !  #/ <.X1^:-W1^5+T1^ ? . L&J1^&I5 [ I M  C ;!^(N!AXV$f19 @#D#E"C$G"B=$H$G ?   S!B5< ?!A!C ? @!A;66- A9+y  )1455314(N1^ >)P0\.*R1^)P>-X"B;1^*RT0 A M &  = C @(o5 @%H$G ?< ?"C<=(r!_&m @*y6 :145/ @9= ? > ? @;9/+{)u8 ? A+S1^7/Z0]/420- % <1^(M9*w I!A1^.Y=1^ ?#c1^.Y!_ ;3 @  2!^/<!B @ >>;;!@7P 61&n #9??%I#e18 D 71 (1942. \9+{  F+S=&l*SU'M1^!@*R1^9 :-},z,y1^,VW 8 :#e*R1^9.Y$e K<3296:= ? ?=:5-~U- ( & $ F<+z E=:4=U11*- 'L/[=+T0]2 >1^&J5 K G ?1^'K$F-W)t G1.X!@L1^/[&l B0 E/48!B;"C"C @%H%H>8/$c 7 ).1355Z ?$f ; F5"B1 G5. #-  %H1^$G&J1^!A%H1^*R ;"b+y91^-W(r I : M6   91-25;:<$G%H#C#E=*u*wT  %01145530 & F8 9 N ?6!@ $.8(s ", 71^)O @/[0#C1^/Z<1^+S#d1^0\%k B0 M1 $!_.+x8< A%H$F=;:/"` [ (4 &-4 8 7 9#d6$F&K J"b6,%i#E75. \?!^ !*#`1^-X-"c 8+{0\1^;0\(N/-X.Y- J+ K K'm2:>!@!A=;733&m*  )0355 A+y!@(N$H-.Y1^1^%H0,}.==7 KZ; C % ( 31^0\+z F+ P:-W;*Q%h N64 >!B>> > ><93(q F !  %+.13 ?'pW2- &10\1^1^9%i1^1^ ?09V &: @5Z :*y7- ( # 0\0]4 K $ @ =,|"B#E >#E%G!@$G#E;,zT)  !,/2 @U F30 (90]-W&k >1^1^. 8/Z1^)P Q K W93  B(t$f 7 I0. - &l,~;"C=:< ?$F$G'L%I1 9 >4 *12 =6553*w,V0\"B91^1^-X LT1^1^"D L L(M1^-X ] >0/  ( '2 ( =;%i12> > ?#E#D ? >6 ? D0,}; I &/35541!`&I,V(N '%H1^1^"a:0\0]1^+T)+0\1^)O Q2;1^0\)u D $'L  E: N0 7)s; A 0 (p6/-"B%j['L=,| G3T<1 A2/* $g-X1^1^"B &.Y1^1^)r0*'L/70]1^$G,U1^-WZ7+z1^1^;!_50\)-2 " >1'o,}1  #* 88/&n(r#dQ:'o 8'q> ^.1^1^1^2*w0]1^1^< M 9 &-X)s*w/[1^0]2&J1^0\. C+{1^1^0\-X0\)PX;S '!B%i'p4.7#d. ! ! =.= \05 M D; $456N1^1^1^0\/[0\0]1^%H M (Y0]0\0\/[1^1^-XU'L1^1^-X-(N(M!A<0X ,=3 !!_83: $"a851 16*y &"c ? ?)u5 L=,~+/Z(M.Y1^0]/(N1^,VW/7.Y)s&m#e.X1^1^.Y0)Q(O#D1 R & L M C63"C J28)P(r E"B[:*w $+&m: M (5=;Y&m ? ] +T690]0\$f$G1^0\0'n+T/[2 I0*R'K ?/ H , M M ; * M L N,|!A)v )6'L ]= I"d A D0 18. %99/0 %2< I  (N#CT(M*S!^)P1^1^*R @%I9V M F ;. G M M 9 B M M B "  F7,~ (q:3 @(N!^V73 # 0 $f<Y&l!B'M:>668: @ !*S/[9 ]3W;2(q!` N. K  H M K @   941. 8&K*S,} G&nZ0=T. " '574 :>=4#e A:9 A ? ?2!` < B L ( M M > ' K M 9  <533 ;*w>(P,|"a ?(t 0 H=)v3#e'q @+{6S F:: M3 H C < L B.  J624 43 5; O9; 81 )u?%j (= L9 ] C6>&n # G J3  $g9-- 2 %)t8 I ]4; B  %-  &1= G P=2!a @3->2 A  ;.9"c  \3 # #d G'o!A,}2298 ; 6!A : ' $#e9<,} ? 2'p71 G,>!a)v>&m ). & H<63 X:3"c9  F+z9;. P+ 8$g64Y "  (; ;7"E) M:23*- P>55,?&l%J J  ' N'q5;8.[ <+   2!`-61"a (5 J287"b>  P9- " %/ Q>8 O:#D%i  ("E4 J. FW&n08984/*x*x*w.+|033#e D 5.!`< C#E98 M.:+y "  "1 N9;!_ K212,~*x < %%k G = 9 = F MW#e)t(t*x%k&n$h'o6 # J8/<>02X %0 82?/ "  !1 ?6>&n Q # ?$G- K;+z!A"C6$h#d"c =20- ( # L3 -94&K C6!B I&l0(s5 E9 A*y : "1 6.?7(s I"cT/8%I#E 61>"D154>*w0/..2 ? I*y6!B#E =2/, # B :,;6 K " (1 !#e7=- @ % E D<5 ?>3 E,V< C5R;= O#e B:/8-06 B%i:<+{ $ ,. =(s9<,~%j D 70 IX$h O/=1,} H0> $6'q+{U ! 9 A *!^9=+z :   0*  ( M*y8=1$g J G 9 $ A0*xZ<$f3  ! @U-9=, A *0  , M&m199.'o#dR6 H-!B,~/1  A ;!^*w5:3&n :  &0 '. @ P&n05:73/*w+{#eZ \)v#e!a'o4251#d = #  '/ )  ) 7 > B M ]&m,}/3;;;10,%kU >,   ,. % +332.+ ),3,   ",- &   #*.0/.-++ )-,+ ) &   PPd dd@eee(R/root/signed_80.tiffPPHHGNUMail/Bundles/Receiving/0040755000014600001460000000000010424710553016100 5ustar monotonemonotoneGNUMail/Bundles/Receiving/English.lproj/0040755000014600001460000000000010424672357020627 5ustar monotonemonotoneGNUMail/Bundles/Receiving/English.lproj/ReceivingView.nib/0040755000014600001460000000000010424672357024144 5ustar monotonemonotoneGNUMail/Bundles/Receiving/English.lproj/ReceivingView.nib/classes.nib0100644000014600001460000000131310424672357026266 0ustar monotonemonotone{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {chooseFileButtonClicked = id; playSoundButtonClicked = id; }; CLASS = ReceivingViewController; LANGUAGE = ObjC; OUTLETS = { chooseFileButton = NSButton; openMailboxAfterTransfer = NSButton; pathToSoundField = NSTextField; playSoundButton = NSButton; showFilterPanelButton = NSButton; showNoNewMessagesPanelButton = NSButton; view = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }GNUMail/Bundles/Receiving/English.lproj/ReceivingView.nib/info.nib0100644000014600001460000000116610424672357025572 0ustar monotonemonotone IBDocumentLocation 4 46 356 240 0 0 1024 746 IBEditorPositions 6 122 424 505 257 0 0 1024 746 IBFramework Version 291.0 IBLockedObjects 6 IBOpenObjects 6 IBSystem Version 6I32 GNUMail/Bundles/Receiving/English.lproj/ReceivingView.nib/keyedobjects.nib0100644000014600001460000001166010424672357027312 0ustar monotonemonotonebplist00Y$archiverX$versionX$objectsT$top_NSKeyedArchiver (,-348<HOYbmn}~  !#$&')*,-/02367:<=@BDFQRSTUVWXYZ\pqrstuvwxyz{|}~U$null  !"#$%&']NSFontManagerV$classYNSNextOid_NSVisibleWindowsVNSRoot\NSOidsValues_NSClassesValues]NSConnections]NSNamesValues]NSObjectsKeysZNSOidsKeys]NSClassesKeys[NSFramework[NSNamesKeys_NSObjectsValuesdmk`\lj_^ )*+[NSClassName_ReceivingViewController./01Z$classnameX$classes^NSCustomObject02XNSObject_IBCocoaFramework 567ZNS.objects./9:\NSMutableSet9;2UNSSet 5=>D?@ABCDEFG KMOQSUWZ IJKLMNWNSLabel]NSDestinationXNSSourceJI PQR)STUVWX_NSNextResponderZNSSubviews[NSExtension[NSFrameSizeH GFE 5=Z[\]^_`a '+/3; PcdefghNijklNVNSCellXNSvFlagsWNSFrameYNSEnabled[NSSuperview _{{17, 141}, {436, 54}} opqrstuvwx[yz{|_NSBackgroundColorYNSSupport]NSControlView\NSCellFlags2[NSTextColor[NSCellFlagsZNSContents@_In this panel, you can configure parameters activated (or not) when receiving new mails. For example, you can play a sound of your choice when a new mail is received. VNSSizeVNSNameXNSfFlags"AP\LucidaGrande./VNSFont2 WNSColor]NSCatalogName[NSColorName\NSColorSpaceVSystem\controlColor WNSWhiteI0.666667./2 _controlTextColor B0./_NSTextFieldCellc2\NSActionCell./[NSTextField2\%NSTextFieldYNSControlVNSView[NSResponder PcefgNlN&_{{18, 111}, {401, 18}} pqrtux\{_NSKeyEquivalent_NSAlternateContents_NSPeriodicDelay^NSButtonFlags2]NSButtonFlags_NSPeriodicInterval_NSAlternateImage%$H[Choose file   @YHelvetica  YNS.stringB./_NSMutableString2XNSString  ./^NSMutableArray2WNSArrayZ{485, 215}./\NSCustomView2Tview./_NSNibOutletConnector 2^NSNibConnector IJKL"aL_chooseFileButton IJKL%_N_playSoundButton IJKL(`P_pathToSoundField IJKL+^R_openMailboxAfterTransfer IJKL.]T_showNoNewMessagesPanelButton IJKL1\V_showFilterPanelButton IJK45_YX_playSoundButtonClicked:./89_NSNibControlConnector8 2 IJK4;a[_chooseFileButtonClicked: 5>?][\_`a^]N./A2 5>CNNNNNNN 5>E[_\`^a]N 5>GHIJKLMNOPabcdefghi\NSTextField2ZNSButton43YNSButton4ZNSButton42\File's OwnerZNSButton41TView 5>7 5>7 5>[[\]D^_aF`CE?@NABG 5>]^_`abcdefghijklmnonopqrstuvwxyz{|}~UVW`XY[bZ_a\]^c./^NSIBObjectData2]IB.objectdata#,5:LQV\(6BN`bdfhjlnprtvxz|~+28ACVXZ\^`bdfhy9@IQ[gikmop   -5CO\^`bdfmz +8EOVb{} &;NPRTVX]_ac    $ / H J L d ( * o   @ T V X a v x z + - / 4 6 ? A C O ` b d n w   - 4 C T V i z | %'?PRTnw$-@BDFHJLNPR_jt "$&(*,.02468:<>@BDFHJLNPR[jotGNUMail/Bundles/Receiving/GNUmakefile0100644000014600001460000000130710613064242020145 0ustar monotonemonotoneinclude $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Receiving BUNDLE_EXTENSION = .prefs BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/GNUMail Receiving_RESOURCE_FILES = MailIcon_retrieve.tiff Receiving_OBJC_FILES = \ ReceivingView.m \ ReceivingViewController.m Receiving_HEADERS = \ ReceivingView.h \ ReceivingViewController.h Receiving_PRINCIPAL_CLASS = \ ReceivingViewController ADDITIONAL_OBJCFLAGS = -Wall -Wno-import ADDITIONAL_INCLUDE_DIRS += -I../../Framework/GNUMail ADDITIONAL_LIB_DIRS += -L../../Framework/GNUMail/GNUMail.framework/Versions/Current/$(GNUSTEP_TARGET_LDIR) ADDITIONAL_GUI_LIBS += -lGNUMail include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble GNUMail/Bundles/Receiving/MailIcon_retrieve.tiff0100644000014600001460000006031410506157373022361 0ustar monotonemonotoneII*00<0$(12*R)>I8)hi` ' 'Adobe Photoshop 7.02006:09:25 09:30:28 adobe:docid:photoshop:022e8d39-4ca8-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:30:08Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:30:08Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMU00retrieve_48.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 00JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?>,阢48$89=W**խ`ovB pC|Yg{01AMcQС'4f#A![6L?BS܊BV@kdG<)W]ϗ JYlz^5͡^4z.?#7oV=hZ w>T@.$kY_RF?~J9Ȍ qxW\&Hګ~C,kcWEUc-;XƉ>y_;.sD~t6K.ϫeәm-l1 IU9U+ 5 ^x!ϐ nXddT 8[G,kqp~8huzu26_$|B?k+?\r#A\>5k<(g93bG[#uzzgچ'4+g*܆>Pf9ip㔆 WSmV}n=]H6Vׂx#% B5W*qcŜӋ>Vր}?4aVV&ey}9htj!K9=^9{c*:w8BIM!UAdobe PhotoshopAdobe Photoshop 7.0lS#w[&x\&uZ'jS)hR*hS*hS*hR*hR*hR*hR*hR*hR*hR*hR*hR*hR)hR)hR)hR)hR)hR)hR)hR)hR)hR)hR)hR)hR)hR)gQ)hR)gQ)kT(x['x[&w['XC $KL͞D̠NӲ˜DϠFN•@-٦FǙE|c3j?³za3h6ުI> 4ۨGǙE{b3j?ya3g6ݪIƘ@  =JƙE|c3j?{b4h6ܪIΞD&EKƙD|c3j?û{b4h6ܩIӢE/NLŘD{b3i?ǿxa3g6ܩIإG 8 WLǙEf4m@~d4k7ݪI٧G A  _MʜEp6vAn6u9ݪIݩH J+!hNʜEr7xB¿p7w:ܩIJR0%qNʜEs8xCǾq8x;ܩIJ[4(zO˜Eu8zC»üýľžſÿƼr8z;ܩIK d9,O̝Fw9|D¾ÿŻu9{<ܩIK! mO<M̝Fy:}D{qaUi]fYeXdWbU]PyoĹw9|<ܩHL* v^HM͞Fz:~C`T~synshnceXZM^R·x9}<ۨHM3'gO!MΟF|;DƿbVy|qujpegZ[NaUz:=ۨHN9+pV%MΟF~;DļbVy|qujpegZ\NaU|:=ۨHN>/h,LϠF;EbVy|qujpegZ\NaT;=ܩHNJ8}5KРF=A{aTz|qujpegZ\O`Rk=?ܩHM\G 9KРF?>5455555552v:aS||qujpegZ\O_Pz<255~5~4~4~4~4~47?@ܩHMiQ"=KѡF??????????;8AbT||qujpefZ[O_QD8;?????????@ܩHMrX&ƗBKҡG@@@@@@@@?@{[y^{LcT||qujpefZ[O_QOz_{[@?@@@@@@@AܩHLb) ϞDJҡG@@@@@@@@>KbR]QcS]P}|qujpegZ]P\OcSYMbSK>@@@@@@@AܩHKt1%ѠDJҡF?@@@@@@@?=jWlbwqe|qujpegZ_R[NYMUJp\@?@@@@@@@@ܩHK7-գFJСF?????????:o=gVyo|qujpegZ`S[NWLgUvA{6j;hV|rttipegZ^QWLgVp>8>=======~=>ۨHKė@ =߬HJΟF==========>|6p9jWyo|rgpfaUWKiWv<8>========~=>ۨHJ͝C&FKIުIۨHۨHۨHۨHۨHۨHۨHۨHۨHۨH߫IC7s=iW{qvkeYXKhVz@9ƙEުIۨHۨHۨHۨHۨHۨHۨHۨHۨHۨH߫IJҡE/OIGߪGGGGGGGGGGGHB@8sGњӠӟӟӟӟӟӟӟӟӟӟաϜ G_ӗΔ͓͓͓͓͓͓͓͓͓͓ϖăB?AAA=9?AAA>FˏΔ͓͓͓͓͓͓͓͓͓͓ϕʐ H_Ώʌɋɋɋɋɋɋɋɋɋɋˎ}A>@@@AAA@@@>ELJʌɋɋɋɋɋɋɋɋɋɋˍƉ H_̈ȅDŽDŽDŽDŽDŽDŽDŽDŽDŽDŽɆw@y;|<|<|<|<|=|<|<|<| ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ReceivingView #define _GNUMail_H_ReceivingView #import @interface ReceivingView : NSView { @public NSButton *showFilterPanelButton; NSButton *showNoNewMessagesPanelButton; NSButton *openMailboxAfterTransfer; NSButton *playSoundButton; NSTextField *pathToSoundField; NSButton *chooseFileButton; @private id _parent; } - (id) initWithParent: (id) theParent; - (void) layoutView; @end #endif // _GNUMail_H_ReceivingView GNUMail/Bundles/Receiving/ReceivingView.m0100644000014600001460000000725710424672357021045 0ustar monotonemonotone/* ** ReceivingView.m ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ReceivingView.h" #include "Constants.h" #include "LabelWidget.h" const id IncomingServersColumnIdentifier = @"incoming servers"; // // // @implementation ReceivingView - (id) initWithParent: (id) theParent { self = [super init]; _parent = theParent; return self; } // // // - (void) dealloc { NSDebugLog(@"ReceivingView: -dealloc"); RELEASE(showFilterPanelButton); RELEASE(showNoNewMessagesPanelButton); RELEASE(openMailboxAfterTransfer); RELEASE(playSoundButton); RELEASE(pathToSoundField); RELEASE(chooseFileButton); [super dealloc]; } // // // - (void) layoutView { LabelWidget *label; // // Our Options box // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,180,430,50) label: _(@"In this panel, you can configure parameters activated (or not) when\nreceiving new mails. For example, you can play a sound of your\nchoice when a new mail is received.")]; [self addSubview: label]; showFilterPanelButton = [[NSButton alloc] initWithFrame: NSMakeRect(5,140,410,ButtonHeight)]; [showFilterPanelButton setButtonType: NSSwitchButton]; [showFilterPanelButton setBordered: NO]; [showFilterPanelButton setTitle: _(@"Show alert panel for received and transferred messages")]; [self addSubview: showFilterPanelButton]; showNoNewMessagesPanelButton = [[NSButton alloc] initWithFrame: NSMakeRect(5,110,410,ButtonHeight)]; [showNoNewMessagesPanelButton setButtonType: NSSwitchButton]; [showNoNewMessagesPanelButton setBordered: NO]; [showNoNewMessagesPanelButton setTitle: _(@"Show No new messages alert panel")]; [self addSubview: showNoNewMessagesPanelButton]; openMailboxAfterTransfer = [[NSButton alloc] initWithFrame: NSMakeRect(5,80,410,ButtonHeight)]; [openMailboxAfterTransfer setButtonType: NSSwitchButton]; [openMailboxAfterTransfer setBordered: NO]; [openMailboxAfterTransfer setTitle: _(@"Automatically open mailboxes for received and transferred messages")]; [self addSubview: openMailboxAfterTransfer]; // // Play sound // playSoundButton = [[NSButton alloc] initWithFrame: NSMakeRect(5,50,100,ButtonHeight)]; [playSoundButton setButtonType: NSSwitchButton]; [playSoundButton setBordered: NO]; [playSoundButton setTitle: _(@"Play sound")]; [playSoundButton setTarget: _parent]; [playSoundButton setAction: @selector(playSoundButtonClicked:)]; [self addSubview: playSoundButton]; pathToSoundField = [[NSTextField alloc] initWithFrame: NSMakeRect(110,50,200,TextFieldHeight)]; [pathToSoundField setEditable: NO]; [pathToSoundField setSelectable: YES]; [self addSubview: pathToSoundField]; chooseFileButton = [[NSButton alloc] initWithFrame: NSMakeRect(315,48,100,ButtonHeight)]; [chooseFileButton setTitle: _(@"Choose file")]; [chooseFileButton setTarget: _parent]; [chooseFileButton setAction: @selector(chooseFileButtonClicked:)]; [self addSubview: chooseFileButton]; } @end GNUMail/Bundles/Receiving/ReceivingViewController.h0100644000014600001460000000276310424672357023101 0ustar monotonemonotone/* ** ReceivingViewController.h ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ReceivingViewController #define _GNUMail_H_ReceivingViewController #import #include "PreferencesModule.h" @interface ReceivingViewController : NSObject { // Outlets IBOutlet id view; IBOutlet NSButton *showFilterPanelButton; IBOutlet NSButton *showNoNewMessagesPanelButton; IBOutlet NSButton *openMailboxAfterTransfer; IBOutlet NSButton *playSoundButton; IBOutlet NSTextField *pathToSoundField; IBOutlet NSButton *chooseFileButton; } // // action methods // - (IBAction) chooseFileButtonClicked: (id) sender; - (IBAction) playSoundButtonClicked: (id) sender; @end #endif // _GNUMail_H_ReceivingViewController GNUMail/Bundles/Receiving/ReceivingViewController.m0100644000014600001460000001202210601435446023064 0ustar monotonemonotone/* ** ReceivingViewController.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ReceivingViewController.h" #include "GNUMail.h" #include "Constants.h" #include "NSUserDefaults+Extensions.h" #ifndef MACOSX #include "ReceivingView.h" #endif static ReceivingViewController *singleInstance = nil; // // // @implementation ReceivingViewController - (id) initWithNibName: (NSString *) theName { self = [super init]; #ifdef MACOSX if (![NSBundle loadNibNamed: theName owner: self] ) { AUTORELEASE(self); return nil; } RETAIN(view); #else // We link our views and our outlets view = [[ReceivingView alloc] initWithParent: self]; [view layoutView]; showFilterPanelButton = ((ReceivingView *)view)->showFilterPanelButton; showNoNewMessagesPanelButton = ((ReceivingView *)view)->showNoNewMessagesPanelButton; openMailboxAfterTransfer = ((ReceivingView *)view)->openMailboxAfterTransfer; playSoundButton = ((ReceivingView *)view)->playSoundButton; pathToSoundField = ((ReceivingView *)view)->pathToSoundField; chooseFileButton = ((ReceivingView *)view)->chooseFileButton; #endif // We get our defaults for this panel [self initializeFromDefaults]; return self; } // // // - (void) dealloc { singleInstance = nil; RELEASE(view); [super dealloc]; } // // action methods // - (IBAction) chooseFileButtonClicked: (id) sender { NSOpenPanel *oPanel; int result; oPanel = [NSOpenPanel openPanel]; [oPanel setAllowsMultipleSelection: NO]; result = [oPanel runModalForDirectory: [GNUMail currentWorkingPath] file: nil types: nil]; if (result == NSOKButton) { NSArray *fileToOpen; int count; fileToOpen = [oPanel filenames]; count = [fileToOpen count]; if (count > 0) { NSString *aString; aString = [fileToOpen objectAtIndex: 0]; [pathToSoundField setStringValue: aString]; [GNUMail setCurrentWorkingPath: [aString stringByDeletingLastPathComponent]]; } } } // // // - (IBAction) playSoundButtonClicked: (id) sender { BOOL aBOOL; aBOOL = NO; if ([playSoundButton state] == NSOnState) { aBOOL = YES; } [pathToSoundField setEditable: aBOOL]; [chooseFileButton setEnabled: aBOOL]; } // // access methods // - (NSImage *) image { NSBundle *aBundle; aBundle = [NSBundle bundleForClass: [self class]]; return AUTORELEASE([[NSImage alloc] initWithContentsOfFile: [aBundle pathForResource: @"MailIcon_retrieve" ofType: @"tiff"]]); } // // // - (NSString *) name { return _(@"Receiving"); } // // // - (NSView *) view { return view; } // // // - (BOOL) hasChangesPending { return YES; } // // // - (void) initializeFromDefaults { NSUserDefaults *aUserDefaults; aUserDefaults = [NSUserDefaults standardUserDefaults]; [showFilterPanelButton setState: [aUserDefaults integerForKey: @"SHOW_FILTER_PANEL" default: NSOnState]]; [showNoNewMessagesPanelButton setState: [aUserDefaults integerForKey: @"SHOW_NO_NEW_MESSAGES_PANEL" default: NSOnState]]; [openMailboxAfterTransfer setState: [aUserDefaults integerForKey: @"OPEN_MAILBOX_AFTER_TRANSFER" default: NSOffState]]; if ([aUserDefaults objectForKey: @"PLAY_SOUND"]) { [playSoundButton setState: [aUserDefaults integerForKey: @"PLAY_SOUND"]]; [pathToSoundField setStringValue: [aUserDefaults stringForKey: @"PATH_TO_SOUND"]]; } else { [playSoundButton setState: NSOffState]; [pathToSoundField setStringValue: @""]; } [self playSoundButtonClicked: self]; } // // // - (void) saveChanges { NSUserDefaults *aUserDefaults; aUserDefaults = [NSUserDefaults standardUserDefaults]; [aUserDefaults setInteger: [showFilterPanelButton state] forKey: @"SHOW_FILTER_PANEL"]; [aUserDefaults setInteger: [showNoNewMessagesPanelButton state] forKey: @"SHOW_NO_NEW_MESSAGES_PANEL"]; [aUserDefaults setInteger: [openMailboxAfterTransfer state] forKey: @"OPEN_MAILBOX_AFTER_TRANSFER"]; [aUserDefaults setInteger: [playSoundButton state] forKey: @"PLAY_SOUND"]; [aUserDefaults setObject: [pathToSoundField stringValue] forKey: @"PATH_TO_SOUND"]; } // // class methods // + (id) singleInstance { if (!singleInstance) { singleInstance = [[ReceivingViewController alloc] initWithNibName: @"ReceivingView"]; } return singleInstance; } @end GNUMail/Bundles/Sending/0040755000014600001460000000000010424710553015554 5ustar monotonemonotoneGNUMail/Bundles/Sending/English.lproj/0040755000014600001460000000000010424672357020303 5ustar monotonemonotoneGNUMail/Bundles/Sending/English.lproj/SendingView.nib/0040755000014600001460000000000010424672357023274 5ustar monotonemonotoneGNUMail/Bundles/Sending/English.lproj/SendingView.nib/classes.nib0100644000014600001460000000131110424672357025414 0ustar monotonemonotone{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {addHeader = id; removeHeader = id; }; CLASS = SendingViewController; LANGUAGE = ObjC; OUTLETS = { headerKeyColumn = NSTableColumn; headerKeyField = NSTextField; headerTableView = NSTableView; headerValueColumn = NSTableColumn; headerValueField = NSTextField; view = id; }; SUPERCLASS = NSObject; }, {CLASS = StripeTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; } ); IBVersion = 1; }GNUMail/Bundles/Sending/English.lproj/SendingView.nib/delete_20.tiff0100644000014600001460000000000010424672357025674 0ustar monotonemonotoneGNUMail/Bundles/Sending/English.lproj/SendingView.nib/info.nib0100644000014600001460000000106110424672357024714 0ustar monotonemonotone IBDocumentLocation 10 68 377 252 0 0 1024 746 IBEditorPositions 6 267 318 490 379 0 0 1024 746 IBFramework Version 291.0 IBOpenObjects 6 IBSystem Version 6L60 GNUMail/Bundles/Sending/English.lproj/SendingView.nib/keyedobjects.nib0100644000014600001460000001670610424672357026450 0ustar monotonemonotonebplist00hY$archiverX$versionX$objectsT$top_NSKeyedArchiver (,-348<LS]grs ')46JKLMQTUX[\_cpqyz~   "#$%&K'()*+,.0LMNOPQRSTUVWXYZ[\]^_`abcdeU$null  !"#$%&']NSFontManagerV$classYNSNextOid_NSVisibleWindowsVNSRoot\NSOidsValues_NSClassesValues]NSConnections]NSNamesValues]NSObjectsKeysZNSOidsKeys]NSClassesKeys[NSFramework[NSNamesKeys_NSObjectsValues )*+[NSClassName_SendingViewController./01Z$classnameX$classes^NSCustomObject02XNSObject_IBCocoaFramework 567ZNS.objects./9:\NSMutableSet9;2UNSSet 5=>e?@ABCDEFGHIJK MNOPQRWNSLabel]NSDestinationXNSSource TUV)WXYZ[\_NSNextResponderZNSSubviews[NSExtension[NSFrameSize ~} 5=^_`abcdef *37:By ThijklmRnopqRVNSCellXNSvFlagsWNSFrameYNSEnabled[NSSuperview _{{12, 257}, {441, 60}} tuvwxyz{|}_~_NSBackgroundColorYNSSupport]NSControlView\NSCellFlags2[NSTextColor[NSCellFlagsZNSContents@_In this panel, you can specify which messages headers will be automatically added when sending mails. Usually, most users will ignore this feature. VNSSizeVNSNameXNSfFlags"AP\LucidaGrande./VNSFont2 WNSColor]NSCatalogName[NSColorName\NSColorSpaceVSystem\controlColor WNSWhiteI0.666667./2 _controlTextColor B0./_NSTextFieldCellh2\NSActionCell./[NSTextField2\%NSTextFieldYNSControlVNSView[NSResponder ThjklRqR)_{{51, 20}, {26, 26}} uvwyz}`_NSKeyEquivalent_NSAlternateContents_NSPeriodicDelay^NSButtonFlags2]NSButtonFlags]NSNormalImage_NSPeriodicInterval('%@! VRemove )^NSResourceName$"#WNSImageYdelete_20./_NSCustomResource2_%NSCustomResource YNS.string&P./_NSMutableString2XNSString ./\NSButtonCellh2]%NSButtonCell./XNSButton2 ThjklmRqR,+_{{281, 54}, {169, 22}} tuvwxyz{}a~q_NSDrawsBackground.1qA- 0/_textBackgroundColor B1 2YtextColor ThjklmRqR54_{{17, 57}, {31, 17}} tuvwxyz{|}b@6TKey: ThjklmRqR98_{{54, 54}, {164, 22}} tuvwxyz{}c~q ThjklRqR<;_{{15, 20}, {26, 26}} uvwyz } d  A@>=SAdd )?Sadd TUijlR !"#R$%&]NSContentView[NSVScrollerXNSsFlags]NSNextKeyView\NSCornerView\NSScrollAmts[NSHScroller_NSHeaderClipViewxCDnwNOA A AArK 5=(%&# TUi*+jl,-e./0123e1YNScvFlagsYNSBGColorYNSDocViewmE Fkj 5=51 Tt)789:Wkl;<=>?@ABCDE#qFGHIYNSTvFlags_NSIntercellSpacingHeight_NSOriginalClassName\NSHeaderView[NSGridColor^NSTableColumns_NSIntercellSpacingWidth[NSRowHeightiG@"@HJIfQ"@@"A_StripeTableView[NSTableViewZ{422, 147} TiKWlN&O1P&ML TUi*+jl,-eR/0D2SeDuvY{422, 17}./VW_NSTableHeaderViewV2 TijlYeOZePO_{{423, 0}, {12, 17}}./]^]_NSCornerView]2 5=`abR_ deKfghijklm1mnmqoZNSDataCellWNSWidthZNSMinWidth\NSIdentifierZNSMaxWidth^NSIsResizeable\NSHeaderCell^\"B\ST_transport-method tuwxyzrstuvwx[XVYUSKey {|}"A0W I0.333333 Z_headerTextColor./_NSTableHeaderCellh2 tuvwxyz{}1u1@]Q7./]NSTableColumn2 deKfghijk1qc"CT"B`"Dza_transport-value tuwxyzrstuvwbUValue tuvwxyz{}1udYSunnyvale./^NSMutableArray2WNSArray hgYgridColor D0.5./^NSClassSwapper2_{{1, 17}, {422, 147}} l_controlBackgroundColor./ZNSClipView2 TijleOOeeXNSActionXNSTargetYNSPercentqpo"?F+_{{423, 17}, {11, 147}}\_doScroller:./ZNSScroller2 TijleOeets"?}_{{-100, -100}, {315, 11}} 5=áD_{{1, 0}, {422, 17}}_{{15, 84}, {435, 165}}./\NSScrollView2 ThjklmRqR{z_{{223, 56}, {53, 17}} tuvwxyz{|}f΀|VValue:Z{470, 337}./\NSCustomView2Tview./_NSNibOutletConnector2^NSNibConnector N`VNSFileXNSMarker_NSToolTipHelpKey]Delete method./_NSIBHelpConnector2 NdZAdd method MNOPc^headerKeyField MNOPa_headerValueField MNOPb_headerValueColumn MNOPa_headerKeyColumn MNOP1_headerTableView MNOP1ZdataSource MNOP1Xdelegate MNOPac[nextKeyView MNOdYaddHeader./_NSNibControlConnector2 MNO`\removeHeader 5  dcbfR_a1aeb`./2 5 RRRRRRe1R1R 5 dcbfa_R1bae` 5  !\NSTextField1]NSTextField11]NSTextField21\NSTextField2TView^NSTableColumn1]NSScrollView1\File's OwnerYNSButton2 5 5 5 -@ 5 /_faR1B`FAHK?ca@eIbDdEbGJC 5 123456789:;<=>?@ABCDEFGHIJK€ÀĀŀƀǀȀɀʀˀ̀̀qyxwr{|z~./fg^NSIBObjectDataf2ij]IB.objectdata#,5:LQ9GNXkr  %135MVajy~  %-;DFHJcu  9Znx`qx $,68AF[]_r5j|   # % ' ) 1 ; D W ^ r {  ! # % > c w y {    ; @ B G ` b d |     # % ) 2 ; t      C M W a c e h j l n p y | "<HJLQVXZ\^`ej|%')@IW`inpr &(*,.057;LQSUbl(*/46;=Olnt2GIbkv57:<A]fi !*7@ENel{'8:M^`t  (*,6?W^oq~ "$&(*,.024AO]jo~8:<>@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~kGNUMail/Bundles/Sending/GNUmakefile0100644000014600001460000000125710613064242017625 0ustar monotonemonotoneinclude $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Sending BUNDLE_EXTENSION = .prefs BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/GNUMail Sending_RESOURCE_FILES = MailIcon_send.tiff Sending_OBJC_FILES = \ SendingView.m \ SendingViewController.m Sending_HEADERS = \ SendingView.h \ SendingViewController.h Sending_PRINCIPAL_CLASS = \ SendingViewController ADDITIONAL_OBJCFLAGS = -Wall -Wno-import ADDITIONAL_INCLUDE_DIRS += -I../../Framework/GNUMail ADDITIONAL_LIB_DIRS += -L../../Framework/GNUMail/GNUMail.framework/Versions/Current/$(GNUSTEP_TARGET_LDIR) ADDITIONAL_GUI_LIBS += -lGNUMail include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble GNUMail/Bundles/Sending/MailIcon_send.tiff0100644000014600001460000005774410506157373021156 0ustar monotonemonotoneII*00;0$(12*R)>IN(hi_ ' 'Adobe Photoshop 7.02006:09:25 00:55:57 adobe:docid:photoshop:f1fe51f9-4c60-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMM00 send_48.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 00JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TQ}n{GL$I }C2Jm;h`vI%6:5 .'|nvn>ꅏgH,%n6.H'u kOC5tm4~=-J+G$-'ү mʿP-s+\YRӁ-큇Vt~gJiEUP2bē'^Y}^cu o"?rG~c?GswU},?6n)3npg>JCuwfOGGIOUu{974}-_&-v8}JEIc,?&ùnud9PFY?":Rw-II/`;P‘DIO8BIM!UAdobe PhotoshopAdobe Photoshop 7.0 K(((r444tɵYYY EMMM###b\{{{ttt*3JJJvvv{{{\gggxxxqqq000u+...ufffwww @JjjjHHH'''jEEEsss ?Zorrr'''000s000 T B0>>>&&&s _BBBUUU333xMMMBBB$CCCI??? <6VVV888]Q***q+++PPPykkkAWWW5   $&)++,--------,,+*)&#  #&'())*******))(&%#    00GNUMail/Bundles/Sending/SendingView.h0100644000014600001460000000232310424672357020155 0ustar monotonemonotone/* ** SendingView.h ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_SendingView #define _GNUMail_H_SendingView #import @interface SendingView : NSView { @public NSTableView *headerTableView; NSTableColumn *headerKeyColumn, *headerValueColumn; NSTextField *headerKeyField, *headerValueField; @private id parent; } - (id) initWithParent: (id) theParent; - (void) layoutView; @end #endif // _GNUMail_H_SendingView GNUMail/Bundles/Sending/SendingView.m0100644000014600001460000001074710424672357020173 0ustar monotonemonotone/* ** SendingView.m ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "SendingView.h" #include "Constants.h" #include "LabelWidget.h" // // // @implementation SendingView - (id) initWithParent: (id) theParent { self = [super init]; parent = theParent; return self; } // // // - (void) dealloc { NSDebugLog(@"SendingView: -dealloc"); RELEASE(headerKeyColumn); RELEASE(headerValueColumn); RELEASE(headerTableView); RELEASE(headerKeyField); RELEASE(headerValueField); [super dealloc]; } // // // - (void) layoutView { LabelWidget *label, *headerKeyLabel, *headerValueLabel; NSButton *addHeader, *removeHeader; NSScrollView *scrollView; // // We create the view for our additional headers // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,178,430,54) label: _(@"In this panel, you can specify which messages headers will be\nautomatically added when sending mails. Usually, most users will\nignore this feature.")]; [self addSubview: label]; headerKeyColumn = [[NSTableColumn alloc] initWithIdentifier: @"header-key"]; [headerKeyColumn setEditable: YES]; [[headerKeyColumn headerCell] setStringValue: _(@"Key")]; [headerKeyColumn setMinWidth: 180]; headerValueColumn = [[NSTableColumn alloc] initWithIdentifier: @"header-value"]; [headerValueColumn setEditable: YES]; [[headerValueColumn headerCell] setStringValue: _(@"Value")]; [headerValueColumn setMinWidth: 265]; headerTableView = [[NSTableView alloc] initWithFrame: NSMakeRect(5,70,430,95)]; [headerTableView setDrawsGrid: NO]; [headerTableView setAllowsColumnSelection: NO]; [headerTableView setAllowsColumnReordering: NO]; [headerTableView setAllowsEmptySelection: NO]; [headerTableView setAllowsMultipleSelection: NO]; [headerTableView addTableColumn: headerKeyColumn]; [headerTableView addTableColumn: headerValueColumn]; [headerTableView setDataSource: parent]; [headerTableView setDelegate: parent]; scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect(5,70,430,95)]; [scrollView setBorderType: NSBezelBorder]; [scrollView setHasHorizontalScroller: NO]; [scrollView setHasVerticalScroller: YES]; [scrollView setDocumentView: headerTableView]; [self addSubview: scrollView]; RELEASE(scrollView); headerKeyLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,40,60,TextFieldHeight) label: _(@"Key:")]; [self addSubview: headerKeyLabel]; headerKeyField = [[NSTextField alloc] initWithFrame: NSMakeRect(65,40,125,TextFieldHeight)]; [headerKeyField setEditable: YES]; [headerKeyField setSelectable: YES]; [self addSubview: headerKeyField]; headerValueLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(205,40,35,TextFieldHeight) label: _(@"Value:")]; [self addSubview: headerValueLabel]; headerValueField = [[NSTextField alloc] initWithFrame: NSMakeRect(250,40,185,TextFieldHeight)]; [headerValueField setEditable: YES]; [headerValueField setSelectable: YES]; [self addSubview: headerValueField]; addHeader = [[NSButton alloc] initWithFrame: NSMakeRect(5,5,75, ButtonHeight)]; [addHeader setStringValue: _(@"Add")]; [addHeader setTarget: parent]; [addHeader setAction: @selector(addHeader:)]; [self addSubview: addHeader]; RELEASE(addHeader); removeHeader = [[NSButton alloc] initWithFrame: NSMakeRect(85,5,75, ButtonHeight)]; [removeHeader setStringValue: _(@"Remove")]; [removeHeader setTarget: parent]; [removeHeader setAction: @selector(removeHeader:)]; [self addSubview: removeHeader]; RELEASE(removeHeader); // We set the next key views [headerKeyField setNextKeyView: headerValueField]; [headerValueField setNextKeyView: addHeader]; [addHeader setNextKeyView: removeHeader]; [removeHeader setNextKeyView: headerKeyField]; } @end GNUMail/Bundles/Sending/SendingViewController.h0100644000014600001460000000277210424672357022231 0ustar monotonemonotone/* ** SendingViewController.h ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_SendingViewController #define _GNUMail_H_SendingViewController #import #include "PreferencesModule.h" @interface SendingViewController : NSObject { // Outlets IBOutlet id view; IBOutlet NSTableView *headerTableView; IBOutlet NSTableColumn *headerKeyColumn; IBOutlet NSTableColumn *headerValueColumn; IBOutlet NSTextField *headerKeyField; IBOutlet NSTextField *headerValueField; // Values struct { NSMutableDictionary *allAdditionalHeaders; } _values; } // // action methods // - (IBAction) addHeader: (id) sender; - (IBAction) removeHeader: (id) sender; @end #endif // _GNUMail_H_SendingViewController GNUMail/Bundles/Sending/SendingViewController.m0100644000014600001460000001503210601435446022220 0ustar monotonemonotone/* ** SendingViewController.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "SendingViewController.h" #include "Constants.h" #ifndef MACOSX #include "SendingView.h" #endif #include static SendingViewController *singleInstance = nil; // // // @implementation SendingViewController - (id) initWithNibName: (NSString *) theName { self = [super init]; #ifdef MACOSX if ( ![NSBundle loadNibNamed: theName owner: self] ) { AUTORELEASE(self); return nil; } RETAIN(view); #else // We link our view and our outlets view = [[SendingView alloc] initWithParent: self]; [view layoutView]; headerTableView = ((SendingView *)view)->headerTableView; headerKeyColumn = ((SendingView *)view)->headerKeyColumn; headerValueColumn = ((SendingView *)view)->headerValueColumn; headerKeyField = ((SendingView *)view)->headerKeyField; headerValueField = ((SendingView *)view)->headerValueField; #endif // We first initialize our dictionary of additional headers _values.allAdditionalHeaders = [[NSMutableDictionary alloc] init]; // We get our defaults for this panel [self initializeFromDefaults]; return self; } // // // - (void) dealloc { singleInstance = nil; RELEASE(_values.allAdditionalHeaders); RELEASE(view); [super dealloc]; } // // deletage/datasource methods // - (id) tableView: (NSTableView *) aTableView objectValueForTableColumn: (NSTableColumn *) aTableColumn row:(int) rowIndex { NSArray *anArray; anArray = [[_values.allAdditionalHeaders allKeys] sortedArrayUsingSelector: @selector(caseInsensitiveCompare:)]; if (aTableColumn == headerKeyColumn) { return [anArray objectAtIndex: rowIndex]; } else { return [_values.allAdditionalHeaders objectForKey: [anArray objectAtIndex: rowIndex]]; } // Never reached return @""; } // // // - (void) tableViewSelectionDidChange:(NSNotification *) aNotification { if ( [aNotification object] == headerTableView && [headerTableView selectedRow] >= 0 ) { NSArray *anArray; anArray = [[_values.allAdditionalHeaders allKeys] sortedArrayUsingSelector: @selector(caseInsensitiveCompare:)]; [headerKeyField setStringValue: [anArray objectAtIndex: [headerTableView selectedRow]]]; [headerValueField setStringValue: [_values.allAdditionalHeaders objectForKey: [anArray objectAtIndex: [headerTableView selectedRow]]]]; } } // // // - (int) numberOfRowsInTableView: (NSTableView *) aTableView { return [_values.allAdditionalHeaders count]; } // // // - (void) tableView: (NSTableView *) aTableView setObjectValue: (id) anObject forTableColumn: (NSTableColumn *) aTableColumn row: (int) rowIndex { NSArray *anArray; anArray = [[_values.allAdditionalHeaders allKeys] sortedArrayUsingSelector: @selector(caseInsensitiveCompare:)]; if ( aTableColumn == headerKeyColumn ) { NSString *aKey, *aValue; aKey = [anArray objectAtIndex: rowIndex]; aValue = [_values.allAdditionalHeaders objectForKey: aKey]; RETAIN(aValue); [_values.allAdditionalHeaders removeObjectForKey: aKey]; [_values.allAdditionalHeaders setObject: aValue forKey: anObject]; RELEASE(aValue); [headerTableView reloadData]; [headerTableView setNeedsDisplay: YES]; } else if ( aTableColumn == headerValueColumn ) { [_values.allAdditionalHeaders setObject: anObject forKey: [anArray objectAtIndex: rowIndex]]; } } // // Action methods // - (IBAction) addHeader: (id) sender { NSString *aKey, *aValue; aKey = [[headerKeyField stringValue] stringByTrimmingWhiteSpaces]; aValue = [[headerValueField stringValue] stringByTrimmingWhiteSpaces]; if ( [aKey length] == 0 || [aValue length] == 0 ) { NSBeep(); return; } else { [_values.allAdditionalHeaders setObject: aValue forKey: aKey]; [headerKeyField setStringValue: @""]; [headerValueField setStringValue: @""]; [headerTableView reloadData]; } } // // // - (IBAction) removeHeader: (id) sender { if ([headerTableView selectedRow] >= 0) { NSArray *anArray; NSString *aKey; anArray = [[_values.allAdditionalHeaders allKeys] sortedArrayUsingSelector: @selector(caseInsensitiveCompare:)]; aKey = [anArray objectAtIndex: [headerTableView selectedRow]]; if ( aKey ) { [_values.allAdditionalHeaders removeObjectForKey: aKey]; [headerTableView reloadData]; [headerTableView setNeedsDisplay:YES]; } } else { NSBeep(); } } // // access methods // - (NSImage *) image { NSBundle *aBundle; aBundle = [NSBundle bundleForClass: [self class]]; return AUTORELEASE([[NSImage alloc] initWithContentsOfFile: [aBundle pathForResource: @"MailIcon_send" ofType: @"tiff"]]); } // // // - (NSString *) name { return _(@"Sending"); } // // // - (NSView *) view { return view; } // // // - (BOOL) hasChangesPending { return YES; } // // // - (void) initializeFromDefaults { // For the additional headers (ADDITIONALOUTGOINGHEADERS) if ( [[NSUserDefaults standardUserDefaults] objectForKey: @"ADDITIONALOUTGOINGHEADERS"] ) { [_values.allAdditionalHeaders addEntriesFromDictionary: [[NSUserDefaults standardUserDefaults] objectForKey: @"ADDITIONALOUTGOINGHEADERS"] ]; [headerTableView reloadData]; } } // // // - (void) saveChanges { // For the additional headers [[NSUserDefaults standardUserDefaults] setObject: _values.allAdditionalHeaders forKey: @"ADDITIONALOUTGOINGHEADERS"]; } // // class methods // + (id) singleInstance { if ( !singleInstance ) { singleInstance = [[SendingViewController alloc] initWithNibName: @"SendingView"]; } return singleInstance; } @end GNUMail/Bundles/Viewing/0040755000014600001460000000000010601706266015600 5ustar monotonemonotoneGNUMail/Bundles/Viewing/English.lproj/0040755000014600001460000000000010424672357020324 5ustar monotonemonotoneGNUMail/Bundles/Viewing/English.lproj/HeadersWindow.nib/0040755000014600001460000000000010424672357023636 5ustar monotonemonotoneGNUMail/Bundles/Viewing/English.lproj/HeadersWindow.nib/classes.nib0100644000014600001460000000132610424672357025764 0ustar monotonemonotone{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { addDefaults = id; addShown = id; cancelClicked = id; moveDown = id; moveUp = id; okClicked = id; removeShown = id; }; CLASS = HeadersWindowController; LANGUAGE = ObjC; OUTLETS = {keyField = NSTextField; showAllHeaders = NSButton; tableView = NSTableView; }; SUPERCLASS = NSWindowController; }, {CLASS = StripeTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; } ); IBVersion = 1; }GNUMail/Bundles/Viewing/English.lproj/HeadersWindow.nib/info.nib0100644000014600001460000000070310424672357025260 0ustar monotonemonotone IBDocumentLocation 96 54 356 240 0 0 1280 1002 IBFramework Version 291.0 IBOpenObjects 5 IBSystem Version 6L60 GNUMail/Bundles/Viewing/English.lproj/HeadersWindow.nib/keyedobjects.nib0100644000014600001460000002154510424672357027007 0ustar monotonemonotonebplist00Y$archiverX$versionX$objectsT$top_NSKeyedArchiver (,-348<MT_ef~  !$29:>@BCFJKMNQUXY[^_byz~  !"%&+,-/0134589;>ABEFGJKOPQRSTUVYZ\]`adfgijlmoprsuvxy\{~}<O={U$null  !"#$%&']NSFontManagerV$classYNSNextOid_NSVisibleWindowsVNSRoot\NSOidsValues_NSClassesValues]NSConnections]NSNamesValues]NSObjectsKeysZNSOidsKeys]NSClassesKeys[NSFramework[NSNamesKeys_NSObjectsValues'߀̀Ȁހˀ )*+[NSClassName_HeadersWindowController./01Z$classnameX$classes^NSCustomObject02XNSObject_IBCocoaFramework 567ZNS.objects./9:\NSMutableSet9;2UNSSet 5=>F?@ABCDEFGHIJKL )L€Ā NOPQRSWNSLabel]NSDestinationXNSSource UVWXYZ[\]^[_NSNextResponderVNSCellWNSFrameYNSEnabled[NSSuperview U`WYabcdbZNSSubviewsUW_{{7, 240}, {128, 18}} ghijklmnopqrstutSvwxyz{|}_NSKeyEquivalentYNSSupport_NSAlternateContents]NSControlView\NSCellFlags2_NSPeriodicDelay^NSButtonFlags2]NSButtonFlags[NSCellFlags_NSPeriodicInterval_NSAlternateImageZNSContentsH:]Shown headers ;<="A0< ?I0.333333 A?_headerTextColor./DE_NSTableHeaderCellDV2 hjkoruvGHIC1@BQ5 LD_controlTextColor./OP]NSTableColumnO2./RS^NSMutableArrayRT2WNSArray VWIHYgridColor ZD0.5./\]^NSClassSwapper\2YtableView NOPQ`aMc defghijklmnopqrstuxvwx\NSWindowViewYNSWTFlags]NSWindowTitleYNSMinSizeYNSMaxSize\NSWindowRect_NSWindowStyleMask_NSWindowBacking\NSScreenRect]NSWindowClass[NSViewClassSpxONQR_{{365, 372}, {480, 347}} {|}YNS.stringPVWindow./_NSMutableString2XNSStringXNSWindow {|TView U`WaT 5=bU `WYnx[vn]NSTransparentYNSOffsets_NSTitlePosition\NSBorderType[NSTitleCellYNSBoxTypeV 5=[ 5=Sjs{ 5= 5=_{{1, 17}, {407, 114}} ]\_controlBackgroundColor I0.666667./ZNSClipView2 UWYXNSActionXNSTargetYNSPercentba`"?_{{408, 17}, {15, 114}}\_doScroller:./ZNSScroller2 UWY€ed"?}_{{1, 131}, {407, 15}} 5=š_{{1, 0}, {407, 17}}_{{9, 84}, {424, 147}}./\NSScrollView2 UVWXYZ[^[lk_{{9, 10}, {28, 28}} ghijklmnoprsutwz{]NSNormalImager@nmSAdd )^NSResourceNameqopWNSImageSadd./_NSCustomResource2_%NSCustomResource {| UVWXYZ[^[ut_{{47, 10}, {28, 28}} ghijklmnoprsuwz{zywvVRemove )xYdelete_20 {| {| UVWXYZ[^[}|_{{346, 6}, {93, 32}} ghijklmnopqrsuwz{8@~XDefaults YHelvetica {| {| UVWXYZ[^[_{{85, 10}, {28, 28}} ghijklmnoprs u wz { RUp )Wsort_up {| {| UVWXYZ[^[_{{123, 10}, {28, 28}} ghijklmnoprsuwz{TDown )Ysort_down {| {| UVWXY[#$^[_{{11, 53}, {40, 17}} hjkor'()Gz*@TKey: .\controlColor_{{2, 2}, {443, 264}}./22_{{13, 56}, {447, 284}}V{0, 0} hkor6uvz7_"Shown headers while viewing a mail./V:V2./<=UNSBox<2 UVWXYZn?@^n_{{366, 12}, {100, 32}} ghijklmnopqrsCutwz{DROkQ UVWXYZnHI^n_{{266, 12}, {100, 32}} ghijklmnopqrsLuMwz{NVCancel {| {|_{{1, 9}, {480, 347}}_{{0, 0}, {1280, 1002}}Z{213, 129}_{3.40282e+38, 3.40282e+38}./WX_NSWindowTemplateW2Vwindow NOPQ[aXdelegate NOP^_YaddShown:./bc_NSNibControlConnectorb2 NOP^e\removeShown: NOP^h\addDefaults: NOP^kWmoveUp: NOP^nYmoveDown: NOP^q^cancelClicked: NOP^tZokClicked: NOPQw׀ZdataSource NOPQz׀ 5|}ɯab[nS#./TT2 5|[[nn[[[b[a[n[[ 5|ab[#S 5|̀΀πЀрҀӀԀՀր׀؀ـڀۀ܀YNSButton5]NSScrollView1YNSButton2YNSButton3YNSButton1YNSButton4\NSTextField1\File's Owner 5| 5| 5| [#BnaFCIKSG?J@EALHDb 5| ŀ    #% !$&"./^NSIBObjectData2]IB.objectdata#,5:LQ[a"-;GSegjlnprtvxz|~ $18>GIfhjlnprtvxz|~  &13579Q#6ACEGIKMRWY[]p  "-;HQZeov8LXlnpuw     ( * , 6 C F O a j s    5 B N [ g v  . 8 B D F H K M O Q \ u w y | ~ - ; G P ] i | ~    % 0 ; J W Y [ ` e j l  (IKPRTik~.02cpz   *3=?FOahqz %/02468:CFObdfhjlnw -6?IKMOTmz$1:SUWm-6OQSj BDFKTVXartv&/HJLd&(*/16G\^k /13L +DOlu (*7HJRceo'LUz $-69B   !#%')+-/13579;=?ACEGP_diwyGNUMail/Bundles/Viewing/English.lproj/ViewingView.nib/0040755000014600001460000000000010424672357023336 5ustar monotonemonotoneGNUMail/Bundles/Viewing/English.lproj/ViewingView.nib/classes.nib0100644000014600001460000000074410601706267025462 0ustar monotonemonotone{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, {ACTIONS = {myAction = id; }; CLASS = NSObject; LANGUAGE = ObjC; }, { ACTIONS = {headersButtonClicked = id; }; CLASS = ViewingViewController; LANGUAGE = ObjC; OUTLETS = {doubleClickPopUpButton = NSPopUpButton; matrix = NSMatrix; view = id; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }GNUMail/Bundles/Viewing/English.lproj/ViewingView.nib/info.nib0100644000014600001460000000117110601706267024753 0ustar monotonemonotone IBDocumentLocation 27 54 356 275 0 0 1024 746 IBEditorPositions 5 392 517 495 352 0 0 1280 1002 IBFramework Version 446.1 IBLockedObjects 5 IBOpenObjects 5 IBSystem Version 8P135 GNUMail/Bundles/Viewing/English.lproj/ViewingView.nib/keyedobjects.nib0100644000014600001460000002147210601706267026501 0ustar monotonemonotonebplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver ]IB.objectdata 156<=AELT_huv)./456:>?@BEKT?U^?_ceil !"%&*/0569>?QcrkU$null  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRoot234[NSClassName_ViewingViewController789:X$classesZ$classname:;^NSCustomObjectXNSObject_IBCocoaFramework>?@ZNS.objects78BCCD;\NSMutableSetUNSSet>FKGHIJ y{~AMNOPQR0]NSDestinationWNSLabelXNSSource wxUVWX2YZ.\]^[NSExtensionZNSSubviews_NSNextResponder[NSFrameSizeu svt>`Kabcdef !*EnAWijklmPPpqrst[NSSuperviewWNSFrameYNSEnabledXNSvFlagsVNSCell _{{9, 64}, {212, 17}}wxyz{|}~a_NSBackgroundColor[NSTextColorYNSSupportZNSContents]NSControlView[NSCellFlags\NSCellFlags2 @_Double-clicking on a messageVNSSizeVNSNameXNSfFlags"AP\LucidaGrande78;VNSFontWNSColor[NSColorName\NSColorSpace]NSCatalogNameVSystem\controlColorWNSWhiteK0.6666666978;_controlTextColorB078m;_NSTextFieldCell\NSActionCell78;[NSTextField\%NSTextFieldYNSControlVNSView[NSResponderWijklmPPqrs  _{{9, 5}, {393, 39}}wxyz{|}~b _?To specify the list of visible headers of messages, click here:WijklmPPqrЀ " )#_{{401, 17}, {60, 32}}yz{|}c_NSKeyEquivalent_NSAlternateImage^NSButtonFlags2_NSPeriodicInterval]NSButtonFlags_NSPeriodicDelay_NSAlternateContents&$!@(Ȁ%SSetPYNS.string'78;_NSMutableStringXNSString78m;\NSButtonCell]%NSButtonCell78;XNSButtonWijklmPPqr + D,_{{221, 60}, {237, 26}}|}{y   qdqVNSMenuZNSMenuItem_NSPreferredEdge]NSAltersState_NSUsesItemFromMenu_NSArrowPositionA@/.%C *- K' !"#&'(]NSMnemonicLoc_NSKeyEquivModMaskWNSStateWNSTitleYNSOnImageZNSKeyEquivXNSTarget\NSMixedImageXNSAction/01%,587*+,-[NSMenuItems9B:_opens reply editor02123^NSResourceName342WNSImage_NSMenuCheckmark787889;_NSCustomResource_%NSCustomResource02;23642_NSMenuMixedState__popUpItemAction:78A;CZOtherViews'>FKHI.;>A !M#&'S/<1%,58=_opens message in new window !W#&']/?1%,58@\does nothing78`aab;^NSMutableArrayWNSArray78d;78fgghm;_NSPopUpButtonCell^NSMenuItemCell78jkk;]NSPopUpButtonjmnopqWkristuvwlwxyz{Pq~P~r[NSCellClassYNSNumRowsZNSCellSizeYNSNumColsWNSCells[NSProtoCell^NSSelectedCell_NSCellBackgroundColor]NSMatrixFlags_NSIntercellSpacingF[YG \ HmlD(Z_{{21, 154}, {408, 127}}>KHMQUAyz{|}e]NSNormalImageLJIE@(%VDrawer0223K42\drawer_96x96'yz{|} eUNSTag%ONE(%XFloating0223P42^floating_96x96yz{|} e%SRE(%V3-Pane0223T42\3-pane_96x96yz{|} e%WVE(%ZWidescreen0223X42_widescreen_96x96Z{102, 127}V{0, 0}yz|} Հi^]H8Q(URadioVNSReps\NSImageFlags_gh` X{18, 18}>KaA>bcf_NSTIFFRepresentationdeOMM*<'''+++555### <uPPPਨTTTuyuuu|||%%%yFjjj浵wwwF BBBJJJ xxxݿ|||$$....$nnnkkk$...,,, C______C ebbbdddee333€𿿿333eCwwC $..$  RS78;_NSBitmapImageRepZNSImageRep78bb;D0 07844;X%NSImage[NSImageNamejk]NSRadioButton78;_NSButtonImageSourceB178   ;XNSMatrixY%NSMatrixWijklmPPqrs o p_{{18, 132}, {414, 14}}wxyz{|}~frqn@_<(You need to restart GNUMail for this change to take effect) "A0 Z{475, 310}78#$$;\NSCustomViewTview78'(();_NSNibOutletConnector^NSNibConnectorMNOd,R0*zx_doubleClickPopUpButtonMNO023c|}!_headersButtonClicked:78788);_NSNibControlConnectorMNOe;R0ExVmatrix>@daHIcebfP* M.HU;>!E/Qn f>RPPeeePPPdeP0 E/EE// *E f>dda0HIcebfP* .;>!E/n f>stuvwxyz{|}~f\NSTextField2\File's Owner[NSMenuItem1\NSMenuItem11YNSMatrix1]NSTextField21YPopUpList\NSTextField1TView>ꠀf>ꠀf>P0bdfJIeGIcHaH /*MnQ~{UE >!.;H yf>f >KA>ꠀf>ꠀf78ܢ;^NSIBObjectData#,1:LQVdf$@R]iw ")+-/13579;=?ACEGILNWceg "3AIRTVXZs #%')*-/1Hi} "')+.;DIPemy"%'09KXanz   Qnprtuwy   / E G I K M O Q S \ ^ ` b g k l u        9  : H \ d l v    * 3 : M a n p r t       . W Y [ ] _ a c e g t } S_it~!*,.024iwy{}  ,.02Az|~)4;hjlnprwy "$-4=FRTVdmr%')+-/16u  ):<>@BZcj "$&(*,.0246?XZ\^`bdfhjlnpr{!*+-6acegikmoqsuwy{}  ()+457@ACLQ`GNUMail/Bundles/Viewing/GNUmakefile0100644000014600001460000000152710613064242017646 0ustar monotonemonotoneinclude $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Viewing BUNDLE_EXTENSION = .prefs BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/GNUMail Viewing_RESOURCE_FILES = viewing.tiff 3-pane_96x96.tiff drawer_96x96.tiff floating_96x96.tiff widescreen_96x96.tiff Viewing_OBJC_FILES = \ ViewingView.m \ ViewingViewController.m \ HeadersWindow.m \ HeadersWindowController.m Viewing_HEADERS = \ ViewingView.h \ ViewingViewController.h \ HeadersWindow.h \ HeadersWindowController.h Viewing_PRINCIPAL_CLASS = \ ViewingViewController ADDITIONAL_OBJCFLAGS = -Wall -Wno-import ADDITIONAL_INCLUDE_DIRS += -I../../Framework/GNUMail ADDITIONAL_LIB_DIRS += -L../../Framework/GNUMail/GNUMail.framework/Versions/Current/$(GNUSTEP_TARGET_LDIR) ADDITIONAL_GUI_LIBS += -lGNUMail include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble GNUMail/Bundles/Viewing/HeadersWindow.h0100644000014600001460000000212610424672357020520 0ustar monotonemonotone/* ** HeadersWindow.h ** ** Copyright (c) 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_HeadersWindow #define _GNUMail_H_HeadersWindow #import @interface HeadersWindow : NSPanel { @public NSButton *showAllHeaders; NSTableView *tableView; NSTextField *keyField; } - (void) layoutWindow; @end #endif // _GNUMail_H_HeadersWindow GNUMail/Bundles/Viewing/HeadersWindow.m0100644000014600001460000001351010424672357020524 0ustar monotonemonotone/* ** HeadersWindow.m ** ** Copyright (c) 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "HeadersWindow.h" #include "Constants.h" #include "LabelWidget.h" //const NSString *TableColumnIdentifier = @"header"; // // // @implementation HeadersWindow - (void) dealloc { NSDebugLog(@"HeadersWindow: -dealloc"); RELEASE(showAllHeaders); RELEASE(tableView); RELEASE(keyField); [super dealloc]; } // // // - (void) layoutWindow { NSButton *okButton, *cancelButton, *removeShown, *addShown, *addDefaults, *moveUp, *moveDown; NSTableColumn *tableColumn; NSScrollView *scrollView; LabelWidget *keyLabel; NSBox *box; // // Our visible header box // box = [[NSBox alloc] initWithFrame: NSMakeRect(5,45,430,245)]; [box setContentViewMargins: NSMakeSize(5,0)]; [box setTitlePosition: NSAtTop]; [box setTitle: _(@"Shown headers while viewing a mail")]; [box setBorderType: NSGrooveBorder]; showAllHeaders = [[NSButton alloc] initWithFrame: NSMakeRect(5,200,200,ButtonHeight)]; [showAllHeaders setButtonType: NSSwitchButton]; [showAllHeaders setBordered: NO]; [showAllHeaders setTitle: _(@"Show all headers")]; [box addSubview: showAllHeaders]; addShown = [[NSButton alloc] initWithFrame: NSMakeRect(5,5,80,ButtonHeight)]; [addShown setStringValue: _(@"Add")]; [addShown setTarget: [self windowController]]; [addShown setAction:@selector(addShown:)]; [[box contentView] addSubview: addShown]; RELEASE(addShown); removeShown = [[NSButton alloc] initWithFrame: NSMakeRect(95,5,80,ButtonHeight)]; [removeShown setStringValue: _(@"Remove")]; [removeShown setTarget: [self windowController]]; [removeShown setAction:@selector(removeShown:)]; [[box contentView] addSubview: removeShown]; RELEASE(removeShown); addDefaults = [[NSButton alloc] initWithFrame: NSMakeRect(185,5,80,ButtonHeight)]; [addDefaults setStringValue: _(@"Defaults")]; [addDefaults setTarget: [self windowController]]; [addDefaults setAction:@selector(addDefaults:)]; [[box contentView] addSubview: addDefaults]; RELEASE(addDefaults); moveUp = [[NSButton alloc] initWithFrame:NSMakeRect(275,5,64,ButtonHeight)]; [moveUp setTitle: @""]; [moveUp setImagePosition: NSImageOnly]; [moveUp setImage: [NSImage imageNamed: @"sort_up.tiff"]]; [moveUp setTarget: [self windowController]]; [moveUp setAction: @selector(moveUp:)]; [moveUp setAutoresizingMask: NSViewMinYMargin]; [[box contentView] addSubview: moveUp]; RELEASE(moveUp); moveDown = [[NSButton alloc] initWithFrame:NSMakeRect(349,5,64,ButtonHeight)]; [moveDown setTitle: @""]; [moveDown setImagePosition: NSImageOnly]; [moveDown setImage: [NSImage imageNamed: @"sort_down.tiff"]]; [moveDown setTarget: [self windowController]]; [moveDown setAction: @selector(moveDown:)]; [moveDown setAutoresizingMask: NSViewMinYMargin]; [[box contentView] addSubview: moveDown]; RELEASE(moveDown); keyLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,40,60,TextFieldHeight) label: _(@"Key:") ]; [[box contentView] addSubview: keyLabel]; keyField = [[NSTextField alloc] initWithFrame: NSMakeRect(70,40,340,TextFieldHeight)]; [[box contentView] addSubview: keyField]; tableColumn = [[NSTableColumn alloc] initWithIdentifier: (id) @"header"]; AUTORELEASE(tableColumn); [tableColumn setEditable: YES]; [[tableColumn headerCell] setStringValue: _(@"Shown Headers")]; [tableColumn setWidth: 240]; tableView = [[NSTableView alloc] initWithFrame: NSMakeRect(5,75,405,120)]; [tableView setDrawsGrid:NO]; [tableView setAllowsColumnSelection: NO]; [tableView setAllowsColumnReordering: NO]; [tableView setAllowsEmptySelection: NO]; [tableView setAllowsMultipleSelection: NO]; [tableView addTableColumn: tableColumn]; [tableView setDataSource: [self windowController]]; [tableView setDelegate: [self windowController]]; scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect(5,75,405,120)]; [scrollView setBorderType: NSBezelBorder]; [scrollView setHasHorizontalScroller: NO]; [scrollView setHasVerticalScroller: YES]; [scrollView setDocumentView: tableView]; [[box contentView] addSubview: scrollView]; RELEASE(scrollView); [[self contentView] addSubview: box]; RELEASE(box); cancelButton = [[NSButton alloc] initWithFrame: NSMakeRect(280,10,75,ButtonHeight)]; [cancelButton setButtonType: NSMomentaryPushButton]; [cancelButton setKeyEquivalent: @"\e"]; [cancelButton setTitle: _(@"Cancel")]; [cancelButton setTarget: [self windowController]]; [cancelButton setAction: @selector(cancelClicked:)]; [[self contentView] addSubview: cancelButton]; RELEASE(cancelButton); okButton = [[NSButton alloc] initWithFrame: NSMakeRect(360,10,75,ButtonHeight)]; [okButton setButtonType: NSMomentaryPushButton]; [okButton setKeyEquivalent: @"\r"]; [okButton setImagePosition: NSImageRight]; [okButton setImage: [NSImage imageNamed: @"common_ret"]]; [okButton setAlternateImage: [NSImage imageNamed: @"common_retH"]]; [okButton setTitle: _(@"OK")]; [okButton setTarget: [self windowController]]; [okButton setAction: @selector(okClicked:)]; [[self contentView] addSubview:okButton]; RELEASE(okButton); } @end GNUMail/Bundles/Viewing/HeadersWindowController.h0100644000014600001460000000342210424672357022564 0ustar monotonemonotone/* ** HeadersWindowController.h ** ** Copyright (c) 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_HeadersWindowController #define _GNUMail_H_HeadersWindowController #import @interface HeadersWindowController: NSWindowController { // Outlets IBOutlet NSButton *showAllHeaders; IBOutlet NSTableView *tableView; IBOutlet NSTextField *keyField; // Other ivars NSMutableArray *shownHeaders; } - (id) initWithWindowNibName: (NSString *) windowNibName; - (void) dealloc; // // action methods // - (IBAction) addDefaults: (id) sender; - (IBAction) addShown: (id) sender; - (IBAction) removeShown: (id) sender; - (IBAction) moveUp: (id) sender; - (IBAction) moveDown: (id) sender; - (IBAction) okClicked: (id) sender; - (IBAction) cancelClicked: (id) sender; // // access/mutation methods // - (void) setShownHeaders: (NSMutableArray *) theMutableArray; - (NSMutableArray *) shownHeaders; - (void) setShowAllHeadersButtonState: (int) theState; - (int) showAllHeadersButtonState; @end #endif // _GNUMail_H_HeadersWindowController GNUMail/Bundles/Viewing/HeadersWindowController.m0100644000014600001460000002126110424672357022572 0ustar monotonemonotone/* ** HeadersWindowController.m ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "HeadersWindowController.h" #include "GNUMail.h" #include "Constants.h" #ifndef MACOSX #include "HeadersWindow.h" #endif #include static NSString *ShownHeadersPboardType = @"ShownHeadersPboardType"; static NSArray *draggedShownHeaders; // // // @implementation HeadersWindowController - (id) initWithWindowNibName: (NSString *) windowNibName { #ifdef MACOSX self = [super initWithWindowNibName: windowNibName]; #else HeadersWindow *aWindow; aWindow = [[HeadersWindow alloc] initWithContentRect: NSMakeRect(200,200,440,300) styleMask: NSTitledWindowMask|NSMiniaturizableWindowMask backing: NSBackingStoreBuffered defer: YES]; self = [super initWithWindow: aWindow]; [aWindow layoutWindow]; [aWindow setDelegate: self]; // We link our outlets showAllHeaders = aWindow->showAllHeaders; tableView = aWindow->tableView; keyField = aWindow->keyField; RELEASE(aWindow); #endif // We set our window's title [[self window] setTitle: _(@"Shown headers while viewing a mail")]; // We initialize our array containing all our headers shownHeaders = [[NSMutableArray alloc] init]; // We register dragged type for [tableView registerForDraggedTypes: [NSArray arrayWithObject: ShownHeadersPboardType]]; return self; } // // // - (void) dealloc { NSDebugLog(@"HeadersWindowController: -dealloc"); // Cocoa bug? #ifdef MACOSX [tableView setDataSource: nil];; #endif RELEASE(shownHeaders); [super dealloc]; } // // action methods // - (IBAction) addDefaults: (id) sender { if (![shownHeaders containsObject: @"Date"]) { [shownHeaders addObject: @"Date"]; } if (![shownHeaders containsObject: @"From"]) { [shownHeaders addObject: @"From"]; } if (![shownHeaders containsObject: @"To"]) { [shownHeaders addObject: @"To"]; } if (![shownHeaders containsObject: @"Cc"]) { [shownHeaders addObject: @"Cc"]; } if (![shownHeaders containsObject: @"Subject"]) { [shownHeaders addObject: @"Subject"]; } [tableView reloadData]; [tableView setNeedsDisplay: YES]; } // // // - (IBAction) addShown: (id) sender { // We verify that the value isn't empty if ([[[keyField stringValue] stringByTrimmingWhiteSpaces] length] > 0) { if (![shownHeaders containsObject: [[keyField stringValue] stringByTrimmingWhiteSpaces]]) { [shownHeaders addObject: [[keyField stringValue] stringByTrimmingWhiteSpaces]]; [keyField setStringValue: @""]; [tableView reloadData]; [tableView setNeedsDisplay: YES]; } else { NSBeep(); } } else { NSBeep(); } } // // // - (IBAction) removeShown: (id) sender { if ([tableView selectedRow] >= 0) { id obj = [shownHeaders objectAtIndex: [tableView selectedRow]]; if (obj) { [shownHeaders removeObject: obj]; [tableView reloadData]; [tableView setNeedsDisplay:YES]; } } else { NSBeep(); } } // // // - (IBAction) moveUp: (id) sender { int selectedRow = [tableView selectedRow]; if (selectedRow <= 0) { NSBeep(); return; } else { NSString *anHeader; anHeader = [shownHeaders objectAtIndex: selectedRow]; [shownHeaders removeObjectAtIndex: selectedRow]; [shownHeaders insertObject: anHeader atIndex: (selectedRow - 1)]; [tableView reloadData]; [tableView selectRow: (selectedRow - 1) byExtendingSelection: NO]; } } // // // - (IBAction) moveDown: (id) sender { int selectedRow = [tableView selectedRow]; if (selectedRow == ([shownHeaders count] - 1) || selectedRow < 0) { NSBeep(); return; } else { [shownHeaders removeObjectAtIndex: selectedRow]; [shownHeaders insertObject: [shownHeaders objectAtIndex: selectedRow] atIndex: (selectedRow+1)]; [tableView reloadData]; [tableView selectRow: (selectedRow+1) byExtendingSelection: NO]; } } // // // - (IBAction) okClicked: (id) sender { [NSApp stopModal]; [self close]; } // // // - (IBAction) cancelClicked: (id) sender { [NSApp stopModalWithCode: NSRunAbortedResponse]; [self close]; } // // Delegate / Datasource methods // - (id) tableView: (NSTableView *) aTableView objectValueForTableColumn: (NSTableColumn *) aTableColumn row:(int) rowIndex { return [shownHeaders objectAtIndex: rowIndex]; } // // // - (void) tableViewSelectionDidChange:(NSNotification *) aNotification { if ([tableView selectedRow] >= 0) { [keyField setStringValue: [shownHeaders objectAtIndex: [tableView selectedRow]]]; } } // // // - (int) numberOfRowsInTableView: (NSTableView *) aTableView { return [shownHeaders count]; } // // // - (void) tableView: (NSTableView *) aTableView setObjectValue: (id) anObject forTableColumn: (NSTableColumn *) aTableColumn row: (int) rowIndex { [shownHeaders replaceObjectAtIndex: rowIndex withObject: anObject]; } // // // - (BOOL) tableView: (NSTableView *)aTableView writeRows: (NSArray *) rows toPasteboard: (NSPasteboard *) pboard { NSMutableArray *propertyList; int i; // FIXME - we leak here draggedShownHeaders = RETAIN(rows); propertyList = [[NSMutableArray alloc] initWithCapacity: [rows count]]; for (i = 0; i < [rows count]; i++) { [propertyList addObject: [self tableView: aTableView objectValueForTableColumn: [[aTableView tableColumns] objectAtIndex: 0] row: [[rows objectAtIndex: i] intValue]]]; } [pboard declareTypes: [NSArray arrayWithObject: ShownHeadersPboardType] owner: self]; [pboard setPropertyList: propertyList forType: ShownHeadersPboardType]; RELEASE(propertyList); return YES; } // // // - (NSDragOperation) tableView: (NSTableView *) aTableView validateDrop: (id ) info proposedRow: (int) row proposedDropOperation: (NSTableViewDropOperation) operation { if ([info draggingSourceOperationMask] & NSDragOperationGeneric) { return NSDragOperationGeneric; } else if ([info draggingSourceOperationMask] & NSDragOperationCopy) { return NSDragOperationCopy; } else { return NSDragOperationNone; } } // // // - (BOOL) tableView: (NSTableView *) aTableView acceptDrop: (id ) info row: (int) row dropOperation: (NSTableViewDropOperation) operation { NSDragOperation dragOperation; if ([info draggingSourceOperationMask] & NSDragOperationGeneric) dragOperation = NSDragOperationGeneric; else if ([info draggingSourceOperationMask] & NSDragOperationCopy) dragOperation = NSDragOperationCopy; else dragOperation = NSDragOperationNone; { int i, j; NSArray *pl = [[info draggingPasteboard] propertyListForType: ShownHeadersPboardType]; int count = [pl count]; for ( i = count - 1; i >= 0; i-- ) { [shownHeaders insertObject: [pl objectAtIndex: i] atIndex: row]; } if (dragOperation == NSDragOperationGeneric) { for (i = count - 1; i >= 0; i--) { j = [[draggedShownHeaders objectAtIndex: i] intValue]; if (j >= row) { j += count; } [shownHeaders removeObjectAtIndex: j]; } } [aTableView reloadData]; } return YES; } // // access/mutation methods // - (void) setShownHeaders: (NSMutableArray *) theMutableArray { [shownHeaders removeAllObjects]; if (theMutableArray) { [shownHeaders addObjectsFromArray: theMutableArray]; } [tableView reloadData]; [tableView setNeedsDisplay: YES]; } - (NSMutableArray *) shownHeaders { return shownHeaders; } // // // - (void) setShowAllHeadersButtonState: (int) theState { [showAllHeaders setState: theState]; } - (int) showAllHeadersButtonState { return [showAllHeaders state]; } @end GNUMail/Bundles/Viewing/ViewingView.h0100644000014600001460000000217610601706267020220 0ustar monotonemonotone/* ** ViewingView.h ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ViewingView #define _GNUMail_H_ViewingView #import @interface ViewingView : NSView { @public NSPopUpButton *doubleClickPopUpButton; NSMatrix *matrix; @private id parent; } - (id) initWithParent: (id) theParent; - (void) layoutView; @end #endif // _GNUMail_H_ViewingView GNUMail/Bundles/Viewing/ViewingView.m0100644000014600001460000001032110601706267020214 0ustar monotonemonotone/* ** ViewingView.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ViewingView.h" #include "Constants.h" #include "LabelWidget.h" // // // @implementation ViewingView - (id) initWithParent: (id) theParent { self = [super init]; parent = theParent; return self; } // // // - (void) dealloc { RELEASE(doubleClickPopUpButton); RELEASE(matrix); [super dealloc]; } // // // - (void) layoutView { NSButton *headersButton; LabelWidget *label; NSButtonCell *cell; NSBundle *aBundle; aBundle = [NSBundle bundleForClass: [parent class]]; cell = [[NSButtonCell alloc] init]; AUTORELEASE(cell); [cell setButtonType: NSPushOnPushOffButton]; [cell setBordered: YES]; [cell setImagePosition: NSImageAbove]; matrix = [[NSMatrix alloc] initWithFrame:NSMakeRect(10,100,400,106) mode: NSRadioModeMatrix prototype: cell numberOfRows: 1 numberOfColumns: 4]; [matrix setTarget: parent]; [matrix setIntercellSpacing: NSMakeSize (4,0)]; [matrix setAutosizesCells: NO]; [matrix setAllowsEmptySelection: NO]; cell = [matrix cellAtRow: 0 column: 0]; [cell setTitle: _(@"Drawer")]; [cell setTag: GNUMailDrawerView]; [cell setImage: AUTORELEASE([[NSImage alloc] initWithContentsOfFile: [aBundle pathForResource: @"drawer_96x96" ofType: @"tiff"]])]; cell = [matrix cellAtRow: 0 column: 1]; [cell setTitle: _(@"Floating")]; [cell setTag: GNUMailFloatingView]; [cell setImage: AUTORELEASE([[NSImage alloc] initWithContentsOfFile: [aBundle pathForResource: @"floating_96x96" ofType: @"tiff"]])]; cell = [matrix cellAtRow: 0 column: 2]; [cell setTitle: _(@"3-Pane")]; [cell setTag: GNUMail3PaneView]; [cell setImage: AUTORELEASE([[NSImage alloc] initWithContentsOfFile: [aBundle pathForResource: @"3-pane_96x96" ofType: @"tiff"]])]; cell = [matrix cellAtRow: 0 column: 3]; [cell setTitle: _(@"Widescreen")]; [cell setTag: GNUMailWidescreenView]; [cell setImage: AUTORELEASE([[NSImage alloc] initWithContentsOfFile: [aBundle pathForResource: @"widescreen_96x96" ofType: @"tiff"]])]; [matrix sizeToFit]; [self addSubview: matrix]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,80,400,20) label: _(@"(You need to restart GNUMail for this change to take effect)") alignment: NSCenterTextAlignment]; [self addSubview: label]; // // // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,35,190,TextFieldHeight) label: _(@"Double-clicking on a message") ]; [self addSubview: label]; doubleClickPopUpButton = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(205,33,230,ButtonHeight)]; [doubleClickPopUpButton setAutoenablesItems: NO]; [doubleClickPopUpButton addItemWithTitle: _(@"opens reply editor")]; [doubleClickPopUpButton addItemWithTitle: _(@"opens message in new window")]; [doubleClickPopUpButton addItemWithTitle: _(@"does nothing")]; [self addSubview: doubleClickPopUpButton]; // // Our label/button to set the visible headers // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,5,385,TextFieldHeight) label: _(@"To specify the list of visible headers of messages, click here")]; [self addSubview: label]; headersButton = [[NSButton alloc] initWithFrame: NSMakeRect(395,3,40,ButtonHeight)]; [headersButton setStringValue: _(@"Set")]; [headersButton setTarget: parent]; [headersButton setAction:@selector(headersButtonClicked:)]; [self addSubview: headersButton]; RELEASE(headersButton); } @end GNUMail/Bundles/Viewing/ViewingViewController.h0100644000014600001460000000253110601706267022257 0ustar monotonemonotone/* ** ViewingViewController.h ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ViewingViewController #define _GNUMail_H_ViewingViewController #import #include "PreferencesModule.h" @interface ViewingViewController : NSObject { // Outlets IBOutlet id view; IBOutlet NSPopUpButton *doubleClickPopUpButton; IBOutlet NSMatrix *matrix; // ivars @private NSMutableArray *_shownHeaders; int _showAllHeadersButtonState; } // // action methods // - (IBAction) headersButtonClicked: (id) sender; @end #endif // _GNUMail_H_ViewingViewController GNUMail/Bundles/Viewing/ViewingViewController.m0100644000014600001460000001121010601706267022256 0ustar monotonemonotone/* ** ViewingViewController.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ViewingViewController.h" #include "Constants.h" #include "HeadersWindowController.h" #include "NSUserDefaults+Extensions.h" #ifndef MACOSX #include "ViewingView.h" #endif static ViewingViewController *singleInstance = nil; @implementation ViewingViewController // // // - (id) initWithNibName: (NSString *) theName { self = [super init]; #ifdef MACOSX if (![NSBundle loadNibNamed: theName owner: self]) { AUTORELEASE(self); return nil; } RETAIN(view); #else // We link our view view = [[ViewingView alloc] initWithParent: self]; [view layoutView]; // We link our outlets doubleClickPopUpButton = ((ViewingView *)view)->doubleClickPopUpButton; matrix = ((ViewingView *)view)->matrix; #endif // We initialize our array containing all our headers _shownHeaders = [[NSMutableArray alloc] init]; // We get our defaults for this panel [self initializeFromDefaults]; return self; } // // // - (void) dealloc { singleInstance = nil; RELEASE(_shownHeaders); RELEASE(view); [super dealloc]; } // // action methods // - (IBAction) headersButtonClicked: (id) sender { HeadersWindowController *aHeadersWindowController; int result; aHeadersWindowController = [[HeadersWindowController alloc] initWithWindowNibName: @"HeadersWindow"]; [aHeadersWindowController setShownHeaders: _shownHeaders]; [aHeadersWindowController setShowAllHeadersButtonState: _showAllHeadersButtonState]; result = [NSApp runModalForWindow: [aHeadersWindowController window]]; // We must update our preferences if (result == NSRunStoppedResponse) { [_shownHeaders removeAllObjects]; [_shownHeaders addObjectsFromArray: [aHeadersWindowController shownHeaders]]; _showAllHeadersButtonState = [aHeadersWindowController showAllHeadersButtonState]; } // We release our controller RELEASE(aHeadersWindowController); } // // access methods // - (NSImage *) image { NSBundle *aBundle; aBundle = [NSBundle bundleForClass: [self class]]; return AUTORELEASE([[NSImage alloc] initWithContentsOfFile: [aBundle pathForResource: @"viewing" ofType: @"tiff"]]); } - (NSString *) name { return _(@"Viewing"); } - (NSView *) view { return view; } - (BOOL) hasChangesPending { return YES; } // // // - (void) initializeFromDefaults { NSUserDefaults *aUserDefaults; NSArray *values; aUserDefaults = [NSUserDefaults standardUserDefaults]; if ([aUserDefaults objectForKey: @"PreferredViewStyleAfterRestart"]) { [matrix selectCellAtRow: 0 column: [aUserDefaults integerForKey: @"PreferredViewStyleAfterRestart" default: 0]]; } else { [matrix selectCellAtRow: 0 column: [aUserDefaults integerForKey: @"PreferredViewStyle" default: 0]]; } _showAllHeadersButtonState = [aUserDefaults integerForKey: @"SHOWALLHEADERS" default: NSOffState]; [doubleClickPopUpButton selectItemAtIndex: [aUserDefaults integerForKey: @"DOUBLECLICKACTION" default: ACTION_VIEW_MESSAGE]]; // We load the headers we want to show values = [aUserDefaults objectForKey: @"SHOWNHEADERS"]; if (values) { [_shownHeaders addObjectsFromArray: values]; } } // // // - (void) saveChanges { NSUserDefaults *aUserDefaults; aUserDefaults = [NSUserDefaults standardUserDefaults]; [aUserDefaults setInteger: [[matrix selectedCell] tag] forKey: @"PreferredViewStyleAfterRestart"]; [aUserDefaults setInteger: _showAllHeadersButtonState forKey: @"SHOWALLHEADERS"]; [aUserDefaults setInteger: [doubleClickPopUpButton indexOfSelectedItem] forKey: @"DOUBLECLICKACTION"]; [aUserDefaults setObject: _shownHeaders forKey: @"SHOWNHEADERS"]; } // // class methods // + (id) singleInstance { if (!singleInstance) { singleInstance = [[ViewingViewController alloc] initWithNibName: @"ViewingView"]; } return singleInstance; } @end GNUMail/Bundles/Viewing/viewing.tiff0100644000014600001460000006616410506157373020137 0ustar monotonemonotoneII*00HH0$(12*R>I~.iHl ' 'Adobe Photoshop 7.02006:09:25 01:06:34 4294967295 256 256 1 72/1 72/1 2 2005-02-14T21:04:06-06:00 2005-02-15T12:43:10-06:00 2005-02-15T12:43:10-06:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:b459bf38-4c61-11db-8c81-d26e35c2cbb3 application/vnd.adobe.photoshop 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:00:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:00:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM.@@XX8BIM8BIM50000nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 00JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ? 9{^ȉ=w?r6mtLnG{RktmUĹť'gꍏ+A))M?gk?5yHY}ucIP:\dA'ȖU1 yh}19=Pem uuid:BBA977BDD8B711DBBA6DAA9B076AF509 uuid:BBA977BED8B711DBBA6DAA9B076AF509 uuid:D4A92C6AD8A311DBBA6DAA9B076AF509 uuid:D4A92C6AD8A311DBBA6DAA9B076AF509 2007-03-21T10:13:04-05:00 2007-03-21T10:13:04-05:00 2007-03-21T10:13:04-05:00 Adobe Photoshop CS2 Macintosh image/tiff 3 sRGB IEC61966-2.1 1 720000/10000 720000/10000 2 256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;C90D2F94B8E6393887D47B857D9B12A4 96 96 1 36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;A036284EE9AF81BCDB164495E67C8D52 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:06Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:06Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:06Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:06Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:06Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:06Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:06Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:06Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:06Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM08BIM-8BIM@@8BIM8BIM5````nullboundsObjcRct1Top longLeftlongBtomlong`Rghtlong`slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong`Rghtlong`urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM `` lJFIFHH Adobe_CMAdobed            ``"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TX~e@vnrJwXFoeh;/sG'^*vXasG'^*vXasG'^*vXasG'^*vXbMv1%mSUOM^MfS׺J^&W6}jcWei)Խ6җ^Rڣ/J_撙zmKj)JE0rJ8U3ő3J8IOUOM^MfS׺J^bZVm L_*(5/QO8JnKjSE_/*)RRWqKTiO*fe-3~f68IOUOM^MfS׺Jd?)'s _#}'udǴn6~ۇ$zșm]01dUfݎ78cTgARRSQEKoA$8u܊oz\p^}GOjTSm؛1nt݅hwWkyhv-{byEpƫ۠WW*(k}iG`p佯闹? {Nj8A/UOM^MfS׺Jd?'-nƻ{AyݴȖte![#۵wFWAeQ?KS8"?G_(Up>~F\% UpJʩtQ~L>꽺[Uv}PdC?5& ׇ5HzU ǫx zNUa5h}6ڷ<=} ƿ$-昩䆑ߺ\i'cY5>v&|JU165pOZ)$8S;to:[XsWn$ޮw sWn$ޮw sWn$ޮw sWn$w,[}FBcp1+c$8BIM!UAdobe PhotoshopAdobe Photoshop CS2 HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km                                                                               2ۘݗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܗܣZ= "t< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v<}}} "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v< "v?##%z$UUYRSVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVQRVXY]P ``GNUMail/Bundles/Viewing/drawer_96x96.tiff0100644000014600001460000020155010601706266020623 0ustar monotonemonotoneMM*``s<`&(1.2LR:`I+;i uuid:7C461B70D8B711DBBA6DAA9B076AF509 uuid:7C461B71D8B711DBBA6DAA9B076AF509 uuid:7C461B6ED8B711DBBA6DAA9B076AF509 uuid:7C461B6ED8B711DBBA6DAA9B076AF509 2007-03-21T10:12:18-05:00 2007-03-21T10:12:18-05:00 2007-03-21T10:12:18-05:00 Adobe Photoshop CS2 Macintosh image/tiff 3 sRGB IEC61966-2.1 1 720000/10000 720000/10000 2 256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;3CF93BFA0C08BBB875E6A603BAB02AE5 96 96 1 36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;A036284EE9AF81BCDB164495E67C8D52 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM08BIM-8BIM@@8BIM8BIM5````nullboundsObjcRct1Top longLeftlongBtomlong`Rghtlong`slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong`Rghtlong`urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM `` lJFIFHH Adobe_CMAdobed            ``"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TQzJd~HXtڏRS{=R{=Q:,oE-oE*S{=R{=R:,k-L.Ɨ հ-?UKja-0<̧?"J_ӯcgn)AE{;'or[܂or[ܒor[ܒ203 %߂KDIOUO5T~E)fȒefdRQsj n5a QS!- ڲ?%_jRۙ#[%o)!- ڲ?%_j RcȈi%߂ɼ\5=iWIOUO5T~E)fȒTܗa1mo۸DCLMm,>Lvc.s^hT=+7Ѳ@pǃCs#nMG m$=߼S0lq{dIMFU>pߜ@'OIId?Ahfo w4WIOUO5T~E)fȒ9!v,k IuL:]o~wj7HF*iv48D`h]Okhisp {-I}w,ԔZ~Yв?RQk UK{^ѠI) CgA ݎ|{^kph']FYⴒINu-#W |qV>o(lƷKҊI)kDo(Y[mMǴ9sD"?+lуऒJ8BIM!UAdobe PhotoshopAdobe Photoshop CS2 HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km 3zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzząEEH Dpqv  Dmns Doou Bwx|  Uwx|:;=l󳳻河河河河河河河河河河河河汲就wx|?@C{wx|>?B{wx|>?B{wx|>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{xx|>?B{wx|>?B{wx|>?B{wx|>?B{wx|>?B{wx|>?B{xy}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{xy}>?B{wx|>?B{wx|>?B{wx|>?B{wx|>?B{xx|>?B{ssw>?B{lms>?B{ssw>?B{zz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{yz}>?B{|||yz}>?B{yz}>?B{yz}ABE|yz})*+`ց́́́́́́́́́́́́~ˊyz}Wzz} I{|0wx}ppvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvpqvzzBBE``GNUMail/Bundles/Viewing/floating_96x96.tiff0100644000014600001460000020210410601706266021136 0ustar monotonemonotoneMM*``t`&(1.2LR:`I+;is Hg ' 'Adobe Photoshop CS2 Macintosh2007:03:21 10:12:52 uuid:7C461B78D8B711DBBA6DAA9B076AF509 uuid:BBA977BAD8B711DBBA6DAA9B076AF509 uuid:D4A92C68D8A311DBBA6DAA9B076AF509 uuid:D4A92C68D8A311DBBA6DAA9B076AF509 2007-03-21T10:12:52-05:00 2007-03-21T10:12:52-05:00 2007-03-21T10:12:52-05:00 Adobe Photoshop CS2 Macintosh image/tiff 3 sRGB IEC61966-2.1 1 720000/10000 720000/10000 2 256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;D3038995DE0685CA4310BB62AAC1F839 96 96 1 36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;A036284EE9AF81BCDB164495E67C8D52 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM08BIM-8BIM@@8BIM8BIM5````nullboundsObjcRct1Top longLeftlongBtomlong`Rghtlong`slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong`Rghtlong`urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM v`` lZJFIFHH Adobe_CMAdobed            ``"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ? پɂcOUoI5eMplT.?61?48pu "lqUVC\A#[ԝ+o]3oSggY%n%n%ENK'ݟ?Kݟ?JdO?~' 圪ͅDfХ?*;?@EL/f;"r +ې)%66=-R<gw٪f%%3symf' cҫR{s姷Vlݐs~>_߸%U̍2 ;˝7ؗٳ6.3II*qpKҫW9N\斴MSgҫP@ҧ] Ihi8)GIO*7?@Tl"ṡsqABG~DZcԲ[}ouIK2 hc%'F8j91(`]<'.{Y{OT9bk3%L͹_x-$˧[LnN= 0۵rIO5 tQf,pvXc9f6hc4$[S73c}ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km================> 5DDHy@@D{&?@Cz)??Bz)??Bz)??Bz)                                                              ??Bz)< uuid:BBA977C1D8B711DBBA6DAA9B076AF509 uuid:BBA977C2D8B711DBBA6DAA9B076AF509 uuid:7C461B6FD8B711DBBA6DAA9B076AF509 uuid:7C461B6FD8B711DBBA6DAA9B076AF509 2007-03-21T10:13:18-05:00 2007-03-21T10:13:18-05:00 2007-03-21T10:13:18-05:00 Adobe Photoshop CS2 Macintosh image/tiff 3 sRGB IEC61966-2.1 1 720000/10000 720000/10000 2 256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;FE7F134135BB4B0679A1EC0EA260A780 96 96 1 36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;A036284EE9AF81BCDB164495E67C8D52 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:08Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:08Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:08Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:08Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:08Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:08Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:08Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:08Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2007-03-21T15:11:08Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM08BIM-8BIM@@8BIM8BIM5````nullboundsObjcRct1Top longLeftlongBtomlong`Rghtlong`slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong`Rghtlong`urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM -`` lJFIFHH Adobe_CMAdobed            ``"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IOU,{eS[;T{D'SLrj,Y))z\w_塽))x.tr)9IN{YE/}Ne{'n""3VAHo!d_?5ѳӸQkGHʹ9 ~ڤ.zNݴOnin-d9:ݳctV:ƴ85 _ppvWoO}niFS%֜`Tg|U>j,Y))M\z~j_ww*_Hק)Gx6:9AM&;/}^d%8{|]]8?kK$[$?5Ii]p-6nFʩp"OdQm9,sw9Tp$`">{F]:I xOҵ7:~C$__N79k|14wMgZ!?U>j,2+4Hi)~\%!f[ԭޅn?GV=w{Sj[%U}w{zɠJ:"D<TǾʨenǰ1&{DIV[=?_kǷIKAIG M]mMǰ:9$G遲TIKBP$% IKBP$% IK'I$8BIM!UAdobe PhotoshopAdobe Photoshop CS2 HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km$)*+g))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i))+i,,.j,'()[$$&t%%'Z$$%v%%'Z$$&w%%'Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w$$&Z$$&w'')^'')|@uu{tuztuytuytuytuytuytuytuytuytuzstyrrxtuzuv{uuzuuzuuzuuzuuzuuzuuzuuzuuzuuzuuzuuzuuzuuzuuzuuzuuzuuzuuzuuzuuzuuzuu{uvzrrxtuzvw{uvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzuvzww|}}]  ``GNUMail/Bundles/Emoticon/0040755000014600001460000000000010424674042015744 5ustar monotonemonotoneGNUMail/Bundles/Emoticon/EmoticonController.h0100644000014600001460000000217410424672357021746 0ustar monotonemonotone/* ** EmoticonController.h ** ** Copyright (c) 2003-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_EmoticonController #define _GNUMail_H_EmoticonController #import #include "GNUMailBundle.h" #include "PreferencesModule.h" @interface EmoticonController : NSObject { // ivars id owner; NSString *resourcePath; } @end #endif // _GNUMail_H_EmoticonController GNUMail/Bundles/Emoticon/EmoticonController.m0100644000014600001460000001255610424672357021760 0ustar monotonemonotone/* ** EmoticonController.m ** ** Copyright (c) 2003-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "EmoticonController.h" #include "Constants.h" #include static EmoticonController *singleInstance = nil; // // The emoticon images are from gnomemeeting (http://www.gnomemeeting.org). // static struct { NSString *glyph; NSString *image; } emoticons[] = { {@":)", @"emoticon-face1.tiff"}, {@":-)", @"emoticon-face1.tiff"}, {@":o)", @"emoticon-face1.tiff"}, {@"8)", @"emoticon-face2.tiff"}, {@"8-)", @"emoticon-face2.tiff"}, {@";)", @"emoticon-face3.tiff"}, {@";o)", @"emoticon-face3.tiff"}, {@";-)", @"emoticon-face3.tiff"}, {@":-(", @"emoticon-face4.tiff"}, // :( conflicts with objc code! like: itemAtIndex:(int)theIndex {@":o(", @"emoticon-face4.tiff"}, {@":-0", @"emoticon-face5.tiff"}, // :0 conflicts with a time value! like: 18:00 {@":-o", @"emoticon-face5.tiff"}, {@":D", @"emoticon-face6.tiff"}, {@":-D", @"emoticon-face6.tiff"}, {@":|", @"emoticon-face8.tiff"}, {@":-|", @"emoticon-face8.tiff"}, {@":-/", @"emoticon-face9.tiff"}, // :/ conflicts with URLs! like: http://foobarbaz.com {@":o/", @"emoticon-face9.tiff"}, {@":p", @"emoticon-face10.tiff"}, {@":-p", @"emoticon-face10.tiff"}, {@":'(", @"emoticon-face11.tiff"}, {@":,(", @"emoticon-face11.tiff"}, {@";o(", @"emoticon-face11.tiff"}, {@":-*", @"emoticon-face13.tiff"}, {@":-x", @"emoticon-face14.tiff"}, {@"B)", @"emoticon-face15.tiff"}, {@"B-)", @"emoticon-face15.tiff"}, {@":-.", @"emoticon-face19.tiff"}, {@":o", @"emoticon-face5.tiff"} }; // // // @implementation EmoticonController - (id) initWithOwner: (id) theOwner { NSBundle *aBundle; self = [super init]; owner = theOwner; aBundle = [NSBundle bundleForClass: [self class]]; resourcePath = [aBundle resourcePath]; RETAIN(resourcePath); return self; } // // // - (void) dealloc { RELEASE(resourcePath); [super dealloc]; } // // // + (id) singleInstance { if (!singleInstance) { singleInstance = [[EmoticonController alloc] initWithOwner: nil]; } return singleInstance; } // // access / mutation methods // - (NSString *) name { return @"Emoticon"; } - (NSString *) description { return @"This is a simple Emoticon bundle."; } - (NSString *) version { return @"v0.2.0"; } - (void) setOwner: (id) theOwner { owner = theOwner; } // // UI elements // - (BOOL) hasPreferencesPanel { return NO; } - (BOOL) hasComposeViewAccessory { return NO; } - (BOOL) hasViewingViewAccessory { return NO; } - (id) viewingViewAccessory { return nil; } // // // - (enum ViewingViewType) viewingViewAccessoryType { return ViewingViewTypeHeaderCell; } - (void) viewingViewAccessoryWillBeRemovedFromSuperview: (id) theView { } - (void) setCurrentSuperview: (NSView *) theView { } - (NSArray *) submenuForMenu: (NSMenu *) theMenu { return nil; } - (NSArray *) menuItemsForMenu: (NSMenu *) theMenu { return nil; } // // Pantomime related methods // - (void) messageWasDisplayed: (CWMessage *) theMessage inView: (NSTextView *) theTextView { NSTextAttachment *aTextAttachment; NSFileWrapper *aFileWrapper; NSTextStorage *aTextStorage; NSString *aString; NSRange aRange; int i, j, k, len; char c; aTextStorage = [theTextView textStorage]; #ifdef MACOSX [aTextStorage beginEditing]; #endif aString = [aTextStorage string]; len = [aString length]; for (i = 0; i < len; i++) { c = [aString characterAtIndex: i]; if (c == 'b' || c == 'B' || c == ':' || c == ';' || c == '8') { char cc; for (j = i+1; j < len; j++) { // We chop the higher bits in case we got a unichar. cc = [aString characterAtIndex: j]; if (isspace(cc)) break; } if ((j-i == 2 || j-i == 3) && i-1 > 0 && isspace((cc = [aString characterAtIndex: i-1]))) { aRange = NSMakeRange(i,j-i); for (k = 0; k < sizeof(emoticons)/sizeof(emoticons[0]); k++) { if ([emoticons[k].glyph isEqualToString: [aString substringWithRange: aRange]]) { aFileWrapper = [[NSFileWrapper alloc] initWithPath: [NSString stringWithFormat: @"%@/%@", resourcePath, emoticons[k].image]]; aTextAttachment = [[NSTextAttachment alloc] initWithFileWrapper: aFileWrapper]; [aTextStorage replaceCharactersInRange: aRange withAttributedString: [NSAttributedString attributedStringWithAttachment: aTextAttachment]]; RELEASE(aTextAttachment); RELEASE(aFileWrapper); len = len-(j-i)+1; break; } } i = j-1; } } } #ifdef MACOSX [aTextStorage endEditing]; #endif } @end GNUMail/Bundles/Emoticon/GNUmakefile0100644000014600001460000000121210613064242020002 0ustar monotonemonotoneinclude $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = Emoticon BUNDLE_EXTENSION = .bundle BUNDLE_INSTALL_DIR = $(GNUSTEP_APPLICATION_SUPPORT)/GNUMail Emoticon_RESOURCE_FILES = *.tiff Emoticon_OBJC_FILES = \ EmoticonController.m Emoticon_HEADERS = \ EmoticonController.h Emoticon_PRINCIPAL_CLASS = \ EmoticonController ADDITIONAL_OBJCFLAGS = -Wall -Wno-import ADDITIONAL_INCLUDE_DIRS += -I../../Framework/GNUMail ADDITIONAL_LIB_DIRS += -L../../Framework/GNUMail/GNUMail.framework/Versions/Current/$(GNUSTEP_TARGET_LDIR) ADDITIONAL_GUI_LIBS += -lGNUMail -lPantomime include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble GNUMail/Bundles/Emoticon/emoticon-face1.tiff0100644000014600001460000000243010424672357021413 0ustar monotonemonotoneII*lg( ;dք|T(i/ׇڐpJMfyXvXl4ٌn_XVQH?JOvX/'ՂuYbJ@ bϲO=4D:T%&j#ׇVbNE$g[0vmL k^0ٍ1=qYwXXfҹeA;#ݙC:o1;wJVbܗbi=1%Ơ{8?YbfbYQD:|p۷mgH=?3vU l.% V=:=?=:YP7jHI2B.( '&d Q3111-4)uGC 7 gN۱,3%ϧ9+ـFM7 !zY|#Up2  1:Remoticon-face10.tiffImageMagick 5.5.5 03/01/03 Q16 http://www.imagemagick.orgGNUMail/Bundles/Emoticon/emoticon-face11.tiff0100644000014600001460000000243210424672357021476 0ustar monotonemonotoneII*lg( ;dք|T(i/ׇڐpJMfyXvXl4ٌn_XVQH?JOvX/'ՂuYbdbYOD:T%&j#ׇVENE$аse2:3ǩ1=qYwXXfӴϫ؋ܖXS?1;wJVbmsnbYI@f>1%Ơ{DQYbfbYXpiG-!p?HQVXVQI@f1+E(ݲi&V?D63+ # @8E81OxeC!vU l.% Vص9l!WIbޛмwdRAʣq'&d Qֱ0111-AՂϷe`DgN۱,3%ϧĞgJ!zY|ya&p2  1:Remoticon-face11.tiffImageMagick 5.5.5 03/01/03 Q16 http://www.imagemagick.orgGNUMail/Bundles/Emoticon/emoticon-face13.tiff0100644000014600001460000000243210424672357021500 0ustar monotonemonotoneII*lg( ;dք|T(i/ׇڐpJMfyXvXl4ٌn_XVQH?JOvX/'ՂuYbJ@ bϲO=4D:T%&j#ׇVhNE$g[0vmL k^0=1=qYwXֆuߡXˬB۷<1;wJiߠܗN-Cn3BʬA2ٲ/%Ơ{Dd|\+}d}dBBz./ٱ+!p?H|4BB}d}dBBr%(ݲi&V?DԛL`-BBe$*ر*!vU l.% V=:=޿RҰ8/&ر*%ʣq'&d Q3111-(!`DgN۱,JxoϰF¡+gJ!zY|ya&p2  1:Remoticon-face13.tiffImageMagick 5.5.5 03/01/03 Q16 http://www.imagemagick.orgGNUMail/Bundles/Emoticon/emoticon-face14.tiff0100644000014600001460000000243210424672357021501 0ustar monotonemonotoneII*lg( ;dք|T(i/ׇڐpJMfyXvXl4ٌn_XVQH?JOvX/'ՂuYbJ@ bϲO=4D:T%&j#ׇVbNE$g[0vmL k^0ٍ1=qYwXXfҹeA;#ݙC:o1;wJVbܗbi=1%Ơ{DQYOSbYB7:-!p?HBMBSGFBE:C8ُ(ݲi&V?Dƹ=4C8ʶѷR!vU l.% V=/TGeTQCQB׈ʣq'&d Q3ܙَ1-ޜ̮D`DgN۱,3%ϧĞgJ!zY|ya&p2  1:Remoticon-face14.tiffImageMagick 5.5.5 03/01/03 Q16 http://www.imagemagick.orgGNUMail/Bundles/Emoticon/emoticon-face15.tiff0100644000014600001460000000243210424672357021502 0ustar monotonemonotoneII*lg( ;dք|T(i/ׇڐpJMfyXvXl4ٌn_XVQH?JOvX+# Χ f\:FFFm`2l^-FFFjYqwԷQcU%DZaּ^aP¡2wJԷOƬSUDZambԷO¥>¢3Ы-%Ơ{8?YbfbYQD:|p۷۔ĩJԷOܽMH?3(ݲi&ԷOUJ%50å?¥>ܹA۷<6,!vU l.% Vٍɴj.¢3ڵ7ٳ1,%ʣq'&d Qȥ-)$)Ъ)ذ&!`DbJҪϪ(ȥ-׮#ϧĞgJ!zY|ya&p2  1:Remoticon-face19.tiffImageMagick 5.5.5 03/01/03 Q16 http://www.imagemagick.orgGNUMail/Bundles/Emoticon/emoticon-face2.tiff0100644000014600001460000000243010424672357021414 0ustar monotonemonotoneII*lg( ;dք|T(i/ׇڐpJMfyXvXl4ٌnuf07/ݘQ.'s`ڑOvX/'ՂuY.(0*Y-&,% T%&j#ׇVb.)/)b.',&1=qYwXXf/)/*f-'.'1;wJVb.)1,b800)1%Ơ{8?YtY`|p۷F;*-!p?bS&&&888333<<<>>>999xi4pi&VIIIIIIӣvU l.% VbRk'&d Q%F9  YM%dzo`DgN۱Ks׈̀ВЖDgJ!zY$ya&p2  1:Remoticon-face5.tiffImageMagick 5.5.5 03/01/03 Q16 http://www.imagemagick.orgGNUMail/Bundles/Emoticon/emoticon-face6.tiff0100644000014600001460000000243010424672357021420 0ustar monotonemonotoneII*lg( ;dք|T(i/ׇڐpJMfyXvXl4ٌn_XVQH?JOvX/'ՂuYbdbYOD:T%&j#ׇVENE$аse2:3ǩ1=qYwXXf؋ܖ@1;wJVbmsnbWL=1%ƠUn&|j+}l0|l4~n7~m5}l0|j+{h$ydzdgu`U.r(isۭç`El' @сͮ1%&qX?הѸ1W=gNɥ'ԇ׳ȣw1gJ!nP 111Ȥ+j&p2  1:Remoticon-face6.tiffImageMagick 5.5.5 03/01/03 Q16 http://www.imagemagick.orgGNUMail/Bundles/Emoticon/emoticon-face8.tiff0100644000014600001460000000243010424672357021422 0ustar monotonemonotoneII*lg( ;dք|T(i/ׇڐpJMfyXvXl4ٌn_XVQH?JOvX/'ՂuYbJ@ bϲO=4D:T%&j#ׇVbNE$g[0vmL k^0ٍ1=qYwXXfҹeA;#ݙC:o1;wJVbܗbi=1%Ơ{DQYbfbYQD:-!p?HQVXVQH?3(ݲi&VֶF ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_MailboxImportController_Filters #define _GNUMail_H_MailboxImportController_Filters #include "MailboxImportController.h" @class CWStore; @interface MailboxImportController (Filters) - (void) importFromEntourage; - (void) importFromMbox; - (NSString *) uniqueMailboxNameFromName: (NSString *) theName store: (CWStore *) theStore index: (int) theIndex proposedName: (NSString *) theProposedName; @end #endif // _GNUMail_H_MailboxImportController_Filters GNUMail/Bundles/Import/MailboxImportController+Filters.m0100644000014600001460000001007710424672357024066 0ustar monotonemonotone/* ** MailboxImportController+Filters.m ** ** Copyright (c) 2003-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "MailboxImportController+Filters.h" #include "MailboxManagerController.h" #include #include #include @implementation MailboxImportController (Filters) // // Rationale: // // When Entourage exports its mailboxes, it uses the CR delimiter // instead of LF. This method replace all occurences of CR by LF. // - (void) importFromEntourage { NSEnumerator *theEnumerator; NSMutableData *aMutableData; CWLocalStore *aStore; NSString *aString; NSNumber *aRow; unsigned char *bytes; int i,length; theEnumerator = [tableView selectedRowEnumerator]; aStore = [[MailboxManagerController singleInstance] storeForName: @"GNUMAIL_LOCAL_STORE" username: NSUserName()]; while ((aRow = [theEnumerator nextObject])) { aString = [allMailboxes objectAtIndex: [aRow intValue]]; aMutableData = [NSMutableData dataWithContentsOfFile: aString]; bytes = [aMutableData mutableBytes]; length = [aMutableData length]; for (i = 0; i < length; i++) { if (*bytes == '\r') { *bytes = '\n'; } bytes++; } [aStore createFolderWithName: [self uniqueMailboxNameFromName: [aString lastPathComponent] store: (CWStore *)aStore index: 1 proposedName: [aString lastPathComponent]] type: PantomimeFormatMbox contents: aMutableData]; } #warning FIXME - Optimize [[MailboxManagerController singleInstance] reloadAllFolders]; } // // We do nothing special, just move the mbox to the local store // - (void) importFromMbox { NSEnumerator *theEnumerator; CWLocalStore *aStore; NSString *aString; NSNumber *aRow; NSData *aData; theEnumerator = [tableView selectedRowEnumerator]; aStore = [[MailboxManagerController singleInstance] storeForName: @"GNUMAIL_LOCAL_STORE" username: NSUserName()]; while ((aRow = [theEnumerator nextObject])) { aString = [allMailboxes objectAtIndex: [aRow intValue]]; aData = [NSData dataWithContentsOfFile: aString]; [aStore createFolderWithName: [self uniqueMailboxNameFromName: [aString lastPathComponent] store: (CWStore *)aStore index: 1 proposedName: [aString lastPathComponent]] type: PantomimeFormatMbox contents: aData]; } #warning FIXME - Optimize [[MailboxManagerController singleInstance] reloadAllFolders]; } // // // - (NSString *) uniqueMailboxNameFromName: (NSString *) theName store: (CWStore *) theStore index: (int) theIndex proposedName: (NSString *) theProposedName { NSEnumerator *theEnumerator; NSString *aString; theEnumerator = [(id)theStore folderEnumerator]; // We verify if the folder with that name does already exist while ((aString = [theEnumerator nextObject])) { if ([aString compare: theProposedName options: NSCaseInsensitiveSearch] == NSOrderedSame) { return [self uniqueMailboxNameFromName: theName store: theStore index: (theIndex+1) proposedName: [NSString stringWithFormat: @"%@.%d", theName, theIndex]]; } } if (theIndex == 1) { return theName; } return theProposedName; } @end GNUMail/Bundles/Import/MailboxImportController.h0100644000014600001460000000321110424672357022445 0ustar monotonemonotone/* ** MailboxImportController.h ** ** Copyright (c) 2003-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_MailboxImportController #define _GNUMail_H_MailboxImportController #import @interface MailboxImportController : NSWindowController { // Outlets IBOutlet NSMatrix *matrix; IBOutlet NSTextField *explanationLabel; IBOutlet NSButton *chooseButton; IBOutlet NSTableView *tableView; IBOutlet id chooseTypeView; IBOutlet id explanationView; IBOutlet id chooseMailboxView; // Other ivars NSMutableArray *allMailboxes; NSArray *allMessages; } // // Actions methods // - (IBAction) chooseClicked: (id) sender; - (IBAction) doneClicked: (id) sender; - (IBAction) nextClicked: (id) sender; - (IBAction) previousClicked: (id) sender; - (IBAction) selectionInMatrixHasChanged: (id) sender; // // Class methods // + (id) singleInstance; @end #endif // _GNUMail_H_MailboxImportController GNUMail/Bundles/Import/MailboxImportController.m0100644000014600001460000001534610424672357022466 0ustar monotonemonotone/* ** MailboxImportController.m ** ** Copyright (c) 2003-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "MailboxImportController.h" #include "Constants.h" #include "GNUMail.h" #include "MailboxImportController+Filters.h" #ifndef MACOSX #include "Views.h" #endif static MailboxImportController *singleInstance = nil; // // // @implementation MailboxImportController - (id) initWithWindowNibName: (NSString *) windowNibName { #ifdef MACOSX self = [super initWithWindowNibName: windowNibName]; #else NSWindow *aWindow; aWindow = [[NSWindow alloc] initWithContentRect: NSMakeRect(150,100,270,300) styleMask: NSClosableWindowMask|NSTitledWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask backing: NSBackingStoreRetained defer: NO]; self = [super initWithWindow: aWindow]; [aWindow setDelegate: self]; // We link our outlets chooseTypeView = [[ChooseTypeView alloc] initWithOwner: self]; [chooseTypeView layoutView]; matrix = ((ChooseTypeView *)chooseTypeView)->matrix; explanationView = [[ExplanationView alloc] initWithOwner: self]; [explanationView layoutView]; explanationLabel = (NSTextField *)((ExplanationView *)explanationView)->explanationLabel; chooseButton = ((ExplanationView *)explanationView)->chooseButton; chooseMailboxView = [[ChooseMailboxView alloc] initWithOwner: self]; [chooseMailboxView layoutView]; tableView = ((ChooseMailboxView *)chooseMailboxView)->tableView; #endif [[self window] setTitle: _(@"Import Mailboxes")]; // We load our initial view [[self window] setContentView: chooseTypeView]; // Our array holding the list of mailboxes to import allMailboxes = [[NSMutableArray alloc] init]; // Our array holding the list of messages that we show while importing the mailboxes allMessages = [[NSArray alloc] initWithObjects: _(@"Please export the mailboxes you want\nfrom Entourage by dragging them on\nthe Desktop. Then, choose the created\nfiles for importation by clicking on the\nbutton below."), _(@"Please choose the directory that\ncontains the mbox files you would like\nto import. GNUMail will filter the\nfiles in the directory to only show\nmailboxes that can be imported."), nil]; // We select the initial row in the matrix [matrix selectCellAtRow: 0 column: 0]; [self selectionInMatrixHasChanged: self]; return self; } // // // - (void) dealloc { #ifndef MACOSX RELEASE(chooseTypeView); RELEASE(explanationView); RELEASE(chooseMailboxView); #else [tableView setDataSource: nil]; #endif RELEASE(allMailboxes); RELEASE(allMessages); [super dealloc]; } // // Actions methods // - (IBAction) chooseClicked: (id) sender { NSOpenPanel *oPanel; int i, j, result, row; row = [matrix selectedRow]; oPanel = [NSOpenPanel openPanel]; [oPanel setAllowsMultipleSelection: YES]; // We allow only files to be selected... if (row == 0) { [oPanel setCanChooseFiles: YES]; [oPanel setCanChooseDirectories: NO]; } // We also only directories to be selected... else { [oPanel setCanChooseFiles: NO]; [oPanel setCanChooseDirectories: YES]; } result = [oPanel runModalForDirectory: [GNUMail currentWorkingPath] file: nil types: nil]; if (result == NSOKButton) { NSFileManager *aFileManager; NSString *aString; BOOL aBOOL; aFileManager = [NSFileManager defaultManager]; for (i = 0; i < [[oPanel filenames] count]; i++) { aString = [[oPanel filenames] objectAtIndex: i]; if ([aFileManager fileExistsAtPath: aString isDirectory: &aBOOL]) { if (aBOOL) { NSArray *aDirectoryContents; aDirectoryContents = [aFileManager directoryContentsAtPath: aString]; for (j = 0; j < [aDirectoryContents count]; j++) { [allMailboxes addObject: [NSString stringWithFormat: @"%@/%@", aString, [aDirectoryContents objectAtIndex: j]]]; } } else { [allMailboxes addObject: aString]; } } } [tableView reloadData]; } } // // // - (IBAction) doneClicked: (id) sender { if ([tableView numberOfSelectedRows] == 0) { NSBeep(); return; } switch ([matrix selectedRow]) { case 1: [self importFromMbox]; break; case 0: default: [self importFromEntourage]; } [self close]; } // // // - (IBAction) nextClicked: (id) sender { if ([[self window] contentView] == chooseTypeView) { [[self window] setContentView: explanationView]; } else if ([[self window] contentView] == explanationView) { [[self window] setContentView: chooseMailboxView]; } } // // // - (IBAction) previousClicked: (id) sender { if ([[self window] contentView] == explanationView) { [[self window] setContentView: chooseTypeView]; } else if ([[self window] contentView] == chooseMailboxView) { [[self window] setContentView: explanationView]; } } // // // - (IBAction) selectionInMatrixHasChanged: (id) sender { int row; row = [matrix selectedRow]; [allMailboxes removeAllObjects]; [tableView reloadData]; switch ( row ) { case 1: [chooseButton setTitle: _(@"Choose Directory...")]; break; case 0: default: [chooseButton setTitle: _(@"Choose File...")]; } [explanationLabel setStringValue: [allMessages objectAtIndex: row]]; } // // NSTablieView delegate / datasource methods // - (id) tableView: (NSTableView *) aTableView objectValueForTableColumn: (NSTableColumn *) aTableColumn row: (int) rowIndex { return [[allMailboxes objectAtIndex: rowIndex] lastPathComponent]; } - (int) numberOfRowsInTableView: (NSTableView *) aTableView { return [allMailboxes count]; } // // NSWindow delegate methods // - (void) windowWillClose: (NSNotification *) theNotification { DESTROY(singleInstance); } // // Class methods // + (id) singleInstance { if (!singleInstance) { singleInstance = [[MailboxImportController alloc] initWithWindowNibName: @"MailboxImport"]; } return singleInstance; } @end GNUMail/Bundles/Import/Views.h0100644000014600001460000000302510424672357016713 0ustar monotonemonotone/* ** Views.h ** ** Copyright (c) 2003-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_Views #define _GNUMail_H_Views #import @class LabelWidget; // // ChooseTypeView // @interface ChooseTypeView : NSView { @public NSMatrix *matrix; @private; id owner; } - (id) initWithOwner: (id) theOwner; - (void) layoutView; @end // // ExplanationView // @interface ExplanationView : NSView { @public NSButton *chooseButton; LabelWidget *explanationLabel; @private id owner; } - (id) initWithOwner: (id) theOwner; - (void) layoutView; @end // // ChooseMailboxView // @interface ChooseMailboxView : NSView { @public NSTableView *tableView; @private id owner; } - (id) initWithOwner: (id) theOwner; - (void) layoutView; @end #endif // _GNUMail_H_Views GNUMail/Bundles/Import/Views.m0100644000014600001460000002063510424672357016726 0ustar monotonemonotone/* ** Views.m ** ** Copyright (c) 2003-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "Views.h" #include "LabelWidget.h" const NSString *TableColumnIdentifier = @"mailboxes"; // // ChooseTypeView // @implementation ChooseTypeView - (id) initWithOwner: (id) theOwner { self = [super init]; owner = theOwner; return self; } - (void) dealloc { [super dealloc]; } - (void) layoutView { NSButton *cancel, *next; NSButtonCell *cell; LabelWidget *label; NSImageView *icon; [self setFrame: NSMakeRect(0,0,270,300)]; [self setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; icon = [[NSImageView alloc] initWithFrame: NSMakeRect(10,242,48,48)]; [icon setImageAlignment: NSImageAlignCenter]; [icon setImage: [NSImage imageNamed: @"GNUMail.tiff"]]; [icon setImageFrameStyle: NSImageFrameNone]; [icon setEditable: NO]; [self addSubview: icon]; RELEASE(icon); label = [LabelWidget labelWidgetWithFrame: NSMakeRect(70,240,190,20) label: _(@"Import Mailboxes")]; [label setFont: [NSFont boldSystemFontOfSize: 16]]; [self addSubview: label]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,180,250,35) label: _(@"Please choose the type of mailbox you\nwant to import:")]; [self addSubview: label]; cell = [[NSButtonCell alloc] init]; AUTORELEASE(cell); [cell setButtonType: NSRadioButton]; [cell setBordered: NO]; [cell setImagePosition: NSImageLeft]; matrix = [[NSMatrix alloc] initWithFrame:NSMakeRect(10,110,250,45) mode: NSRadioModeMatrix prototype: cell numberOfRows: 2 numberOfColumns: 1]; [matrix setTarget: owner]; [matrix setIntercellSpacing: NSMakeSize (0, 10)]; [matrix setAutosizesCells: NO]; [matrix setAllowsEmptySelection: NO]; cell = [matrix cellAtRow: 0 column: 0]; [cell setAction: @selector(selectionInMatrixHasChanged:)]; [cell setTitle: _(@"Microsoft Entourage X")]; cell = [matrix cellAtRow: 1 column: 0]; [cell setTitle: _(@"Standard UNIX mbox")]; [cell setAction: @selector(selectionInMatrixHasChanged:)]; [matrix sizeToFit]; [self addSubview: matrix]; cancel = [[NSButton alloc] initWithFrame: NSMakeRect(10,10,75,25)]; [cancel setTitle: _(@"Cancel")]; [cancel setTarget: owner]; [cancel setAction: @selector(close)]; [self addSubview: cancel]; RELEASE(cancel); next = [[NSButton alloc] initWithFrame: NSMakeRect(220,10,25,25)]; [next setTitle: @""]; [next setImagePosition: NSImageOnly]; [next setImage: [NSImage imageNamed: @"sort_right.tiff"]]; [next setTarget: owner]; [next setAction: @selector(nextClicked:)]; [self addSubview: next]; RELEASE(next); } @end // // ExplanationView // @implementation ExplanationView - (id) initWithOwner: (id) theOwner { self = [super init]; owner = theOwner; return self; } - (void) dealloc { RELEASE(explanationLabel); RELEASE(chooseButton); [super dealloc]; } - (void) layoutView { NSButton *cancel, *next, *previous; LabelWidget *label; NSImageView *icon; [self setFrame: NSMakeRect(0,0,270,300)]; [self setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; icon = [[NSImageView alloc] initWithFrame: NSMakeRect(10,242,48,48)]; [icon setImageAlignment: NSImageAlignCenter]; [icon setImage: [NSImage imageNamed: @"GNUMail.tiff"]]; [icon setImageFrameStyle: NSImageFrameNone]; [icon setEditable: NO]; [self addSubview: icon]; RELEASE(icon); label = [LabelWidget labelWidgetWithFrame: NSMakeRect(70,240,190,20) label: _(@"Import Mailboxes")]; [label setFont: [NSFont boldSystemFontOfSize: 16]]; [self addSubview: label]; explanationLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,80,250,150) label: @""]; [self addSubview: explanationLabel]; RETAIN(explanationLabel); chooseButton = [[NSButton alloc] initWithFrame: NSMakeRect(60,50,150,25)]; [chooseButton setTitle: _(@"Choose File...")]; [chooseButton setTarget: owner]; [chooseButton setAction: @selector(chooseClicked:)]; [self addSubview: chooseButton]; cancel = [[NSButton alloc] initWithFrame: NSMakeRect(10,10,75,25)]; [cancel setTitle: _(@"Cancel")]; [cancel setTarget: owner]; [cancel setAction: @selector(close)]; [self addSubview: cancel]; RELEASE(cancel); previous = [[NSButton alloc] initWithFrame: NSMakeRect(190,10,25,25)]; [previous setTitle: @""]; [previous setImagePosition: NSImageOnly]; [previous setImage: [NSImage imageNamed: @"sort_left.tiff"]]; [previous setTarget: owner]; [previous setAction: @selector(previousClicked:)]; [self addSubview: previous]; RELEASE(previous); next = [[NSButton alloc] initWithFrame: NSMakeRect(220,10,25,25)]; [next setTitle: @""]; [next setImagePosition: NSImageOnly]; [next setImage: [NSImage imageNamed: @"sort_right.tiff"]]; [next setTarget: owner]; [next setAction: @selector(nextClicked:)]; [self addSubview: next]; RELEASE(next); } @end // // ChooseMailboxView // @implementation ChooseMailboxView - (id) initWithOwner: (id) theOwner { self = [super init]; owner = theOwner; return self; } - (void) dealloc { RELEASE(tableView); [super dealloc]; } - (void) layoutView { NSButton *cancel, *done, *previous; NSTableColumn *tableColumn; NSScrollView *scrollView; LabelWidget *label; NSImageView *icon; [self setFrame: NSMakeRect(0,0,270,300)]; [self setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; icon = [[NSImageView alloc] initWithFrame: NSMakeRect(10,242,48,48)]; [icon setImageAlignment: NSImageAlignCenter]; [icon setImage: [NSImage imageNamed: @"GNUMail.tiff"]]; [icon setImageFrameStyle: NSImageFrameNone]; [icon setEditable: NO]; [self addSubview: icon]; RELEASE(icon); label = [LabelWidget labelWidgetWithFrame: NSMakeRect(70,240,190,20) label: _(@"Import Mailboxes")]; [label setFont: [NSFont boldSystemFontOfSize: 16]]; [self addSubview: label]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,200,250,20) label: _(@"Choose the mailboxes to import:")]; [self addSubview: label]; tableColumn = [[NSTableColumn alloc] initWithIdentifier: (id)TableColumnIdentifier]; AUTORELEASE(tableColumn); [tableColumn setEditable: YES]; [[tableColumn headerCell] setStringValue: _(@"Mailboxes")]; [tableColumn setWidth: 240]; tableView = [[NSTableView alloc] initWithFrame: NSMakeRect(5,50,260,140)]; [tableView setDrawsGrid:NO]; [tableView setAllowsColumnSelection: NO]; [tableView setAllowsColumnReordering: NO]; [tableView setAllowsEmptySelection: NO]; [tableView setAllowsMultipleSelection: YES]; [tableView addTableColumn: tableColumn]; [tableView setDataSource: owner]; [tableView setDelegate: owner]; scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect(5,50,260,140)]; [scrollView setBorderType: NSBezelBorder]; [scrollView setHasHorizontalScroller: NO]; [scrollView setHasVerticalScroller: YES]; [scrollView setDocumentView: tableView]; [self addSubview: scrollView]; RELEASE(scrollView); cancel = [[NSButton alloc] initWithFrame: NSMakeRect(10,10,75,25)]; [cancel setTitle: _(@"Cancel")]; [cancel setTarget: owner]; [cancel setAction: @selector(close)]; [self addSubview: cancel]; RELEASE(cancel); previous = [[NSButton alloc] initWithFrame: NSMakeRect(170,10,25,25)]; [previous setTitle: @""]; [previous setImagePosition: NSImageOnly]; [previous setImage: [NSImage imageNamed: @"sort_left.tiff"]]; [previous setTarget: owner]; [previous setAction: @selector(previousClicked:)]; [self addSubview: previous]; RELEASE(previous); done = [[NSButton alloc] initWithFrame: NSMakeRect(200,10,50,25)]; [done setTitle: _(@"Done")]; [done setTarget: owner]; [done setAction: @selector(doneClicked:)]; [self addSubview: done]; RELEASE(done); } @end GNUMail/Bundles/Import/English.lproj/0040755000014600001460000000000010424672357020166 5ustar monotonemonotoneGNUMail/Bundles/Import/English.lproj/MailboxImport.nib/0040755000014600001460000000000010424672357023523 5ustar monotonemonotoneGNUMail/Bundles/Import/English.lproj/MailboxImport.nib/classes.nib0100644000014600001460000000150010424672357025643 0ustar monotonemonotone{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { chooseClicked = id; doneClicked = id; nextClicked = id; previousClicked = id; selectionInMatrixHasChanged = id; }; CLASS = MailboxImportController; LANGUAGE = ObjC; OUTLETS = { chooseButton = NSButton; chooseMailboxView = id; chooseTypeView = id; explanationLabel = NSTextField; explanationView = id; matrix = NSMatrix; tableView = NSTableView; }; SUPERCLASS = NSWindowController; } ); IBVersion = 1; }GNUMail/Bundles/Import/English.lproj/MailboxImport.nib/info.nib0100644000014600001460000000153010424672357025144 0ustar monotonemonotone IBDocumentLocation 51 41 356 240 0 0 1024 746 IBEditorPositions 28 425 140 270 342 0 0 1024 746 42 45 357 270 342 0 0 1024 746 7 377 338 270 342 0 0 1024 746 IBFramework Version 291.0 IBLockedObjects 28 42 IBOpenObjects 7 28 5 42 IBSystem Version 6L60 GNUMail/Bundles/Import/English.lproj/MailboxImport.nib/keyedobjects.nib0100644000014600001460000002641010424672357026670 0ustar monotonemonotonebplist00Y$archiverX$versionX$objectsT$top_NSKeyedArchiverd (,-348<U\fnwx   '(*+,-034:?@AEFMPQRY[\`cdghlnorw'3PQc "6CDJMNQTbcfiw~w'PQc !"#$" "%&'.(E)''*((.'+,-./1hijk^lmnopqrstuvwxyz{|}~U$null  !"#$%&']NSFontManagerV$classYNSNextOid_NSVisibleWindowsVNSRoot\NSOidsValues_NSClassesValues]NSConnections]NSNamesValues]NSObjectsKeysZNSOidsKeys]NSClassesKeys[NSFramework[NSNamesKeys_NSObjectsValuescI-+ ,*  )*+[NSClassName_MailboxImportController./01Z$classnameX$classes^NSCustomObject02XNSObject_IBCocoaFramework 567ZNS.objects./9:\NSMutableSet9;2UNSSet 5=>0?@ABCDEFGHIJKLMNOPQRST Y[npz|̀πр VWXYZ[WNSLabel]NSDestinationXNSSourceXW ]^_)`abcde_NSNextResponderZNSSubviews[NSExtension[NSFrameSizeV UTS 5=ghijklm #9BJ ]opqrs[tuv[VNSCellWNSFrameYNSEnabled[NSSuperview _{{78, 243}, {157, 22}} yz{|}~h_NSBackgroundColorYNSSupport]NSControlView\NSCellFlags2[NSTextColor[NSCellFlagsZNSContents@_Import Mailboxes VNSSizeVNSNameXNSfFlags"A\LucidaGrande./VNSFont2 WNSColor]NSCatalogName[NSColorName\NSColorSpaceVSystem\controlColor WNSWhiteI0.666667./2 _controlTextColor B0./_NSTextFieldCello2\NSActionCell./[NSTextField2\%NSTextFieldYNSControlVNSView[NSResponder ]opqrs[v[_{{8, 185}, {225, 40}} yz{|}~i! _5Please choose the type of mailbox you want to import: "AP"] ypqr[v[[NSProtoCell[NSCellClassYNSNumRowsZNSCellSize_NSIntercellSpacingYNSNumCols]NSMatrixFlags^NSSelectedCellWNSCells_NSCellBackgroundColor43812D($&%7_{{9, 130}, {203, 38}} 5=ܢ݀. z{|~j_NSKeyEquivalent_NSAlternateContents_NSPeriodicDelay^NSButtonFlags2]NSButtonFlags_NSPeriodicInterval_NSAlternateImage-+HYHelvetica ././XNSButton.2 ]opqr[12v[DC_{{203, 20}, {27, 20}} z{|~56l789]NSNormalImageI@E );<=>^NSResourceNameHFGWNSImageZsort_right./BC_NSCustomResourceBD2_%NSCustomResource ]GopqrHI[vJKv[LZNSEditable[NSDragTypesRNMK 56NOL_NSFilenamesPboardType_{{17, 227}, {48, 58}} |STU~VWXWNSScaleWNSStyleWNSAlignQO );<=ZPWGNUMail./]^[NSImageCell]_o2\%NSImageCell./ab[NSImageViewa2Z{250, 300}./ef\NSCustomViewe2^chooseTypeView./ij_NSNibOutletConnectorik2^NSNibConnector VWXYmjZVmatrix VWXYpqm\s tuvwxyz{|}~\NSWindowViewYNSWTFlags]NSWindowTitleYNSMinSizeYNSMaxSize\NSWindowRect_NSWindowStyleMask_NSWindowBacking\NSScreenRect]NSWindowClass[NSViewClassal0x^jk]i_`_{{196, 305}, {250, 300}}XNSWindow TView ]^phbg 5=c ]opqrs~v~ed_{{109, 151}, {30, 17}} yz{|}~fTf00!_{{1, 9}, {250, 300}}./2_{{0, 0}, {1024, 746}}Z{250, 322}./_NSWindowTemplate2Vwindow VWXYqoXdelegate VWXyxq ]opqrvrts ]^_)`a_{{34, 47}, {184, 32}} z{|~#$%wvu VButton ^chooseClicked:./_NSNibControlConnectork2 VWXY{\chooseButton VWXY} ]opqrsv~_{{13, 88}, {220, 134}} yz{|}~̀_System Font Text_explanationLabel VWXY 5=ҧ׀ ]opqrsv yz{|}~܀ ]opqrv z{|~#$%」 ]opqrv_{{166, 20}, {27, 20}} z{|~578 );<=Ysort_left ]opqrv z{|~5789 ]GopqrHIvv 56 |STU~VWX _explanationView VWX ]opqrv ]^_)`a    Ҁ_{{138, 20}, {27, 20}} z{|~578 _previousClicked: VWX ]opqrv_{{167, 12}, {74, 32}} z{|~7$TDone \doneClicked: VWXY !̀ ]y#$%`&qr'()*+,-./01v,2345YNSTvFlags_NSIntercellSpacingHeight\NSHeaderView\NSCornerView[NSGridColor^NSTableColumns_NSIntercellSpacingWidth[NSRowHeightˀ@"@Ȁ"@@"A ]^789:pr;<=>?@!AB=!XNSvFlagsYNScvFlags]NSNextKeyViewYNSBGColorYNSDocView ހZ{202, 125} ]7E`rFGH!IG[NSTableView ]^789:pr;<=K?@/AL=/Y{202, 17}./OP_NSTableHeaderViewO2 ]7prR=HS= ]^UVW79p&rXYZ[\,]^H,_1`aG]NSContentView[NSVScrollerXNSsFlags\NSScrollAmts[NSHScroller_NSHeaderClipViewۀOA A AA_{{203, 0}, {16, 17}}./de]_NSCornerViewd2 5=gh jklEmnopqvrs!tuvv\NSIsEditableZNSDataCellWNSWidthZNSMinWidthZNSMaxWidth^NSIsResizeable\NSHeaderCellǀ"CG"BxG"Dz yz|}~xyz{|}ĀYMailboxes "A0 I0.333333 _headerTextColor./_NSTableHeaderCello2 yz{|}~!1@Q6./]NSTableColumn2 ʀYgridColor D0.5./EE2ZdataSource VWXY! VWXY!YtableView VWXY 5==Ӏ׀ ]opqrsvՀ yz{|}~ ]opqrsvـ_{{13, 194}, {225, 26}} yz{|}~_Choose the mailboxes to import: 5=,]aG1 5=!_{{1, 17}, {202, 125}} _controlBackgroundColor./ZNSClipView2 ]7pr=H==XNSActionXNSTargetYNSPercent"?(k_{{203, 17}, {15, 125}}\_doScroller:./ZNSScroller2 ]W7pr=H==΀">1_{{-100, -100}, {197, 15}} 5=ѡ/_{{1, 0}, {202, 17}}_{{16, 50}, {219, 143}}./\NSScrollView2 ]opqrv z{|~7$܀ ]GopqrHIvv 56 |STU~VWX_chooseMailboxView VWX׀_selectionInMatrixHasChanged: VWX݀ VWXl\nextClicked: VWXՁ VWXց VWXqԁ]performClose: VWXq VWXqk 5 jki=[hqm~hl!./  2 5[[[j[[jq!~[= 5ji[h!h=lkq 5      !"#$%&'()YNSButton1YNSMatrix1]NSTextField21\File's OwnerZNSButton11\NSButton1111UView1\NSTextField2[NSButton111]NSButtonCell1]NSScrollView1UView2VWindow 57 57 505[LAmEQBRkKF@h~h=OCGSTD?N!PIJjHlqiM 5253456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab1?9 G(>AHB8) 0/+= E%24,*CD' &;.@673F 5< :./^NSIBObjectData2]IB.objectdata#,5:LQ#bpw '),.0258:=@CFHKNWcegBDFHJLNPRTVXZ\^`bdgjmps !#<CKUacegh  %6=DMOTVXenuz  "$7DGPbkx    V g l n p   ( @ B D F H J L N S U W Y [ s |   $ 7 9 ; = ? D M O Q S k t  & _ e g |     $ . G I K M e  8m{}#.:<>@BKNPh  +4AJYby(5I[hv  (IKPgpw-/135M/13Lmo #%'\^`bkt!VXa!#;pr{ ,=?Az  IR\jt~#8:<u#&(MZemx.0BK_j(*4EGP_aceg"+6?BZoq)4Y[]b~ * , . 7 X Z \ ^ g j l !!!!'!*!;!>!L!]!`!q!t!}!!!!!"""W"`""""""""""""""""""""""""""""""# ##$#1#7#D#P#^#l#r#y###$$ $w$z$}$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%% % %%%%%%%% %"%$%&%(%*%,%.%0%2%4%6%8%:%<%>%@%B%D%F%H%J%L%N%P%R%T%V%X%Z%\%^%`%b%d%f%h%j%l%n%p%r%t%v%x%%%%%%GNUMail/ChangeLog0100644000014600001460000042042110613335063014342 0ustar monotonemonotone2007-04-23 Ludovic Marcotte * Fixed a small issue in the item validation code for the Mailboxes window / drawer. * Removed completed items from Documentation/TODO 2007-04-22 Ludovic Marcotte * Changed the BUNDLE_INSTALL_DIR from GNUSTEP_INSTALLATION_DIR to GNUSTEP_APPLICATION_SUPPORT for GNUstep make v2. Bundles are now placed in $(GNUSTEP_INSTALLATION_DOMAIN)/Library/ApplicationSupport/GNUMail If you want to install bundles such as the Emoticon or Face bundles in your user domain, simply use: make install GNUSTEP_INSTALLATION_DOMAIN=USER * Removed the capabilities of loading bundles from ".". Since we now have a GNUMail Framework, it's not an important nor very useful feature anymore. * Fixed the bug where we weren't reusing a local cache file for locally-cached mailbox. * The "Take Account Offline" menu item now flips to "Take Account Online" on a closed store. * We now remove all "pending tasks" just before reconnecting to an IMAP server. 2007-04-08 Ludovic Marcotte * Fixed the look of mailboxes icons holding other mailboxes or not wrt the expand arrows. * We now properly order front the MailWindow instance when selecting a local mailbox. * We now respect the user's preference of mailbox backend format (mbox / maildir) when initially launching the application. 2007-04-07 Ludovic Marcotte * Updates wrt changes in Pantomime. You MUST update Pantomime! * Now possible to set custom color for filters. * Updated the Mac OS X nib file in order to be able to set custom color for filters. 2007-03-25 Ludovic Marcotte * Removed 1.1.0 and 1.1.1 "compatibility". * Moved the "Hide deleted messages on startup", "Hide read messages on startup" and "Highlight URLs in message content" options from the Viewing bundle to the Advanced bundle. * Reworked the Viewing bundle so it's now possible to select the preferred view style. Only the first two are implemented right now. Also added iconds from Jesse Ross. The OS X nib NEEDS to be modified. * Updates on OS X wrt previous commits. * Lots of small cleanups to avoid compiler warnings. 2007-03-24 Ludovic Marcotte * Added Jesse Ross to the About panel. * Modified TaskManager and MailboxManagerController so that we really mark messages as deleted on the POP3 server once we are sure it has been successfully written on disk. * Started to rework the way we display task's title and subtitle. * Fixed the "occured" -> "occurred" typo everywhere. * We don't add the additionnal headers again in the message if they are already present. * We now correctly use the To: header values when live searching in the Drafts / Sent folders. 2007-03-11 Ludovic Marcotte * Added GNUMail+MenuValidation files in order to centralize all menu validation code. * Removed the "if possible" words when configuring APOP (for POP3). That means the auth will fail if APOP support isn't available. The OP might prefer that as otherwise, we would try to authenticate using unsecured mechanisms. * Added and impleted View > Hide/Show Toolbar and also View > Customize Toolbar... * Updated the Xcode project file and MainMenu.nib * We now transfer messages from local mailboxes to the local Trash mailbox (if any) when deleting messages and IIF we are hiding deleted messages. * We now dynamically add/remove Cc/Bcc fields on Mac OS X during message composition. 2007-03-05 Ludovic Marcotte * Fixed the "New email with content" service. 2007-03-04 Ludovic Marcotte * We no longer use -maximumAdvancement in MailWindowController.m * We no longer use NSCriticalRequest in ApplicationIconController.m 2007-02-26 Ludovic Marcotte * Reworked the code when our connections to the POP3, SMTP or IMAP server time out. * Minor bug fixes. 2007-02-05 Ludovic Marcotte * Message selection fixes. * Converted Localizable.string files back to UTF-16. * Small cleanups. * Tagged the source tree with revision fe29b44d13141dd3839c9285995a4f23933518a9 and tag name v1.2.0pre3. 2007-02-04 Ludovic Marcotte * We try to use the already supplied password when modifying the preferences of an IMAP account (when checking supported mechanisms or listing mailboxes) * Modified TaskManager: -stopTask: to make sure we don't use theTask past -cancelRequest. * We don't wrap the mailbox names in the mailboxes drawer on OS X. * We now draw tooltips over the console window messages. * Improved the look & feel of the console window on OS X. 2007-02-03 Ludovic Marcotte * Improved the welcome message. * Updated the Xcode project file. We now build a universal binary and we include the Welcome message in our copy phases. * If we click on the dock icon and no window is open on OS X, we display a new viewer window. * We now correctly update our app icon when the underlying store has been closed. 2007-01-31 Ludovic Marcotte * Updated all Localizable.string files to use UTF-8. Updates from Wolfgang Sourdeau. * Make sure we don't add the User-Agent headers more than once. 2007-01-30 Ludovic Marcotte * Added a patch from Matt Rice which improves editing in the mailboxes list. * Finally commited the nibs for unified titlebar/toolbar. * We use the identifier instead of the label when trying to identify the columns in ConsoleWindowController. * Menu updates on OS X. 2007-01-29 Ludovic Marcotte * Fix in the previous task handling code when loading message body (when multiple controllers were involved). * Added checks when verifying for supported SMTP auth mecanisms over a non-SSL socket. 2007-01-28 Ludovic Marcotte * Cleanups in the Task handling code and minor additions wrt changes in Pantomime. * Fixes to the Xcode project file. * Updated the menu on OS X to reflect previous changes in the Reply / Forward menus. * The MailWindow, EditWindow and MailViewWindow toolbars are now unified within the window. * We now copy correctly the ImageTextCell and ProgressIndicatorCell in -copyWithZone:. 2007-01-24 Ludovic Marcotte * Fixed the PGP bundle wrt changes in Pantomime. * Modified MimeTypeManager so it skips over commented lines in /etc/mime.types * Modified EditWindow.m to make To/Cc/Bcc text fields scrollable (wrt new changes in GNUstep GUI). 2007-01-21 Ludovic Marcotte * Modifications due to changes in Pantomime. * We now warn if a local mailbox couldn't be opened successfully. 2007-01-20 Ludovic Marcotte * We now correctly warn the user in case an IMAP mailbox compact failed. * Adjustments to the new mailbox caching code from Pantomime. * Fixed the behavior of the search field in the message list window. * Fixed a crashing wrt the search field. The previous selection could be 'expunged' and it would lead to a segfault. 2006-10-12 Ludovic Marcotte * Reorganized the Message menu. * Changes based on modifications made in Pantomime. * We now also consider parts w/o a Content-Type defined as text/plain parts, as stated in the RFC. 2006-10-06 Ludovic Marcotte * Fixed (NSFileWrapper *) cast in Utilities. * Removed the EnableContextMenus pref and we now always enable the context menus, whatever platforms we are on. * Many updates due to changes in Pantomime. The changes correspond to the new message decoding engine in Pantomime. GNUMail has now as new message displaying engine. If you use the PGP bundle, YOU NEED TO UPDATE IT. * It's now possible to forward a mail inline or as an attachment. 2006-09-25 Ludovic Marcotte * Tagged the source tree with revision eb88766b1fddde13a333c1c112263c0cb06199d0 and tag name v1.2.0pre2. 2006-09-25 Ludovic Marcotte * Improved some more the selection the newly renamed mailbox * Modified MailWindowController: -doFind: to make sure we don't go out of bounds. * Modified the code which saves attachments so that we avoid a file-locking issue under OS X with NSFileWrapper. * Added all new icons from Jesse Ross * Updated the Xcode project file * RELEASED v1.2.0pre2. 2006-09-24 Ludovic Marcotte * UI adjusments in the WelcomePanel * Updated the Welcome message * Updated the version number. * Improved the selection of the newly renamed mailbox. * Modified MailWindowController: -doFind: to make sure we don't go out of bounds. 2006-09-21 Ludovic Marcotte * Modified ApplicationIconController: number_of_unread_messages() to consider the store's path separator. 2006-09-19 Ludovic Marcotte * We now include the mailbox name of the mailbox that is about the be deleted in the alert panel. * Fixed bugs in the previous "fast find" patch. * Added a patch from Adam Fedor that implements IMAP filtering on headers. Disabled for now until all issues are resolved (even if commited). * Added a patch from Hubert Chan that fixed path inclusion when compiling bundles. 2006-09-16 Ludovic Marcotte * Again, small fix in TaskManager wrt changes in Pantomime. * We now warn properly the user if the Drafts, Sent or Trash mailbox isn't set for the account. * Fixed a CWService instances leak in TaskManager: -requestCancelled. * We now use User-Agent instead of X-Mailer. * Added missing List-Id item from the create filter menu in the MailWindow contextual menu. * Minor changes in TaskManager to reflect the changes in Pantomime on the POP3 code. * Applied a patch from Lorenz Msenlechner that add "fast find" capabilities in the messages list. 2006-09-02 Ludovic Marcotte * Small fix in TaskManager wrt recent changes in Pantomime. 2006-09-02 Ludovic Marcotte * Fixed a crashing issue when the message couldn't be sent using 'sendmail'. * Fixed a small issue in EditWindowController: -_recipientsFromString where we weren't considering unichars properly and stripping everything over 8 bits. Bug found and reported by Sergey Golovin 2006-06-11 Ludovic Marcotte * Code cleanups. * We now create the IMAP task when connecting to the server before we actually try to connect to it. * Applied patches from Lorenz Msenlechner : - we make the icon on the dock jump when new mails arrive - we fix the drawing issues in the Console - we fix the "Add to Address Book" feature on OS X and we correctly update the view. 2006-06-04 Ludovic Marcotte * Fixed the "Add to Address Book" code on OS X and fixed mem leaks in it. * Fixed the code when we add append or copy a message to a mailbox. We now display the correct mailbox name and we also stop the associated task. 2006-05-28 Ludovic Marcotte * Fixed a bug in the message display code for badly encoded MIME parts. * We now set the default INBOX when creating IMAP accounts. * Added a small cache in AddressBookController that expires every minute. This cache is used to speed-up the filtering code when a criteria is set to verify in the address book. The cache is NOT used right now to cache searches for address book groups. 2006-05-15 Ludovic Marcotte * Fixed some gcc 4.x warnings. * Removed the old Xcode project file and added the new one. * Updated some nibs. 2006-05-07 Ludovic Marcotte * We now suppord read-only mailboxes in the MailWindow. * Implemented "TLS if available" * We now create a task for the progress indicator when compacting an IMAP mailbox. * Fixed the issue where it wouldn't be possible to reopen an IMAP connection to a server on which we failed to authenticate at first. 2006-04-30 Ludovic Marcotte * Some MingW fixes. 2006-04-28 Ludovic Marcotte * Some cleanups. * We now handle correctly dropped POP3 connections. This happens relatively often for GMail accounts. 2006-04-25 Ludovic Marcotte * Fixed a crashing bug in the Face bundle when the X-Face can't be properly decoded. * Fixed the code in TaskManager: -folderPrefetchCompleted to get the right MailWindow instead of using the last one on top. 2006-04-12 Ludovic Marcotte * We no longer update the status label of the MailWindow:s if we are opening a mailbox. 2006-04-10 Ludovic Marcotte * We correctly stop the running task if we can't open the IMAP folder. * Updated the code wrt Pantomime changes. 2006-04-08 Ludovic Marcotte * Improved the internal tasks management code. It's now possible to stop more IMAP async operations. * Added a new Welcome panel that lets you choose between mbox or maildir as the local storage format when GNUMail is first launched. This code is not yet finished. 2006-03-31 Ludovic Marcotte * Added support for creating filters automatically based on the List-Id. See RFC2919 for details. * Improved the IMAP disconnection code and fixed a memory leak. 2006-03-28 Ludovic Marcotte * Replaced all calls from [NSApp abortModal] to [NSApp stopModalWithCode: NSRunAbortedResponse]; This fixes very annoying focus/menu validation issues under GNUstep. * We now properly handle TLS support for SMTP in the Account editing window and we also properly released the used objects. * Also fixed an issue with GMail accounts using SMTP. An other fix will soon be committed to Pantomime to fully fix the issue. The fix needs more testing. 2006-03-26 Ludovic Marcotte * Removed Bundles/Account/MailboxesView.{h,m} * Implemented a much cleaner approach for setting special mailboxes. The Mac OS X port WILL NEED to be updated. 2006-03-25 Ludovic Marcotte * Added initial TLS support for IMAP, POP3 and SMTP services. 2005-12-16 Ludovic Marcotte * Fixed the issue with the icon badge on OS X where it had always a value of 1 even if the unread count was 0. Pretty much all the investigation for this issue was done by Amelia A Lewis . 2005-12-15 Ludovic Marcotte * Added a patch from Adam Fedor to offer the possibility of showing the unread count in the app icon badge for INBOX mailboxes. 2005-11-17 Ludovic Marcotte * Fixed a crashing bug in the account selection code when forwarding a message. 2005-11-13 Ludovic Marcotte * Patch from Matt Rice to fix some app icon issues on GNUstep. 2005-09-26 Adam Fedor * EditWindowController.m (-controlTextDidEndEditing:aNotification): When expanding a group, don't add names without valid email addresses. -_recipientSplitEmail:fromArray: New method. -_recipientsFromString: Use it. * We now strip () in URLs * Modified TaskManager to prevent a potential crash. 2005-06-25 Ludovic Marcotte * Fixed a small issue in the Emoticon bundle. 2005-04-16 Ludovic Marcotte * Fixed the recipient type in GNUMail: -newMessageWithRecipient: Was PantomimeTo instead of PantomimeToRecipient. 2005-03-20 Ludovic Marcotte * It's now possible to take an IMAP connection "offline". No caching is done, we simply disconnect from the server. * Made sure all GNUMail categories have the GNUMail{class}Extensions name. * We now expand the tilde in the signature path. * Removed completed items from the TODO * Prevent a crash when clicking on "hidden" messages in thread thread arcs view. * Added create_48.tiff, delete_48.tiff, send_48.tiff and retrieve_48.tiff to the PB project file. The same needs to be done to the Xcode project file. 2005-03-13 Ludovic Marcotte * We can now stop IMAP tasks (when loading messages) * Cleanups (removed the prompt for disconnection when closing a MailWindow which was showing an IMAP mailbox) * Now possible to choose small/standard/large icons for the Mailboxes window / drawer from its context menu. * Removed the limitation wrt not being able to close the MailWindow:s when some activity (like receiving emails using POP3) was going on. 2005-03-06 Ludovic Marcotte * We now save/restore the drawer position on OS X. 2005-03-02 Ludovic Marcotte * Modified TaskManager to check for nil folders when trying to add the answered flag. 2005-02-27 Ludovic Marcotte * Modified MailboxManagerController: _accountsHaveChanged: to close any opened stores for which accounts have been disabled. 2005-02-24 Ludovic Marcotte * Small improvements on the way receiving UNIX tasks are handled. 2005-02-23 Francis Lachapelle * Updated the XCode project file; added NSBundle+Extensions.{h,m} 2005-02-23 Ludovic Marcotte * Added the necessary IMAP reconnection handlers. 2005-02-15 Ludovic Marcotte * Improved the cases when we couldn't connect to an IMAP server. After a few try, it would crash. 2005-02-06 Ludovic Marcotte * Removed the mailbox's type selection popup from the NewMailboxPanel classes. The default mailbox type can now be selected from the Advanced preferences panel. * Updated NewMailboxPanel.nib. 2005-02-05 Ludovic Marcotte * Updated the Russian translation. Patch from Konstantin B. Bukharov * Modified MessageViewWindowToolbar to show, by default, the Print toolbar item. 2005-01-30 Ludovic Marcotte * Modified GNUMail: -saveTextFromMessage: so that we don't use the string that went through bundles. 2005-01-23 Ludovic Marcotte * Reworked the copy/paste code in ExtendedTextView so whenever we paste an image in the textview, we a suitable name. * Some cleanups to avoid compiler warnings on OS X. * Added but heavily modified a patch from Frederik Harwath to be able to create filters based on the sender / subject. * Added the NSBundle+Extensions.{h,m} files. * Updated the OS X port wrt the last changes. The Xcode file NEEDS to be updated. 2005-01-22 Ludovic Marcotte * Modified TaskManager.m so that we respect the user's preferences wrt the time interval between mail checks by doing the right modulo. * Removed completed TODO items. * When saving text from a message, we now use the message's subject as the filename. * Small check-for-nil fix. 2005-01-16 Ludovic Marcotte * We don't use the same window frame if we already have a {Edit,Mail,MessageView} window on top. * We now warn before renaming special mailboxes. * Updated the PGP bundle so it is now possible to always automatically encryp and/or sign messages. * Updated PGPView.nib 2005-01-15 Ludovic Marcotte * Modified FindWindowController to catch the notification posted by Pantomime when we close a folder in order to do some cleanups. 2005-01-11 Ludovic Marcotte * Enabled window's frame autosave / restore for the Preferences and Account Editor windows. * Some cleanups in the PreferencesWindowController class. 2005-01-09 Ludovic Marcotte * We now use images in the Status / Flags column. GNUstep users WILL have to update -gui in order to get properly displayed images. * Added {previous, next} in thread using cmd-{left,right}. * General cleanups. 2005-01-08 Ludovic Marcotte * Added some dummy implementations of MailWindowController's methods in MessageViewController to avoid exceptions. * Defined the FolderExpireDate and MessageExpireDate constants and refactored some code to use them. * Implemented clicking support on the stop/restart icons in the Console window. * Updated the Console's code so it works under OS X. * We now correctly restore the app icon when quitting the application under OS X. * The Console window is now a utility panel on OS X. * Reduced the min size of the EditWindow under OS X. * Removed the horizontal scroller in the Messages tab from the Console window. * Did the same with the Console window on OS X. * We now use the small system font in the Messages's Console tab. 2005-01-06 Ludovic Marcotte * Modified a little bit the Console window. * Added more progress indicators (using the Console window). We now have them when loading messages (to view them or their rawsource) or when redirecting them. 2005-01-02 Ludovic Marcotte * Removed Icons/stop_{32,48}.tiff * New console window. * Added Icons/stop_32.tiff and Icons/restart_32.tiff. Contribution from Wolfgang Sourdeau * Updated the ConsoleWindow's nib. The progress indicator is still not displayed properly under OS X. This issue will soon be resolved. 2005-01-02 Ludovic Marcotte * Fixed the "Change Text Encoding" feature and integrated with the new async / progress indicator code. * Updated the About panel on GNUstep and the property list for the upcoming prerelease. * Also updated the About panel on OS X. * Modified EditWindowController: -windowDidBecomeMain: to also set the keyEquivalent of the "Deliver" menu item. * Modified ImageAndTextCell so it returns YES for isEditable/isSelectable. This allows mailbox renaming to work on OS X. * Modified EditWindowController: -setAccountName to always load the accounts and try to select one, even if we receive nil. * Set the tag to v1_2_0pre1 * Released 1.2.0pre1. 2005-01-01 Ludovic Marcotte * Modified ConsoleWindowController: -tableView: objectValueForTableColumn: row: so that when we SEND_SMTP / SAVE_ASYNC / LOAD_ASYNC, we use the total size if the current size is bigger than the former. * Added NSPasteboard+Extensions.{h,m}. * Replaced nil by @"" in Utilities for the keyEquivalent parameters of ExtendedMenuItem. * Finished the message Copy/Cut/Paste code and improved globally the code related to showing progress indicators during lengthy operations. * Updated Project Builder's project file to include NSPasteboard+Extensions.{h,m} * If we are under GNUstep and closing the last MailWindow, we deselect all items in the Mailboxes window. * Added MailboxManagerController: -folderForURLName: and refactored some code to use it. It's now possible to have a Trash folder on a different store and benefit from all the progress indicator stuff. * Removed MailboxManagerController: -folderNameExists: forStore: * Rewrote GNUMail: -applyManualFilter so it works correctly with the new async and progress indicator code. 2004-12-29 Ludovic Marcotte * Removed -storeWithURLNameIsOpen: from MailboxManagerController since we now always keep IMAP stores open. * Refactored some of the code in the MailboxManagerController class for the upcoming rewrite of the item "loading" code. * Reactivated the Copy/Cut/Paste code (adapted with the new async code in Pantomime) and remove the code related to the old GNUMail address book format. THIS CODE IS NOT FINISHED. It was commited due to the urgent fix described below. * Reworked the account selection code by extending ExtendedMenuItem (to include the account's key) and by removing all the fluff in Utilities. * Improved the message copying/cutting code. It should now work very well. 2004-12-28 Francis Lachapelle * Updated Xcode project file. 2004-12-27 Ludovic Marcotte * On OS X, when you drag mails near the window border and the drawer is hidden, the drawer is now automatically shown. 2004-12-26 Ludovic Marcotte * We always show an empty viewer window under OS X whenever we haven't had any mailboxes to open upon GNUMail's startup. 2004-12-26 Ludovic Marcotte * Added menu items for creating, deleting and renaming mailboxes on OS X and implemented the menu validation protocol to correctly enable/disable items. * We now show a progress indicator (in the Console window) when saving a big message to an IMAP mailbox (either after a message is being sent or when saving a message to the Drafts mailbox). * Fix and optimization in the Emoticon bundle. * We now start tasks immediately when the "Start" button is click from the Console window. * We now save text from messages using UTF-8 and we also replace attachments with a corresponding asterisk. * Small cosmetic change in the Personal tab from the Account editing window. * Fixed the issue where when showing the raw source of a message, after resizing the window the normal display would be shown. * Fixed the annoying bug that caused the text to "jump" when composing an email. Modified EditWindowController: -textDidChange: to keep the selected range and restore it when we are done. * We no longer show the "no new messages" panel when the POP3 authentication has failed. * Renamed "Inspector" to "Inspector..." 2004-12-24 Ludovic Marcotte * Removed LocalMailDelivery from the PB OS X project file. The same modification must be done for Xcode. 2004-12-23 Ludovic Marcotte * Remove LocalMailDelivery (moved the code to Pantomime). * Small fixes so things compile well under Solaris 2004-12-22 Ludovic Marcotte * Updated the Russian translation. Patch from Konstantin B. Bukharov * Updated the XCode project file to add the missing GNUMail_128.tiff file. Updated file from Kenny Grant 2004-12-19 Ludovic Marcotte * Fixed the issue wrt restoring messages from the drafts mailbox that had > 1 To recipients. Only the last one was "restored". * We now correctly thread messages after having received them in POP3, if we need to. 2004-12-13 Ludovic Marcotte * Fixed the viewing of the message's raw source in the MessageViewWindow when it's being loaded asynchronously. * "Rewrote" the Emoticon bundle so it's now way faster and corrects "weird" behaviors like ":pebkac". 2004-12-06 Ludovic Marcotte * Modified the MailboxManagerController class to use the returned number of messages imported (if any) when creating a mailbox. * Refactored the MailboxManagerCache class. * Refactored the PGP bundle so it works using async I/O in IMAP. 2004-12-01 Ludovic Marcotte * We don't add additional headers with no associated value. * Made the Import Mailboxes window a little bit bigger to ease translations. * Small modifications in the Import bundle wrt refactorings done in Pantomime. 2004-11-30 Ludovic Marcotte * Updated the PGP bundle wrt refactorings done in Pantomime. 2004-11-28 Ludovic Marcotte * Updated the sources wrt refactorings in Pantomime. * Rewrote NSAttributedString+Extensions: -format so it fixes the bug on OS X and greatly optimized this method. * Fixed a bug in the rewrite of -format... 2004-11-27 Ludovic Marcotte * Updated the sources wrt major refactorings in Pantomime. * Small OS X updates wrt the changes in Pantomime. 2004-11-22 Ludovic Marcotte * We now allow the user to set the scroller size from the Advanced Preferences panel. We also use this scroller size in the Mailboxes drawer. * Did some cleanups and refactorings to avoid compiler warnings. 2004-11-21 Ludovic Marcotte * Removed the Utilities (Private): -_lauchExternalProgram: method (that was thread based) by making use of the NSTaskDidTerminateNotification notification instead, which makes things way more efficient. * Reworked the "Messages" column in the mailboxes window / drawer. * Removed some NSLog() calls in Bundles/Clock. This bundle works fine under OS X but not under GNUstep due to some breakage in NSToolbar. * Added NSUserDefaults+Extensions: -integerForKey: default: and refactored the code to use this new method (which simplifies things a lot. * We now color quoted text by default. * We now append the signature at the end of a mail when replying to it (default behavior). * Adjusted the default width of the columns in the Mailboxes window and made it work nicely when the window is being resized. * Added a patch from Matt Rice to reflect recent changes in -back wrt Window Maker app icons. * Modified GNUMail: -applicationShouldTerminate: to match Cocoa's return code (instead of OpenStep's) * Optimized the refreshing of the table view after expunging deleted messages (in IMAP). * Lots of refactorings. 2004-11-17 Ludovic Marcotte * Updated docs/TODO from completed items. 2004-11-07 Ludovic Marcotte * Updated docs/README. * Corrected some bugs related to toolbar items validation and range exceptions when changing the account preferences. 2004-10-31 Ludovic Marcotte * We now respect the GSUseWindowmakerIconBackground default on GNUstep. 2004-10-30 Ludovic Marcotte * When we reply to a message, forward or redirect it, we scroll to (0,0). * Added a way to save and restore the unsent messages, not based on the Drafts folders at all. This is safe way of now losing any unsent messages in case something very bad happens during mail composition. * Added Russian translation from Dmitriy Kostiuk 2004-10-04 Ludovic Marcotte * Added an option in the advanced pref panel to be able to not automatically select the first unread message after a mailbox is opened. 2004-10-01 Ujwal S. Setlur * Updated Xcode project. 2004-09-29 Ludovic Marcotte * Don't use the background color in the filtering panel on selected rows. 2004-09-26 Ludovic Marcotte * Added an "Automatically thread messages" advanced pref and removed the unused ones. * We now use a sheet when asking the user to close the IMAP connection when closing a MailWindow on OS X. * Cleanups wrt changes in Pantomime. * Added a "Add Sender to Address Book" item in the MailWindow context menu. Work based on a patch sent by Bjorn Giesler months ago. 2004-09-25 Ludovic Marcotte * Removed PreferencesPanelController: -_adjustWindowSize. * Fixed some frame issues. * Modified AccountEditorWindowController to add checkboxes in the outline view (IMAP view) to subscribe / unsubscribe IMAP mailboxes. * OS X updates wrt previous commit. * Updated EditWindow.nib (fixed the frame issue of the textview). * Baseline fix for the label in MailWindow.m * Removed the ExtendedTableColumn and SwitchTableView classes as GNUstep now supports switch buttons in NSTableView:s. * Added an implementation of -copyWithZone: in FilteringViewController (for ExtendedButtonCell) to avoid a segfault on OS X. * Updated the nibs wrt to the previous changes. 2004-09-24 Ujwal S. Setlur * Updated Xcode project. 2004-09-20 Ludovic Marcotte * Fixed the issue wrt the "Normal Display" / "Raw Source" menu item. * Updated GNUMail.tiff 2004-09-18 Ludovic Marcotte * #ifdef'ed out the -cellSize and -width/-height methods in ThreadArcsCell.m on GNUstep. * Fixed the "jumping" issue in the Thread Arcs panel from the Mailbox Inspector window. * Added ApplicationIconController.{h,m}. * We no longer show the nb. of unread messages in the dock menu since we now show it in the app icon. * Removed some NSLog() calls. * Added GNUMail_128.tiff * Updated the OS X project file and the ApplicationIconController code so it works under OS X. * We now correctly initialize the app icon on OS X. 2004-09-13 Ludovic Marcotte * Added a "Save in Drafts" toolbar item in the message composition window. 2004-09-12 Ludovic Marcotte * Updated AboutPanel.m wrt previous commit. * Cleaned up the ExtendedTextView code. * Updated MailWindow.nib (set the delegate of the textview to the controller) * Fixed ThreadArcsCell on OS X. * Updated MailboxInspectorPanel.nib. * Updated EditWindow.nib 2004-09-11 Ujwal S. Setlur * Updated Xcode project. * Update AboutPanel.nib to reflect my new last name :-). * Resaved MainMenu.nib since it reported inconsistencies. 2004-09-11 Ludovic Marcotte * We now correctly open the mailboxes drawer on OS X, on startup, if needed. * We now use "mailbox" instead of "folder" in an information panel. * Updated the ComposeView.nib file. * Improved EditWindow.nib 2004-09-10 Ludovic Marcotte * Update MainMenu.nib. The "Save in Drafts" outlet was not connected and Find Text / Find Messages were inverted. * Added the "Select All Messages in Thread" menu item (and connected the outlet/action) in MainMenu.nib. Also defined the stub in the controller file (empty for now). * Increased the default width of the thread arcs cell. * Implemented the "Select All Messages in Thread" method in the controller. * Modified the code in the previous commit to not use NSIndexSet since it's not available on OS X 10.2. * We now set the answered flag to the message when the reply was really sent. * Added a patch from Andreas Heppel to fix the scrolling issues in the ThreadArcsCell:s. 2004-08-31 Ludovic Marcotte * Added a patch from Andreas Heppel to draw black dots for unread messages when using thread arcs. * Added a patch from Andreas Heppel to keep the scrolling position in thread arcs when changing messages. 2004-08-29 Ludovic Marcotte * Various small fixes on OS X. 2004-08-27 Ludovic Marcotte * We now force the user to specify a valid name and E-Mail address when creating or modifying an account. * When replying to mail, we now focus the text view instead of the To: field. * We now stop the animation if opening the mailbox failed. * Removed useless extra checks. 2004-08-25 Ludovic Marcotte * Fixed a small issue if all local mailboxes were removed and only one IMAP account was enabled. * Don't append an extra \n when not using message threading. 2004-08-22 Ludovic Marcotte * Modified NSAttributedString+Extensions to support localization of mail headers. * Corrected the "Save" menu on OS X. * Fixed the thread arcs cell support in the MessageViewWindowController class. * Temporarily disabled virtual folders support. * We now thread new messages in IMAP if the current folder is threaded. POP3 needs to be done. 2004-08-15 Ludovic Marcotte * Updated the OS X project file. * Updated AboutPanel.nib * Added MailboxInspectorPanel.nib * Updated ViewingView.nib and MainMenu.nib 2004-08-14 Ludovic Marcotte * Added a range check in MailWindowController: _messageStoreCompleted: when getting the rect of the row. 2004-08-12 Ludovic Marcotte * Some code cleanups. * We now listen to the notification posted by Pantomime (on STORE's completion) to correctly refresh the relevant tableview rows. 2004-08-11 Ludovic Marcotte * Added a patch from Andreas Heppel to draw narrow thread arcs. * Added a mailbox inspector. Currently, it only displays the normal thread arcs. The other panels are currently empty. * Replaced all occurences of "GNUMail.app" by "GNUMail". 2004-08-05 Ludovic Marcotte * Finally fixed the code to handle the saving of the splitview's divider in the MailWindow:s. 2004-08-01 Ludovic Marcotte * We now quote the personal part if there is a comma and if the user clicks on the To/Cc/Bcc buttons in the AddressBook's window. 2004-07-25 Ludovic Marcotte * Modified Utilities: +showMessageRawSource: target: so that if the message's encoding is 8bit or binary, we try to use its encoding. * Improved the FindWindow with a progress indicator and more stuff. The button outlets need to be connected in the OS X nib. 2004-07-24 Ludovic Marcotte * Minor improvements in ConsoleWindowController.m * Made the Console window's progress indicators more NeXTish under GNUstep. * We now re-estimate the message size when it's being sent using SMTP. 2004-07-18 Ludovic Marcotte * Added an auto-scroll feature when the last row is selected in the message list and new mails arrive. * Refactored A LOT of code. Cleaned up things and made some faster. * Before appending the signature at the beginning of the mail, be sure it got decoded properly. 2004-07-16 Ludovic Marcotte * Reverted the patch sent by Ovi It was a diff from an Xcode project, not PB. 2004-07-14 Ludovic Marcotte * Corrected a minor issue in MailboxManagerController. We were invoking -editingDraftMessage which no longer exists. 2004-07-12 Ludovic Marcotte * Modified MailWindowController: -deleteMessage: so it copies mails in the Trash mailbox if the it is an IMAP folder and messages marked as deleted are currently hidden. * Fixed the automatic STATUS'ing code in TaskManager so that if the MailWindow has no associated folder, we don't raise an exception. * Improved A LOT the code to deal with creating, renaming and deleting mailboxes. * We now show a spinning icon in the MailWindow when opening an IMAP mailbox. * Fixed a small index issue in MailboxWindowToolbar. * Fixed (all?) issues wrt restoring messages from the Drafts folder (when using IMAP) and also when redirecting messages. 2004-07-07 Ludovic Marcotte * Updated the OS X project file. Patch from Ovi . 2004-07-05 Ludovic Marcotte * Removed Icons/mime-flag.tiff * Updated the code wrt changes in Pantomime when opening mailboxes. * Improved the account 'guessing' code in Utilities: +accountNameForTransportMethodItemTitle: proposedName: * Added the initial code to hande fatal errors while trying to save mail in mailboxes. 2004-06-29 Ludovic Marcotte * Updated the icons (removed the TIFF junk PhotoShop added to those files). Patch from Frederico S. Munoz. * Slightly modified the toolbar code in EditWindowController. In order to work properly, the CVS version of GNUstep -gui is needed. * Modified the code creating Service subclasses to add additional runloop modes. 2004-06-21 Ludovic Marcotte * We now autoresize all columns to fit in the MailWindow's table view. * Cleaned up and refactored some code. * Modified TaskManager so we really do respect the 1 min tick interval. Before, it could get messed up if lots of concurrent tasks were running. 2004-06-09 Ludovic Marcotte * Small modification to Bundle/Accounts/GNUmakefile to not overwrite the ADDITIONAL_OBJCFLAGS. 2004-06-05 Ludovic Marcotte * Cleaned up the Filter class. * Removed some unused #include directives and refactored some code. * Fixed the bug where the popup selections were wrong in the filter editor's window after adding a new filter w/o changing any selection of popups. * Reactived the "Apply Manual Filters" feature. It's now fully async but it currently does NOT support transferring to the "Trash" folder ("Delete" action). 2004-06-04 Ludovic Marcotte * Cleaned up the Task class and some includes in various header / source files. 2004-06-02 Ludovic Marcotte * Removed completed items from docs/TODO 2004-06-01 Ludovic Marcotte * Removed an unused #include directive. * Disabled the cache for now in Utilities: +completePathForFolderNode: separator: * Modified TaskManager: -_tick to handle potential nil date for folder's expiration. 2004-05-31 Ludovic Marcotte * Modified MailWindowController: -startAnimation to add the timer in NSDefaultRunLoopMode AND NSEventTrackingRunLoopMode so we get the spinning GNUstep logo also when we are in the NSEventTrackingRunLoopMode. * Same thing with TaskManager: -run. * Lots of small changes wrt refactorings in Pantomime. 2004-05-29 Ludovic Marcotte * Implemented the "Stop" functionality in the Console window on OS X (in the tableview). * Modified MailWindowController to set max widths for the drawer's column. This issue is really annoying me and that's a temporary solution. * Added an alpha channel to GNUMail_big.tiff and changed the white bg color to a transparent bg. 2004-05-24 Ludovic Marcotte * Modified the image resizing code to respect the insets of the textview. * Updates wrt previous commits in Pantomime. 2004-05-23 Ludovic Marcotte * Updates wrt previous commits in Pantomime. 2004-05-18 Ludovic Marcotte * Modified MailWindowController: -_restoreImage to use the new Pantomime's -isSSL method from the TCPConnection class. 2004-05-11 Ludovic Marcotte * Updated the OS X project file and removed the unused navigation view in MailWindow.nib and MessageViewWindow.nib. 2004-05-08 Ludovic Marcotte * Fixed a bug in the DnD code if we were hiding deleted or read messages. * Fixed a bug in the copy/move messages code (code being used from the context menu). * Added NavigationToolbarItem and heavily refactored MailWindowToolbar and MessageViewWindowToolbar to make use of this new class. * Modified the loading of accessory views in MailWindowController and modified the Clock bundle so it displays in the toolbar. It does NOT displays right now under GNUstep likely due to a bug in its NSToolbar implementation. 2004-05-04 Ludovic Marcotte * Fixed bugs in the PGP bundle on GNUstep wrt the NSToolbar changes. * Modified TaskManager: -folderPrefetchCompleted: to clsoe the connection to the POP3 server when no message is on the server. 2004-05-03 Ludovic Marcotte * Updates wrt refactorings done in Pantomime. * Added a patch from Wolfgang Sourdeau that adds -acceptableDragTypes in ExtendedTextView so DnD to the message composition window works again under GNUstep. * We now automatically open all enabled IMAP accounts when the application starts. * Modified EditWindow{Controller} so it also uses a NSToolbar under GNUstep. * Same thing for MailWindow{Controller}, MessageViewWindow{Controller} and brought back MailboxManagerToolbar.{h,m} for MailboxManager{Controller}. * Added MailboxManagerController: -updateOutlineViewForFolder: store: username: in order to refresh only the outline view's item that corresponds to a Store/Folder. This should speeds up A LOT some things in GNUMail (like STATUS's mailboxes in IMAP and displaying messages). * Removed the expand/collapse stuff from ExtendedWindow. * Added Arabic translation (fixed some bugs in it and converted the file from UTF-8 to UTF-16). The translation was done by Ossama Khayat . * Removed all the old IMAP disconnection code. * Removed lots of unnecessary calls to NSTableView: -setNeedsDisplay: in MailWindowController. * Modified TaskManager so we now ensure that messages in POP3 were correctly saved on disk before deleting them on the server (all of this is wrt filters). 2004-04-23 Ludovic Marcotte * Applied a small fix to MailboxManagerController: -open to use the right folder separator when using IMAP. * Updated the PGP bundle wrt the refactorings in Pantomime. 2004-04-21 Ludovic Marcotte * Modified the calls from +charsetFromString to -charset to reflect the changes done in Pantomime last night. * Disabled for now what we did in GNUMail: -applyManualFilter:, -copy:, -cut: and -paste: 2004-04-20 Ludovic Marcotte * Minor updates wrt refactorings in Pantomime. 2004-04-18 Ludovic Marcotte * Minor updates wrt small changes in Pantomime. * Modified MailboxManagerController: -transferMessageFromRawSource: ... to call -parse on a _local_ folder in order to initialize all ivars correctly in LocalFolder. 2004-04-16 Ludovic Marcotte * Simplified the code in ExtendedTableView: -dragImageForRows: event: dragImageOffset:. * Also simplified the ExtendedOutlineView class by also removing the code for type-ahead support since that won't be used anymore in MailWindowController (that class, for message threading). * Simple check added in ConsoleWindowController: -updateToggle. A small bug seems to have been added to NSTableView (GNUstep) recently. This extra check is harmless and "fixes" any potential issues. 2004-04-15 Ludovic Marcotte * Refactorings in the Accounts Preference Panel wrt the SSL changes in Pantomime. * Removed some dead code in MailboxManagerController. 2004-04-14 Ludovic Marcotte * Refactorings due to changes in Pantomime's way of handling SSL connections. 2004-04-13 Ludovic Marcotte * We now correctly save the colors on OS X in RGB. Bug reported (and small fix provided) by Uli Kusterer . 2004-04-10 Ludovic Marcotte * Changed MailWindowController/MessageViewWindowController to redisplay the selected message after the window has been resized. Removed the old notification based on the MailHeaderCell (that was _not_ resizing the images in a mail, not it does). 2004-04-09 Ludovic Marcotte * Some more cleanups. Many optimizations after profiling GNUMail. For example, a small cache was added in FolderNode (-path/-setPath) to avoid recalculating the full path in Utilities: -completePathForFolderNode: separator: all the time (was eating ~30% of all CPU for _GNUMail_ alone). * Updated all .cvsignore files. 2004-04-08 Ludovic Marcotte * Updated the OS X port, finally! 2004-04-02 Ludovic Marcotte * Fixed a typo in GNUMail.m. Reported by Jim Tittsler . 2004-04-01 Ludovic Marcotte * Fixed a small issue in previous commit. 2004-03-31 Ludovic Marcotte * Modified GNUMail: -loadBundles to remove any potential duplicate paths in allPaths. Bug reported by Frederik Harwath and work based on his submitted patch. 2004-03-29 Ludovic Marcotte * Use -scrollPoint: instead of -scrollRangeToVisible: so it works the same way on OS X and GNUstep (since OS X shows the indent, but GNUstep doesn't). * Updated German translation. Patch from Frederik Harwath . * Removed most of the NSOutlineView code from MailWindowController and modified the sources to reflect that change. * Fixed a tiny mem leak in Utilities: +completePathForFolderNode: separator: 2004-03-26 Ludovic Marcotte * Reduced the minimum size of the Mailboxes window under GNUstep. * Removed some completed TODO items. 2004-03-25 Ludovic Marcotte * Modified the code wrt the changes made in Pantomime. 2004-03-24 Ludovic Marcotte * Renabled the support for saving the column's width in MailWindowController. A new user default has been created for it and the old one is automatically removed when starting up the application. * Modified the code wrt the changes made in Pantomime. 2004-03-23 Ludovic Marcotte * Changes wrt cleanups done in Pantomime. 2004-03-21 Ludovic Marcotte * Optimized MailHeaderCell by removed some code. Added NSAttributedString+Extensions: -sizeInRect with a dummy implementation. A full implementation will be later used in the MailHeaderCell drawing code. Also fixed a small bug in the latter so we don't draw over the bundles (Face, for example). * We no longer allow forwarding/reply/redirecting messages if the content isn't loaded. * Small changes wrt the cleanups in Pantomime. YOU MUST UPDATE PANTOMIME. 2004-03-19 Ludovic Marcotte * Did some cleanups in the ExtendedMenuItem class. * Renamed ExtendedAttachmentCell to ExtendedTextAttachmentCell to be more standard and cleanup the code. * Cleaned up the main GNUmakefile. * Combined the "Save Attachment" and "Save Text from Message" menu / items to improve the usability. * Refactored A LOT the message displaying code. Moved everything from Utilities to NSAttributedString+Extensions. Also created NSColor+Extensions so things are well separated and organized now. * Moved the URL highlighting and activation code from Utilities to NSAttributedString+Extensions. 2004-03-18 Ludovic Marcotte * Removed TODO #111 as it has been fixed in a recent commit. * Removed the table columns selection from the Viewing Preferences panel and moved everything to the View->Columns menu. The OS X port (the MainMenu.nib file) hasn't yet been updated and the columns size preferences WILL NOT be restored. That will soon be reactivated. * Added a fix in MailWindowController: -clickedOnDataView: so it works well if the Status column has moved from it's initial position. * Moved Utilities: +appendAddress: toTextField: to EditWindowController (Private). * Improved the code (and the resulting usability) of Utilities: +showMessageRawSource: target: * Removed MailWindowController: -_initializeFonts and moved the ivars and caching stuff to NSFont+Extensions. 2004-03-16 Ludovic Marcotte * Added a Turkish translation made by Ismail Aslan . Patch sent by Gurkan Sengun . * Updated the code to enforce secure mode on files after writing them on disk. 2004-03-15 Ludovic Marcotte * Enhanced the usability of the message threading activation / deactivation. More work needs to be done especially wrt efficiently handling the notification for MessageViewWindowController and when the notification comes from a folder different than the shown folder. * Refactored the MailHeaderCell class and optimized it a little bit (to avoid method calls). 2004-03-14 Ludovic Marcotte * Added NSBezierPath+Extensions and ThreadArcsCell. * Added an initial implementation of Thread Arcs. A LOT more to come today! * Bunch of fixes / refactorings wrt previous commits. * Added the new classes to the OS X project file. Thread Arcs do work under OS X bug clicking on the cell does nothing for now (investigating this issue...) 2004-03-13 Ludovic Marcotte * Updated flagged-flag.tiff - new image from Stefan Urbanek. 2004-03-12 Ludovic Marcotte * Modified MailWindowController: -clickedOnDataView: to refresh the view rect of the modified row (just to be safe...). 2004-03-11 Ludovic Marcotte * Modified TaskManager to reset the _counter ivar to 0 when checking mail for all accounts have been invoked. 2004-03-10 Ludovic Marcotte * Updated the OS X project file and added MailWindowController: -clickedOnDataView: in order to be able to set directly the flags instead of going through the menu. 2004-03-09 Ludovic Marcotte * Reworked the ExtendedCell class. * Added the possiblity to "flag" messages. Added Icons/flagged-flag.tiff and renamed "new-flag.tiff" to "recent-flag.tiff". This is initial support, more work needs to be done and the OS X port NEEDS to be updated. * Removed some unused code in GNUMail.{h,m}. The method -openInNewWindow was no longer being used after we switched to single-click support to open mailboxes. 2004-03-08 Ludovic Marcotte * Removed old, unused code in GNUMail+Extensions.m * Updated the OS X project file (added NSFont+Extensions and bumped up the OS X version number). * Updated the AboutPanel.nib file to match the one used under GNUstep (added missing contributors). 2004-03-07 Ludovic Marcotte * Added a small cache for fonts used when displaying messages. This speed up greatly the message displaying code. 2004-03-05 Ludovic Marcotte * Small change in MailWindowController wrt previous commits in Pantomime. * Added NSFont+Extensions.{h,m} and refactored some code. The OS X project file NEEDS to be modified to include those new files. * Removed completed items from docs/TODO 2004-03-04 Ludovic Marcotte * Reactivated the animation in the MailWindow:s when tasks are active. * Updated the code to use the notification sent by Pantomime when the raw source of a message in IMAP has been fully received. * Small optimization in MailWindowController. * Did some refactorings in MailWindowController. * Added back support for VirtualFolder:s (local mailboxes only, no search/expunge support for now) 2004-03-01 Ludovic Marcotte * Updated the code wrt recent changes in Pantomime. You MUST get the LATEST version of Pantomime. 2004-02-27 Ludovic Marcotte * We now listen to notifications when the message's data was fully prefetched instead of using the delegate method. This fixed LOTS of small annoyance in the new IMAP code. YOU MUST UPDATE PANTOMIME. 2004-02-24 Ludovic Marcotte * Fixed a crash bug in the AccountEditorWindowController if the password was wrong when connecting to the IMAP server for list mailboxes (for example). * Bumped up the version number to 1.2.0. * Fixed a bug in EditWindowController when accounts where changed during the composition of a message. The transport popup wasn't updated correctly. * Removed some unused code in MailWindowController.m 2004-02-23 Ludovic Marcotte * Removed the limitation of needing to close the IMAP account before modifying it. Still more work needs to be done especially wrt changing the port for example. Also fixed a memory leak and we now correctly close the IMAP connection if it was opened to subscribe/unsubscribe to mailboxes (for example). 2004-02-22 Ludovic Marcotte * Updated the code to bring back support for creating, deleting and renaming mailboxes. Work needs to be done in order to support well errors that could occur. * Refactored and cleaned up quite a good amount of code. * Updated NewMailboxPanel.nib * Updted ConsoleWindow.nib * Fixed a small issue in MailboxManagerController wrt reloading the folders list. * Small fix when displaying the account name in case the auth failed when sending a message using SMTP. 2004-02-20 Ludovic Marcotte * Disabled the delegate method in MailboxManagerController invoked when collapsing nodes. A better way to close the IMAPStore will have to be found (if we, of course want to offer such functionnality). * Modified TaskManager: -addTask to prevent adding tasks that are already in the runqueue (for POP3 and IMAP STATUS). * Modified MailWindowController: -updateDataView to NOT change the selection if a row is already selected. * We now correctly enable/disable the buttons in the Console window when a task terminates. 2004-02-17 Ludovic Marcotte * Applied a couple of patches from Andreas Heppel to fix some small issues and support submenus in the Copy To/Move To context menu. * Refactored some code to use the macro in order to add messages in the Console window and optimized things a little bit. * We now draw a progress indicator when STATUS'ing IMAP mailboxes. The progress indicator is based on the number of mailbox on which to do the STATUS operation. Also fixed a drawing bug in the console. 2004-02-16 Ludovic Marcotte * Fixed a small POP3 crash issue if we can't obtain the lock to the mailbox. * Modified MailWindowController: -_restoreImage to correctly restore the "lock" image when using IMAP over SSL. * Updated the code to fully work when connecting to services in background. 2004-02-15 Ludovic Marcotte * Disabled for now the code to automatically reopen the IMAP mailboxes that were open when the user did quit the application. * Small modifications over some constant changes in Pantomime. 2004-02-14 Ludovic Marcotte * Lots of improvements wrt the new Pantomime code. 2004-02-13 Ludovic Marcotte * Fixed the authentication problems wrt the new IMAP code. * Small optimizations. 2004-02-12 Ludovic Marcotte * More fixes wrt the new I/O code in Pantomime. 2004-02-11 Ludovic Marcotte * Same as yesterday :) * Removed BounceWindow.nib from the repository. * Updated MainMenu.nib * Updated ConsoleWindow.nib 2004-02-10 Ludovic Marcotte * Again, LOTS of improvements on top of the previous commit. 2004-02-09 Ludovic Marcotte * Removed some TODO entries. * Removed the spinning GNUstep logo in the Console window. The OS X nib needs to be modified to remove the progress indicator from that same window. * Enhanced greatly the Console window, still more to come. * Massively modified the code wrt IMAP. THE CODE WILL NOT FULLY WORK RIGHT NOW SO DON'T USE IT. * LOTS of improvements on top of the previous commit. 2004-02-08 Ludovic Marcotte * Removed BounceWindow* from the OS X project file. the nib NEEDS to be wiped out from the repository. * Removed GNUMail+TaskManager from the OS X project file. * Updated the OS X port wrt all changes made in the last weeks. It does NOT work right now, it just compiles. 2004-02-07 Ludovic Marcotte * Added a couple of minor fixes to the Console window. * Moved all the message redirection code from BounceWindowController to EditWindowController and removed all BounceWindow* files. * Small UI glitch fix in Console window * We don't set the window's document as edited in EditWindowController when we are redirecting a message. 2004-02-06 Ludovic Marcotte * Modified the Face bundle so it loads faces in background. That allows GNUMail to not block when loading faces from slow web servers. 2004-02-05 Ludovic Marcotte * We now draw the progress indicator in the console window the way it should look under GNUstep. * Added initial support for stopping activities from the Console window. * Minor drawing enhancements to the progress indicator drawing code in the Console window. * Fixed a couple of small issues. * Renamed "Bounce" to "Redirect" in the GNUstep menu. * Added an initial implementation of the progress indicator for POP3 activities... 2004-02-04 Ludovic Marcotte * Created a custom cell for the progress manager in the new Console window. It will have to be moved to its own file eventually. 2004-02-03 Ludovic Marcotte * Removed GNUMail+TaskManager.h and GNUMail+TaskManager.m Moved most of the code in TaskManager and started to clean up things. * We now correctly remove the POP3 tasks from the queue if the authentication failed. * Started to reimplement the Console window. * We now fire the tasks right away when they are added in the _tasks array and improved some more the Console window. * Fixed lots of compiler warnings. * Minor refactorings * Fixed the bouncing code. * Added an initial progress indicator for the SMTP code. 2004-02-02 Ludovic Marcotte * Updated the code wrt the CC/BCC/TO/... #defines changes in Pantomime. * Added a patch from Dirk Olmes so it's now possible to not automatically reopen the last folder that was open when the user quitted the app. * Updated the UI of ComposeView to be able to chose the default encoding when sending mails. The code to actually use that isn't there yet. Nothing on OS X has been to done either. * Massively updated the code wrt the changes in Pantomime for non-blocking I/O. Mainly modified GNUMail+TaskManager and TaskManager. Left a lot of old code right now in it to be sure we get the same feature set once I'm done. IT WILL NOT WORK RIGHT NOW UNDER OS X. 2004-01-19 Ludovic Marcotte * Simplified and optimized MailboxManagerController: -outlineView: acceptDrop: ... to support server-side copy/move operations for IMAP. * Small changes wrt the NSRegEx -> CWRegEx class renaming in Pantomime. 2004-01-18 Ludovic Marcotte * Added support for the image/pnm MIME type in MimeTypeManager: -_loadStandardMimeTypes. * Cleaned the previous code wrt images displaying since GNUstep has now native support for jpg, png, etc. If you no longer see images in your mails (inline), please update GNUstep. * Added support for renaming mailboxes directly in the mailboxes drawer / window. Cleaned up a lot of code. * Updated the OS X project file (and the code) so the last commits do work well under OS X. 2004-01-17 Ludovic Marcotte * Added a new class: ExtendedFileWrapper. This class overwrites some of the normal behavior of NSFileWrapper to automatically create zip/tar archives when initializing it using a directory. Modified the GNUMail code to use it. 2004-01-14 Ludovic Marcotte * Added a small check in MailWindowController: -tableView: didReceiveTyping: so we do nothing if the user has typed only whitespace characters. * Added a patch from Ken Ferry to add support for type-ahead when using message threading. * Modified docs/TODO to remove completed items. 2004-01-13 Ludovic Marcotte * Applied a patch from Ken Ferry to support type-ahead in the message list (when NOT using message threading). That could would need to be ultimately retouched to also support the ExtendedOutlineView. 2004-01-11 Ludovic Marcotte * More wort wrt context menus, especially the one in the message list. Also refactored some code in MailboxManagerController. * Updated the code wrt the flags changes in Pantomime. * We no longer change the selection on right-click if the number of selected rows > 1. * We no longer check for the EnableContextMenus default on OS X since we always show the context menus. * Updated PGPController.m wrt changes in Pantomime. 2004-01-05 Ludovic Marcotte * Added an option in the Advanced Preferences panel to be able to enable or not context menus under GNUstep. By default, they are disabled. * Updated the German translation. File provided by Hermann Gundel * Fixed an issue wrt the previous commit and added an initial context menu for the message list. Also cleaned up lots of code. 2004-01-04 Ludovic Marcotte * Removed the copy/move buttons in the Mailboxes window. 2004-01-03 Ludovic Marcotte * Lot of refactorings wrt Mac OS X compatibiliy and related to all the bugs I've fixed in the GNUstep's NSOutlineView class. With those modifications and my GNUstep patch, DnD is now supported from the MailWindow:s to the Mailboxes window under GNUstep, woo!!! More work is coming wrt to this soon... * Cleared a small FIXME in MailboxManagerController: -open: that would likely cause mailbox selection problems on OS X (and also under GNUstep, just more rarely). 2004-01-02 Ludovic Marcotte * Bumped up the version number to 1.1.3. * We no longer draw those silly "open/closed" folder icons in the Mailboxes drawer on OS X. Also removed those icons from the OS X project file. * We now use openFolder and openFolder_osx as the mailbox icon. * Removed closedFolder.tiff and mailboxes_16.tiff from the repository. * Updated the OS X project file wrt the previous commit. * Updated sort_down.tiff and sort_right.tiff and re-enabled the ExtendedOutlineView use in the GNUstep Mailboxes window. * Removed the Copy/Move Messages from the Mailboxes's drawer contextual menu since that doesn't make any more sense to use it. This feature will be reactivated soon, in a contextual menu in the MailWindow's dataView. * Removed ExtendedOutlineView: -isExpandable: since it's pretty much useless (and was only used on OS X). 2004-01-01 Ludovic Marcotte * Started the work on single-click support in the Mailboxes window / drawer. It also supports creating vfolder for local mailboxes. THIS STUFF IS RATHER EXPERIMENTAL. IT WORKS BUT USE IT AT YOUR OWN RISK! * We now automatically select the "current" mailbox in the Mailboxes drawer / window when its associated MailWindow becomes the key window. It doesn't work yet for VirtualFolder:s. 2003-12-30 Ludovic Marcotte * Reworked the message replying code to use the new code in Pantomime and to also offer a "Reply Simple" option that won't put any content in the replied message. * Added basic support for the new VirtualFolder class of Pantomime. You can now open a folder that holds mailboxes to see all the messages in those mailboxes in the same MailWindow. * Updated the OS X port wrt the previous changes. * Fixed a _very_ lame bug in the mbox importing code (paths related). * We now correctly "toggle" the Find window, the Console window, the About panel and the Address Book panel. Also cleaned some code wrt this (defined a macro). 2003-12-29 Ludovic Marcotte * We now use the row's color (from the filters) to in the MailHeaderCell. * Modified ConsoleWindowController so that we use the information from the sending key if there's one defined. * Removed unused variables. * Did some cleanups in EditWindowController. * Modified MailWindowController: -windowShouldClose: to use a sheet under OS X when warning the user a task is running. 2003-12-26 Ludovic Marcotte * Set the CVS tag to v1_1_2 * RELEASED VERSION 1.1.2 2003-12-25 Ludovic Marcotte * Updated the OS X version of the Filtering bundle. * Added Matt, Ken and Bjorn in the About panel. * Simplified and optimized the Filtering bundle initialization code under GNUstep. * Removed some NSLog() calls in the Import bundle * We don't save an "empty MailWindow" in the prefs 2003-12-23 Ludovic Marcotte * We now disable the "Use secure connection" buttons in the AccountEditorWindow if the SSL bundle is not installed under GNUstep (it's always installed with our dmg on the OS X version). * Updated the German translation. Work done by Hermann Gundel 2003-12-21 Ludovic Marcotte * Modified AdvancedViewController to no longer statically allocate everything. * Modified MailWindowController: -deleteMessage to use the new Folder's method (-setFlags: messages:) in order to accelerate IMAP messages deletion. 2003-12-09 Ludovic Marcotte * We no longer check all IMAP accounts but only opened ones. * We no longer remove the DELTED message flag when deleting from the keyboard. 2003-12-07 Ludovic Marcotte * Removed the "Open on startup" feature in the Mailboxes window / drawer. GNUMail.app will now automatically reopen the mailboxes that were opened when the app was closed. 2003-12-06 Ludovic Marcotte * Added an extra check in MailboxManagerController: -outlineView: acceptDrop: .. since the GNUstep's NSOutlineView code is broken wrt DnD. Savannah is still down so I can't fix the real bug :( 2003-11-29 Ludovic Marcotte * We now STATUS all IMAP folders for an opened IMAP connection in a separate thread when clicking on the "Get" button. We no longer only NOOP the IMAP store. 2003-11-27 Ujwal S. Sathyam * Added AddressBook framework to the Filtering target based on the previous change. * Fixed crash on quitting on OS X. Setting MailWindowController dataSource to nil in MailWindowController: -dealloc was triggering a updateStatusLabel (via tableViewSelectionDidiChange) which tried to contact the already dealloced MailboxManagerController instance. 2003-11-22 Ludovic Marcotte * Modified MailboxManagerController: -_reloadFoldersForIMAPStoreWithName: ... to also use -reloadItem: under GNUstep since that method has been fixed lately. * Reverted the change. -reloadItem is still plain broken. * Added a patch from Bjorn Giesler to enhance the filtering code to support address book groups. The OS X nib NEEDs to be modified. * Added Bjorn in the AboutPanel's list of contributors. * Fixed a warning in MailWindowController: -windowWillClose. 2003-11-18 Ujwal S. Sathyam * Added Constants.m to the OS X project file. 2003-11-09 Ludovic Marcotte * Added Constants.m and cleaned the header. That new file _must_ be added to the OS X project file. 2003-11-08 Ludovic Marcotte * Added Matt Ackeret and Ken Ferry to the About panel. * We now properly call -controlTextDidChange: in the -takeTo* methods (in EditWindowController) in order to correctly enable the Send button. * Updated ViewingView.nib * Updated AboutPanel.nib * Updated InfoPlist.strings 2003-11-07 Ujwal S. Sathyam * Fixed typo in AddressBookController.m 2003-11-07 Ludovic Marcotte * Fixed a compiler warning in GNUMail.m * Added patches from Bjorn Giesler to: - improve address completion - implement the "preferred label" in AddressBookPanel - convert the Mailboxes window and Console window to panels. This is a quick hack since the classes NEED to be renamed eventually. * We no longer force the ADScreenNameFirstNameFirst since we'll use the user's default in AddressManager. * Removed the "Mailbox" string the in Mailboxes's drawer for the contextual menu. * Renamed Id -> Number in the Viewing pref panel under GNUstep. The OS X nib needs to be modified. * We now save correctly the order of MailWindow's dataView columns. * Added a simple patch from David Ayers for key comparisons in AccountViewController.m. 2003-11-05 Francis Lachapelle * Improved AddressBookPanel.nib. 2003-10-30 Ludovic Marcotte * We now correctly synchronize our popups in the FilterEditorWindow. * We now correctly reload the table columns when changing the dataview type in MailWindowController. 2003-10-29 Francis Lachapelle * Added modal sheet to "Save message as text" action in GNUMail. * An address (to|cc|bcc) must be defined for the send button to be active in EditWindowController. * Fixed color space in ColorsViewController (Colors bundle). 2003-10-27 Francis Lachapelle * Improved behavior of modal sheet in EditWindowController when closing an unsaved message. 2003-10-26 Ludovic Marcotte * Removed two more observers in GNUMail: -applicationShouldTerminate: and reorganized all the calls in MailWindowController: -dealloc. * Defined ReloadMessageList in Constants.h so it's cleaner. 2003-10-20 Ludovic Marcotte * We no longer require the user to specify a To: recipient. * Also fixed a bug in the filtering code wrt trailing ">" when the criteria operation is "has suffix". Issues reported by Alistair Windsor . 2003-10-19 Ludovic Marcotte * Simplified the code a little bit in AddressBookController. * Simplified it some more and reactivated AddressBookController: -addressesWithSubstring: so it's now possible to filter incoming mails based on the recipients / Apple's Address Book (or GNUstep's implementation). This fixes TODO #33. * Renamed a local variable to not conflict with an ivar on OS X. * Added AddressBook_32.tiff and modified the AddressBookPanel.nib to use it. * Enhanced MailboxImport.nib. * Lots of very minor improvements wrt the Vera font. * Modified MailboxImportController: -dealloc to set the datasource of our table view to nil. * Did the same thing for the outline view shown in MailWindow's drawer under OS X. 2003-10-18 Ludovic Marcotte * Modified MailboxManagerController: -transfer: so that we use a local autorelease pool when transferring messages between two differnent stores in order to not overload the mail pool. * We now correctly close all open Store:s when quitting the application (so we don't leave open IMAP connections to servers that will eventually timeout). That code was in MailboxManagerController: -dealloc but it has been moved to GNUMail: -applicationShouldTerminate. * Added a "Quit Anyway" button when the user is quitting the application with running tasks. * Modified MailWindowController: -windowDidLoad to remove the broken window autosaving calls and rather add the same thing for our outline view inside our drawer. * Updated the OS X project file to remove deleted files from the CVS (wrt the old address book code). * Removed AddressBookWindow.nib and added AddressBookPanel.nib * Removed Address_add.tiff and Address_delete.tiff * Finally updated the address book code under OS X so it's now fully usable. Some things need to be implemented but most of the work has been done. * Modified the mailbox import bundle to close the window when the import is completed. * Modifed the mailbox import bundle loading code so it's simpler and should work on OS X. * Done the MailboxImport.nib (for OS X), used by the mailbox import bundle. * Cleaned some old code that was useless wrt bundle loading under OS X. 2003-10-17 Ludovic Marcotte * Modified EditWindowController: _openPanelDidEnd: returnCode: contextInfo: to verify if the file is readable before attempting to add it as an attachment. 2003-10-15 Ludovic Marcotte * Modified AddressBookController so that when you double-click on an address in the AddressBookPanel but no composion window is open, we open a new one. * Added an "open" button in the AddressBookPanel to start "Address Book" or "AddressManager" 2003-10-14 Ludovic Marcotte * Added GNUMail+Extensions: -update_111_to_112 to remove the "ADDRESSBOOK_TYPE". Also removed the -update_1099_to_110 and -removeDeprecatedDefaults methods. * Rewrote entirely the Address Book code to use only the Addresses.framework or Apple's implementation. Removed: Group.h, Group.m, Address.h, Address.m, AddressBook.h, AddressBook.m, AddressBookWindow.h, AddressBookWindow.m. Added: AddressBookPanel.h and AddressBookPanel.m. 2003-10-13 Ludovic Marcotte * Set the About panel on OS X as a floating panel. 2003-10-11 Ludovic Marcotte * Lots of minor UI fixes wrt Vera font (reported by Christopher Culver). 2003-10-10 Ludovic Marcotte * Updated the code wrt the refactorings made in Pantomime. * Modified the Account bundle to add IMAP SASL mechanisms support for authentication. * Updated some nibs wrt the previous commits made in the past days. * Updated the OS X project file to set the version number to 1.1.2. 2003-10-08 Ludovic Marcotte * Modified the code to no longer use TCPConnection's isConnected but rather use the Store's implementation. * Removed the "Show " for menu items / buttons for both Raw Source / Normal Display and All Headers / Filtered Headers. 2003-10-06 Ludovic Marcotte * Modified AutoCompletingTextField: -tableView: objectValue... to ensure the index lies inbound in the completion array. * Added an option in the "Receive" tab of the Account Editor Window to never check mail for a specified account. This is useful for "send only accounts". * Enhanced the UI for the POP3 "Receive options" tab. 2003-10-05 Ludovic Marcotte * Added the initial version of the "Import" bundle. This bundle is accessible from the "Mailbox > Import Mailboxes..." menu item and works only under GNUstep right now (the OS X nib will soon be done and also the bundle loading code will be adapted). * Bumped version number to 1.1.2 in the GNUstep plist. * Improved the message when the send operation failed so the user is aware that he can save the message in the Drafts folder using the Console window. 2003-09-02 Ludovic Marcotte * Fixed a small bug that happened when closing an IMAP store using the Mailboxes's window and having a sort order different then by #. 2003-09-30 Ludovic Marcotte * Added an advanced pref option to enable/disable continous spell checking during email composition (disabled by default). * Add the first parts of the code for IMAP multithreading. The STATUS operations are now done in the worker thread. * When closing the IMAP store, instead of closing the associated MailWindow (if any), we set its folder to nil. 2003-09-28 Ludovic Marcotte * Removed docs/NIBS from the OS X project file. * Minor improvements in the Account bundle. * Improvements when first starting GNUMail.app (first time user). * Minor improvements in the Fonts bundle for OS X. * Removed inexistant headers in the OS X project file. * Improved the message on OS X when the user removed all its mailboxes but left the preferences file around. * Set the CVS tag to v1_1_1 * RELEASED VERSION 1.1.1 2003-09-27 Ludovic Marcotte * Minor cleanups in AccountEditorWindowController.m 2003-09-26 Ludovic Marcotte * Added a warning when adding a new IMAP account showing all mailboxes (instead of only subscribed mailboxes). Suggestion from Matt Ackeret . * Removed the NSPopUpButtonCell category as the enabled / disabled cell bug was fixed in GNUstep. 2003-09-25 Ludovic Marcotte * Modified MailboxManagerController: -outlineView: willDisplayCell: ... to actually NOT show our Drafts/Inbox/Sent/Trash icon if the item has children to avoid UI glitches when using IMAP. * Removed docs/NIBS * Updated docs/README and docs/WHOIS 2003-09-23 Ludovic Marcotte * Modified MailWindowController: -windowDidBecomeKey: to correctly update the Thread / Unthread Messages menu item. * Modified AutoCompletingTextField: -tableViewSelectionDidChange: to ensure our selected row is valid. * Modified AutoCompletingTextField: -moveDown: / -moveUp: to use [_sharedDropDownTableView numberOfRows] instead of [_cachedCompletions count] to ensure that our selected row stays inbound. * Removed the "Charset" option in EditWindow/EditWindowController and changed the Message > Text Encodings code to be able to set the encoding of a message being composed. * Updated EditWindow.nib wrt the previous commit. 2003-09-22 Ludovic Marcotte * We now use the right separator when accepting drops in MailboxManagerController. * Set the "Find:" field to the findAll: target in FindWindow.m (GNUstep). 2003-09-21 Ludovic Marcotte * Fixed the "Enter Selection" feature. * Linked the "Enter Selection" menu item to the right outlet on OS X. * Modified Utilities (Private): +_attributedStringFromTextForPart: to use Pantomime's new html stripping method (instead of doing it again ourself in GNUMail.app). YOU MUST UPDATE PANTOMIME. * Fixed all (hopefully) issues wrt DnD of TIFF images directly in the message composition window. 2003-09-20 Ludovic Marcotte * Fixed all issues wrt the EditWindowToolbar under OS X (crashes after toolbar customization). * Reconnected the "Delete" menu item to the right action. * Fixed a mem leak wrt the previous commit for EditWindowToolbar. * Did the same fixes wrt toolbars customization in MailWindowController/Toolbar and BouceWindowController/Toolbar. 2003-09-19 Ludovic Marcotte * Removed some completed TODO items. * Modified GNUMail: -showMailboxManager: so that under GNUstep, if the Mailboxes window is shown and this method is invoked again (either by clicking on the "Mailboxes menu item / MailWindow's button), we hide it. * Modified MailboxManagerController: -delete: to fix the IMAP cache deleting code. It was removing the wrong caches (the cache files of all children of its parent mailbox!) * Modifed the width of the "Delete Address / Group" and "Modify" buttons in AddressBookWindow so they look better when using the Vera font. 2003-09-18 Ludovic Marcotte * Set a key-equivalent for the "Preferences..." menu item under GNUstep (same as OS X). * When closing the EditWindow, we correctly close the AutoCompletingTextField drop down (added an observer). 2003-09-17 Ludovic Marcotte * Modifed GNUMail: -applicationDidFinishLaunching so that we show the Mailboxes's window _before_ any MailWindow:s under GNUstep. * Modified GNUMail: -applicationShouldTerminate: to properly close the Mailboxes's window (under GNUstep) and the Console's window (OS X and GNUstep) before releasing the singletons. * Set the next key views (under GNUstep and partly under OS X for the Send and Receive views in the Account editor window. * Updated MailWindow.nib (to remove the matrix), the PB project file (Face/PGP targets) and generalized the Face.m code to use the same code under OS X and GNUstep. * Modified the Face bundle to scale its image proportionally to the max of the width or height of the original image in order to keep the aspect ratio. 2003-09-16 Ludovic Marcotte * Added Nicolas Roard's art work for the Face and PGP bundles. Added parts of his patch to enhance both bundles. * Majorly reworked the Face and PGP bundles. Removed the the "status bar" type of bundles. The OS X nib (MailWindow.nib) _needs_ to be modified as well as the OS X project file for the Face and PGP bundles. ***************************************************** * YOU MUST RECOMPILE AND RE-INSTALL THE FACE AND * * THE PGP BUNDLES AFTER UPDATING TO TODAY'S VERSION * ***************************************************** 2003-09-15 Ludovic Marcotte * Removed the tiff compression in all the images from the Emoticon bundle. It should now work well under OS X as well (untested). * Modified AutoCompletingTextFied: -complete: to be sure the table index we select is valid. * Added a patch from Stefan Urbanek to add more emoticons. * Added a patch to the Face bundle from Nicolas Roard to fix the drawing of X-Face under GNUstep. 2003-09-14 Ludovic Marcotte * Added a patch from Ken Ferry to entirely redo the address completion code in EditWindow. Added the AutoCompletingTextField class and removed the old AddressComboBox class. Cleaned some of the code so it works under GNUstep. Some bugs are still in there but we'll start from there and progress. The OS X project file/nib need to be modified. * Updated the OS X project file and EditWindow.nib to use the AutoCompletingTextField. * Modified 99% of the UI under GNUstep so that UI elements fit rather well when the Vera font is used. * Updated the OS X project file to add an "Emoticon" target (for our new bundle). Cocoa has problems with the tiff files and they will have to be fixed before the bundle fully work under OS X. 2003-09-13 Ludovic Marcotte * Added the "Emoticon" bundle to the repository. This bundle replaces emoticons with images in the text view displaying the current selected message. It serves as a good example on how to develop GNUMail.app bundles. 2003-09-12 Ludovic Marcotte * Modified the key equivalent of Mailbox > Mailboxes under OS X to be shift-M (since M is used for minimizing the window). * Updated AccountEditorWindow.nib wrt the new UI of the Send tab. * Modified MailWindowToolbar.m to set the label of the mailbox button to "Mailboxes" instead of "Mailbox". * Bumped up the version number to 1.1.1. * Same thing for the OS X project file. * Fixed invalide message count when receiving and transferring messages to a different folder than the one (if any) currently shown. * Modified MailboxManagerController: _openLocalFolderWithName: sender: so that if we double-click on an item that holds mailboxes (ie., a directory at the file system level), we expand/collapse that item. 2003-09-11 Ludovic Marcotte * Redone the UI (under GNUstep for now) in the "Send" tab of the Account editing window. 2003-09-07 Ludovic Marcotte * Modified MailboxManagerController and ExtendedOutlineView to add a contextual menu on OS X for managing mailboxes. The "Open on Startup" feature needs to be fixed. * Some fixes wrt the previous commit to avoid compiler warnings. * Fixed the "Open on Startup" feature. * Modified GNUMail: -applicationShouldTerminate: to reorder the deallocation calls in order to prevent a crash when quitting the app in the Console. 2003-09-06 Ujwal S. Sathyam * Handling encoded URLS in GetURLScriptCommand.m * On startup, maibox manager is opened after opening folders so that the NSDrawer can be opened. * toText is initialFirstResponder in EditWindow. 2003-09-06 Ludovic Marcotte * Inverted the key bindings/positions for the next/previous unread messags in MainMenu.nib. * We correctly handle exceptions being generated (only under GNUstep) when deleting the cache of an IMAP folder (unsubscribe) for which its name can't be converted in the default C-string encoding. * Added a "New Message" item to the dock menu on OS X. 2003-09-04 Ludovic Marcotte * Added a patch from Ken Ferry to no longer use the "NO_MESSAGE_RENDER_IN_MAIL_WINDOW" default. We rather don't render the message in the MailWindow's textview if its frame's height is 0. Modified docs/PREFERENCES to remove the reference to this default and added an -update_110_to_111 method to GNUMail+Extensions to remove that default. 2003-09-01 Ludovic Marcotte * Modified GNUMail: -restoreDraft: to NOT release the message at the end of the method. This prevents an ugly segfault. Bug reported by Ken Ferry * Modified MailboxManagerController wrt the new IMAP code for opening a folder in Pantomime. 2003-08-31 Ludovic Marcotte * Reactivated the DnD on OS X to the "Mailboxes drawer" and also the autosaving of columns's width. 2003-08-30 Ludovic Marcotte * Modified IMAPView (and the related code) to offer a new option for showing all mailboxes (default) or only the subscribed ones. The OS X nib _needs_ to be modified. * Modified the PGP bundle to add an "expiry" feature for passphrases. The OS X nib _needs_ to be modified. * Updated the nibs wrt the previous commit * Removed the MailboxManagerToolbar category (.h/.m files) * Removed MailboxManager.nib * Added initial implementation of NSDrawer. Right now, the Add/Delete/Rename/Move/Copy/Open at startup "buttons" are gone but will be replaced by a contextual menu soon. * Added a new option "New Viewer Window" in the File menu to actually be able to reopen an empty MailWindow when all of them are closed. 2003-08-26 Ludovic Marcotte * Added a patch from MJ Ray (with minor modifications) to support the List-Post header when replying to a mailing list. * Now also handle "List-Post: NO" by not prompting the "Reply to list" alert panel. 2003-08-25 Ludovic Marcotte * Modified AccountViewController.m to implement -hasChangesPending: and use it in -saveChanges so we don't fire up notifications that accounts have changed if they haven't. This speeds up the closing of the pref panel a lot. 2003-08-24 Ludovic Marcotte * Connected the "From" NSPopUpButton action in EditWindow.nib * Fixed the "status bar" size and position in MailWindow.nib so the "deleted" info is shown properly. * The "Repeat the message's subject (message threading)" is now activated by default. * Optimized MailWindowController: -updateStatusLabel and added the size of deleted messages. 2003-08-19 Ludovic Marcotte * Set the version number of the PGP bundle to 0.6.0 in PGPController.m * Set the CVS tag to v1_1_0 * RELEASED VERSION 1.1.0 2003-08-18 Ludovic Marcotte * Removed redundant code in EditWindowController: -windowDidLoad. * Fixed a bug in Utilities: stringValueOfURLNameFromFolderNode. If the IMAP account was being created, it wouldn't get the username and the servername from the defaults (since they weren't saved yet). Added those two parameters to the class method. * Modified AccountEditorWindow.nib to set the initial item for the transport method popup button to be "Mailer" instead of "SMTP". * Modified TaskManager: -_sendUsingSendmailForTask: so that if the path is invalid, we set the current task as non-running in order to not block the task queue. * We now also warn the user about the invalid path. * Fixed SendingView.nib. Set the next key view on the fields and connected the buttons to the right actions. 2003-08-17 Ludovic Marcotte * We now use UTF-8 as the string encoding when reading the program's output for a signature. 2003-08-17 Francis Lachapelle * Minor improvements to various nibs related to the preferences bundles. 2003-08-12 Ludovic Marcotte * Set the line wrap limit (for format=flowed) to 72 when not defined by the user (instead of 998). * Cleaned a couple of FIXME:s in MailWindowController.m 2003-08-10 Ludovic Marcotte * Modified StripeTableView.h so we don't include it under GNUstep and we guard it against multiple inclusion. * Modified MailHeaderCell: -init to first try to obtain the color for the cell from the MAILHEADERCELL_COLOR default key. 2003-08-10 Francis Lachapelle * Modified HeadersWindow.nib of the Viewing preference bundle so it uses the StripeTableView. 2003-08-09 Francis Lachapelle * Added class StripeViewTable which extends NSTableView and adds blue stripes to get the iTunes look. * Modified SwitchTableView class and the nibs related to the Mime and Sending preferences modules to use the new class. 2003-08-09 Ludovic Marcotte * Fixed the last Mime-Type -> MIME type typos in the MIME bundle, mainly on OS X. * Modified AccountEditorWindowController.m in order to not allow (by adding a delegate method) the editing of IMAPView's NSOutlineView. 2003-08-08 Ludovic Marcotte * Added a NSPopUpButton category in GNUMail.m (at the beginning of the file) to fix a lame bug in GNUstep -gui wrt NSPopUpButton and non-enabled items. This is a temporary fix to at least allow the users to use the application properly until the GNUstep bug is fixed. 2003-08-07 Ludovic Marcotte * Fixed the last two cases of IMAP disconnection handling code. Woo. 2003-08-05 Ludovic Marcotte * Removed the code for the NSTableView GNUMail category that was fixing a bug in -deselectAll. It should now be fixed in -gui (being for a long time IIRC). * Modified MailWindowController: -_reloadTableColumns: so we don't remove the outlineTableColumn from the NSOutlineView (when using message threading) since it causes a number of issues on OS X. 2003-08-04 Francis Lachapelle * Modified code of previous commit so that the modifier key under Mac OS X is the option/alt key instead of the control key which is reserved for contextual menus (not yet implemented in GNUMail). 2003-08-04 Ludovic Marcotte * Done TODO #60. You can now Control-double-click on a mailbox to open it in a separate window. * Added raw_32.tiff to the OS X project file. * Reduced the minimum width of MailWindow.nib's window. 2003-08-03 Ludovic Marcotte * Now handle two more cases of IMAP disconnection. Only two are left. 2003-08-01 Ludovic Marcotte * Now handle correctly IMAP disconnection when replying to a mail or forwarding a mail. * Done TODO #45 (when viewing a message in a MessageViewWindow and we're at the bottom of the message and hit the spacebar select the next message (same with previous message). * Done TODO #96 (now showing a "Raw Source" button in MessageViewWindow under GNUstep and OS X). The OS X project NEEDS to be modified to include raw_32.tiff. Enhancements will soon be commited wrt this feature (like changing the label depending on what is shown) * Improvements wrt the previous commit. 2003-07-31 Ludovic Marcotte * Added the "NO_MESSAGE_RENDER_IN_MAIL_WINDOW" default in the Advanced preference panel. * Added the "review unsent mails" when quitting the app with unsent Compose windows. 2003-07-30 Ludovic Marcotte * Fixed FilteringViewController.m wrt enabling or disabling filters using the checkboxes. It was causing problems under GNUstep. * Modified PreferencesWindowController: -savePreferences: to verify if changes are pending in each bundle before calling -saveChanges on them. * Rewrote the Advanced pref panel so it uses a SwitchTableView. It's now way easier to add "advanced" options to GNUMail.app. The OS X nib _needs_ to be updated. * Added new option in the Advanced pref panel to automatically expand the threads when switching in message threading mode. Modified MailWindowController to do that if the pref is set. * Updated AdvancedView.nib and its controller for OS X. 2003-07-29 Ludovic Marcotte * Fixed a minor bug in the previous commit. The EditWindow was never being closed on GNUstep when saving or not in the drafts folder. * Partially reformatted the code in MessageComposition. 2003-07-28 Francis Lachapelle * Modified EditWindowController: changed alert box when closing edited message so it is attached to the window. 2003-07-24 Ludovic Marcotte * Modified the code from the previous commit so it is also used under GNUstep. 2003-07-24 Francis Lachapelle * Modified MailHeaderCell: added category to NSBezierPath to easily draw rectangles with rounded corners; changed the background under Mac OS X. 2003-07-23 Ludovic Marcotte * Modified ExtendedTextView: -updateCursorForLinks so we don't pass an empty range as the selected range on GNUstep. The text system doesn't like that. We pass the normal range instead. * Modified Utilities: +loadTransportMethodsInPopUpButton to use -insertItemWithTitle: atIndex: instead of -addItemWithTitle: since the NSPopUpButton class has recently been borked again in GNUstep. 2003-07-22 Ludovic Marcotte * Slightly modified the code from the previous commit so it works under GNUstep. * Fixed very small mem leaks. 2003-07-21 Francis Lachapelle * Modified ExtendedTextView: -updateCursorForLinks so the cursor change to an hand when moving the mouse over a link. Not tested nor activated under GNUstep yet. 2003-07-15 Ludovic Marcotte * Modified EditWindowController: -comboBoxWillDismiss: to be sure we always select a valid index from the addressCompletionCandidates array. 2003-07-14 Ludovic Marcotte * Added left/right arrow support for collapsing/expanding threads when using message threading. Suggestion received from Matt Ackeret . 2003-07-13 Ludovic Marcotte * Added "auto scroll" support when approaching the first or last visible row in the MailWindow's dataView. 2003-07-10 Ludovic Marcotte * Updated the code to support the new mailboxes flags/name attributes (mostly used for IMAP mailboxes). 2003-07-07 Ludovic Marcotte * Removed the "Send to Address Book" menu item in MainMenu.nib. * Modified MailWindowController: -deleteMessage: so that we "reverse" the select if we are in reverse-sorting order. Suggestion from Ian Jones . 2003-07-06 Ludovic Marcotte * Modified GNUMail+TaskManager: -nextTask: to verify if the task is also running when immediately returning if we have a currentTask defined. This prevents blocking the task queue if we have a non-running task in it (ie., a stopped mail being sent using SMTP). * Modified Utilities: +showMessageRawSource: target: to remove any previous selection and also to scroll to the (0,0) range. * Modified AccountViewController to fix the sorting issues (in the tableView) and also to fix the way we get the accounts keys. The new way should work way better and fix all issues that were present before if one had the same username@popservername account defined. * Changed the minimum size of the "Mailbox" column in the MailboxManager window. 2003-07-04 Ludovic Marcotte * We now force some cleanups in TaskManager: -_receiveUsingPOP3ForTask: if an exception occurs when either opening or closing the connection with the POP3 folder. 2003-07-03 Ludovic Marcotte * Changed the button's labels when quitting the app with a Compose window opened. * Removed some unused code in GNUMail+TaskManager: -checkForNewMail: ... * Increased the length of a label in ComposeView.m 2003-07-02 Ludovic Marcotte * Modified GNUMail+TaskManager: -addTask to not assign the currentTask and modified -nextTask to immediately return if there's already a currentTask. This should fix the never ending POP3 tasks (and that could happen to other kind of tasks) and should help not getting the NSRecursiveLock exception. 2003-07-01 Ludovic Marcotte * Modified the TaskManager to use -performSelectorOnMainThread: ... instead of the NSConnection object to inform the NSApp's delegate that the task has completed. This should fix (it's a workaround) the GNUstep -base recursive lock bug. * Modified AccountEditorWindowController to verify (basic verification) if the informations provided in the Send tab are valid. * Linked the Next/Previous Unread actions in MainMenu.nib. * Changed "Mime-Type" for "MIME type" in the MIME bundle. The OS X nibs need to be updated. 2003-06-27 Ludovic Marcotte * Minor refactorings in GNUMail.m * Added -nextUnreadMessage and -previousUnreadMessage actions to GNUMail.h/.m. The MainMenu nib _needs_ to be updated. * Added some notes in GNUMail: -applicationWillFinishLaunching: about key modifiers. 2003-06-26 Ludovic Marcotte * Fixed a bug un my previous commit wrt the new method in NSString+Extensions. * Modified EditWindowController: -_replaceSignature to fix the nasty UI bug when the signature was at the beginning of the message. We now prevent attribute shifts by not inserting the attributed string at index 0. * Added an "Unthread" option. It is supposed to work but GNUstep's implementation of NSOutlineView seems to be broken (since it doesn't accept a nil dataSource - I'll verify on OS X later and fix it if it should accept one). * Modified MailWindowController to set the dataView row size also in -setDataViewType:. 2003-06-25 Francis Lachapelle * Updated MainMenu OS X nib. 2003-06-25 Ludovic Marcotte * Fixed all -sort* methods in GNUMail.m * Improved the title of the alert panel when closing the connection to an IMAP store. * Cleaned up the code to use the new Pantomime method: stringByReplacingOccurrencesOfString: withString: in NSString+Extensions. * Renamed RAW -> Raw (or raw) in the code. 2003-06-24 Francis Lachapelle * Renamed "RAW" to "Raw" in the View menu. * Mapped the backspace key to the Delete item of the Message menu (under OS X only). 2003-06-24 Ludovic Marcotte * Modified ExtendedTextView to use the same DnD code on both OS X and GNUstep since GWorkspace was fixed. * Modified most of the code to handle gracefully being disconnected from the IMAP server. * Modified a couple of nibs wrt previous commits. * Added an extra \n to separate the MailHeaderCell from the body of the message under OS X. * Modified BounceWindowController to use pathForResource: ... instead of pathForGNUstepResource: ... 2003-06-22 Ludovic Marcotte * Added Console information while sending messages using SMTP. * Cleaned up TaskManager by using cpp macros. 2003-06-21 Ludovic Marcotte * Added GNUMailTemporaryDirectory() to Utilities and modified the code to NOT use NSTemporaryDirectory() but rather that new function. 2003-06-19 Ludovic Marcotte * Modified Utilities: +folderNodeForPath: using: to add a separator: parameter. Modified all the code to use this new method and pass @"/" if the folder separator cannot be ".". Pass the IMAPStore's folderSeparator if it can (like in AccountEditorWindowController.m). * Removed the word "automatically" from MailboxesView.m wrt the Trash popup. The nib needs to be modified. * Removed the "Memory Panel..." menu item and added the support to show it when clicking on the GNUMail "logo" in the AboutPanel. Suggestion from Christopher Culver . * Modified SendView and ReceiveView to move the "remember password" checkbox over the password field and set action methods to enable/disable those fields depending on the button state (in the controller). The OS X nibs _need_ to be modified. * Added the new GNUMail.app menu hierarchy for GNUstep. Cleaned up some ivar names and removed unused code. * Set the key equivalent to the Cancel buttons to the escape key. * Modified NSAttributedString+TextEnriched: +_removeCommandsFromAttributedString: to correctly strips everything contained between 2003-06-18 Ludovic Marcotte * Modified Utilities to NOT prependa \n before displaying a message/rfc822 part. * Fixed a bug in the commit of yesterday to fix issue with cache updates for IMAP. It wasn't working if the folder separator was different from "/" (like when using Courier). * Fixed some "folder" > "mailbox" UI artifacts. In the _UI_ of GNUMail.app, we should always use the "mailbox" word (and NOT the "folder" word). In the code, we use "folder" to match Pantomime's definition of a folder. 2003-06-17 Ludovic Marcotte * Modified MailboxManagerController to fix all (hopefully) issues related to cache updates when using IMAP. This fixes TODO #28. * We now use one \n instead of two to separate the message body from the headers. Also fixed a typo. * Modified the PGP bundle (PGPController) to use Pantomime's new method in NSData+Extensions (-replaceCRLFWithLF). * Did the same thing byt for NSData+Extensions (-replaceLFWithCRLF). 2003-06-15 Ludovic Marcotte * Modified MailWindowController to implement IMAPFolder's delegate methods. 2003-06-14 Ludovic Marcotte * Set a minimum size for the Console's window under GNUstep. * Modified MailWindowController to clear up the text view when no message is selected. 2003-06-13 Ludovic Marcotte * Renamed "Outbox" to "Sent" in the UI and everywhere in the code. Also added a method to migrate to the new prefs (SENTFOLDERNAME instead of OUTBOXFOLDERNAME for all accounts) in GNUMail+Extensions. * Updated the nib connection wrt the previous commit. * Updated FontsView.nib to add the size "13" in all popup buttons. * Updated some nibs to replace "informations" by "information". 2003-06-12 Ludovic Marcotte * Added a patch from Dirk Olmes to correctly guess the account name when restoring a message from the Drafts folder. 2003-06-10 Ludovic Marcotte * Removed MailWindowController: -composeMessage and modified MailWindow to set the compose button target to the app's delegate. Did the same in MailWindowToolbar. * Applied a patch from Dirk Olmes to correctly guess the account name when composing a message (with minor modifications) 2003-06-09 Ludovic Marcotte * Fixed all issues wrt the RECENT/SEEN flags. You MUST update Pantomime. * Applied a patch from Dirk Olmes (with minor modifications) to use the IMAP's store information (if it can) to guess the account name when forwarding/replying to a message. 2003-06-08 Ludovic Marcotte * Fixed a bug in the commit of 2003-06-03. We now correctly handle a "nil" separator. * Renamed MailboxManagerController: -connectionWasLostToIMAPStore... to -connectionWasLost: (id) sender. This method will be used by the IMAPStore's object (since the MM is their delegate) to notify the MUA in case the server has dropped the connection. This method is NOT FINISHED. * Removed all the IMAP connection lost handling code and replaced it (temporarely) with #warning:s. 2003-06-06 Ludovic Marcotte * Fixed a bug in Utilities: +URLWithString: matchFolder:. We now use isKindOfClass since 1) GNUstep was unb0rken (call frame) and 2) -setLocalFolderCacheManager no longer exists. * Modified GNUMail+TaskManager to only NOOP the IMAP store. We no longer NOOP the IMAP folder. You MUST update Pantomime from CVS. 2003-06-05 Ludovic Marcotte * Fixed a small memory leak in the previous commit. * Improved the "Save in Drafts" alert panel buttons in EditWindowController. * Removed a dumb NSLog() 2003-06-04 Ludovic Marcotte * Updated the sources of GNUMail.app wrt the last Pantomime's commit (related to all cache managers used in the app). * Applied a patch from Christopher Culver to change "informations" to "information" everywhere. The nibs need to be updated. * Done TODO #112 - rewrote and optimized Utilities: +_quoteMessageContentFromAttributedString: * Added a new Colors pref panel icon, maybe by myself from a sshot :) 2003-06-03 Ludovic Marcotte * Modified MailboxManagerController: -outlineView: objectValueForTableColumn: byItem: so that we display the folder status information for _all_ IMAP folders. * Modified MailboxManagerController: _reloadFoldersForIMAPStoreWithName: username: account: to correctly replace the folder separator for all subscribed folders of the store we just obtained the list from with "/" in all folder names before storing the values in our folder status information cache (since it deals only with "/" as a separator). * Small improvement over the previous commit. We now don't show the folder message count if it's 0 _and_ if it's an IMAP folder. * Fixed the separtor issue in MailWindowController: -updateStatusLabel. * Done TODO #99 (Put GNUMail.app's services in a separate Service's submenu) 2003-06-02 Ludovic Marcotte * Added the size 13 in the Fonts panel. Suggestion from Christopher Culver . The OS X nib _needs_ to be updated. * We now correctly protect our shared ivar (mustStopTransfer) with a NSLock. * Cleared a FIXME in ExtendedTextView. "5" is NSDragOperationCopy|NSDragOperationGeneric. 2003-06-01 Ludovic Marcotte * Refactored the SMTP's sending code in TaskManager to use the new code in Pantomime to report code/messages received from the server in case of an error occurred. You MUST update Pantomime. 2003-05-31 Ludovic Marcotte * Make use of floor() instead of floorf() in EditWindowController so the code links under Solaris. * Modified the GNUmakefile so we link with libucb under Solaris. * Applied a patch from Dirk Olmes (with modifications) to add a "Deliver - D" menu item in the Message menu. * Updated MainMenu.nib wrt the previous commit. 2003-05-30 Ludovic Marcotte * Removed NSLog calls in EditWindowController: -_replaceSignature. * Removed TODO #3 (Correct the matrix autoresizing mask in MailWindow to prevent overlapping when resizing the window.). This can no longer happens since we set a reasonable minimum size to the MailWindow:s. 2003-05-27 Ujwal S. Sathyam * Added support to specify account name to scriptable MessageComposition class. * Fixed bug in "showing" message composition via AppleScript. 2003-05-26 Ludovic Marcotte * Added complete X-Face support in the Face bundle. This completes TODO #9. 2003-05-25 Ludovic Marcotte * Set a minimum size for EditWindow and MessageViewWindow under GNUstep. * Removed the "Hide/Show Status Bar" menu item in MainMenu.nib * Set the minimum size for MailWindow.nib, EditWindow.nib and MessageViewWindow.nib. This completes TODO #4. * Modified ExtendedCell to also draw the interior of the frame under OS X. 2003-05-24 Ludovic Marcotte * Modified TaskManager: -_messageFromExternalProgramUsingFilter: message: to write a message to the GNUMail.app Console (instead of using NSDebugLog) if something goes wrong when writing the raw source of the message to a temporary directory. * Removed the "Show/Hide Status Bar" option (and related code). * Cleaned the popup menu items in NewMailboxPanel. * Added Next/Previous Unread message scrolling using the Control-Up/Down key bindings. * Modified TaskManager (Private): _receiveUsingUNIXForTask: to move the -taskCompleted call at the end of the method. * Fixed all issues with the "Supported SMTP AUTH mechanisms" popup button. This fixes TODO #52. * Modified the TaskManager to use -performSelectorOnMainThread: ... when the authentication failed with a SMTP or POP3 server. * Did the same for runAlertPanel: ... 2003-05-23 Ludovic Marcotte * Set the right intercell spacing for tableviews that draw a different background color for some rows. 2003-05-16 Ludovic Marcotte * Fixed MailboxManagerController: -outlineView: shouldCollapseItem: to correctly get the MailWindow associated to the IMAPStore we are closing and not assume it's the last one on top. 2003-05-15 Ludovic Marcotte * Moved the [super drawInteriorWithFrame:... call in ExtendedCell before compositing the message's flag images. * Modified EditWindowController: to move the initializations of some ivars inside the -initWithWindowNibName: method. This prevent a segfault on Solaris (since we can't send messages to nil). 2003-05-12 Ludovic Marcotte * Modified most of the GNUMail+TaskManager/TaskManager code to use -performSelectorOnMainThread: ... instead of the NSConnection object - this makes things way faster. * Set a minimum size for the MailWindow on GNUstep * Modified the labels on the buttons for the alert panel used to confirm if the user wants to close the IMAP connection (when collapsing a node) to be more intuitive. * Modified MailboxManagerController: -saveMessageInDraftsFolderForController: to mark the window's document as non-edited just after saving the message in the Drafts folder. * Refactored some code in MailboxManagerController and GNUMail+TaskManager/TaskManager to remove some code. 2003-05-08 Ludovic Marcotte * Added an extra boundary check in Utilities: +_quoteMessageContentFromAttributedString: 2003-05-07 Ludovic Marcotte * Modified Utilities: +_guessAccountNameFromMessage: to first guess the complete address before guessing only for the domain part. * Modified MailboxManagerController: -transfer: to make server-side copy/move operations when moving or copying messages on the same IMAPStore. 2003-05-05 Ludovic Marcotte * Fixed a small bug in the previous commit. * Updated the TODO. LOOK AT IT!!! * Added a patch from Rob Burns to fix the strings/encodings in Localizable.strings files. 2003-05-02 Ludovic Marcotte * Modified MailboxManagerController: -_initializeIMAPStoreWithAccountName to correctly remove the wrong password from the cache if the auth failed. We now use GNUMail+TaskManager: -authenticationFailedForServer: ... to do so. * Permuted the Delete/Cancel buttton in the alert panel when deleting a mailbox. * Permuted the Compact/Cancel button in the alert panel when compacting a mailbox. 2003-05-01 Ludovic Marcotte * Added a new options in the Viewing panel. We now allow to do "nothing" (except displaying the message) when double-clicking on a message in MailWindow. * Updated ViewingView.nib for the previous commit 2003-04-30 Ludovic Marcotte * Modified MailWindowController: -{start/stop}Animation to return immediately when the toolbar customization sheet is shown. * Added MailWindowController: -toolbarDidRemoveItem (on OS X only) to correctly set our get ivar to nil if the button gets removed. 2003-04-28 Ludovic Marcotte * Modifed GNUMail: -deleteOrUndeleteMessage to set the right key equivalent value when changing the label. * Fixed the autoresizing mask of the sizeLabel in EditWindow.nib. * Added a new option in the Advanced pref panel: "Prompt before compacting a mailbox" (PROMPT_BEFORE_COMPACT) so it's possible to tell GNUMail.app to not ask the user to confirm the compact operation everything he/she executes it. * Updated AdvancedView.nib to reflect the changes in the previous commit. 2003-04-27 Ludovic Marcotte * Modified MailboxManagerController to hide the "Local" folder node if we have no local mailboxes. Same thing in Utilities (for the folder node popup buttons) * Fixed a bug in Utilities: +folderNodesFromFolders: separator: to be sure that the child doesn't exist before adding it to its parent. * Fixed a bug in PGPController: - _decryptPart: ... We no longer use a pipe when decrypting signed messages but rather read everything from a file like it's the case for encrypted messages. This prevents from filling up the pipe with big messages - thus blocking the whole GNUMail process. 2003-04-26 Ludovic Marcotte * Modified AccountEditorWindowController to ease the selection of the SMTP AUTH mechanism. * Set the initial first responder in NewMailboxPanel, set the next key views (and corrected the ones in PasswordPanel) and added the "Enter" key support under GNUstep. * Set the OS X's version number to 1.1.0. * Added GNUMail+Extensions: -removeTemporaryFiles to clean up all temporary files created by GNUMail during its execution. * Permuted the releases of the AddressBook/AddressBookController singletons in applicationShouldTerminate to prevent a segfault on exit on OS X. * Refactored TextEnrichedConsumer - made a NSAttributedString category instead of its own class. * Modified EditWindowController: -_updateViewWithMessage: ... to set the attributed string to the text storage instead of adding it. This prevents from having a signature when restoring a message from the drafts folder. * Modified the OS X project file for the changes in the previous commit * Set the activeButton to NSOnState in FilterEditorWindowController: -setFilter: when adding a new filter. * Improvements over the first commit 2003-04-24 Ludovic Marcotte * Modified MailWindowController: -newMessagesWereReceived to set the app icon when we receive new mails using IMAP. That will be changed later when we finish the IMAP rewrite. * Modified AccountEditorWindowController: -sendSupportedMechanismsButtonClicked to use SSL if it needs to! 2003-04-23 Ludovic Marcotte * Modified AccountEditorWindow.nib to cleanup some things in it. * Modified Utilities: +folderNodePopUpItemForURLNameAsString: ... to add an "account" parameter since we can't guess an account if we are currently adding it or if we changed its type (from POP3 to IMAP). Also fixed the code in AccountEditorWindowController to correctly behaves when adding a new IMAP account. * Set the version number to 1.1.0 under GNUstep (GNUMailInfo.plist) * Modified AddressBook to define +singleInstance like all other singletons and modified all the code to use that. * Added the AddressBook class to ScriptingInfo.plist 2003-04-21 Ludovic Marcotte * Modified FilterManager: -_messageFromExternalProgramUsingFilter: message: to gradually read the data from the pipe - it seems to cause problems under OS X if we do not do so. * Set the CVS tag to v1_1_0pre2 * RELEASED VERSION 1.1.0pre2 2003-04-20 Ujwal S. Sathyam * Reduced the indentation width in the MailboxManager view on OS X. 2003-04-20 Ludovic Marcotte * Modified MailboxManagerController: -transfer: to properly copy the Message's flags when moving mails to an other mailbox. * We now offer a "Refresh" button in the Mailboxes panel to immediately refresh the list of subscribed mailboxes and also subscribed (if needed) the the INBOX folder (when using IMAP). The nib needs to be updated under OS X. * Updated the OS X nib. * Fixed FilterHeaderEditorWindow.nib * Modified FilterEditorWindowController: -okClicked: to trim the trailing whitespaces of the external program text field. 2003-04-18 Ludovic Marcotte * We are now sure that we properly send the flags to the IMAP server when we have to. Also fixed two small memory leaks. * Modified Task/EditWindowController/BounceWindowController/Utilities so that we now consider properly the selection of the transport method when sending a mail. * Updated the README * Enhanced IMAPView under GNUstep * We now show the "right" label for the Inbox folder (when using IMAP) * Updated the OS X files wrt the previous commit. 2003-04-17 Ludovic Marcotte * We don't include the trailing > in URL:s highlighting. * We beep if the user has specified an empty find string and clicked on the Find All button. * Modified MailWindow.nib to use Apple's NSProgressIndicator. It's now way nicer. * Did the same thing for ConsoleWindow. 2003-04-14 Ludovic Marcotte * Added the "Enter" key support in the Password Panel. (TODO #270) 2003-04-13 Ludovic Marcotte * Fixed a typo in the previous commit. * Set the next key views under GNUstep for all Account's window tab views. 2003-04-12 Ujwal S. Sathyam * Implemented TODO #266: When sending a message from the drafts folder, we mark the message deleted after we send it. Also, when we edit a message in the drafts folder and save it back in the drafts, the original message is marked deleted. 2003-04-11 Ludovic Marcotte * Modified NewMailboxPanelController so that we correctly verify the exception name before assuming we lost our connection to the IMAP server. 2003-04-10 Ludovic Marcotte * Disabled ExtendedTextView: -updateCursorLinks since this method needs to be optimized or entirely rewritten. * Enabled the spinning icon when _sending_ mail in the MailWindow:s and removed/refactored some code. 2003-04-08 Ludovic Marcotte * Modified AccountEditorWindowController: -dealloc to be sure that the store's TCP connection is valid before attempting to issue a store operation. 2003-04-07 Ludovic Marcotte * Removed Foundation/NSDistributedNotificationCenter.h from TaskManager's include list. 2003-04-06 Ludovic Marcotte * Fixed a bug in ReceivingViewController: -saveChanges. We were using showNoNewMessagesPanelButton instead of showFilterPanelButton for SHOW_FILTER_PANEL. * We now verify the termination status in FilterManager: -_messageFromExternalProgramUsingFilter: message: to correctly handle errors. * Fixed the ReceivingView.m UI so it looks like the one on OS X. * Removed MailboxManagerController: -passwordForKey (we are now only using the method defined in Utilities). * Removed Utilites: +replyToAll: folder: and merged the logic in +replyToSender: folder: replyToAll: Modified the code to use this modified method. * Simplified the code in Utilities: +loadAccountsInPopUpButton: select: * Minor refactorings in Utilities. * Removed everything released to the messageWasSent ivar in EditWindowController and did some minor refactorings. 2003-04-05 Ludovic Marcotte * Added a patch from Stefan Urbanek to improve the labels used in the information/alert panels. * We now correctly close the IMAP store that we might have opened when listing subscribed folders in AccountEditorWindowController. * Modified the message display code and the URL highlighting code. The baby is now _FAST_. It's currently not entirely optimized on GNUstep since the text network is borken. * Modified MailWindowController: -_selectionDidChange to verify the exception name before assuming we lost the connection to the IMAP store. * Moved the code from MailWindowController: -tableViewColumnDidResize to -windowWillClose since this code isn't working under GNUstep because the NSTableViewColumnDidResizeNotification is posted when initializing the instance and we automatically overwrite the values previous saved in the defaults. We now save the values only when closing the window. * Updated BounceWindow.nib - it was broken. 2003-04-02 Ludovic Marcotte * Removed the NSString+Extensions category. We now use the one in Pantomime instead. Modified all the files depending on that removed category. * Removed all the code depending on the distributed notification center. * Updated the OS X project file * Fixed an include bug in PGPController.m 2003-03-30 Ludovic Marcotte * Set GNUMail+TaskManager: -messageWas{Received/Sent}: forURLName: as oneway methods. * Modified MailboxManagerController: -_openIMAPFolderWithName: store: sender: so that if we are trying to reopen the opened IMAP folder, we simply make its 'associated window' the key one and we order it front. * Optimized things so we don't synchronize the MailboxManagerCache each time we display a message. This seems to noticeably reduce the message's display delay. 2003-03-29 Ludovic Marcotte * Fixed a bug in my previous commit (FontsViewController) * Modified GNUMail: -updateGetNewMailMenuItem: to only use enabled accounts. * We now correctly reload the font in the message list if those values have changed. 2003-03-28 Ludovic Marcotte * Fixed MailWindowToolbar to return nil if the navigation toolbar item is 'found'. That would prevent a segfault for users moving from 1.1.0pre1 to 1.1.0pre2 that had customized their MailWindow toolbar. * Added a new preference value: MESSAGE_LIST_FONT_{NAME, SIZE}. It's now possible to set this pref value in order to use a 'custom' font in the MailWindow message list. I'll modify the Font nib right now. * Updated FontsView.nib for the previous commit. You must restart the app right now if you want the font changes in the message list to take effect. 2003-03-24 Ludovic Marcotte * Modified all GNUmakefile:s to add -Wno-import * Added scripting support using StepTalk. Patch from Stefan Urbanek . 2003-03-23 Ludovic Marcotte * Added a patch from Tomio Arisaka to fix some issues in the PGP bundle. It's now also possible to always use the Multipart PGP style when sending messages. * Modified PGPView.nib for the previous commit. * Fixed a bug in MailboxManagerController: -_openIMAPFolderWithName: store: sender:. 2003-03-23 Mirko Viviani * GNUMail+TaskManager.m ([GNUMail -nextTask]): discard already running tasks. 2003-03-22 Ludovic Marcotte * Fixed the printing code under OS X. * We now _really_ prevent more than one folder to be opened on the same IMAP store. * Modified the GNUmakefile so we can easily test GNUMail.app with Electric Fence. * Modified Utilties and GNUMail+TaskManager (-tick) so that we now release the content of the message that have 'expired'. Currently set to 300 seconds, it can be changed in Constants. This prevents GNUMail from using and using memory even if some messages haven't been re-read (after beeing first initialized) over the same session. 2003-03-21 Ludovic Marcotte * Removing the generation of debug symbols for the Receiving, Face and Advanced targets on OS X. * Fixed some nib issues regarding the icons. * Made some UI improvements to the PreferencesWindow.nib * Added a "Save in Drafts" option in the Console to save a message in the queue to the Drafts folder of the proper account. * Modified ConsoleWindow.nib 2003-03-20 Ludovic Marcotte * Made use of the localization macro for all toolbar labels (or title and tooltips). The localization files haven't been yet created. * Fixed the OS X version number (set to 1.0.99) 2003-03-20 Mirko Viviani * NSUserDefaults+Extensions.m ([NSUserDefaults -colorForKey:theKey]): check for assigned values. 2003-03-19 Ludovic Marcotte * Fixed (but not yet tested) in Utilities: +passwordForKey: type: prompt: related to SMTP auth support. 2003-03-17 Ludovic Marcotte * Fixed a bug in Utilites: +loadTransportMethodsInPopUpButton where we were wrongly adding items to our popup buttons. * Refactored some code to use the +allEnabledAccounts method from Utilities. 2003-03-16 Ujwal S. Sathyam * Added support for attachment in scripting. Syntax is: tell mymail attach file "filename" end tell or attach mymail file "filename" where mymail is a reference to a message composition and filename is the file to be attached. 2003-03-16 Ludovic Marcotte * Fixed a small issue in the previous commit (-restoreDraft) that would prevent the code to be compiled on gcc < 3.x * Fixed the OS X project file since the framework installation path was fixed in the Pantomime project file. * Fixed missing action connections in ReceivingView.nib * Modified EditWindowController/BounceWindowController to use the new method in Utilities (allEnabledAccounts) to verify if we can use these controllers. * Fixed an outlet connection problem in AccountEditorWindow regarding the Send tab. * Modified the Compose pref bundle to correctly load the default charsets. * Modified EditWindowController: -_replaceSignature to correctly verify if the textView's font isn't nil before adding it to a dictionary. That would fail under OS X. * Enhanced the UI of most preferences bundles. * Fixed a bug in AccountEditorWindowController that was involving a non-mutable dictionary. 2003-03-15 Ujwal S. Sathyam * Fixed bug in Utilities: +loadAccountsInPopUpButton: select:. * Fixed bug in GNUMail: -restoreDraft. Message was not being initialized. 2003-03-15 Ludovic Marcotte * Fixed the code that was replacing the signature in EditWindowController. The previous code wasn't working if the source was a program's output. * Refactored all the code in Utilities (and EditWindowController) so that we now select the right account when replying/forwarding a mail. Also fixed some bugs in the previous code that would prevent the right account (or before, profile) to be selected. 2003-03-14 Ujwal S. Sathyam * Foundation/NSScriptObjectSpecifiers.h is not needed in EditWindowController anymore since it will not be directly scripted. * Implemented "send" script command handler in MessageComposer. We can now script GNUMail!! 2003-03-14 Ludovic Marcotte * Small change in the previous commit to NOT import Foundation/NSScriptObjectSpecifiers.h under GNUstep. 2003-03-14 Ujwal S. Sathyam * Created MessageComposition class that can be scripted. 2003-03-12 Ujwal S. Sathyam * One step closer to scripting nirvana... 2003-03-10 Ujwal S. Sathyam * Experimental code for expanding Applescript support. Still incomplete. * Fixed a confounding bug in the Account Editor NIB file where the sendUsingSecureConnection was wired to the wrong object. Had completely incapacitated sending mail. 2003-03-09 Ludovic Marcotte * Fixed a bug in the Face bundle. We now correctly release the Face views used in MailWindow objects. * Corrected some window reordering in most bundles (Account, MIME and Filtering) ie., where the issues were. * Fixed some bugs with account names handling in MailboxManagerController. We weren't getting correctly the 'root' node for an account when using IMAP stores. * Added a new constant (OTHER) and cleaned some code to use it. * Added MailHeaderCell.h to the OS X project file and made consistency changes to the project file regarding public headers for the GNUMail framework. 2003-03-06 Ujwal S. Sathyam * Updated PB project file to reflect latest file changes. 2003-03-06 Ludovic Marcotte * Fixed a bug in EditWindowController so that we correctly replace the signature if the account changes. Also refactored a little bit _replaceSignature so that we set the insertion pointer at the beginning of the textview and removed some unneccesary code to get the proper font. 2003-03-05 Ujwal S. Sathyam * Updated PB project file to reflect latest file changes. 2003-03-05 Ludovic Marcotte * Fixed two small issues so the source would cleanly compile with gcc < 3.x. * Moved ChangeLog to ChangeLog.1 and created a new file. * Removed GNUMailConstants.m * Renamed GNUMailConstants.h to Constants.h and modified all files to use it. Also cleaned the file since it was a pure mess before. The OS X project file needs to be modified to reflect those changes. * Added sort_right.tiff. The OS X project file must be modified to be sure it contains sort_right and sort_down. * Modified MailWindowController (and ExtendedOutlineView) to use the sort_right and sort_down tiff files when using messages threading. GNUMail/ChangeLog.10100644000014600001460000103141210601435446014503 0ustar monotonemonotone2003-03-04 Ludovic Marcotte * Optimized Utilities: +_quoteMessageContentFromAttributedString: We now cache the values obtained with -colorForKey:. * Added support for automatic checking for new mails. It honors the retreive interval for each account. GNUstep users might experience the following exception: Uncaught exception NSLockException, reason: Thread attempted to recursively lock This seems to be a bug in GNUstep base. * Removed the ShouldCloseMailbox constant and the observer in MailWindowController. Also modified GNUMail: -applicationShouldTerminate to class -close on all opened MailWindow:s. 2003-03-03 Ludovic Marcotte * Fixed the installation dir of the Clock bundle. Bug reported by Stefan Urbanek . * We now honor the "Enabled" account parameter and we also reload the folders in the Mailboxes window properly if accounts have changed. * Resized the buttons in NewMailboxPanel.m. * Modified FaceController to ignore the case for the "X-Image-URL" header key. * Modified NewMailboxPanelController to correctly rename the IMAP cache file and also to update all "MAILBOXES" account informations when renaming a folder. * Fixed to _very_ annoying compiler warnings in TaskManager. Replaced [NSDate date] by AUTORELEASE([[NSDate alloc] init]). * Modified Utilities: +loadAccountsInPopUpButton: select: and +loadTransportMethodsInPopUpButton: to NOT load informations from disabled accounts. * Removed EditWindowController: -_loadTranportMethods. * Did the same thing in BounceWindowController. * Added a patch from Matt Rice to support DnD files in EditWindow from, say, GWorkspace (this was already working on OS X). 2003-03-02 Ludovic Marcotte * Removed the Previous/Next buttons in the MailWindow under GNUstep. * Fixed a mem leak in Utilities: +formattedAttributedStringFromAttributedString: * Modified MailWindowController: -setFolder to no longer show the "No message in this folder" alert panel. This was annoying for no good reason. * Modified Utilities (Private): _attributedStringFromTextForPart: to handle encodings in a cleaner way. This needs optimizations, though. * Added a NSStepper for the "minutes" field in ReceivingExpertView. * Fixed memory leaks. * Implemented sound notifications in the filtering code. Modified Filter, FilterManager and all the views used to edit the filters. * Optimized the "highlighting" of URLs (modified ExtendedTextView to not do a loc++). * It's now possible to specify a default sound when receiving new mails in the Sending pref panel. * Rewrote near all the preferences code. We now have a brand new preferences panel (and modules) and the concept of "accounts". * Added more code to GNUMail+Extensions: -update_1098_to_1099 to migrate from the old prefs to the new ones. * Modified GNUMail: -applicationDidFinishLaunching so that we now use ~/Mailboxes instead of ~/gnumail to store the mailboxes under GNUstep. * Moved the matching of the Outbox folder in the thread so it is a little faster to send mails. * Moved FilteringTableView out of the Filtering bundle (same with the ExtendedTableColumn) and renamed SwitchTableColumn. We now also use it in the Account bundle. * We now explicitly set the border type of all scrollviews to NSBezelBorder * Removed the Size column in the MailboxManager and all the code "depending" on it. * Fixed a bug in AddressBookController: -modifyAddress: We don't always assume we got at least one address. Same with -ccClicked: and -bccClicked: * Removed MailboxManagerController: _messageFromLocalDraftsFolderUsingURLName: and _messageFromIMAPDraftsFolderUsingURLName: since we are now "forcing" the user to open the drafts folder before chosing the "restore" operation. * Removed the code to migrate from 1.0.2 to 1.0.3. * Removed the -lockFocus/-unlockFocus class in ExtendedAttachmentCell and MailHeaderCell. This fixes rendering artifacts under GNUstep and well, optimize a little bit things. * Removed the Size column from MailboxWindow.nib * Added the missing nibs for the new Preferences panel. * We no longer show the nb. of message/unread messages when we have a folder - just for mailboxes. * Re-imported all the sources on the CVS. Everybody MUST completely checkout the application. * Fixed a small issue with AccountView nib (now make uses of the custom class ExtendedTableColumn) * Set the right tags for the matrix in ViewingView.nib * Converted MIMEView.nib to the new nib format and added a description at the top of the view like other panels. * Also added a description to the Filter panel. * Removed the code in EditWindow to connect the outlets and modified the controller to connect the outlet directly to the ivars under GNUstep. * Done the same thing for MailWindow and its controller. * Modified AccountViewController: -dealloc to set the data source to nil under OS X. * Done the same thing in AccountEditorWindowController for imapOutlineView. * Added the "Sound" UI elements in the FilterEditorWindow.nib and converted to the new nib format. Also converted to the new nib format FilterHeaderEditorWindow.nib and FilterMessageWindow.nib * Set the data source to nil in FilterHeaderEditorWindowController: -dealloc. * Modified FilterEditorWindow.m to correctly set the scroll view border to NSBezelBorder under GNUstep. * Minor UI adjustments in AboutPanel.m for the new GNUstep text engine. * Modified AccountView.nib to make the columns non-editable. * Modified PasswordPanelController to include awakeFromNib to set the initial first responder to the password secure field. Patch from Tomio Arisaka . * Modified MessageViewWindow for the outlet code (and its controller) and to set the border type of the scroll view. * Did the same thing with PasswordPanel and its controller. * Did the same thing with ConsoleWindow and its controller. * Did the same thing with NewMailboxPanel and its controller. * Cleaned some code in MailWindowController * Modified GNUMail+TaskManager and TaskManager so that we correctly stop our TaskManager. This prevents random segfault when quitting the application. * Added a COLOR_QUOTED_TEXT key so that we can activate or desactivate the coloring of quoted text. Modified Utilities: +_quoteMessageContentFromAttributedString to use it. Implemented all the behavior of the Colors preferences panel. * Updated the ColorsView.nib * Modified MailWindowToolbar.m to remove the "navigation" option. This is useless in this window. * Removed some done TODO items. 2003-02-17 Ujwal S. Sathyam * Fixed another small problem in my previous commit. Was referencing the wrong size when setting the width of the the size column. * Fixed bugs in validating toolbar items in MailboxManagerToolbar.m 2003-02-17 Ludovic Marcotte * Fixed a small bug in the previous commit. columnSizes was never nil even if the pref (MAIL_WINDOW_TABLE_COLUMN_SIZES) didn't exist (at least, under GNUstep) so we would get index out of bounds exception. 2003-02-16 Ujwal S. Sathyam * Put in a workaround for a problem with using autosave feature on the NSTableView in MailWindow. The autosave was being used for saving column sizes, but it was messing with the dynamic addition and removal of columns. Now we do not use the autosave feature and explicitly save the column sizes. * Fixed a problem in Viewing Preference nib file where the Status column checkbox was always selected regardless of the value in the saved preferences. 2003-02-12 Ludovic Marcotte * Modified Utilities: +flattenPathFromString: separator: so that if no separator was specified (nil), we use a default one (/). * Modified AboutPanel.m so the imageView isn't editable. 2003-02-11 Ludovic Marcotte * Minor fix in EditWindowController: -textDidChange to not use -string on the textStorage. It should also make things faster. * Fixed a bug in AddressBookController: -toClicked: We are now correctly verifying that we have at least one address in a group when double-clicking on an address in the AddressBookWindow. * Modified MailWindowController to not draw the cell's background color if it's selected so that coloring filters don't interfere with the current row selection. 2003-02-10 Ludovic Marcotte * Done TODO #216. We now offer an option (OPEN_MAILBOX_AFTER_TRANSFER) to automatically open folders in which messages were transferred by filters after reception of those messages. * Modified the Receiving bundle so it's possible to graphically set this option. The ReceivingExpertView.nib needs to be updated. 2003-02-08 Ludovic Marcotte * Removed the "Close" buttons from AddressBookWindow and MailboxManager under GNUstep. * Fixed a bug in FilterManager. We weren't returning URLName objects as we should be in case of errors. * Updated MailboxesView.nib to remove the "reuse MailWindow.." checkbox. * Added the "Open in new Window" item to the Mailboxes menu * Added the keyed archived for both nibs (MailboxesView.nib and MainMenu.nib) 2003-02-08 Ludovic Marcotte * Removed the "All Mailboxes" item from the MailboxManager and updated all the code to reflect that change. 2003-02-07 Ludovic Marcotte * Made things a little bit faster when scrolling in the MailWindow (in the dataview) * If we use a fixed-pitch font when composing emails, we now show in the size label how many characters there is on a single line (the maximum). * Fixed a bug in the MailboxManagerController - we weren't asking to close the IMAP store when collapsing an IMAP node. 2003-02-05 Ludovic Marcotte * We now expand the outline view nodes of the stores of folders opened on startup. * Refactored a lot of code, especially in the MailboxManagerController. We now correctly close IMAP connection if the store wasn't open and we added a message to the Outbox folder. Removed some NSLog calls, move some code from Utilites to MailboxManagerController and move some code in MailboxManagerController to the private category. * Refactored more code in the MailboxManagerController. * Implemented -mode/-setMode in all bundles to keep the compiler quiet. Users _will have_ to update their PGP bundle. * Changed the BUNDLE_INSTALL_DIR from GNUSTEP_USER_ROOT to GNUSTEP_INSTALLATION_DIR for the Face, PGP, and Clock bundles. 2003-02-01 Ludovic Marcotte * Modified GNUMail: -changeTextEncoding: to set the new headers of the selected message that have been decoded with the new charset and we now refresh the selected row properly. With the modifications in Pantomime, this completes TODO #294 and #327. * Ajusted -changeTextEncoding: for refactorings made in Pantomime. * Done TODO #264. Changed import calls for include and guarded all headers against multiple inclusion. 2003-01-31 Ludovic Marcotte * Removed the concept of "reusing the MailWindow". Added a menu item in the Mailbox menu "Open in new window" so it opens the selected mailbox in the MailboxManager in a separate window. The nibs need to be updated (add the menu item and remove the checkbox in Mailboxes.nib) * Added a dock menu on OS X. Suggestion from Hasan Diwan . * Updated the MainMenu.nib and the MailboxesView.nib for the initial commit. 2003-01-26 Ludovic Marcotte * Modified EditWindowController: -initWithWindowNibName to use the MESSAGE_FONT_{NAME,SIZE} when composing mail and not using a fixed-pitch font. * Added Czech translation from Petr Malat . 2003-01-26 Francis Lachapelle * Added dynamic resizing of preferences modules views under OS X. Most preferences modules nibs have been improved. 2003-01-26 Ludovic Marcotte * Fixed a bug in ComposeViewController (Private): _updateFromValues. The popup selection wasn't restored correctly. * Did some minor indentation fixes in GNUMail.m * Fixed the DOWNLOAD_URL constant in GNUMail.m since it has changed (with the new, updated, website). * Implemented -copyWithZone in ExtendedCell and removed the FIXME on OS X in -dealloc. * Modified MailWindowController: -setFolder to not show the "There are no messages in this Mailbox!" message if the user has chosen to not show the "Show No New Messages panel" in the receiving option. * Modified ReceivingExpertView to rename the checkbutton to "Show No new messages / No messages in this mailbox alert panel" The nib needs to be updated. * Modified the box title of ReceivingExpertView to use "UNIX accounts.." instead of "local mail spool..." * Updated the nibs. 2003-01-25 Ujwal S. Sathyam * Added Applescript support on OS X to handle "mailto:" URLs. Support can be expanded to do other cool stuff. * Fixed a few bugs related to status indication and message selection after deletion that were being caused by the NO_MESSAGE_RENDER_IN_MAIL_WINDOW preference being set. 2003-01-22 Ludovic Marcotte * Added openFolder and closedFolder to the repository and the OS X project file. * Implemented -outlineView: willDisplayOutlineCell: ... in MailboxManagerController to set the custom icon. * Modified ExtendedOutlineView so that it behaves like on OS X (uses the small "folder icons"). 2003-01-22 Pierre-Yves Rivaille * ExtendedOutlineView.m: move boxes icon to the left. * Icons/mailboxes_16.tiff: no more shadow, translation to the left 2003-01-22 Ludovic Marcotte * Modified MailboxManagerController: -_stringValueOfURLNameFromItem: store: to include the username for an IMAP folder. 2003-01-21 Ludovic Marcotte * Fixed a small bug in TaskManager: -_sendUsingSendmailForTask: (we weren't using the data value when calling -messageWasSent:) * Added the ImageTextCell class for both GNUstep/OS X (need to add it to the OS X project file) to be used in the MailboxManagerController's window. * Added the new ImageTextCell class to the OS X's project file. 2003-01-20 Ludovic Marcotte * Updated the version number to 1.0.99 * Done TODO #335 and added some custom icons to be shown in the MailboxManager for 'default' folders. * Updated the OS X project file to include those new icons and fixed a small bug in the previous commit * Fixed a small bug in NewMailboxManagerController: -okClicked. We weren't returning elegantly from the exception handler (with NS_VOIDRETURN) 2003-01-20 Ujwal S. Sathyam * Added a hidden option NO_MESSAGE_RENDER_IN_MAIL_WINDOW to disable rendering of messages in the split view of the main mail window. This is an performance optimization for people who prefer to read mail in a separate window by double-clicking on the message in the table view. 2003-01-18 Ludovic Marcotte * Moved the code to create the table columns from MailWindow to MailWindowController. We also use those table columns under OS X now (instead of the ones coming from the nib). * We now no longer generate debug symbols for the GNUMail framework target on OS X. * Modified some min/current width on OS X for the table columns. * Tagged the cvs to v1_1_0pre1. * RELEASE VERSION 1.1.0pre1. 2003-01-16 Ludovic Marcotte * Reactivated the memory panel under GNUstep (Info->Memory Panel...) * We now correctly release our LocalMailDelivery object in TaskManager: -_receiveUsingUNIXForTask:. 2003-01-15 Ludovic Marcotte * Removed the Clock bundle from the top-level GNUmakefile. 2003-01-13 Ludovic Marcotte * Updated the docs/README file in preparation for the release. 2003-01-12 Ludovic Marcotte * Commented the code in ConsoleWindowController: -messageWasReceived since it's currently not used anymore and we were reloading the tableView's content for no reason everytime we got a GNUMailConsoleMessage distributed notification. * Reactivated the GNUMailConsoleMessage support in the console. The OS X nib needs to be updated. * Updated ConsoleWindow.nib * Added a method defintion in Face.h to prevent a compiler warning. 2003-01-11 Ludovic Marcotte * Modified PGPController so we correctly verify the launch path (if it exists and if it is executable) of the gnupg binary. 2003-01-11 Ujwal S. Sathyam * Fixed a bug where hitting enter on a highlighted message would not emulate a double click action. * Making table view first repsonder in MailWindow so that up and down arrows work without having to click in the table view. * Opening Mailbox Manager and Console, if desired, before opening the folders so that the last opened folder window is active instead of the Mailbox Manager or Console windows. 2003-01-11 Ludovic Marcotte * We now correctly release the previous loaded nib for all pref bundles (some were not correct, like the Fonts, Receiving and Compose bundles). * We now set the animation ivar to nil in MailWindowController: -initWithWindowNibName. * Modified ConsoleWindowController and MailWindowController to verify in -_noTaskInQueueIsRunning for not only running tasks but for tasks that have the flag 'immediate' set to YES since even if those aren't running, they are next to be fun immediately. * Optimized GNUMail+TaskManager: -messageWasSent so we don't use the data value of the message to get the URLName object but we rather use the Message's instance directly (faster). * Changed GNUMail+TaskManager: -messageWasSent so we accept directly the message as RAW source. This prevents us from calling -dataValue on the Message object twice. Modified TaskManager to use the modified method. This should speed up things when sending mails. 2003-01-10 Ujwal S. Sathyam * Fixed a bug in saving changes when Preferences were launched under Expert mode. Bug affected Receiving, Compose, and Fonts bundles. 2003-01-09 Ludovic Marcotte * Fixed a bug in the TextEnrichedConsumer. 2003-01-09 Pierre-Yves Rivaille * Removed setContainerSize calls from EditWindowController.m 2003-01-07 Ludovic Marcotte * Modified EditWindowController: -initWithWindowNibName to set the font of the text view to a fixed pitch if the user is using a fixed pitch font for plain/text messages. 2003-01-06 Ludovic Marcotte * Added some TODO items * Modified PGPViewController: -initializeFromDefaults so that under OS X we set the gpg's path field to /usr/local/bin/gpg instead of /usr/bin/gpg. * Modified MailWindowController: _restoreSortingOrder so that we don't run into problems since our Id -> # change for the sorting order saved in the user defaults. It was causing a UI weirdness under GNUstep and the user had to sort again by clicking on a table column. 2003-01-05 Ludovic Marcotte * Modified GNUMail: -applicationDidFinishLaunching so that we warn the user if the creation of the GNUMailUserLibraryPath failed using NSRunCriticalAlertPanel instead of NSDebugLog. * Improved GNUMail (Extensions): -moveLocalMailDirectoryFromPath: toPath: so that if the directory already exists, we simply move the files in it and we remove the old directory. Also added some error handling code. * Set the version number under OS X to 1.0.98 (which is 1.1.0pre1). * Updated the AboutPanel.nib to include "2003". * Modified TaskManager to update the status label when ignoring downloaded messages in POP3. Also modified MailWindowController to return immediately in -updateStatusLabel when the animation is running. * Modified AddressBook: -addressesWithPrefix: so that under OS X (using the OS X 10.2 AB), we don't set the Last Name if it isn't defined. 2003-01-04 Ujwal S. Sathyam * Apple's AddressBook is default on MacOS X. 2003-01-04 Ludovic Marcotte * Updated the code to NOT use the TRANSFERRED flag anymore. We now only use the DELETED flag. * Modified some code so that we don't add the DELETED/ANSWERED flags directory to the Message's Flags object but we rather copy the flags, add it and set the flags back to the Message (so that IMAPMessage: -setFlags: can be called). 2003-01-03 Ludovic Marcotte * Recreated entirely the OS X project file. Now, one just has to copy the Pantomime.framework into the build dir and compile the GNUMail target. Everything will be compiled and bundles will be installed. Need to update the project file to include the PGP, Face and Clock bundles. * Changed all occurrences of MACOSX102 to MACOSX * Removed dylibfix.c * Updated the bundle loading code in PreferencesWindowController since they are now in PlugIns (standard OS X location) * Added GNUMail_main.m and moved the main function from GNUMail to this new file. * Added GNUMail_main.m to the GNUmakefile * Disabled the Help menu under OS X since we don't have any help right now. * Added the PGP target to the OS X project file. * Added the Face target to the OS X project file. * Changed the Id column to #. * Changed the Id column to # (and the identifier) in MailWindow.nib * Updated the OS X project file versions to 1.1.0pre1 * Improved EditWindowController: -textDidChange so we don't try to do anything if our text storage's length is smaller than 1. 2003-01-03 Ujwal S. Sathyam * Removed dependencies on GNUmail.framework and dylibfix from all targets in PB file. Both to be soon obsoleted. 2003-01-02 Ludovic Marcotte * Modified TaskManager: -_sendUsingSMTPForTask: to reschedule the task (+5 mins) if an error occurred when sending the mail, not only when the user has pressed the Stop button. Also modified _sendUsingSendmailForTask to reschedule the task in case of an error. * Set the version to 1.0.98 (1.1.0 pre1) * Removed the GNUMail-10.2 OS X project file and set the version to 1.0.98 under OS X. * Modified MailboxManagerController so that under OS X, we don't set the children to nil on the collapsing folder node. * Removed docs/WHATSNEW.SPENCER and docs/INSTALL.SPENCER. 2002-12-30 Ludovic Marcotte * Fixed a small bug due to the previous commit. The Find submenu was set to the Undo menu item under GNUstep. * Added EditWindowController: -_updatePart: usingTextAttachment: and refactored -updateMessageContentFromTextView to use it. Also added support for sending message with only one attachment (no textual parts). 2002-12-30 Ujwal S. Sathyam * Added "Paste As Quoted Text" option under the Edit menu. Needs to be added to other non-English nibs and tested under GNUstep. 2002-12-30 Ludovic Marcotte * Added all (hopefully) IMAP disconnection handling code. * Fixed some errors in the previous commit. 2002-12-29 Ludovic Marcotte * Refactored TaskManager: -_transferMessagesFromPOP3Folder: task: to use the new POP3Folder: -prefetchMessageAtIndex method. We now deal ourself with the POP3CacheManager. 2002-12-28 Ludovic Marcotte * Added missing files to the OS X project file. * Modified MainMenu.nib to add Sorting->Thread Messages. * Updated MimeTypeEditorWindow.nib for the "Open with Workspace" feature. * Added a patch from Pierre-Yves Rivaille to fix Sorting->Thread Messages under GNUstep (temporary fix). * Moved some code from MailWindowController: -initWithWindowNibName to -setDataViewType. * Modified the code that was using -dataUsingSendingMode of Part/Message (Pantomime classes) to use -dataValue. * Modified the PGPBundle so we now use -setProperty: forKey: instead of -setExtraProperty: forKey: from Pantomime's Message class. 2002-12-27 Ludovic Marcotte * Enhanced MailWindowController: -_objectValueForTableColumn: message: item: to deal better with nil From/To/Date/Subject in Messages (just to be safer). 2002-12-26 Ludovic Marcotte * Removed the RELEASE(filterManager); in FilteringViewController: -dealloc. * Modified GNUMail: -applicationShouldTerminate to correctly release our FilterManager and MimeTypeManager singletons. * Done TODO #314. We now correctly respect the user's preferences when displaying attachements (always as icons or we try to display it, if possible). * Implemented the selection of indexes in the dataView when using message threading and doing a find operation. * Added more TODOs. 2002-12-25 Ludovic Marcotte * Modified the MimeType management code to eliminate the "needs terminal" option and to add an "Open with Workspace" feature. This completes TODO #304. * Refactored FilterManager (and all the code using it) so that we now use a singleton. 2002-12-24 Ludovic Marcotte * Added GNUMail+Extensions and moved some of the code in GNUMail: -applicationDidFinishLaunching in this new category. * Done TODO #281. Doing a: defaults write GNUMail LOCALMAILDIR /path/to/new/directory will now automatically create that directory, move all local mailboxes to this new location and update all 'dependencies' (like Filters, user's defaults, etc.). * Done TODO #329. We now put the mailboxes under Mac OS X in ~/Library/GNUMail/Mailboxes. NEEDS TESTING. * Renamed NSStringExtensions to NSString+Extensions. * Renamed NSUserDefaultsExtensions to NSUserDefaults+Extensions. * Modified Task/TaskManager/GNUMail+TaskManager so that we now correctly inform the user if messages were received and transferred to other folders by the filters. * Removed all the commented code in MailWindowController. * Modified Task/TaskManager/GNUMail+TaskManager so that we now "beep" if we received new mails on startup or when the timer fired the check for new mails operation. 2002-12-19 Pierre-Yves Rivaille * [MailboxManagerController -dealloc], set window's delegate to nil * Done TODO #135. 2002-12-18 Ludovic Marcotte * Applied a patch from Nicolas Roard to support quoting level coloration when "composing" E-Mails. Slightly modified the patch. * Added a "hidden" preference value: OPEN_CONSOLE_ON_STARTUP so it's now possible to automatically show the Console's window upon GNUMail.app's startup. Documented in docs/PREFERENCES. Modified GNUMail: -applicationDidFinishLaunching to use it. * Reactivated the check for new mails on startup feature under GNUstep. It now won't fire automatically but 5 secs after the app is started. 2002-12-17 Ludovic Marcotte * Updated GNUMail+TaskManager: -checkForNewMail: controller: since the -openedFoldersEnumerator method has changed in IMAPStore. 2002-12-16 Ludovic Marcotte * Added MailboxManagerController: -allStores to return the list of all opened Stores. * Modified GNUMail+TaskManager: -checkForNewMail: controller: to correctly NOOP either the currently opened IMAP folder or all opened IMAP stores. 2002-12-15 Ludovic Marcotte * Modified some of the code to correclty handle IMAP disconnections. Added MailboxManagerController: -connectionWasLostToIMAPStore: folder: to handle this. More work needs to be done. * Done TODO #303. Added an home-brewed About panel. * Added AboutPanel.nib and modified OS X's project file to include the new classes. * Modified MailWindowController: -deleteMessage to be sure we aren't trying to show the 'next' message when the folder count is 0 (for example, if we hide deleted mails and there's only one in the mailbox). * Modified the code in TaskManager to correctly close SMTP connections when the user has asked to stop the current transfer. 2002-12-15 Ujwal S. Sathyam * Fixed bugs with opening attachments with external apps. Full path to app binary was not being specified. Launching with Classic apps is not yet supported. 2002-12-14 Ujwal S. Sathyam * Changed class of text view from NSTextView to ExtendedTextView in the MailWindow and MessageViewWindow NIBs to match the previous commit. Also setting the editable flag to NO in code for these objects. * Added hand.tiff to the OS X project. * Overrode ExtendedTextView: -initWithFrame: and -initWithFrame: textContainer to make sure that the hand cursor is created for hyperlinks. * Set the delgate for the ExtendedTextView appropriately. 2002-12-13 Ludovic Marcotte * Added Icons/hand.tiff * Added support for showing the "hand" icon over activated URLs in MailWindow/MessageViewWindow. 2002-12-12 Ujwal S. Sathyam * Fixed bugs in next message selection after deleting in MailWindowController. 2002-12-12 Ludovic Marcotte * Applied a patch from Stefan Urbanek to fix the "new message with attachments" service. No filenames were set and it wouldn't handly properly multiple files. 2002-12-11 Ludovic Marcotte * Did some minor refactorings in the previous commit. 2002-12-11 Ujwal S. Sathyam * On MacOS X, we now use sheets for the dialogs to attach and save files. 2002-12-11 Ludovic Marcotte * Modified EditWindowController: _updateSizeLabel to use a local autorelease pool. 2002-12-09 Ludovic Marcotte * Made ConsoleWindow resizable under GNUstep. * We now also use SCROLLER_SIZE in EditWindow. * Modified EditWindowController (Private) -_setPlainTextContentFromString: inPart: so that we don't always assume a QP encoding. For example, we use no encoding (ie., NONE) when we have a iso-2022-jp charset since it's a 7-bit encoding. Patch by Tomio Arisaka 2002-12-08 Ujwal S. Sathyam * Done TODO #286: Allows undo/redo in Edit window. * Done TODO #318: Hidden preference to set scroller size for table and text views in the MailWindow. on OS X: defaults write com.collaboration-world.GNUMail SCROLLER_SIZE 0 (or 1) on GNUstep: defaults write GNUMail SCROLLER_SIZE 0 (or 1) 2002-12-08 Ludovic Marcotte * Fixed a missing outlet connection in MailWindowController (the get button toolbar button) preventing -deleteMessage: method to work properly under OS X. 2002-12-08 Ujwal S. Sathyam * Fixed bugs in URL activation in Utilities. 2002-12-08 Ludovic Marcotte * Modified MailWindowController (Private): _reloadTableColumns so that we don't size the dataView after reloading all the columns under OS X and we also keep the selection on OS X. 2002-12-08 Ujwal S. Sathyam * Done TODO #283: Messages transferred to Outbox are marked read/seen. 2002-12-08 Ludovic Marcotte * Removed MailWindowController: -checkOnForNewMailOnStartup. * Added some logic in GNUMail+TaskManager: -checkForNewMail: controller: to be able to verify mail on startup. Now calling this method in GNUMail: -applicationDidFinishLaunching - only on OS X since -base is borken. * Updated the Receiving/Sending nibs since there was missing connections or UI elements. * Added a patch from Stefan Urbanek to show the Cc/Bcc fields in EditWindowController when restoring from Drafts (if they are defined). * Updated FindWindow.nib * Updated PreferencesWindow.nib to set the default key to the Ok button. * Moved methods _messageFrom{Local,IMAP}DraftsFolder... from GNUMail (Private) to MailboxManagerController (Private) and added MailboxManagerController: -messageFromDraftsFolder. * Increased the size of the label in MailWindow.nib * Moved Utilities: +stringFromRecipients: type: to Pantomime - MimeUtility. * Updated FindWindowController to reflect the changes in the Pantomime folder searching code. * Changed the icon in MailWindow from a NSImageView to a NSButton. * Updated MailWindow.nib to reflect this change. 2002-12-07 Ludovic Marcotte * Partially implemented the "new" find panel. * Added modifications for the new IMAP code in Pantomime. * Modified GNUMail: -getNewMessages: to get the right window controller. * Fixed a bug in GNUMail (Private): -_messageFromLocalDraftsFolderUsingURLName. We weren't closing properly the Drafts folder if it wasn't opened before attempting to restore the message from that folder. 2002-12-07 Ujwal S. Sathyam * Done TODO #330: Spell checking under OS X Did not really have to do anything other than add [textView setContinuousSpellCheckingEnabled: YES] to EditWindowController. 2002-12-06 Ludovic Marcotte * Modified Bundle/PGP/PGPController.m: _decryptPart: ... to strip the leading \n when parsing the Content-Transfer-Encoding. Bug reported by Tomio Arisaka . 2002-12-05 Ludovic Marcotte * Modified TaskManager: -_sendUsingSendmailForTask to use responsToSelector instead of isKindOfClass due to a bug in -base. 2002-12-04 Ludovic Marcotte * Fixed the bug when hitting page up/down in MessageViewWindow. * Renamed MailWindowController: -verifyForNewMailOnStartup to -checkForNewMailOnStartup. * Added Task: -owner/-setOwner. Modified MailWindowController to use that method and to work like ConsoleWindowController does for stopping the animation when no tasks 'owned' by this MailWindowController object are running. * Reactivated the Stop button in MailWindow. * Fixed a wrong outlet connecint in MimeTypeEditorWindowController under GNUstep. 2002-12-03 Ludovic Marcotte * Modified GNUMail and EditWindowController so that we now prompt the user before quitting the app if any "dirty" EditWindow:s are currently opened. 2002-12-02 Ludovic Marcotte * Fixed the "Save in Drafts" feature and also a mem leak in EditWindowController: -windowShouldClose. * Enhanced the ConsoleWindow (now showing the activity icon) * Modified GNUMail+TaskManager: -addTask so that we don't immediately fire the task if one is already running. * Updated ConsoleWindow.nib to add the activity icon. 2002-12-01 Ludovic Marcotte * Added a nice patch to the PGP bundle by Tomio Arisaka . Refactored some parts of it. * Added Utilities: CompareVersion() and GNUMailVersion() * Added a patch from Chris B. Vetter to improve the version checking. Refactored the patch. * Fixed some compilation errors on OS X due to the previous commit and updated the version number of the project in the PB project file. * Modified TaskManager (Private): -_nextTask to use a local autorelease pool. * Modified Utilities: +clickedOnCell: inRect: atIndex: sender: (added sender) to fix the bug that when saving attachments from the menu, it would use the MimeTypeManager instead of instantly prompting for the save panel. * We now use NSAscendingSortIndicator/NSDescendingSortIndicator under OS X instead of our own sort_{up,down) tiff. * Removed those tiff files from the OS X project. * Modified MailboxManagerController: -transfer: so that we update the status label of the MailWindowController after we transferred a mail. * Modified MailWindowController: -doubleClickedOnDataView: so that we don't do anything if the user double-clicked on a table _column_. * Modified EditWindowController (Private): _loadSignature so that we don't try to load a signature from a file if no signature is defined in the personal profile. * Added the option+command+; to open the pref panel on OS X 2002-11-30 Ludovic Marcotte * Fixed a typo in PersonalView.m * Modified PreferencesWindowController to not adjust the window's size under OS X (for now). * Added PersonalExpertView.nib and fixed the preferences code for the Personal module under OS X. * Same with the Sending module (added SendingExpertView.nib) * Same with the Receiving module (added ReceivingExpertView.nib) * Same with the Compose module (added ComposeExpertView.nib) * Same with the Fonts module (added FontsExpertView.nib) * Updated MIMEView.nib * Removed all .ih files. * Modified TaskManager so it's now possible to stop POP3 transfers. * Modified TaskManager (Private): -_sendUsingSendmailForTask: to verify if the MAILER_PATH is valid (and executable) before trying to use it. * Implemented most of the TaskManager functionality. * Updated the ConsoleWindow.nib 2002-11-29 Ludovic Marcotte * Modified GNUMail+TaskManager: -checkForNewMail: controller: so that if we have no receiving accounts defined, (POP3 or UNIX) we stop the animation immediately. * Set the default's width of the From column to 155 instead of 170. * Added missing connections in MainMenu.nib (Hide GNUMail, Hide Others and Show All). * Removed the 'secureConnection' NSImageView object in the MainWindow.nib file. 2002-11-28 Ludovic Marcotte * Modified TaskManager to use -respondsToSelector: instead of isKindOfClass (since the latter is borken under GNUstep) so that bouncing message now works (as well as sending messages with Sendmail). * Modified MimeTypeManager: -_loadStandardMimeTypes to set the Content-Type to text/x-patch for files with the .patch extension. * Modified PreferencesWindow: -layoutWindow to not use 'push buttons'. * Partially implemented the new ConsoleWindow. 2002-11-28 Ludovic Marcotte * Added support for SMTP over SSL (Use Secure Connection) in TransportMethodEditor{Window,WindowController} and the TaskManager. 2002-11-25 Ujwal S. Sathyam * Fixed a bug in Utilities: -passwordForKey: type: prompt: Wrong key was being specified. 2002-11-22 Ludovic Marcotte * Added FindWindowController (Private) _selectIndexesFromResults: controller: and implemented indexes selection when the dataView is a NSTableView. * We now show the Console when click on the spinning logo in MailWindow. Currently borken under GNUstep (pending patch for it). 2002-11-21 Ujwal S. Sathyam * Fixed a bug in GNUMail: -applicationDidFinishLaunching where the task manager was not started before verifying for new mail. 2002-11-20 Ludovic Marcotte * Modified TaskManager: -_receiveUsingPOP3ForTask: to add more informations to the status label on what's going on. * Moved TaskManager: -_messageWasSent: to GNUMail+TaskManager so that everything is thread safe. * Fixed some issues so that the code would compile under OS X * Removed Henry Spencer's regex code from GNUMail.app. * Removed the NSRegEx class (moved to Pantomime) * Moved all the "searching" code to Pantomime. Not finished the implementation of FindWindowController: -findAll. * Removed all references to the NSRegEx class in the OS X project file. * Added missing @end in GNUMail.m 2002-11-18 Ludovic Marcotte * Modified MailWindowController: -_reloadTableColumns: so we don't call sizeToFit on our dataView under GNUstep. 2002-11-17 Ludovic Marcotte * Added the GNUMail+TaskManager category. * Added the ExtendedMenuItem class. * Refactored A LOT of code to use the new task manager. Commented out most of the old code. Lots of work still need to be done but the 'core' is in there. * Modified GNUMailInfo.plist and GNUMailConstants.m to set the version number to 1.1.0 * Modified MailboxManagerController: -_reloadFoldersForIMAPStoreWithName: username: to "temporarely" use IMAPStore: -folderStatus. * Modified Utilities: +_guessPersonalProfile: so that we don't assume we've found a "@" in our address. 2002-11-01 Ludovic Marcotte * Added the TaskManager and the Task class. 2002-10-31 Ludovic Marcotte * Refactored some code so that it works with the modified Pantomime. * Same with PGP bundle. * Moved the ExtendedMenuItem class definition from the GNUMail class to its own files (ExtendedMenuItem.{h,m}) 2002-10-30 Ludovic Marcotte * Fixed a typo in ReceivingView.m 2002-10-28 Ludovic Marcotte * Removed all the code related to the "secureConnectionIcon" and we now show properly the icon in the "icon" image view when we are using a SSL/IMAP connection. Rescaled pgp-mail-small.tiff. The OS X nib (MailWindow.nib) needs to be modified. 2002-10-27 Ludovic Marcotte * Implemented all the standard/expert view logic in the following bundles: - Receiving - Sending - Fonts - Personal All the "standard" preference bundles should now work in both Standard and Expert mode. * Added sort_{up,down}.tiff * Updated the OS X (10.1) project file to include those icons. * Added MailWindowController (Private): -_setIndicatorImageForTableColumn: and implemented the code to set the correct indicator image depending on the current sorting order. * Fixed a bug in ReceivingWindowController: -okClicked. We weren't keeping the SUBSCRIBED_FOLDERS value so we were loosing it each time we would modify an account. 2002-10-26 Ludovic Marcotte * Moved striphtml() and ent() from the Utilities class to Pantomime. You NEED to update Pantomime. * Updated the OS X 10.1 project file to remove all references to the Mailcap stuff. * Implemented all the standard/expert view logic in the Compose bundle. This should serve as a basis for other bundles (how things should work). * Removed -expertView from the PreferencesModule interface since we should never use it. * Reworked a little bit the UI of ReceivingExpertView (under GNUstep, to match OS X's look). 2002-10-25 Ujwal S. Sathyam * Modified Jaguar 10.2 project file to remove references to the Mailcap stuff. 2002-10-24 Ludovic Marcotte * Removed all the Mailcap (parsing/window/controller) code since it was really unused by all users. 2002-10-22 Ludovic Marcotte * Added exception handlers when unarchiving the Filters, the AddressBook, the Mime-Types and the MailboxManagerCache. 2002-10-20 Ludovic Marcotte * Fixed ExtendedCell for OS X (drawing code and added a ugly workaround to a Cocoa bug?) * Refactored a little bit EditWindowController and removed done TODO items. * Modified MailboxManagerController to prevent the user to delete {INBOX,OUTBOX,DRAFTS,TRASH}FOLDERNAME. The user must now change them before trying to delete them. 2002-10-19 Ujwal S. Sathyam * Fixed auto-completion of groups. * Made PGP and Face bundles dependencies of "Everything" target. 2002-10-19 Ludovic Marcotte * We now show all the parents of a child (their nodes) as bold when the child is marked as unread. * Modified some prefs and MailWindowController to send/receive notifications when pref values have changed. Refactored some code in MailWindowController. * Added #ifdef MACOSX102 around Jaguar's AB code * Overwrited the project file so it works on 10.1 * Fixed mem leaks in MailWindowController: -dealloc. We were retaining instead of releasing all table columns! * We now allow columns reordering in the dataView (will save the order, later) 2002-10-12 Ludovic Marcotte * Fixed a small bug with the Delete (now Remove) button in ReceivingExpertView.m * Modified MailWindowController (Private) -_outlineViewShouldReloadData to support sorting. * Added autoresizing support for images in ExtendedTextView: -insertFile. 2002-10-11 Ludovic Marcotte * Refactored some parts of the code (mostly cleaned some FIXME and fixed some UI issues). * Fixed a small bug in ComposeViewController (we weren't doing the layout of the expertView). 2002-10-09 Ludovic Marcotte * Fixed minor little things in previous commit. 2002-10-08 Ujwal S. Sathyam * Initial integration with Apple's AddressBook on MacOS X 10.2. Preference can be set by: defaults write com.collaboration-world.GNUMail ADDRESSBOOK_TYPE 1 Pressing AddressBook button now launches Apple's AddressBook. Saving addresses from messages inserts them into Apple's AddressBook. Drag and Drop from AddressBook to Composer window is not yet implemented. * Added slightly better address auto-completion support in the Composer window. The auto-completion is implemented by a drop-down list provided by an extended NSComboBox. Auto-completion works with both GNUMail.app's built-in addressbook and Apple's AddresBook. * Updated ProjectBuilder project file to include a stub framework to fix a linking problem on MacOS X 10.2 2002-10-08 Ludovic Marcotte * Fixed some littles issues for tableviews in both Sending and Receiving pref bundles. 2002-10-07 Ludovic Marcotte * Added FontsExpertView / FontsView for the Fonts preferences panel. I will commit all other panels in the following hours. Only the UI has been done. Modified the FontsViewController to make use of either the standard or the expert view. Modified the GNUmakefile to include the new FontsExpertView class. * Done the same thing with: - Sending - Receiving - Compose * Done TODO #322. Added a new preference (see docs/PREFERENCES) DEFAULT_MULTIPART_ALTERNATIVE_TYPEE so that it's now possible to specify if we want to favor text/plain or text/html parts in mutlipart/alternative content. 2002-10-05 Ludovic Marcotte * Fixed the MailHeaderCell drawing code under Mac OS X. * Fixed MessageViewWindowTool so that we no longer use the listIndex ivar. * Done TODO #323. We now save the mode (standard/expert) when closing the pref panel and we use that mode when re-opening it. 2002-10-04 Ludovic Marcotte * Fixed a small bug in MailWindowController: -deleteMessage that would generate an index out of bounds exception when using message threading and deleting the last message of the folder. * Improved a little bit MailWindowController (Private) +_outlineViewShouldReloadData. * Modified Utilities: +attributedStringFromHeadersForMessage: showAllHeaders (also added the useMailHeaderCell parameter) to NOT show the MailHeaderCell for message/rfc822 parts of a multipart object but ONLY for the real message. * Adjusted the MailHeaderCell drawing code under GNUstep 2002-10-03 Ludovic Marcotte * Modified MailWindowController: -setFolder so that setting the fromColum to To/From depending on the folder works again. * Applied a small fix in MailWindowController (Private): _objectValueForTableColumn: message: item: just to be sure we have at least one recipient instead of assuming we have at least one. * Done TODO #317. Bound the Delete button. It now marks the selected message as deleted and selects the next one. * Fixed the Next/Previous buttons behaviour in MessageViewWindowController. 2002-10-02 Ludovic Marcotte * Fixed TODO #313. We now colorize properly the first line if it is quoted. 2002-10-01 Ludovic Marcotte * Added some fixes to the message threading code. New messages will now be shown. * Refactored some of the code of FindWindowController and reactivated the find feature IIF you're NOT using message threading. 2002-09-28 Ludovic Marcotte * Modified MailWindowController: -getNewMessages so that we can trap the exception generated by -base when detaching the new thread didn't work. 2002-09-27 Ludovic Marcotte * Fixed a bug in GNUMail: -loadBundles. We were ignore everything except the user's lib dir due to a stupid typo. 2002-09-26 Ludovic Marcotte * Added '?' as a trailing character to exclude in Utilities: + _highlightAndActivateURLs 2002-09-25 Ludovic Marcotte * Modified Utilities: + _highlightAndActivateURLs to not include the trailing "." in the URLs. * Enhanced some more the previous commit in the same method to include "," and "!" and also to add "www." as a parsing "prefix". 2002-09-24 Ludovic Marcotte * Refactored some code in MailWindowController so that adding sorting support and reloading support for the outline view (when being in message threading mode) is easier and more generic to all other classes using the MailWindowController instance. * Added a patch from Stefan Urbanek that replaces setBackgroundColor of NSTextViews from white to textBackgroundColor. * Fixed a typo in NewMailboxPanel.nib (reported by Anders Nasmark ) * Fixed a mem leak in ExtendedCell: -dealloc 2002-09-23 Ludovic Marcotte * Corrected a small bug in MailWindowController: -updateStatusLabel. 2002-09-23 Ujwal S. Sathyam * Removed duplicate entry for ChangeLog from PB project. Hadn't realized that it was already there in the Documentation sub-group. 2002-09-23 Ludovic Marcotte * Modified Utilities: +fontFromFamilyName: trait: size: so that we look for the font that has ONLY this trait, not this trait among others (left the old code for testing reasons for now). * Modified MailboxManagerController: -outlineView: shouldCollapseItem: to close the MailWindowController IIF the folder shown is from this IMAP store and also if we are re-using the MailWindow. * Done TODO #308. Changed every occurences of "Verify on startup.. " for "Check on startup". The pref value VERIFYONSTARTUP was replaced by CHECKONSTARTUP. The old one is no longer used and will be discarded when the prefs will be modified. Suggestion by Tim Harrison. The OS X nib (ReceivingWindow.nib) NEEDS to be updated. * Done TODO #297. We now use NSArray: -initWithArray: copyItems: since it's now in -base and we now require at least GNUstep base 1.5 run GNUMail.app. * Done TODO #311. SHOWALLHEADERS now works again in MailWindowController. 2002-09-22 Ludovic Marcotte * Moved MailWindowController (Private): _launchExternalProgram to Utilities (Private) to prevent a segfault when using an external program to open a specific attachment. Bug reported by Andreas Heppel . * Fixed a bug in the PGP bundle. We now use the charset of the part before writing it to our pipe in order to not get empty data when the content wasn't a pure ASCII stream. * Modified ExtendedWindow.m so that when we press the return key, it acts like a double-click. * Implemented message threading support (NOT FINISHED, TODO #158). Newly received messages won't show up unless you restart the application. Problems will occurs when changing selection in MessageWindow. FindWindow won't work. To activate it do: defaults write GNUMail MAILWINDOW_DATA_VIEW_TYPE 2 To go back to the previous mode, do: defaults write GNUMail MAILWINDOW_DATA_VIEW_TYPE 1 * Updated MailWindow.nib 2002-09-21 Ujwal S. Sathyam * Done TODO #248: We can now drag and drop attachments from Finder and GWorkspace. * Added UI in NewMailboxPanel to specify mbox, maildir, or folder. 2002-09-14 Ludovic Marcotte * Done TODO #261. We now offer a preview of the selected fonts in the Fonts preferences panel. The OS X nib FontsView will have to be updated. * Updated PreferencesWindow.nib and FontsView.nib * Updated (temporarely) PersonalView.nib 2002-09-13 Ludovic Marcotte * Modified GNUMail: -loadBundles so it's now possible to load bundles from domains other than the user domain. This WILL have to be modified to ignore the bundles the user doesn't want to load automatically. * Modified the Personal Preferences bundle, PreferencesWindowController and the bundle interface so that it almost work for standard/expert mode. More work needs to be done. For example, it currently won't save anything if you're using the Standard mode. Also, it won't work under OS X for now. More to come on this later. 2002-09-12 Ludovic Marcotte * Updated the code of the AddressBook to use the new NSBrowser code in GNUstep. We now use the same code under both GNUstep and OS X. * Slightly modified the Personal bundle for the signature selection in order to improve usability. Only the GNUstep UI has been modified. The Mac OS X nib needs to be updated. * Fixed a bug in the PGP bundle. We weren't verifying that the content was really a NSString object for text/plain encrypted or signed messages. Also set the version number to v0.3.0 * Heavily modified the Preferences window (and it's controller) for permitting 'standard' and 'expert' panels. All the current panels are 'expert' panels. This code WILL NOT work under OS X right now. Updates to the nibs need to be done (more to come later on this). 2002-09-11 Ludovic Marcotte * Modified ExtendedOutlineView and ExtendedTableView to return YES for acceptsFirstMouse: 2002-09-10 Ludovic Marcotte * Updated Spanish translation - patch from Quique . 2002-09-09 Ludovic Marcotte * Modified MailWindowController: -initWithWindowNibName: to that we don't try to set the table view row height under OS X. * Fixed a bug from previous commit for TODO #310. We now set back the column header cell to From when we aren't in Outbox or Drafts. 2002-09-07 Ujwal S. Sathyam * Completed previous commit for TODO #310: Rename "From" column to "To" when showing Outbox or Drafts. 2002-09-07 Ludovic Marcotte * Done TODO #310. In Outbox and Drafts folders, show 'To' in the table instead of 'From' 2002-09-07 Pierre-Yves Rivaille * Set the EditWindow's textView resizingMask to NSViewWidthSizable. 2002-09-07 Ludovic Marcotte * Added a patch from Stefan Urbanek to properly set the row height of the table view in MailWindowController: -initWithWindowNibName: depending of the font. * Added a patch from Stefan Urbanek to display the dates in the Date column in the same (local) time zone. 2002-09-06 Ludovic Marcotte * Modified MailWindowController: -deleteMessage so it selects the next message if the delete key is pressed. * Added some TODOs * Added Utilities: +_attributedStringFromTextForPart and refactored the code in Utilities to use that method. +bestRepresentationFromMultipartAlternative now works way better. 2002-09-05 Ludovic Marcotte * Added a patch from D. Marc Stearman to add new key bindings (pageUp, pageDown and space bar) * Updated version numbers. 2002-09-05 Ludovic Marcotte * Set the CVS tag to v1_0_3 * RELEASED v1.0.3 2002-09-04 Ludovic Marcotte * Fixed the GNUmakefile to include Goodies/Welcome * Fixed a bug in MailboxManagerController. We weren't carefully removing the "secure" icon when switching to a non-secure folder. * Modified MainMenu.nib to include the "C" key binding for compacting the current mailbox on OS X * Updated German translation. Patch from Martin Brecher . * Fixed a small bug related to tempnam() on OS X for the PGP bundle. * Modified MailWindowController: -tableViewSelectionDidChange so that we refresh our matrix after showing the message. * Applied a patch from Ujwal to fix a display problem when double-clicking on a message in a mail window not on top 2002-09-03 Ludovic Marcotte * Regenerated the Localizable.strings files for: English French Spanish Swedish (German hasn't been done since it's not using fauxStep.pl) * Updated the French translation * Adjusted the size of some UI elements on GNUstep * Fixed some localization bugs in GNUMail.m * Added some TODO items * Added Alt-Shift-C for compacting the current mailbox (need to add the key binding on OS X) 2002-09-02 Ludovic Marcotte * Updated signed_20.tiff and unsigned_20.tiff 2002-08-31 Ludovic Marcotte * Cleaned a FIXME, documented some methods and refactored some code. * Added some TODO items 2002-08-30 Ludovic Marcotte * Cleaned a FIXME. * Added #import "GNUMailConstants.h" to Face.m and FaceController.m * Cleaned the Face bundle so it works well under OS X * Added the Face bundle to the OS X project file (new Face target, groups and files) 2002-08-30 Ujwal S. Sathyam * Updated MacOS X project file to reflect the names of the new icons. 2002-08-30 Ludovic Marcotte * Fixed an extra issue in the previous commit. With the change made, it was no longer possible to open an other IMAP folder from the same IMAP server if we were reusing the MailWindow. Everything should be fine now. * Modified the following icons: MailIcon_attach.tiff => attach_32.tiff and attach_48.tiff MailIcon_bcc.tiff => add_bcc_32.tiff and add_bcc_48.tiff MailIcon_bcc_remove.tiff => remove_bcc_32.tiff and remove_bcc_48.tiff MailIcon_cc.tiff => add_cc_32.tiff and add_cc_48.tiff MailIcon_cc_remove.tiff => remove_cc_32.tiff and remove_cc_48.tiff MailIcon_send.tiff => send_32.tiff and send_48.tiff MailIcon_stop.tiff => stop_32.tiff and stop_48.tiff * Removed the following icons: MailIcon_box_open.tiff MailIcon_box_transfer.tiff * Modified most .m files to reflect the names of the new icons. NOTE: The OS X project file NEEDS to be updated for the new icons. * Fixed some icons (removed LZW compression and more). 2002-08-30 Ujwal S. Sathyam * Fixed a bug in MailboxManagerController: - (void) openIMAPFolderWithName: store: that was closing the previous folder even if the REUSE_MAIL_WINDOW preference was not set. This caused emails not from the previous mailbox not to be displayed. An additional danger of this was that a subsequent "Compact" of the first mailbox would cause the mbox file to be written with missing messages. 2002-08-29 Ludovic Marcotte * Removed some TODO items that have been completed. * Fixed a bug in Utilities: +replyToSender: folder and Utilities: +replyToAll: folder: since those two methods were generating exception if the profile name wasn't found (so == nil) when we were trying to remove the InternetAddress object for this profile name from the list of recipients. 2002-08-28 Ludovic Marcotte * Done TODO #295. Added a patch from Stefan Urbanek to improve the time/date format of the MailWindow's date column. See docs/PREFERENCES for more informations. * Modified FilterManager so that if the default mailbox for a receiving account has been deleted, we now at least default to INBOXFOLDERNAME so we won't loose the mails being transferred to a non-existent mailbox. * Modified GNUMail: -markMessageAsReadOrUnread so that when we mark the messages as read / unread, we refresh our status label in the last mail window on top and also our outline view in the MailboxManager. * Refactored some code in GNUMail.m * Fixed Utilities: +attributedStringFromContentForPart: We now use the message's encoding from the charset instead of always using (and wrongly) NSASCIIStringEncoding. * Removed the current icons from the PGP bundle and replaced them with a 20x20 and 48x48 version. Modified the code to use the new icons. * Updated the OS X project file for the PGP bundle (new icons). * Fixed a typo in Utilities: +attributedStringFromHeadersForMessage: showAllHeaders: that was preventing the HEADER_VALUE_FONT_SIZE from being used. * Done TODO #275. Fixed the font issues when first starting up GNUMail.app. The font panel would set the fonts to Lucida 8 on OS X which is WAY TOO small. Changed to 10 so now things are perfect. 2002-08-26 Ludovic Marcotte * Added a TODO. * Fixed a memory leak in FilteringViewController: -duplicate:. * Fixed -copyWithZone: for the Filter and for the FilterCriteria classes. * Fixed some bugs in MailboxManagerController where we were wrongly assuming that the lastMailWindowOnTop (it's controller) was an instance of MailWindowController. * Modified MailWindowController and MessageViewWindowController so that when we close a MailWindow or when we change the folder (if we reuse a MailWindow and we select an other folder in the MailboxManager), we now automatically close all MessageViewWindows that have been opened for messages of this specific folder. * Fixed a stupid mistake in previous commit. 2002-08-25 Ludovic Marcotte * Modified MailWindowController to set the matrix cell size to 20x20 on OS X * Ported the GPG bundle to OS X. Added the nib and did some modifications to the controller classes so that everything works well. EditWindowController was heavily modified to so that _loadAccessoryViews can position the view coming from the bundle properly in the toolbar. Added two new ivars to make everything dynamic. * Added the PGP target to the OS X project file. It is NOT included in the "Everything" target. * Added PGPView.nib * Minor refactoring in some classes (Utilites.m and EditWindowController.m) * Modified PreferencesWindowController so that all cells added because of bundles in the NSMatrix have the same properties as the other "default cells". * Modified PGPController so that the NSButton objects we return on OS X are smaller than their GNUstep variant. 2002-08-25 Ujwal S. Sathyam * Utilities.m: Fixed a bug in showMessage:target:showAllHeaders where the code was assuming the [lastWindowOnTop delegate] was a MailWindowController and hence calling the MailWindowController:-tableView directly. Now checking class of window delegate. * Utilities.m: Fixed a bug in _highlightAndActivateURLs: The code was looking for URL types in the message string serially, i.e. it would fail to detect a mixed set of URL types, "https://" coming before "http://" where the "https://" URL would occur before the "http://" URL. Now we have an array of URL types that we walk through and scan for in the message body. More expensive, but has to be done. 2002-08-25 Ludovic Marcotte * Small enchancements to the GPG bundle so that we also parse the status-fd if the exit code > 0. More improvements need to be done there. * Modified MailWindowController to set the matrix cell size to 20x20 on OS X * Ported the GPG bundle to OS X. Added the nib and did some modifications to the controller classes so that everything works well. 2002-08-24 Ludovic Marcotte * Modified PGPController so we handle sigs that have expired. * Modified the bundle interface to allow 3 types of viewing bundles: ViewingViewTypeToolbar ViewingViewTypeStatusBar ViewingViewTypeHeaderCell Some cleaning needs to be done for ViewingViewTypeToolbar on OS X and ViewingViewTypeHeaderCell (and also the Face bundle that use that one). * Modified a lot of code so that the new bundle interface works. * Modified the code of all bundles (PGP,Clock and Face) to use the new interface. ALL THOSE BUNDLE *** MUST *** BE RE-INSTALLED. * Updated the version number of the OS X port * Added the matrix in the MailWindow and connected the outlet to the controller. Modified the controller to initialize the matrix to the right cell prototype. * Fixed the MailHeaderCell drawing artifacts on OS X. * Added NSToolbar support in EditWindow and made some little modifications all over the place. * Added NSToolbar support in BounceWindow * Fixed autoresizing properties of some UI elements in EditWindow.m * Set the custom class of the window to ExtendedWindow in MessageViewWindow.nib * Fixed all references to the "delete.tiff" icons in all nibs. * Done TODO #284. When showing the content-type header, we also show the charset since it has been 'removed' by Pantomime during the decode operation. * Minor optimization in MailHeaderCell: _fold. 2002-08-23 Ludovic Marcotte * Made MessageViewWindow a subclass of ExtendedWindow and implemented -firstMessage and -lastMessage in the controller class. We still need to set the custom class of the NSWindow to ExtendedWindow in the OS X nib. * Cleaned some FIXMEs and re-activated GNUMail: -getNewMessages: More work needs to be done in GNUMail: -updateGetNewMailMenuItems: to use the UNIX accounts. * Modified Utilities: +showMessage: target: showAllHeaders: to refresh properly the table view of the last mail window (or message window) on top so that if an unread mail was read, we refresh the specific row of the table view since it was marked as unread. 2002-08-22 Ludovic Marcotte * Added a couple of TODO entries. * Made the EditWindow resizable under GNUstep. * Reactivated the verifyOnStartup feature for POP3 accounts. 2002-08-21 Ujwal S. Sathyam * MessageViewWindowController.m: -dealloc: Commented out [[self window] setToolbar: nil] for MacOS X. Does not seem to a source of crash as we initially suspected. 2002-08-20 Ludovic Marcotte * Changed all calls from bzero() to memset(). 2002-08-18 Francis Lachapelle * Added Icons/down_15.tiff and Icons/up_15.tiff for Mac OS X version. * Changed navigation NSView in MailWindow and MessageViewWindow nibs. 2002-08-18 Ludovic Marcotte * Added Icons/show_all_headers_48.tiff from Banlu Kemiyatorn . _32 needs to be done and added to the OS X version. * Modified MessageViewWindow.m to use this icon. * Updated UNIXView.nib and ReceivingView.nib * Added Icons/show_all_headers_32.tiff * Added the "Show All Headers" toolbar item in the MessageViewWindow category. 2002-08-17 Ludovic Marcotte * Enhanced a lot the GPG/PGP bundle. Introduced a way to verify --status-fd so we can now safely add more error-handling code. * Refactored the code in MailHeaderCell a little big and also fixed some minor annoyances in MailWindowController/ReceivingView. 2002-08-16 Ujwal S. Sathyam * Removed delete_20.tiff from PB project on MAcOS X. * Fixed crash in MailWindowController: -dealloc. Not setting toolbar to nil. * MessageViewWindowController.m: Changed AutoSaveName from ViewMailWindow to MessageViewWindow to match nib file. 2002-08-16 Ludovic Marcotte * Modified the GNUmakefile, MailWindow.m and MailboxManager.m to use the new icon names. * Done the same thing in MessageViewWindow.m * Fixed a crash bug in MessageViewWindowController when removing the observer and fixed a potential bug (same problem) in MailWindowController. * Small icon fix in MailWindowController.m * Did some refactoring in Utilities.m * Fixed the addresses icon problem in EditWindow.m and BounceWindow.m * Modified quite a lot the source code so that we now make use of the default "receiving mailbox" once can specify in the receiving preferences window for POP3 and for UNIX accounts. * Fixed the pipe handling in PGPController.m so we can now encrypt big files! 2002-08-15 Francis Lachapelle * Renamed following tiff files: delete.tiff => delete_20.tiff MailIcon_box_delete.tiff => delete_32.tiff MailIcon_delete.tiff => delete_48.tiff MailIcon_retrieve.tiff => retrieve_48.tiff MailIcon_create.tiff => create_48.tiff MailIcon_mailboxes => mailboxes_48.tiff MailIcon_addresses.tiff => addresses_48.tiff MailIcon_reply.tiff => reply_48.tiff MailIcon_forward.tiff => forward_48.tiff Magnifier.tiff => find_48.tiff MailIcon_box_add.tiff => mailbox_add_32.tiff MailIcon_box_rename.tiff => mailbox_rename_32.tiff MailIcon_box_copy.tiff => mailbox_copy_32.tiff MailIcon_box_move.tiff => mailbox_move_32.tiff * Added following tiff files: create_32.tiff mailboxes_32.tiff retrieve_32.tiff addresses_32.tiff reply_32.tiff forward_32.tiff find_32.tiff 2002-08-15 Ludovic Marcotte * Added [[self window] setToolbar: nil]; in MailWindowController: -dealloc. * Added a mailHeaderCell ivar (and an accessor) to MailWindowController and MessageViewWindowController to fix the resize issue we had using a singleton for that class (MailHeaderCell). 2002-08-13 Francis Lachapelle * Updated MailboxManager NIB with newest controller header file. * Added NSToolbar under Mac OS X for MailWindow. * Resized icons MailIcon_delete.tiff, MailIcon_forward.tiff, and MailIcon_reply.tiff. * Updated ProjectBuilder project file. 2002-08-13 Ludovic Marcotte * Modified MailboxManagerController: -dealloc so that under OS X we set the window's toolbar to nil to prevent the window from trying to use released objects in -update when closing. * Did the same thing in MessageViewWindowController: -dealloc. * Modified MailWindowController and MailboxManagerController so that we also set the bg color of the table/outline view's scrollview. NOTE: The new scrollView outlet in MailboxManagerController needs to be connected in IB under OS X. 2002-08-12 Ludovic Marcotte * Modified MailboxManagerController.m so that we can now change the background color of the outline view by using the MAILBOXMANAGER_OUTLINE_COLOR preferences key. See docs/PREFERENCES for details. 2002-08-11 Ludovic Marcotte * Renamed MOVES_MESSAGE to MOVE_MESSAGES in MailboxManager.m 2002-08-11 Francis Lachapelle * Added NSToolbar under Mac OS X for MailboxManager and MessageViewWindow. 2002-08-10 Ludovic Marcotte * Modified GNUMailConstants.h to define the NSDebugLog variadic macro. * Modified the OS X project file to use --traditional-cpp. * Added the NSUserDefaultsExtensions category files to the OS X project file and also fixed a bug in the FRAMEWORK_SEARCH_PATHS. * Added docs/PREFERENCES. This document contains informations about GNUMail.app's extra preferences that you can set using the "defaults" tool. * Added a patch from Nicolas Roard for Utilities: +_quoteMessageContentFromAttributedString: to support coloration depending on the quoting level. You can modify the quoting colors by chaning the QUOTE_COLOR_LEVEL_{1,2,3,4} default values. See docs/PREFERENCES for more informations. * Modified MailHeaderCell so that we can now set the background color of the cell using the new user's default MAILHEADERCELL_COLOR. See docs/PREFERENCES for details. 2002-08-09 Ludovic Marcotte * Added Utilities: +clickedOnCell: inRect: atIndex: and refactored MailWindowController and MessageViewController to use this method. * Added a "Show/Hide All Headers" button in MessageViewWindow. More work needs to be done here (the nib, an icon to make, and also a small bug to fix). * Refactored some code. * Added NSUserDefaultsExtensions to provide -colorForKey and also setColor: forKey: * Modified MailWindowController: -initWithWindowNibName to set te table background color, if defined. You can easily set it by using, under GNUstep for example: defaults write GNUMail MAILWINDOW_TABLE_COLOR "0.850980 0.737255 0.576471" to have a nice "salmon" table background color. 2002-08-08 Ujwal S. Sathyam * Utilities.m: When doing a "Reply To All" on a message, original recipient is taken out of the recipient list. This is done by matching recipient list against the profile address. 2002-08-08 Ludovic Marcotte * Minor fixes in Utilities.m and MailHeaderCell.m so that the cell gets drawn properly. * Fixed the mem leak and we now remove the observer on the MailHeaderCell object. * Replaced all NSLog() calls for NSDebugLog(). If you want those messages, just do: openapp GNUMail.app --GNU-Debug=dflt under GNUstep. I need to implement NSDebugLog() on OS X. * Modified Utilities: +attributedStringFromHeadersForMessage: showAllHeaders: so that if we are showing all headers and we have some Resent-* headers, it won't bork. 2002-08-08 Ludovic Marcotte * Modified MailHeaderCell.m to import GNUMailConstants.h * Modified the OS X project file to include the new MailHeaderCell class. This class currently does NOT work under OS X. 2002-08-07 Ludovic Marcotte * Modified GNUMail: -applicationDidFinishLaunching so that if the user default OPEN_MAILBOXMANAGER_ON_STARTUP exists and is equal to YES, we automatically open the mailbox manager's window upon GNUMail.app's startup. To activate this, simply type: % defaults write GNUMail OPEN_MAILBOXMANAGER_ON_STARTUP YES * Added a new class - MailHeaderCell so that we now do our own cell rendering for headers. Patch from Nicolas Roard heavily modified by me. 2002-08-06 Ujwal S. Sathyam * When replying to or forwarding a message, GNUMail.app tries to guess the appropriate personal profile to use. It does this by scanning the recipients of the message and comparing that to the email address stored for each personal profile. 2002-08-05 Ludovic Marcotte * Fixed the bug where trying to re-open an IMAP folder when reusing the MailWindow would lead to an error ("Must select a valid mailbox..."). * Modified MailboxManagerController: -outlineView: shouldCollapseItem: so that we verify that our IMAP store is connected before trying to close the connection. 2002-08-04 Ludovic Marcotte * Modified MailWindowController: -setFolder to set the delegate on the IMAPFolder. Also implemented IMAPFolder's delegate method (newMessagesWereReceived:) so that we are now notified directly by the IMAPFolder object when new messages were received. * Fixed a bug in PersonalViewController.m. When deleting a profile, the content of the deleted profile was replacing the newly selected profile. 2002-08-03 Ludovic Marcotte * Modified TransportMethodEditorWindowController: -supportedMechanismsButtonClicked so that we use the SMTP port value defined in the textfield instead of assuming it's always 25. * Done TODO #274. Added a patch from Vincent Ricard (modified by myself) to provide a "Save All Attachments" option from the menu. * Modified IMAPViewController so that we prompt for the password if it hasn't been defined in the password secure field. 2002-08-01 Ludovic Marcotte * Modified PGPController: -_decryptPart:... so that we do NOT ask for the passphrase signed messages (only signed). 2002-07-31 Ludovic Marcotte * Modified MailWindowController.m to show a message in the Console when noop'ing an IMAP folder. * Modified PGPController: - _decryptPart: ... so that we first verify if the outFilename exists before trying to do anything with it! * Fixed a bug in GPController: - _decryptPart: ... when we were decoding only signed messages * Refactored some code to use Pantomime's get/set methods for extra message properties and fixed some minor bugs. 2002-07-30 Ludovic Marcotte * Added the charset label/popup button back in EditWindow. Modified the controller class to set the width of the new window to 750 instead of 650 (and also modified the dynamically ajusted widths of most UI elements). 2002-07-29 Ludovic Marcotte * Modified GNUMail/GNUMailBundle.h to add -messageWasEncoded: * Added Bundles/PGP/clear.tiff, encrypted.tiff, signed.tiff and unsigned.tiff * Modified EditWindow to remove TEMPORARILY the label/combo for selecting the charset * Added EditWindowController: _loadAccessoryViews * Modified EditWindowController: -updateMessageContentFromTextView to notify our bundles when message encoding is done * Implemented the first 'version' of the PGP bundle! 2002-07-26 Ludovic Marcotte * Added Bundles/Face (for X-Face / X-Image-URL support) 2002-07-16 Ludovic Marcotte * Modified MailWindowController: -setFolder so that we don't call -close on the folder if it is an IMAPFolder. * Modified MailWindowController: -tableView: objectValueForTableColumn: row: so that we now use the user default's MAILWINDOW_DATE_FORMAT when creating the description of the date. By default, it'll show a date like "Jul 16 2002" but one can easily change it using the "defaults" tool like: defaults write GNUMail MAILWINDOW_DATE_FORMAT "%b %d %Y %I:%M %p" * Added MailboxManagerController: -outlineView: shouldCollapseItem: so that we now prompt the user if he/she wants to close the IMAP connection to the server when collapsing the node of the latter. * Removed some done TODO items. 2002-07-13 Ujwal S. Sathyam * Fixed a bug in MailWindowController.m that caused a crash when closing an IMAP connection. Caused by referencing a released NSString object while posting a notification. * MessageViewWindowController.m: No longer repainting message when window becomes key. Not necessary. This eliminates annoying visual glitches of message scrolling back to top whenever window was brought to top. 2002-07-11 Ludovic Marcotte * We no longer set the max width of the Date table column in MailWindow.m 2002-07-10 Ludovic Marcotte * Added some #defines to LocalMailDelivery so things will properly compile under Solaris. 2002-07-06 Ujwal S. Sathyam * Moved showRawSourceLogic to from GNUMail.m to Utilities.m so that state for each open window is remembered correctly. * When a new mailbox is opened (local or IMAP), its window becomes key. 2002-07-05 Ujwal S. Sathyam * MailWindowController.m: Displaying time in the Date column. 2002-07-02 Ludovic Marcotte * Simplified the logic in ViewingViewController (for handling the DOUBLECLICKACTION pref value) and fixed a simple bug. * Fixed a bug the would prevent a user to reuse a MailWindow when trying to open an other folder on the same IMAP store. 2002-07-01 Ludovic Marcotte * Updated docs/WHOIS, docs/README and the GNUMailInfo.plist * Modified GNUMail.m and PreferencesWindowController.m so that we no longer show the Preferences panel in the modal loop. * Modified BounceWindowController and EditWindowController so that we properly exit the exception handler in case of a wrong SMTP password. This fix a crash bug when sending a mail using SMTP AUTH while specifying a wrong password. * Fixed a bug in ReceivingViewController. We no longer remove the volatile domain on OS X. This fixes a crash bug when deleting a receiving account. * Modified Utilities: +loadTransportMethodsInPopUpButton so that we include the profile name in the value of the popup to avoid index errors in EditWindow/BounceWindow. Suggestion/bugfix from Marco Steinbach . * Added Utilities: +fontFromFamilyName: trait: size: and refactored a lot of code in Utilities to use this new method. This should fix all font issues in GNUMail.app. 2002-06-30 Ujwal S. Sathyam * GNUMail.m: fixed a few methods that were assuming last window on top was a MailWindowController. It could also be a MessageViewController. 2002-06-30 Ludovic Marcotte * Removed IMAPMailWindow* and LocalInboxWindow* and put all the logic in MailWindowController. * Modified quite a lot the receiving preferences. Removed the "Mail spool file" options and added a UNIXView to the ReceivingWindow. * Removed NSRegExRange since we now use NSValue instead of this class. * Removed all UI elements related to the mail spool file selection in ReceivingView (moved to UNIXView) and moved all the logic from ReceivingViewController to UNIXViewController. * Removed IMAPMailWindow.nib and LocalInboxWindow.nib * Integrated some work done by Ujwal S. Sathyam . Moved a lot of methods from MailWindowController to Utilities. MessageViewWindowController: new class by Ujwal so that we can "see" a message in a separate window (when double-clicking on it) MessageViewWindow.nib: new nib from Ujwal MessageViewWindow: new class from me for GNUstep Modified ViewingView/ViewingViewController/ViewingView.nib to allow the user to specify its pref on double-click. Refactored some code in GNUMail (the class) so that most methods (like showRAWSource, etc) will work with the new MessageViewWindowController class. * Updated the OS X project file. * Updated MailWindow.nib * Updated MailboxesView.nib * NOTE: THE WORK ISN'T FINISHED AND IT IS NOT RECOMMANDED TO CURRENTLY USE THIS CVS VERSION. 2002-06-20 Ludovic Marcotte * Updated the GNUMailInfo.plist * Added UNIXView.nib and updated the OS X project file, POP3View.nib and ReceivingWindow.nib. 2002-06-18 Ludovic Marcotte * Done TODO #278. If the URL has a > suffix, we strip it. 2002-06-17 Ludovic Marcotte * Added the concept of "UNIX" receiving accounts. Currently not used but, saved and restored properly from the defaults. * It's now possible to specify in which mailbox you want to transfer (by default) your emails from a POP3 account. Currently not used but, saved and restored properly from the defaults too. 2002-06-16 Ludovic Marcotte * Connected the missing "showAllHeaders" outlet in MainMenu.nib * Modified TransportMethodEditorWindow.nib to include the port field. 2002-06-15 Ludovic Marcotte * Modified TransportEditorWindow* so that it's now possible to specify the port for a SMTP transport method. * Modified EditWindowController and BounceWindowController to make use of the SMTP port, if defined. * Modified GNUMailConstants.m to change the version number to 1.0.3. 2002-05-30 Ludovic Marcotte * Set the cvs tag to v1_0_2 * RELEASED v1.0.2 2002-05-29 Francis Lachapelle * Replaced alert message in MailboxManagerController -openLocalFolderWithName by showing the proper window. 2002-05-29 Ludovic Marcotte * Fixed two small mem leaks in BounceWindowController. We were not releasing our SMTP or Sendmail object. * Removed all invalidate calls in EditWindowController and BounceWindowController. 2002-05-25 Ludovic Marcotte * Commented out all calls to [NSThread exit]. * Added a patch from Vincent Ricard so TODO #275 (setting the port value in ReceivingWindow to a "good" value depending if SSL is activated) is done. * Fixed a typo in GNUMail.h/.m (ExtendedMenuItem instead of ExtentedMenuItem) * Modified ReceivingWindow.nib to link the action of the "Use SSL checkbox" to -sslClicked. * Fixed some bugs in PersonalViewController and two memory leaks. 2002-05-24 Pierre-Yves Rivaille * MailWindowController.m : Fixed a typo ("," instead of ";"). 2002-05-24 Ludovic Marcotte * Fixed a small mem leak in EditWindowController and refactored some code. * Modified GNUMail: -applicationWillFinishLaunching so that we don't set th application icon on OS X. 2002-05-23 Ludovic Marcotte * Minor enhancements to invalidate correctly NSPort objects. * Modified MailboxManagerController: -transferMessageFromRawSource: ... so that we not only verify if theRawSource is nil but also if its length > 0. * Modified GNUMail: -cut so that we don't mark the messages as transferred if the previous copy operation failed for at least one message. * Connected the missing icon outlet in BounceWindow.nib 2002-05-22 Ludovic Marcotte * Modified MailboxManagerController: -transferMessageFromRawSource: ... so that when we obtain the folderForName for an IMAP store, we don't select the folder. * Added an extra check in this method so that if the rawSource is nil, we immediately return NO. Also modified GNUMail: -applyManualFilter so that if we failed at transferring the message, we won't mark it as transferred. 2002-05-21 Francis Lachapelle * Fixed autosizing of FilterEditorWindow.nib * Fixed target of GNUMail.framework in Project Builder file 2002-05-21 Ludovic Marcotte * We now use an exception handler when invalidating ports/connection in LocalInboxWindowController. Exceptions seem to be generated sometimes under GNUstep for no good reasons. * We do the same thing when invalidating the NSConnection object in the threads. * We now properly set the raw source of our message in FilterManager: -matchedURLNameFromMessageAsRawSource: type:. * Fixed a couple of lame errors in GNUMail.m when we were converting the old defaults to the new ones for *FOLDERNAME defaults. 2002-05-20 Ludovic Marcotte * Made LocalInboxWindowController: _matchFilterRuleFromRawSource: connection: thread-safe. * Moved the code to inform the user about transferred messages from filters from -messagesWereReceived to -threadWillExit (in LocalInboxWindowController). * LocalInboxWindowController: -messageWasReceived: forURLName: is no longer one way. * Modified MainMenu.nib so that we show "Hide GNUMail" instead of "Hide NewApplication" in the app menu. * Modified all nibs to make use of small scrollbars. * Fixed FindWindow.nib. No outlets were connected nor actions specified! 2002-05-19 Ludovic Marcotte * Modified FilterManager: - _messageFromExternalProgramUsingFilter: message: so that we don't wait until the task has ended its execution. See the comment in the code. * Fixed a small bug in MimeTypeManager while getting the best MIME type for a file extension (we weren't verifying if we had an extension!). 2002-05-18 Ludovic Marcotte * Refactored a lot of code that was initializing a target mailbox on an IMAP server to always use Utilities: +storeForURLName. * Fixed a bug when renaming folders (local or IMAP). We weren't anymore renaming the target mailbox for filters. * Fixed a typo in Utilities: +initializeLocalAndIMAPFolderNodes (in the method name) and updated the code that was using this method. 2002-05-19 Pierre-Yves Rivaille * LocalInboxWindowController.m : call expunge before calling close on a folder. removed folder cleaning code from _transferMessagesFromPOP3Folder 2002-05-18 Ludovic Marcotte * Fixed a crash bug if we were getting mails only from one server. 2002-05-17 Ludovic Marcotte * Reactivated the functionnality in GNUMail: -applyManualFilter. The code will work well except if you have a DELETE action on your filter. It currently won't do anything for this. 2002-05-16 Ludovic Marcotte * Added a patch from Chris B. Vetter so that GNUMail: -checkForUpdates works under GNUstep. * Increased the request/reply timeouts in LocalInboxWindowController to a full day instead of five minutes (on GNUstep). * We now correctly invalidate the ports we use and release the connection we create in the threads in LocalInboxWindowController. * We now invalidate the connection created in the thread before releasing it in BounceWindowController and EditWindowController. * Modified LocalInboxWindowController: -getNewMessages so that we call -threadWillExit if the [allKeys count] >= 1 and not > 1. 2002-05-11 Ludovic Marcotte * Added tooltips to some of the UI elements in the Preferences Panel. Work done by me and Georges Tabouriech. * Fixed some bugs in the ReceivingView.nib. 2002-05-10 Ludovic Marcotte * Modified LocalInboxWindowController to fix the mem leak of NSPort and NSConnection objects. 2002-05-09 Francis Lachapelle * Added menu option to fetch messages from the local mail spool file if defined by user. * Threaded the POP3 accounts fetching in LocalInboxWindowController. * ReceivingViewController: The verification for an active connection when editing an incoming mail server account is now performed before the editing window is shown. The verification is now also perfomed when deleting an account. * Added support for the "Close" menu item. 2002-05-09 Ludovic Marcotte * Minor UI improvements in TransportMethodEditorWindow. * Refactored the code in EditWindowController and BounceWindowController to manage the PantomimeStopException quite well. * Did the same thing to LocalInboxWindowController. * Added a bugfix for POP3 accounts that we wanted to verify mails on startup. * Fixed a mem leak in EditWindowController and BounceWindowController by moving the creation of the NSConnection object just before the thread and we now invalidate and destroy the NSConnection when the thread is about to exit. 2002-05-08 Francis Lachapelle * Changed MailIcon_retrieve.tiff * Updated Project Builder file. * Fixed some errors under OS X with ReceivingWindow (nib and controller). * Improved MailboxesView.nib. 2002-05-08 Ludovic Marcotte * Fixed FilterManager: -matchedFolderNameFromMessage: type: to expect URLName and no longer just folder names for the name of the folders for the target filters. * Refactored the filter code (and parts of the code that was using it!) to support IMAP folders as targets for filters. * Added a fix to GNUMail: -applicationDidFinishLaunching due to the recent changes for INBOXFOLDERNAME that is now a URLName string and no longer simply the name of the folder (and we were assuming that it was local only). * Removed the option to transfer deleted mail to a trash folder when compacting an IMAP folder. * Modified EditWindowController: -_updateSizeLabel to show the number of chars in an E-Mail. Suggestion from George Lippert . * Modified EditWindowController: -_replaceSignature to update the status label after changing the signature. * Updated IMAPView.nib * Updated EditWindow.nib to make the size label larger 2002-05-07 Ludovic Marcotte * Added some more ConsoleWindow messages. * We now right-align labels in EditWindow. * Added a new Preferences panel - Mailboxes. It allows the user to graphically select which mailbox he/she wants to use as the default Inbox/Outbox/Drafts/Trash. Also moved the "Compact Mailbox on close" option from the Receiving Preferences panel to this one. More work needs to be done. It actually doesn't save the selection and also doesn't show the IMAP mailboxes. * Minor refactor in Utilities.m * Fixed some minor UI issues in FindWindow. * Added the class FolderNodePopUpItem. * Refactored A LOT of code to implement the new Mailboxes Preferences panel. Moved a lot of code from FilterEditorWindowController to Utilities so we can use it in MaiboxesViewController. More changes will be commited soon to ensure maximum stability. You SHOULD NOT use your filters for now. * Added the FolderNodePopUpItem class to the OS X project file. * Added MaiboxesView.nib and modified the OS X project file to include the Mailboxes target (new). * Modified FilterEditorWindow.nib and PreferencesWindow.nib * Updated ReveivingView.nib * Modified all classes that were posting distributed notifications to store the console message in the userInfo dictionary instead of using the object parameter since on OS X, it doesn't work. * Modified the OS X project file to include the Mailboxes target in the "Everything" target * Improved the stability of MailboxesViewController and FilterEditorWindowController. 2002-05-06 Francis Lachapelle * Added list of incoming mail servers in menu "Get New Mail". Not fully implemented yet. 2002-05-06 Ludovic Marcotte * Very minor modifications in MailWindowController that could lead to memory leaks in case of weird errors. * Fixed a segfault in EditWindowController: -_replaceSignature. We were autoreleasing an autoreleased object. This bug would occur if your signature was from the content of a file. * Added two new icons: Magnifier.tiff and MailIcon_mailboxes.tiff. Those two icons come from YPMail.app which in turns, comes directly from NeXT's Mail.app as far I can tell. There might be some copyright issues. If we had some, we'll just remove them :-) * Re-implemented entirely GNUMail: -restoreDraft. We can now fully restore draft messages from IMAP or Local folders. * Added more debugging output used in the ConsoleWindow. * We now sort the items in the "Get New Mail" menu. * Added GNUMail: -showAboutPanel that is only compiled and used on OS X. * Modified MainMenu.nib to use the new -showAboutPanel method and also to link missing outlets. * Again, added more debugging output used in the ConsoleWindow. 2002-05-05 Ludovic Marcotte * Updated ReceivingView.nib * Added an #ifndef MACOSX in ReceivingViewController: -updateServersList since removing the volatile domain was causing a segfault on OS X. Also added this #ifndef in PreferencesWindowController: -initWithWindowNibName. * Updated FilterEditorWindow.nib * Modified slightly FilterEditorWindow.m to align some widgets. * ReceivingWindow and it's views are now fully resizable under GNUstep. 2002-05-04 Ludovic Marcotte * Modified ReceivingView/ReceivingViewController and LocalInboxWindowController to allow the user to show or not show the "No New Messages" alert panels shown after we have verified for new messages on a POP3 server and none are new. The new user's preferences value is: SHOW_NO_NEW_MESSAGES_PANEL. * We now use a local autorelease pool in FilterManager: -matchedFilterForMessage and -matchExistsForFilter: message: * Modified IMAPView/IMAPViewController so that the double click action on the outlineview initiates a subscribe/unsubscribe operation. * Modified ReceivingWindow so that it is resizable. More work needs to be done to IMAPView and POP3View. * Reworked A LOT filter manager so that we can now use the 2nd and the 3rd criterias. * Optimized drastically EditWindowController: -_plainTextContentFromTextView. * Fixed a bug in EditWindowController: -updateMessageContentFromTextView:. We were NOT setting the Content-Transfer-Encoding to NONE when setting the Content-Type to @"multipart/mixed". This would cause a problem when fowarding a plain/text message using QP and then after inserting a attachment. Pantomime will QP encode everything, even the base64 encode parts - thus generating a borken message. * Also optimized drastically EditWindowController: -updateMessageContentFromTextView. * Modified EditWindowController, BounceWindowController and EditWindowController to allow to handle "properly" a stop transfer request from the user. More work needs to be done. * Modified MailboxManagerController: -openIMAPFolderWithName: store: to show a wait panel when opening an IMAP folder. NOTE that more commits are to come to MAKE THINGS MORE STABLE. 2002-05-03 Ludovic Marcotte * Modified ALL filtering related classes to add support for an external program to process the received mails and also to support up to 3 criterias. More work needs to be done ( criteria 2 & 3 are ignored for now, we only process the mail before the criterias are applied, etc..) but the good core is there now. 2002-05-03 Francis Lachapelle * Modified PreferencesWindowController.m, ReceivingViewController.m, ReceivingWindowController.m, TransportMethodEditorWindowController.m, PersonalViewController.m so that absolutely NO preferences are written if the user cancels his/her modifications. * Modified ReceivingWindowController.m so that it's no longer possible to modify a server for which there's an active connection. 2002-05-02 Ludovic Marcotte * Removed Utilities: +xCoordOfViewAfter: withSpace: and Utilities: +yCoordOfViewBelow: withSpace: viewHeight: * Removed RAWSourceWindow / RAWSourceWindowController since we now display the raw content of the message in the text view used to display the decoded message. * Added the possibility to have the Drafts/Outbox/Trash folders on an IMAP server. Modified a ton of classes to allow this and refactored some code. There's still some work to do for restoring messages from the Draft folder on an IMAP server (Restore Draft is currently 'disabled') and the filters won't work for a Trash folder on an IMAP server (for now). * Removed English.lproj/RAWSourceWindow.nib * Updated the OS X project file to remove references to the RAWSourceWindow.nib/RAWSourceWindowController class. * Fixed a small bug in GNUMail: -showRAWSource. We now enforce a fixed pitch font. 2002-05-01 Ludovic Marcotte * Added a new option in the filtering window to be able to verify if From/To/Cc/To or Cc is in the address book and do a specific action depending on that. * Added a Show Read / Hide Read menu item in the Mailbox and modified the GNUMailConstants and GNUMail classes to implement the desired behavior. * Modified ViewingView/ViewingViewController/MailboxManagerController so that it's now possible to specify if we want to hide or show the read messages when we open a folder (by default). * Added ConsoleWindow.nib and also added the ConsoleWindowController class to the OS X project. * Modified MainMenu.nib and ViewingView.nib to add the new options. * Modified AddressBookWindow, AddressBookController and some other classes in order to provide a LDIF import filter. We now support OPENSTEP Mail.app and LDIF. Refactored some code so everything works better. * Updated AddressBookWindow.nib 2002-05-01 Francis Lachapelle * Modified ReceivingWindowController: -okClicked: If a server name or username is changed, the associated cache files are now renamed. 2002-04-30 Ludovic Marcotte * Added the ConsoleWindow/ConsoleWindowController classes. This is the initial implementation of the GNUMail.app Console. 2002-04-28 Ludovic Marcotte * Added EditWindowController: -_adjustNextKeyViews and we now use this method on both GNUstep and OS X. * Modified EditWindow.nib to set the next key view of the subject field to the content of the message (the text view). 2002-04-27 Ludovic Marcotte * Completely rewritten the Fonts Preferences panel. Needs some optimizations - especially since NSPopUpButton under GNUstep is *very* slow. * Changed the version number to 1.0.4 in GNUMailConstants.m * Updated FontsView.nib and modifed FontsViewController. so it works better under OS X. * Adjusted ComposeView.m so that the charset popup is bigger. 2002-04-26 Ludovic Marcotte * Set the CVS tag to v1_0_1 * RELEASED v1.0.1. 2002-04-26 Erik Daln * Updated Swedish translation 2002-04-25 Francis Lachapelle * Improved behaviour of MailboxManager when opening mailboxes. * Modified MailWindowController: -deleteMessage to update the cache when deleted messages are not visible. * Modified GNUMail: -showOrHideDeletedMessages to update the status bar. * Improved addressbook to/cc/bcc icons. * Improved AddressBook.nib, MimeTypeEditorWindow.nib. 2002-04-25 Ludovic Marcotte * Updated Spanish translation. Patch from Quique . * Modified ReceivingWindowController (and IMAPViewController) to set the default fetching delay to 1 minute instead of 10 minutes for IMAP connections. * Commented some NSLog() calls. * Modified GNUMail: -showAllHeaders to use [mailWindowController allMessages] instead of [[mailWindowController folder] allMessages] to fix a problem when deleted messages are hidden. * Done the same thing in GNUMail: -markMessageAsReadOrUnread. * Fixed some errors in FilterEditorWindow.nib * Improved the UI of the Address Book. * Fixed a bug in FilteringViewController. We don't draw the cell bg color if the filter's action isn't SET_COLOR. * Changed the custom class in FilterView.nib for the table view. * Fixed a bug in the Sending bundle. We verify if the password isn't nil before setting the value to the text field. 2002-04-24 Francis Lachapelle * Added backspace key support in ExtendedWindow for Mac OS X. * Improved DnD support over the MailboxManager. * Fixed columns order in IMAPView nib. 2002-04-24 Ludovic Marcotte * Changed the icon in the PasswordPanel from a NSButton to a NSImageView. * Added an icon in NewMailboxPanel. * Added an icon in NewPersonalProfilePanel. * Renamed MailWindowController: -showSizes / -setShowSizes to -showStatusBar / -setShowStatusBar and also the ivar showSizes to showStatusBar. * Fixed a bug in MailboxManagerController: -delete. We remove the IMAP cache files IIF the Store is an IMAPStore. This fixes a segfault we were getting when deleting a LocalFolder. * Fixed the (c) notice in ExtendedTableView. * Regenerated the Localizable.strings files for English and French. * Fixed missing outlet connection in MainMenu.nib * Fixed IMAPMailWindow.nib (set the ExtendedTableView custom class and the autoresizing masks on the "lock" icon). 2002-04-23 Francis Lachapelle * Filtering bundle: renamed class ExtendedTableView to ExtendedFilteringTableView. * Many improvements in many nibs .. 2002-04-23 Ludovic Marcotte * Modified MailboxManager.m to include the new copy/move icons. * Updated docs/WHOIS * Modified Utilities: +bestRepresentationFromMultipartAlternative: so that we verify we REALLY got a valid NSString object from Pantomime (since Pantomime might returns the raw source of the message, a NSData object, if the decoding operation has failed). * Fixed two bugs so that we now refresh our MailboxManagerCache properly when the folder is compacted. * Commented some debugging infoz in MailboxManagerCache.m. * Modified MailboxManager.m to remove the horizontal scrollbar in the outline view and also modified MailboxManagerController to right-align the Size/Messages cell values. * Renamed "Hide/Show Sizes" to "Hide/Show Status Bar". 2002-04-22 Francis Lachapelle * Improved verification when appending messages in DnD, copy, cut, and paste. * Improved NewPersonalProfilePanel nib. * Improved NewMailboxPanel nib. * Improved mailbox manager icons. * Added icons for DnD. 2002-04-22 Ludovic Marcotte * Moved MimeTypeManager to a singleton. Modified a lot of classes that was using the previous "model" to now use the singleton. This includes: Utilities, MailWindowController, EditWindowController and others. * Refactored a little bit GNUMail.m * Fixed two compiler warnings in MailWindowController: -updateStatusLabel. * Added some TODO items that will be implemented in the next release. * Fixed a bug in MailboxManagerController: -outlineView: willDisplayCell: ... to correctly set the default font if our item doesn't represent a folder containing unread messages. * Removed the Open button in the MailboxManager. * Moved the Delete button in the MailboxManager. 2002-04-21 Ludovic Marcotte * Corrected a bug in IMAPMailWindowController: -_transferMessagesToTrashFolder and refactored this method to use the new MailboxManagerController method to transfer messages. * Refactored MailboxManagerController: -transferMessageFromRawSource:.. to accept a folder parameter so that this method won't search for one and won't close it when it's finished. Also modified it to partially update the cache of the MailboxManager and to return a BOOL (YES on success). Modified all the classes that were using the previous methods. * Repaced all "[aFolder appendMessageFromRawSource: ...]" method calls by the refactored method MailboxManagerController: -transferMessageFromRawSource:... * Modified EditWindowController to set the EditWindow non-resizable for now. * Added a call to setDataSource: nil on the MailboxManager's outlineView in MailboxManagerController: -dealloc to prevent a potential segfault under OS X. * We now show the username in the alert panel saying that there's no new messages on the POP3 server in LocalInboxMailWindowController. * We now save (and restore) the column sizes in the Mailbox Manager. * Modified MailboxManagerController: -transferMessageFromRawSource:... to use the new Pantomime Folder methods -numberOfUnreadMessages and -size. * Added a new, surely temporary, Filtering.tiff icon. * Modified NewMailboxPanel, NewMailboxPanelController and MailboxManagerController to set the window title and the label used in NewMailboxPanel to right strings when editing. * Modified NewMailboxPanel.nib to link the label outlet. * Fixed a bug in MailboxManagerController: -initializeIMAPStoreWithKey. We were asking for stringValue on a NSNumber object when we really wanted to call -intValue. 2002-04-20 Ludovic Marcotte * Added support for multiple accounts (POP3/IMAP) for the same server. Patch from Francis Lachapelle slightly modified by myself. * Fixed the memory leak generated in GNUMail: -changeTextEncoding. 2002-04-19 Ludovic Marcotte * Modified MailboxManagerController: -setStore: name: username: to properly collapse the IMAP folder node (the root one for specific IMAP server) when closing the connection to the IMAP store. * We now save the tableview's colums size/position in the userdefaults for MailWindow, LocalInboxWindow and IMAPMailWindow. * Cleaned the TODO. * Reversed the order of all loops for pasting/dropping a selection of messages to respect the initial order. * Resized some UI elements in BounceWindow.m * Made minor UI adjustments to the move/copy buttons in MailboxManager.m * Fixed an autoresizing issue for the charset UI elements in EditWindow.m (more fixes to come for the rest of the UI elements). * Removed the [[self window] update] call for updateAnimatedIcon: methods. 2002-04-18 Ludovic Marcotte * Added the class MailboxManagerCache. This class manage the cache used to display the total size / nb of messages / nb of unread messages in the MailboxManager's outline view. The cache is NOT initially build for existing mailboxes but will rather be once it is opened. There's still more work to do like when mails are transferred (by copy/paste/dnd, etc), the cache won't always be updated. That was TODO #155. Updated MailWindowController and MailboxManagerController to make use of the cache. * Removed TODO #194 (search in content of messages) since that was done by Francis on 2002-04-17. * Removed the Cancel button in BounceWindow and modified the controller to swap the "Send" icon by the "Stop" icon when the send operation is going on. * Fixed a bug in MailWindowController: -updateStatusLabel when we were obtaining the IMAP username for a specific store. * Added an import to MailboxManagerController.m to avoid some compiler warnings. * Added the MailboxManagerCache to the OS X project file. * Removed the Cancel button from BounceWindow.nib * Fixed an autoresizing bug for the spinning icon in LocalInboxWinndow.nib * Added a small fix to FilteringViewController to avoid a compiler warning. 2002-04-17 Ludovic Marcotte * Modified ComposeView/ComposeViewController and EditWindow/ EditWindowController to use the new MimeUtility: -allCharsets method. * Implemented GNUMail: -updateTextEncodingsMenu. * Implemented GNUMail: -changeTextEncoding. This methods needs more work for the "Default" and "iconv" selection. * Fixed a little bit GNUMail: -changeTextEncoding. Needs more work for iconv. Also rewrote -updateTextEncodingsMenu. * Removed the CREATE_AUTORELEASE_POOL macro from GNUMailConstants.h * Removed the "Cancel" button in EditWindow. Also improved the UI and modified EditWindowController to show a "Stop" icon instead of the "Send" icon when sending an email. You can't stop it right now. * Corrected a small menu index bug in GNUMail.m * Fixed two @ bugs (one in Utilities, one in MailboxManagerController) when decoding the username from a username @ imap.server.name. We now do a backward search. * Removed the Cancel button in EditWindow.nib * Updated MainMenu.nib to add the "Text Encodings" submenu. 2002-04-17 Francis Lachapelle * Added support to search in messages content. 2002-04-16 Francis Lachapelle * Added access method -browser to class AddressBookController * Added cut, copy, and paste support of addresses. * Removed activity icon when logo is not spining in BounceWindow, EditWindow, and LocalInboxWindow. * Improved EditWindow, LocalInboxWindow, MailboxManagerWindow, FindWindow, and PreferenceWindow nibs. 2002-04-16 Ludovic Marcotte * Modified MaiboxManager to set the openOnStartup checkbox disabled by default. * Modified the GNUMail class to allow the user to specify an other text encoding to use for the selected message. The "logic" of all this needs to be implemented in Pantomime. Added the UI items and the action methods. * Added the skeleton for the method GNUMail: -changeTextEncoding. * Refactored a little bit the Utilities class. 2002-04-15 Ludovic Marcotte * Fixed a localization bug in PreferencesWindowController: -_initializeModuleWithName: atIndex:. * Fixed the size of MailIcon_addresses.tiff. * Modified LocalInboxWindowController: -messagesWereReceived to synchronize our cache for our local folder after receiving a number of messages for it. * Modified LocalInboxWindowController to swap the "Get" icon to the stop hand and swap it back when we're done downloading mails. You can't stop the thread right. * Modified GNUMail.m to remove deprecated preference values. * Modified LocalInboxWindowController to also show the username in the window title of the PasswordPanel. * Modified EditWindowController: -controlTextDidChange to set the subject to "no subject" if the subject field becomes empty. * Modified ReceivingWindow.nib to add the "Use secure connection" checkbox. * Modified IMAPMailWindow.nib to add the 'secure' NSImageView for displaying the little lock icon when using IMAP over SSL. * Modified PersonalViewController: -changePersonalSelection so that we now verify if keys (SIGNATURE/SIGNATURE_SOURCE) exist in the dictionary before trying to set any values to either the field or the popup. Otherwise, we can put nil as the content of the field and Cocoa complains about it. 2002-04-14 Ludovic Marcotte * Modified Utilities.m to use lossyCString instead of cString when we strip the html codes. * Modified GNUMail: -selectionOfMessageHasChanged to verify for nil values (for the InternetAddress object as string) before adding an NSMenuItem for it. * Added a missing comma 2002-04-13 Ludovic Marcotte * We now display in IMAPMailWindow a little "lock" if we are using a SSL/IMAP connection. Added Icons/pgp-mail-small.tiff. * Fixed autoresizing mask on this little "lock" icon. * Added SSL support for POP3 connections. * Refactored a little bit GNUMail.m * Removed Utilities: +rectForMailWindow and +saveRect: forWindowName: * Added autosave position (and size) to all windows. * Added a new fonts icon (fonts.tiff) for the Fonts Preferences panel made by myself. 2002-04-12 Ludovic Marcotte * Done TODO #202. We now offer the option to apply filters manually (on the last mail window on top, selected messages). This needs some more work but most of it is there now. * Refactored some code to make use of MailboxManagerController: -transferMessageFromRawSource: flags: toFolderName: store: and also refactored this method. * Refactored EditWindowController: -messageWasSentFromRAWSource: to use that method too. * Refactored GNUMail: -saveInDrafts to use this method. * Added some new icons. Modified docs/README and the plist for the (c) notice. * Changed MailWindow for ExtendedWindow (in GNUMail.m, the copy & paste code) since under OS X, MailWindow isn't compiled but ExtendedWindow is - it's the custom class of all "MailWindows". * Modified ReceivingWindow/ReceivingWindowController to allow a new option: "Use secure connection (SSL)". Modified MailboxManagerController to allow secure (SSL) IMAP connections. POP3 and SMTP aren't done yet. * Modified IMAPViewController to use a SSL connection when the option is activated in the ReceivingWindow for subscribing/unsubscribing to IMAP folders. 2002-04-12 Francis Lachapelle * Defined a maximum size in BounceWindow.m. * Modified PersonalViewController and EditWindowController to support profile-based signatures. * Added support for backspace key in ExtendedWindow.m. * Changed outlineView columns parameters in MailboxManager.m. * Added method checkForUpdates in GNUMail.m (currenlty only available under Mac OS X). * Added support for cut, copy, and paste of messages between mailboxes (with both MailWindow's and the MailboxManager). 2002-04-11 Ludovic Marcotte * Added FilterManager: -matchedFolderNameFromMessage and refactored -matchedFolderNameFromMessageAsRawSource to use the new method so that it'll ease the process of applying filters to messages that have already been initialized. * Finished the support for outgoing filters. Removed TODO #240. * Modified ReceivingWindow/ReceivingWindowController to be able to specify if we want to verify for new mail on GNUMail.app startup. * Done TODO #214. Modified LocalInboxWindowController and MailboxManagerController to allow mail verification on startup. * Corrected a declaraction bug in MailboxManagerController for gcc < 3. * Modified all controller classes in the Preferences Panel that was using NSTableView objects to set the dataSource to nil so that we don't get a segfault under OS X. * Replaced [[self window] performClose: nil] simply by [self close] in ReceivingWindowController: -cancelClicked. * Updated ReceivingWindow.nib and FilterEditorWindow.nib to add new UI elements. 2002-04-11 Francis Lachapelle * Modified move/copy handling in MailboxManager. 2002-04-11 Ludovic Marcotte * Modified the filtering code to be able to specify that a filter is an incoming or outgoing one. * Refactored entirely the filter management code (the matching algorithm) and moved most of the code out of LocalInboxWindowController to MailboxManagerController and FilterManager. 2002-04-10 Ludovic Marcotte * Added ExtendedWindow to the OS X project file. * Modified IMAPMailWindow.nib, LocalInboxWindow.nib and MailWindow.nib to set the knob type of the splitview to = and also set the custom class of the window to ExtendedWindow. * Modified Utilities to use the NSWorkspace to get the icon for a specific (and unknown) file type. Also removed an extra RELEASE() that wasn't supposed to be there! * Added the Welcome message to the OS X ressource files in the PB project for the GNUMail target.. * Added two access/mutation methods to MailWindowController to set and get the current and the previous sorting order. Modified the code in MailWindowController.m to use those methods. This should fix all the mem leaks the previous solution was causing and the segfaults on OS X. * Modified BounceWindow.nib, EditWindow.nib, IMAPMailWindow.nib, LocalInboxWindow.nib, MailWindow.nib, NewAddressPanel.nib, NewMailboxPanel.nib, PasswordPanel.nib, RAWSourceWindow.nib and PreferencesWindow.nib to NOT be visible at launch time and be released when closed. * Done the same thing for: NewPersonalProfilePanel.nib, TransportMethodEditorWindow.nib, ReceivingWindow.nib, MailcapWindow, MimeTypeEditorWindow.nib, FilterEditorWindow.nib, FilterHeaderEditorWindow.nib and FilterMessageWindow.nib. 2002-04-10 Francis Lachapelle * Refactored EditWindowController -_recipientsFromString:. * Added support for backspace and delete keys in ExtendedWindow. * Added update of menu items when a message is deleted/undeleted. * Added key binding change for Delete/Undelete menu item. 2002-04-10 Ludovic Marcotte * Modified MailWindowController: -tableView: acceptDrop: ... to catch the possible raised exeception when appending a message to a folder using DnD. 2002-04-09 Ludovic Marcotte * Modified GNUMail.m to set the initial tag to our showAllHeaders menu item. * Updated the Welcome message. * Modified GNUMail: -applicationDidFinishLaunching: to use the Welcome mbox if it's the first time GNUMail.app is started. The content of the default Inbox will be the content of the Welcome mbox. This completes TODO #220. * Modified MailboxManagerController to return an empty string for the Size/Messages column instead of dummy value. * Modified EditWindow to set the autoresizing mask to the charset popup button. * Translated the Welcome message to French. * Added a "size" label in EditWindow. It shows the actual size of the message that is about to being sent. * Updated EditWindow.nib to add the size label. * Modified MainMenu.nib to set tag value to 1 for the Show All Headers menu item (default value after startup). 2002-04-08 Ludovic Marcotte * Modified FilterEditorWindow/FilterEditorWindowController to make the colors much more nicer to your eyes :) Those colors were suggested Rob Burns . * Done TODO #252. Added /etc/mime.types support to MimeTypeManager and refactored the code to be table-driven. * Added Goodies/Welcome. This is a simple mailbox containing the welcome message that we'll show to each new GNUMail.app user. This file will be store in the Resources directory. * Modified the FilteringViewController to use our own custom NSButtonCell so we can draw properly its background color (currently broken under GNUstep). Also fixed some bugs in FilterEditorWindowController. * Modified IMAPMailWindow.nib to set the delegate of the window to the controller. * Updated the Welcome message. * Fixed the segfault that occurred when a message was being sent and the Outbox folder was open. * Modified ExtendedAttachmentCell to modify the font size used under Apple Mac OS X. 2002-04-07 Ludovic Marcotte * Refactored ALL the code related to FolderNode objects and path handling for them. It is now way more simple and coherent. * Fixed some bugs in folder separator handling. It should now work way better with any kind of path separator (/, ., or something else). There is still some issues about selecting the right folder after a specific operation (like create, delete or rename). * Added some fixes for the selection bug. * Fixed the selection bug by expanding the nodes from the root to the children and not the other way around. * Changed the GNUMail.app framework into a Library only under GNUstep. 2002-04-06 Ludovic Marcotte * Modified MailWindowController and its subclasses so that the -initWithWindowNib name is optimized under OS X. We don't do post-init stuff many times under OS X anymore (nor under GNUstep). * Modified EditWindow.nib to set the delegate of the text fields (To/Cc/Bcc/Subject) and the text view to the controller object. * Moved the code in GNUMail: -init to -applicationDidFinishLaunching. * Small fixes to the Clock bundle so that everything compiles and links under OS X. * Done some minor refactoring in FilteringViewController and MailWindowController. 2002-04-05 Ludovic Marcotte * Modified the OS X project file to include the Pantomime framework when compiling the Compose bundle. * Modified Utilities: +formattedAttributedStringFromAttributedString: so that we verify that the cell really responds to the "part" selector before trying to extract the filename out of it. This should fix the problem with HTML mails under OS X. * Updated ComposeView.nib * Updated EditWindow.nib * Updaded the plist and the OS X project file to set the version number to 1.0.1. 2002-04-05 Francis Lachapelle * Improved MailboxManagerController: -transfer: to avoid operation on the same mailbox * Added drag and drop support from a mail window to the mailbox manager (MacOS X only -- for now) 2002-04-05 Ludovic Marcotte * Modified Utilities: +folderNodeForPath: using: to return the root node if the path is representing the root node. We were returning nil before. * Modified the MailboxManagerController to expand the root node (and the Local root node) in -reloadAllFolders instead of -initWithNibName. * Added an access method to the mailboxNameField of NewMailboxPanelController. Modified -windowWillClose to not autorelease the instance and modified MailboxManagerController to release the NewMailboxPanelController instances when done with them. * Added consistency the the way nodes are selected and expanded when a new one is added (or renamed or deleted) in the MailboxManagerController. * Corrected a bug in NewMailboxPanelController: -okClicked. We weren't adding the pathSeparator (currently fixed at @"/") between our path to the mailbox and out mailbox name. * Fixed some bugs when we were addding or renaming IMAP folders. * Fixed a bug in Utilities: +folderNodesFromFolders: separator: * Fixed a lot of bugs related to renaming Folders/Sub-Folders in NewMailboxWindowController: -okClicked:. * Added the possibility to specify a default charset used when sending messages. Added a user's option in the ComposeView Preferences panel and also a user's option in the EditWindow. The default charset (or the selected one) will be used ONLY if the final content isn't an ASCII string. 2002-04-04 Ludovic Marcotte * Added Bundles/PGP/.cvsignore * Modified all .cvsignore files to include shared_debug_obj * Done TODO #113. When doing a Reply in Outbox, don't use From but To. * Compilation fix for OS X in MailWindowController (we are not using gcc3!) * Modified PersonalView.nib to remove the "wait panel" check box. * Modified the comments in the NSStringExtensions class. 2002-04-04 Francis Lachapelle * Added drag and drop support of messages between mail windows. 2002-04-04 Ludovic Marcotte * Renamed Utilities: +folderNodesFromFolders to +folderNodesFromFolders: separator: and modified the code everywhere that was using this method. * Refactored PreferencesWindowController to avoid compiler warnings and also to support the loading of Preferences panels from application bundles. * Provided an initial implementation of the PGP bundle. Added the skeleton of classes w/o any real logic. This bundle should NOT be packaged right now. * Applied a patch from Adam Fedor so that if GNUMail.app is build with debugging symbols, we can properly load the bundles. * Small changes to NewMailboxPanelController to remove some debug logs and to fix some annoying compiler warnings. 2002-04-03 Ludovic Marcotte * Specified the tag values for the matrix in viewing view. * Modified FilterEditorWindowController to allow hierarchical mbox selection. It now looks pretty and is very usable! * Removed Address: -compare:. * Fixed NewMailboxPanelController: -okClicked: to correctly rename the IMAP cache when we're renaming an IMAP folder of an IMAP store. * Modified MailboxManagerController: -rename to not try to rename an opened IMAP folder. * Modified MailWindowController to remove the category on NSWindow to redefine -keyDown. Added a class instead (ExtendedWindow) and we use this class in MailWindow (and it's subclasses) only. This fix the problem that -keyDown would call wrong selectors in other windows. * Modified MailWindowController to make the window the key one (and order it to the front) after showing the PasswordPanel under GNUstep. * We now correctly link the icon outlet in MailWindowController under GNUstep. 2002-04-01 Francis Lachapelle * Modified TransportMethodEditorWindowController: -transportMethodHasChanged: non-editable text fields are also non-selectable; editable text fields are also selected when changing of transport method. * Improved ViewingView bundle: added drag and drop support for the table view; added tags to cells of columns matrix. * Improved all bundles nibs. 2002-04-02 Ludovic Marcotte * Removed Address: -matchesFilterString: orComponents: since this method was useless. * Added AddressBook: -addressesWithPrefix:. * Done TODO #151. We allow address completion using the tab key. * Modified the GNUMailInfo.plist to set the version number to 1.0.1. 2002-04-02 Francis Lachapelle * Added necessary methods to FilteringViewController to support drag'n'drop of filters in table view. 2002-04-02 Ludovic Marcotte * Minor UI modifications in the PersonalView. * Modified the MailboxManagerController to order-front the window when the modal loop is finished for the add/rename operation for mailboxes. * Changed MailboxManagerController -storeForName: to storeForName: username: and also setStore: forName: to setStore: name: username: to allow more than one account per IMAP server. Also modified all classes that were depending on those two methods. * Added a "temporary" method in Utilities: +usernameFromServerName: * Improved the UI of FilterEditorWindow under GNUstep. * Added exception handlers for newly introduced PantomimeFolderAppendMessageException. This exception occurs when a failure occurs when appending a message to a Local or an IMAP folder. Completes TODO #231. 2002-04-01 Ludovic Marcotte * Fixed a bug in Utilities: +pathOfFolderFromPath. * Reactivated MailboxManagerController: -create, -delete and -rename for Local mailboxes. IMAP will follow soon. * Added FolderNode: -removeChild:. * Moved MailWindowController: -_serverNameForIMAPFolderNode: to Utilities: +serverNameForIMAPFolderNode. * Refactored MailWindowController to re-use some code when reloading the list of subscribed folders after a create, rename or delete operation. * Fixed some bugs in NewMailboxPanelController. * Modified IMAPMailWindowController to offer the user the option to close the connection with the IMAP server when the window is about to be close. * Modified MailboxManagerController to allow Stores to be removed from the dictionary of opened Stores and also added a verification so that we can't open more than one IMAP folder on the same IMAP Store at the same time. * Fixed a #ifdef MACOSX mistake in MailWindowController that would lead us to use the wrong font under GNUstep and OS X. * Modified ReceivingViewController: -delete to remove all POP3Cache and IMAPCache files when deleting a server. * Modified IMAPViewController: -unsubscribe to remove the cache when we unsubscribe to an IMAP folder. 2002-03-31 Ludovic Marcotte * Modified the OS X project file to include the new FolderNode class. * Defined action methods in IMAPViewController.h * Modified IMAPViewController.m to link manually the outline view table columns under OS X. * Added IMAPView.nib and POP3View.nib * Modified Utilities: +attributedStringFromHeadersForMessage: showAllHeaders: to verify for nil values for Date/From before attempting to append everything to a mutable attributed string. * Cleaned FolderNode: -copyWithZone: until the GNUstep's NSOutlineView is unborken. * Modified MailboxManagerController: -initializeIMAPStoreWithName to use -reloadItem: under OS X and -reloadData under GNUstep until the NSOutlineView is fixed. * Removed a lot of old code in GNUMail: -applicationDidFinishLaunching. * Removed GNUMail: -localStore. Replaced all this by a more intelligent solution. We now hold a dictionary of all openened stores in MailboxManagerController. Refactored all the code to use this new way of doing things. * We now verify in MailboxManagerController: -openOnStartupClicked that our selected folder can be opened on startup. 2002-03-30 Ludovic Marcotte * Added Utilities: +folderNodeForPath: using: and +pathOfFolderFromPath: * Mostly finished IMAP folder subscribtion support in IMAPViewController and refactored a little bit MailboxManagerController. * Modified MailboxManagerController: -transfer to support IMAP folders. * Re-activated MailboxManagerController: -openOnStartupClicked: and simplified -open: * Fixed a bug in GNUMail: -showFoldersToOpen that would prevent us to automatically open a folder contained in a subfolder. * Removed everything related to "Wait panels". This is gonna be replaced by a more practical solution. * Added Utilities: +flattenPathFromString: to replace all occurences of / by _ for a specific path. Modifed MailboxManagerController: -openIMAPFolderWithName: store: to use this method for the IMAPCacheManager's path. 2002-03-29 Ludovic Marcotte * Cleaned POP3ViewController and IMAPViewController. * Modified MailboxManagerController to support hierarchical local/IMAP mailboxes. Disabled for now create/delete/rename since they need to be modified. Copy/Open/Move should work correctly. * Modified MailboxManager to add the little GNUstep spinning icon. * Completely rewrote again all the logic for the outlineView datasource. Added a new class FolderNode that eases everything. Removed some unused methods in Utilities. Modified MailboxManagerController and IMAPViewController to use this new way of doing things with the outlineView. * Commented the deallocation of the IMAPStore in IMAPMailWindowController. * Reactivated MailboxManager: -outlineViewSelectionIsChanging: * Added comparison support to FolderNode (for sorting) and refactored some method names. Modified IMAPViewController and MailboxManagerController to use the new method names. 2002-03-29 Francis Lachapelle * Replaced spinning GNU icon NSButton by NSImageView in BounceWindow, EditWindow, and LocalInboxWindow. * Prepared IMAPViewController and POP3ViewController to support nib files under OS X. 2002-03-28 Ludovic Marcotte * Done TODO #70. Movied IMAPView and POP3View to MVC. Added the IMAPViewController/POP3ViewController classes. * Added some Utilities methods to ease everything related to hierarchical mbox support for IMAP/Local store. * Started the work on IMAP subscription support. Mainly did the work the Receiving bundle. 2002-03-27 Ludovic Marcotte * Modified FilteringViewController to set the cell background of the table row to the color specified for the filter (if the action is to set the color, for this filter). Also refactored some code. 2002-03-26 Ludovic Marcotte * Modified the MailboxManagerController class to not open a folder that holds folders. 2002-03-25 Francis Lachapelle * Updated comilation instructions for Mac OS X in docs/README. 2002-03-25 Ludovic Marcotte * Modified GNUMailConstants.m to set the version number to 1.0.1. 2002-03-24 Ludovic Marcotte * Modified MailWindowController.m to set the font size for the table cells to smallSystemFontSize on OS X. * Set the CVS tag to v1_0_0 * RELEASED v1.0.0. 2002-03-24 Francis Lachapelle * Fixed connections, autosizing, column identifiers, and changed NSSplitView divider style in MailWindow.nib, IMAPMailWindow.nib, and LocalMailWindow.nib. 2002-03-24 Pierre-Yves * MailWindowController.m ([MailWindowController -tableViewShouldReloadData]): Send tableViewSelectionDidChange only when needed. 2002-03-23 Ludovic Marcotte * Connected missing outlets in LocalInboxWindow.nib * Modified MailWindow.nib and IMAPMailWindow.nib to not show the horizontal scrollbar in the tableView. * Modified MailboxManager: -windowDidLoad to set the double action to open: under OS X. * Modified PreferencesWindowController: -_initializeModuleWithName: atIndex: to set the button font to size 10 under OS X and 8 under GNUstep. 2002-03-22 Ludovic Marcotte * We now close correctly the connection with the IMAP server and also release the IMAPStore when we close the "Inbox" folder on an IMAP server. That's a temporary solution that will be replaced by a better one once we support multiple IMAP folders on the same server. * Modified MailWindowController (and its two subclasses) to retain the table columns under OS X (and release them in MailWindowController: -dealloc). 2002-03-22 Martin Brecher * Updated German translation 2002-03-22 Ludovic Marcotte * Added missing localization strings in POP3View, MailboxManager and TransportMethodEditorWindow. * Regenerated all Localizable.strings files. * Updated the french translation. 2002-03-22 Martin Brecher * Updated German translation 2002-03-21 Francis Lachapelle * Various corrections in most Mac OS X nibs. * Various improvements in Project Builder file. 2002-03-21 Ludovic Marcotte * Updated docs/WHOIS * Reactivated MailWindowController: -receivingValuesHaveChanged. This will currently cause a segfault if you modify your preferences values and the MailboxManager is opened. It will be fixed in GNUstep gui 0.7.6. 2002-03-20 Ludovic Marcotte * Modified PreferencesWindowController: _instanceForBundleWithName: to not use "Apps" anymore since it's not required to have a recent version of GNUstep and Apps has been renamed to Applications. 2002-03-20 Francis Lachapelle * Many improvements in Project Builder file. * Changed search paths for bundles under MacOS X in PreferencesWindowController.m. 2002-03-20 Ludovic Marcotte * Localized some strings in the Personal panel. * Resized some of the UI widgets in the Preferences panel * Aligned all the fields in the Personal panel. * Resized some UI elements in the Fonts panel. * Set the margins of the 'signature box' to 0,0 in the Personal panel. * Modified LocalInboxWindowController: -messageWasReceived: folderName: to set this method as "oneway void" and not "void" so the thread won't block when calling this method. * Modified again the UI of most windows so that it looks more consistent, especially when using AA fonts under GNUstep. * Modified MailWindowController: -setFolder to select the first message and not the last one if the order is reversed when we open the folder. * Finished TODO #193. We now offer basic filters capabilities. The "Expert" feature has been added. * Modified Utilities.m so that when we write the content of a part to a file (for image/*), we convert the filename to a lowercase string. Otherwise, libwraster is lame enough to not recognize the format. * Updated Personal.nib to include the "Set this profile as default" check box. * Updated LocalInboxWindow.nib to set the resizing attributes to the rotating icon. 2002-03-19 Ludovic Marcotte * Done TODO #219. It's now possible to define a default personal profile from the Personal Preferences panel. 2002-03-18 Ludovic Marcotte * Added MimeTypeManager: -bestMimeTypeForFileExtension: to provide a set of default MIME types in case the user hasn't specified on for the file extension. * Modified EditWindowController: -updateMessageContentFromTextView to use this new method. * Added a patch from Vicent Ricard for TODO #244. It's now possible to {Shift/Control} double-click in the Address Book window to set the Cc/Bcc fields. * Added MailWindowController: -doubleClickedOnTableView so that when we double-click on the tableView in MailWindow, if we are in the Drafts folder, we re-open the message for editing. Otherwise, we simply open the message for a 'reply'. Done TODO #250. * Modified PreferencesWindowController to avoid compilation warnings under OS X. * Modified LocalInboxWindow.nib to fix the nib connection for the Get button. * Modified PasswordPanel.nib to remove the extra controller object. * Did the same thing with AddressBookWindow.nib, FindWindow.nib, IMAPMailWindow.nib, MailWindow.nib, NewAddressPanel.nib, NewMailboxPanel.nib, and RAWSourceWindow.nib. * Modified the OS X project file to set the version number to 1.0.0. Also modified the InfoPlist.strings file for the same reason. * Modified LocalInboxWindowController: -threadWillExit to restart the timer only if we need to! * Done TODO #226. Applied a patch from Vincent Ricard (modified by myself so that we don't create a category for NSTableView but rather NSWindow and we put everything in the controller, not the view). 2002-03-17 Ludovic Marcotte * Modified MailboxManager to set the autoresizing mask of the "Open this folder on startup" button. * Modified the OS X project file to remove any references to the Quoting nib. * Updated MailboxManager.nib * Modified the Sending target to include the Pantomime framework. * Updated PreferencesWindow.nib * Updated ViewingView.nib * Updated ComposeView.nib * Updated TransportMethodEditorWindow.nib * Updated FontsView.nib * Updated FilteringView.nib * Modified the project file to include all anim icons. * Updated LocalInboxWindow.nib * Updated BounceWindow.nib * Updated EditWindow.nib 2002-03-16 Ludovic Marcotte * Done TODO #238. It's now possible to any folder on statup of GNUMail.app. It's now possible to have an IMAP folder as the default folder upon GNUMail.app's startup. Modified many files to support this and mainly refactored MailboxManagerController. * Commented the code in MailboxManagerController: -receivingValuesHaveChanged since -reloadData doesn't work yet in NSOutlineView it'll cause a segfault. * Refactored the UI of the Viewing panel to be able to specify which table columns we want to see in the MailWindow's tableView. It does nothing for now. * Done TODO #239. It's now possible to specify which table headers we want to see in the MailWindow. Modified ViewingView, ViewingViewController, PreferencesWindowController and all MailWindowController subclasses (and the class itself) to support this new feature. The set of visible table columns is saved in the user's defaults with the key: SHOWNTABLECOLUMNS. 2002-03-15 Ludovic Marcotte * Modified BounceWindowController and EditWindowController to not prompt for a password if the SMTP server doesn't use SMTP AUTH. 2002-03-14 Ludovic Marcotte * Done TODO #236. Added a patch from Vincent Ricard to to the addresses/groups in the Address book. * Modified EditWindowController and BounceWindowController to support SMTP AUTH (prompt a password and more) * Modified TransportMethod* to add new fields for gettting the supported SMTP AUTH mechanism, to choose one, to save or not the password in the user defaults and more. 2002-03-13 Ludovic Marcotte * Modified EditWindowController: -errorOccuredWhenSendingMessageForOutboxFolder to stop the timer (when an error occurs). 2002-03-12 Ludovic Marcotte * Modified the MailboxManager to inclue a checkbox item to specify if the folder is to be openend upon GNUMail.app's startup. It's currently unused. * Added LabelWidget: +labelWidgetWithFrame: label: alignment: * Refactored the Fonts panel so it now looks way better. Also renamed all ivars and fixed some memory leaks. 2002-03-10 Ludovic Marcotte * Modified MailWindowController: -tableViewShouldReloadData to clear the textView if the number of selected rows in the tableView isn't equal to 1. This 'fix' a bug when transferring messages between mboxes. * Replaced [NSPort port] by [[NSPort alloc] init] (followed by a RELEASE after) to prevent gcc from complaining. * Added MailWindowController (Private): _restoreSplitViewSize to restore the size of the textScrollView in the MailWindow (save in the new pref value TEXTSCROLLVIEW_HEIGHT) in order to restore the 'knob' position of the scroll view (TODO #200) * Removed the Quoting Preferences panel bundle (merged in the Compose bundle). * Refactored A LOT the Preferences panel and its bundles. * Finished refactoring for now the Preferences panel! 2002-03-09 Ludovic Marcotte * Replaced the Fonts icon in the Preferences panel. * Optimized +attributedStringFromContentForPart: mimeTypeManager: to not write to a file attachments that aren't image/* (since we need to do that right now for full libwraster support under GNUstep) and also linked everything to the MimeTypeManager so that one can provide us an icon to use to represent the attachment if the user has defined a MIME type for that kind of attachment. * Done TODO #225. We now select and expand automatically our Local folder in the MailboxManager if there's no IMAP stores/folders defined. 2002-03-08 Ludovic Marcotte * Modified ReceivingWindowController to load and save the new RETAINPERIOD preference value for POP3 servers. * Modified LocalInboxWindowController to set the retain period on the POP3 folder. * Modified Utilities: +attributedStringFromContentForPart: mimeTypeManager: to correctly resize 'data' attachments (like image/*) so that they fit correctly in the text view. * Added MailWindowController: _restoreSortingOrder that reads the default SORTINGORDER and uses it to apply an initial sort to the table view on startup. Also selects the right column on startup. Modified LocalInboxWindowController and IMAPMailWindowController to use this code. * We now also save the sorting state in SORTINGSTATE. * Modified RAWSourceWindow: -layoutWindow to make the text view not horizontally resizable. GNUstep seems to be confused when we set that attribute. 2002-03-07 Ludovic Marcotte * Reactivated sorting and the double-action in the outline view for the MailboxManager. * Added a user option in the Viewing preferences panel to allow the user to show or hide deleted messages on GNUMail.app's startup. (TODO #251) * Movied MailWindowController: -updateLastMailWindowOnTop to GNUMail: +setLastMailWindowOnTop (same thing with -lastMailWindowOnTop). Update all the code to reflect this change. * Added missing animation frame (the 8th one). "Patch" from Francis Lachapelle . Modified the code to use this 8th frame. * Added the matrix outlet in FindWindowController for future usage. * Added the 'days' field in POP3View (but not yet implement the functionnality. Fixed a mem leak too. 2002-03-06 Ludovic Marcotte * Modified EditWindowController: -updateMessageContentFromTextView to return the last path component of the filename for the attachment instead of the full path. * Rewrote MailboxManager/MailboxManagerController to use a NSOutlineView instead of a NSBrowser (TODO #252). You need to use a recent CVS version of GNUstep in order to use it (version of 2002/03/06 or more recent). Also, there's issues when you create/delete/rename mailboxes due to bugs in NSOutlineView. 2002-03-05 Ludovic Marcotte * Rewrote entirely the LocalMailDelivery class (the important parts) to speed up things a lot and to also use way less memory for everything. 2002-03-04 Ludovic Marcotte * Modified LocalInboxWindowController to stop the automatic fetching timer (before starting the thread) and to restart it when the thread is about to exit. This is to avoid racing conditions and potential deadlocks. * Modified EditWindowController: -setPlainTextContentFromString: inPart: to reactivate the support of format=flowed parts. * Modified ExtendedTableView.m to remove the use of NSMiddleMouseDraggedMask. * Modified LocalInboxWindowController so that we verify if our thread isn't running before closing the window. If it does run, we simply inform the user to wait. * Added a quick fix to LocalMailDelivery: -messagesFromMailspoolFile so it now works again since the Pantomime's modifications about 8bit messages support. * Modified LocalInboxWindowController: so that we use DESTROY(animation) instead of TEST_RELEASE(animation). 2002-03-03 Ludovic Marcotte * Added multithreading support in BounceWindowController. * Modified some parts of the code to allow GNUMail.app to work well with the new Pantomime's code for 8bit support for messages. 2002-03-02 Ludovic Marcotte * Modified LocalInboxWindowController to set the animation delay to 0.1s and also to call the update method on the controller's window after setting the new icon. * We now disable the Get button before initiating the fetch and we re-enable it when the thread is about to exit. * Added multithreading support when sending messages. This support is not yet completed (ie., it won't work if you click on Cancel while the E-Mail is being sent) but it should work well. * Modified the bundle loading code in PreferencesWindowController since Apps has been renamed Applications on GNUstep. Kept the previous code for compatibility reasons. * We now inform the user (by showing a panel) that he/she must wait until the email has been sent before closing the EditWindow. 2002-03-01 Ludovic Marcotte * Changed the previous implementation to use a NSConnection object. Should be safer now. * Modified LocalInboxWindowController: -windowDidLoad to remove our distributed lock if one was there (for example, left after a crash). * Added an animated icon for the LocalInboxWindow. The animated icon is a set of tiff files provided by Jeff Teunissen . 2002-03-01 Ludovic Marcotte * Introduced threads support in LocalInboxWindowController. This temporary solution is using the distributed objects. It only 'shows' that it is possible to do it easily. This solution is TEMPORARY and WILL BE REPLACED by a using a NSConnection in the following days. I do not recommand to use GNUMail.app with that code, even if it should work perfectly (minus the fact that you must wait the DO server to send you all your messages). This currently makes heavy use of notifications but, this will all go away in the next following days so don't complain to me about anything :-) 2002-02-27 Ludovic Marcotte * Modified GNUMailConstants to set the version number to 1.0.0. * Modified the GNUMailInfo.plist file to change the version number to 1.0.0. 2002-02-26 Ludovic Marcotte * Added a patch by Alexey I. Froloff so that we don't use the extra code (it has been removed) for dealing with base64 encoded text/* parts. * Set the CVS tag to v1_0_0pre3 * RELEASED v1.0.0pre3 2002-02-25 Ludovic Marcotte * modified docs/README * modified the OS X project file * modified MailboxManager.nib (to add the move/copy popup) * Added FontsView.nib and modified the OS X project to include this file. * updated ReceivingView.nib * updated BounceWindow.nib 2002-02-25 Martin Brecher * Updated German translation. 2002-02-24 Ludovic Marcotte * Removed extra call to [NSApp stopModal] in PreferencesWindowController: -windowWillClose. 2002-02-24 Erik Dalen * LocalInboxWindowController.m: Simplified filter summary creation code 2002-02-24 Ludovic Marcotte * Added missing keys to all Localization.strings files. 2002-02-24 Erik Dalen * Updated Swedish translation. 2002-02-24 Ludovic Marcotte * Updated all Localization.strings files (regenerated from the sources) and updated the french translation. 2002-02-24 Erik Daln * BounceWindow.m, EditWindow.m, GNUmakefile: Renamed stop.tiff to MailIcon_stop.tiff 2002-02-23 Ludovic Marcotte * Fixed some minor things in Erik's previous commits. 2002-02-23 Erik Daln * LocalInboxWindowController.m: Fixed TODO-218 (Provide summary of mailboxes that mail has been transferred to.) * ReceivingViewController.m: Fixed TODO-234 (Provide a 'default' mail spool file) 2002-02-23 Ludovic Marcotte * Fixed some minor things in Erik's previous commit. 2002-02-23 Erik Daln * NewMailboxPanelController.m: Fixed TODO-233 (Rename filter targets when renaming a mailbox) This fix might leak some memory, but it works. But hey, it's basically my first GNUstep coding :) 2002-02-22 Ludovic Marcotte * Updated Spanish translation. Patch from Quique . 2002-02-21 Ludovic Marcotte * Modified Utilities: +attributedStringFromContentForPart: mimeTypeManager: so that if we have a text/plain part base64 encoded, but w/o any Content-Disposition, we reprensent it as inline. * Small reorganization in the previous commit. * Updated MainMenu.nib * Added the sortBy* actions to GNUMail.h and also replaced (void) by (IBAction) for those methods in GNUMail.m * Updated EditWindowController and Utilities so that the ExtendedAttachmentCell works correctly under OSX. 2002-02-20 Ludovic Marcotte * Moved PreferencesWindowController: -instanceForBundleWithName to the private category of that class. Also renamed it _instanceForBundleWithName. * Fixed TODO#241 (NSOldSelectedCharacterRange isn't declared under OSX). We use under OSX @"NSOldSelectedCharacterRange" instead. * Moved BounceWindowController: -appendAdditionalHeadersToString the a private category and renamed this method _appendAdditionalHeadersToString. * Fixed a bug in BounceWindowController: -send. We were using @"From -" and not @"From ". * Fixed a huge bug in LocalMailDelivery: -messagesFromMailspoolFile. We were not considering the fact that "garbage" could follow "From ". We now skip it properly. * Changed aRange.length = to aRange = in GNUMail.m: -selectionInTextViewHasChanged. 2002-02-19 Ludovic Marcotte * Modified LocalInboxWindowController: -getNewMessages to use two autorelease pools (one inner pool, that we "rotate") when fetching mails from the local mail spool file. * Modified MailWindowController: _loadAccessoryViews to set the current superview to the bundle. * Updated the OS-X project file. * Fixed some file so it compiles cleanly under OSX. * Added PreferencesWindow.nib back to the project. * Added our new icons for the status column to the project. * Updated LocalInboxWindow.nib * Updated MailWindow.nib * Updated IMAPMailWindow.nib 2002-02-19 Pierre-Yves Rivaille * Bundles/Receiving/ReceivingViewController.m ([-saveChanges]): restart the timer if needed. Set the number of minutes before starting/restarting the timer. 2002-02-19 Ludovic Marcotte * Modified the GNUMailBundle protocol to include two new methods: - (void) composeViewAccessoryWillBeRemovedFromSuperview: (NSView *) theView; and - (void) viewingViewAccessoryWillBeRemovedFromSuperview: (NSView *) theView; so that our accessory views can be informed when they are going to be removed from their superview. Modified the Clock bundle (ClockWindowController) to implement -viewingViewAccessoryWillBeRemovedFromSuperview:. * Added Pierre-Yves Rivaille to the GNUMailInfo.plist due to his major contributions to the project. 2002-02-19 Pierre-Yves Rivaille * PreferencesWindowController.m ([-addModuleToView:aModule]): removed display call, the pref modules are now drawn faster. 2002-02-18 Ludovic Marcotte * Changed the installation path for all .prefs bundles from GNUSTEP_LOCAL_ROOT to GNUSTEP_INSTALLATION_DIR. * Implemented EditWindowController: -windowShouldClose to ask for a confirmation before writing to the Drafts folder (not yet implemented, we currently still use the dead.letter thing). * Changed EditWindowController: -sendMessage to call tableViewShouldReloadData on the windowController instead of reloadData on the tableView. * Added Utilities: + windowForFolderName that will return the window owned by the MailWindowController object with the name theName. Modified most of the code to use this method. * Added Drafts folder support. Implememented GNUMail: -restoreDraft: and left -saveInDraft: "blank" for now. * Finished the Restore Draft feature. Added EditWindowController: -setMessageFromDraftsFolder in order to not set automatically the signature. * Added the "Save in Drafts" feature (Compose->Drafts). Implemented GNUMail: -saveInDrafts and -setEnableSaveInDraftsMenuItem. We now call this methods from EditWindowController and MailWindowController. * Reorganized the Message menu. 2002-02-17 Ludovic Marcotte * Added sample bundle in Bundles/Clock * Modified GNUMail to hold all the bundles (in allBundles) * Modified MailWindowController to add some hooks for the bundles. * Fixed the bug of flags that weren't kept when transferring messages (moving or copying) between mailboxes. You need to update Pantomime (make distclean; make). * We now remove the flag TRANSFERRED in transferred messages and we call Folder: -updateCache if we transferred messages to rebuild our cache. * Modified PreferencesWindowController: -instanceForBundleWithName to load the bundles in $GNUSTEP_INSTALLATION_DIR/{Local/Networl/System} and not just Local. * Modified LocalInboxWindowController: -getNewMessages and MailWindowController: -showMessage to set the app icon to GNUMail_Full.tiff when new mails have been received and to set it back to GNUMail.tiff when a unseen message has been read. * Added EditWindowController: -textDidChange (delegate method) to set the window as 'dirty' if the content of the text view or the text fields has changed. Modified EditWindow to set the delegate to the window controller to all text fields. 2002-02-16 Ludovic Marcotte * Activated the Find -> Enter Selection menu item. It enters the current selected text (in the last mail window on top) in the Find Panel's find field. * Moved all preferences panel modules to bundles (in Bundle). * Added the GNUMail "framework" in /GNUMail in order to be able to develop bundles for GNUMail.app (not yet finished). * Added the possibility to compact the mbox when it's closed. * Added the possibility to not show the alert panel showing how many messages have been transferred by filters. 2002-02-15 Ludovic Marcotte * Added the Message -> Save Attachment menu. It allows to save attachments contained in the current selected message. * Modified MailWindowController: -updateStatusLabel to include the number of deleted messages and also to change the displayed size of the selected message to %0.1f instead of %d. * Activated the spell checker for GNUstep. * Added the the status column back by using our own data cell for the status column (ExtendedCell). 2002-02-14 Ludovic Marcotte * Added the feature to show/hide the sizes in MailWindow (ie., the label). It currently doesn't resize the table. This completes the TODO #94. * Added two new contants in GNUMailConstants: SHOW_SIZES and HIDE_SIZES to suppor the previous feature. 2002-02-14 Pierre-Yves Rivaille * Support for sorting by size. 2002-02-13 Ludovic Marcotte * Added GNUMail: -compactFolder and set the action of the Compact menu item to this method. * Commented some code in MailWindowController that we won't use for now (FIXME). * Modified MailboxManagerController and NewMailboxPanelController to rename the cache when renaming a mbox. * Moved _transferMessagesToTrashFolder from MailWindowController (Private) to IMAPMailWindowController (Private) since we no longer use the Trash folder unless we're in IMAP mode and the user has choosen to transfer its deleted messages locally in the Trash folder. * Added a GNUMail category for NSTableView in MailWindow to fix the broken -deselectAll method in GNUstep GUI 0.7.5. * Added a patch from Pierre-Yves Rivaille to fix some bugs in messages sorting. * Modified the plist to use "Mac OS X" instead of "MacOS-X". * Added a UI element (a NSButton) to be able to specify if we want or not to automatically compact mboxes when they are closed in ReceivingView. Currently 'not used'. 2002-02-12 Ludovic Marcotte * Added the FontsView/FontsViewController classes and patches to use different fonts for the headers, content of the message and more. Added Icons/fonts.tiff. Patches from Alexey I. Froloff . * Adapted some of the code to support the new caching mechanism in Pantomime. * Added a patch from Pierre-Yves Rivaille to support messages sorting. 2002-02-11 Ludovic Marcotte * Added a Compact menu item to the Mailbox menu. Currently unused. * Added two C functions in Utilities: striphtml() and ent() from Abhijit Menon-Sen . Those C functions allow us to strip the html codes from html mails and keep only the good (ie., text) information. Those functions are only used on GNUstep since it has no currently no HTML support for attributed strings. 2002-02-10 Ludovic Marcotte * Fixed a typo in the GNUMailInfo.plist file. We *must* use GNUMail.app and NOT GNUMail when referring to this application. 2002-02-09 Ludovic Marcotte * Added Utilities: + (NSAttributedString *) formattedAttributedStringFromAttributedString: (NSAttributedString *) theAttributedString to add 'smart placement of attachments' inside the body of a mail. * Modified some key bindings and added some menu items (w/o actions right now) to respect the way things were done on OPENSTEP/Mail.app. 2002-02-09 Erik Dalen * Translated services to Swedish 2002-02-08 Ludovic Marcotte * Made the MailboxManager window resizable. * Minor enchancements to PasswordPanel and PasswordPanelController. * Renamed MailWindowController: -removeTransferredMessages to -removeSelectedMessages. * Added a popup with copy/move operations instead of just a move button in MailboxManger's window. This is a temporary UI that will be enhanced. Modified MailboxManagerController: -transfer to support both copy and move. * Minor enhancements in Utilities that will speedup things. 2002-02-06 Ludovic Marcotte * Fixed a range bug in MailWindowController: -highlightAndActivateURLs. 2002-02-04 Ludovic Marcotte * Modified GNUMailConstants.m to set the version number to 1.0.0pre2. 2002-02-02 Ludovic Marcotte * Modified PersonalView/PersonalViewController to add a popup button to be able to select the source of the signature. Added a new preference name/value in the user's defaults db: SIGNATURE_SOURCE * Modified EditWindowController: _loadSignature to load the signature from a file or to execute a specific task and get the result from a pipe to from our signature. This completes TODO #237. * Modified AddressBookController: -toClicked, -ccClicked and -bccClicked so that we can now add all addresses from a group to the To/Cc/Bcc fields in the EditWindow (TODO #235) 2002-01-31 Francis Lachapelle * Changed Project Builder version to 1.0.0pre2. * Improved AddressBookWindow.nib. 2002-01-30 Ludovic Marcotte * RELEASE OF 1.0.0pre2 * Set the CVS tag to v1_0_0pre2 2002-01-30 Erik Dalen * Updated Swedish translation 2002-01-30 Ludovic Marcotte * Added the _() macro for the "General" string in AddressBook. * Added the string "General" in the AddressBook section in all Localization.strings files. * Modified AddressBookController: -selectionInPopUpHasChanged to set the selection on the first item (Move To) after a move operation. 2001-01-30 Martin Brecher * Updated German translation 2002-01-29 Ludovic Marcotte * Modified AddressBook: -layoutWindow to set the double of the NSBrowser to AddressBookController: -toClicked. * Modified AddressBookController: -initWithWindowNibName to do the same thing on the browser outlet under OS-X. * Modified GNUMail: -showAllHeaders to verify if we have no message or more than one selected messages before trying to show/hide all headers. * Added some TODOs * Updated all Localizable.strings files to add two missing keys: "Local - %@" and "IMAP on %@ - %@". 2002-01-28 Ludovic Marcotte * Added Spanish translation. Patch from Luis Garcia Alanis . 2002-01-28 Erik Dalen * Updated Swedish translation 2002-01-28 Ludovic Marcotte * Added the localization macro on the Modify button in AddressBookWindow. Bug reported by Martin Brecher. Updated all Localization.strings files to add this key. * Modified AddressBookController: -modifyGroup to reload our Move To popup items after we renamed a group. 2002-01-28 Martin Brecher * Updated German translation 2002-01-27 Ludovic Marcotte * Modified AddressBook: -groupForName to add some casting to keep the compiler quiet. * Modified AddressBookController so that we use -setTitle instead of -setStringValue for setting the title of the buttons dynamically. * Added AddressBookController: -selectionInBrowserHasChanged that is only used under OS-X to call -browser: selectRow: inColumn: since it's not called directly by Cocoa as it should (?). 2002-01-26 Ludovic Marcotte * Updated AddressBookWindow.nib (not yet finished) * Modified AddressBookController to reload the column 0 when the address book has changed. * Modified IMAPMailWindowController: -windowWillClose so that under OS-X, we don't try to aquire the lock. This is a bug that needs to be fixed. * Modified EditWindowController.m and Utilities.m so that under OS-X, we don't use ExtendedAttachmentCell. * Removed NewAddressPanel/NewAddressPanelController classes since there's no longer needed. Modified the GNUmakefile and AddressBookController to not use those classes anymore. * Updated OS-X's project file to not include anymore NewAddressPanelController.{h,m} in its build process. * Moved the code to reload the column 0 when the address book 'has changed' from -setAddressBook to -windowDidLoad * Added AddressBookController: -browser: titleOfColumn: to correctly set the brower's title of columns. * Re-did the AddressBookWindowNib. * Updated MainMenu.nib to include the Expunge item and the Apply Manual Filters sub-menu. * Removed AddressBookController: -editAddressBook. * Reactivated GNUMail: -addToAddressBook and implemented AddressBookController: -addToAddressBook. * Fixed TODO #199 - the "Send to Address Book" menu was containing too many items. Re-implemented GNUMail: -removeAllItemsFromMenu. * Regenerated all Localization.strings files and updated the french translation. * Modified MailWindowController: -showMessage to remove the selection in the textView when the selection of a message change. Recommended by Dale Amon . * Added local autorelease pool in EditWindowController: -_plainTextContentFromTextView and in -_updateMessageContentFromTextView. 2002-01-25 Ludovic Marcotte * Rewrote entirely the address book. Added versionning support in AddressBook so that we can load previously defined addresses (TODO #197). * Disabled for now the -addToAddressBook method in GNUMail.m. * Implemented the "Move To:" feature in the address book. * Added an initial version of Mail.app mailaliases files import support from the address book. This code isn't fully robust but should work quite well (TODO #227). * Modified Group: -addAddress so that we don't add an address that has the same description (ie., same address's name/emailAddress values). * Updated the source for all wrongly formatted english sentences. Patch from Ryan Cresawn . Need to update all Localizable.strings files. 2002-01-24 Ludovic Marcotte * Modified Utilities: +attributedStringFromContentForPart: mimeTypeManager: so that if our attachment cell's image is nil (under Apple MacOS-X), we force it to the filewrapper's icon. * Done the same thing in EditWindowController: -insertFile. * Added a new class Group to manage groups of Address objects in the Address Book. * Modified the GNUmakefile to include Group.h/.m when compiling. * Modified MailWindowController: -showMessage to properly refresh the selected table row after showing the message. * Updated ReceivingWindow.nib to use a secure text field for the password. * Added Group.m/Group.h to the OS-X project file. * Modified Utilities.m and EditWindowController.m to use -setFilename instead of -setFileName and -filename instead of -fileName from Pantomime's Part class. 2002-01-23 Ludovic Marcotte * Modified Utilities: +attributedStringFromContentForPart: mimeTypeManager: so that if we got a text/rtf part, we show it properly using a NSAttributedString object initialized with the content of the RTF part. 2002-01-22 Ludovic Marcotte * Added a private interface to MailWindowController and defined _updateMessageSelectionUsingIndex: (int) theIndex in it. * Modified MailWindowController to use this private interface. * Added MailWindowContrller: -expungeDeletedMessages to transfer immediately messages in the trash folder and remove them from the current folder / folder view. * Added a new menu item "Expunge" in the Mailbox menu that calls the new selector -expungeDeletedMessages. This method calls MailWindowController: -expungeDeletedMessages. * Modified MailWindowController to NOT use the NSWindowDidBecomeKeyNotification but rather the delegate method -windowDidBecomeKey. * Modified MailWindowController to use -removeMessage instead of -removeTransferredMessage from Folder's class. * Modified MailWindowController: -transferMessagesToTrashFolder to update the Trash folder window when it's opened. Otherwise, we would lose the messages that were deleted. 2002-01-21 Ludovic Marcotte * Modified AddressBookWindow to add a Close button so that if the window manager used doesn't really support our closable window mask, the user can safely close the window of the address book. * Modified AddressBookWindowController: -initWithWindowNibName to set the new height of our address book window. 2002-01-20 Ludovic Marcotte * Changed the GNUmakefile so GNUMail.app can link with the debug version of Pantomime. Patch from Richard Frith-Macdonald . * Modified MailWindowController: -deleteMessage so that we post a notification that our message's selection has changed (even if it's not true) when it's the very last message OR when the selection count > 1 in order to rebuild our menu items (delete/undelete) correctly. Bug reported by Richard Frith-Macdonald . * Modified GNUMail to add the 'filters' menu allowing to apply filters manually on a number of selected messages (1 or more). * Renamed GNUMail: -removeAllItemsFromSendToAddressBookMenu to -removeAllItemsFromMenu: (NSMenu *) theMenu and modified the code in GNUMail.m to use this method. * Implemented partially GNUMail: -updateFilterMenuItems. * Modified the GNUMail class so that we listen for the FiltersHaveChanged notification and if we receive it, we rebuild our filters menu. * Modified GNUMail: -updateFilterMenuItems to use 'tag' for identifying which filter the user has selected. * Modified the windows menu in the GNUMail class so that we have by default three options: Arrange, Miniaturize and Close (TODO #103). 2002-01-19 Ludovic Marcotte * Modified Utilities: +bestRepresentationFromMultipartAlternative so that we verify if the text/plain part was base64 encoded before assuming it was a plain NSString object. 2002-01-18 Ludovic Marcotte * Added german translation of the service name in GNUMailInfo.plist. Patch from Martin Brecher . * Modified LocalInboxWindowController to use -initWithHeadersFromString instead of -initWithHeaders since this method has changed in Pantomime. 2002-01-17 Ludovic Marcotte * Modified GNUMailConstants.m. Set the version number of GNUMail.app to 1.0.0pre2. * Modified GNUMailInfo.plist to add the new two services. * Modified GNUMail to add our two new services (TODO #139). * Modified MailboxManagerController to use NSWindow's orderFrontRegardless method instead of NSWindowController's showWindow method so that if we change the focus when GNUMail.app is 'loading' a folder, it'll get displayed properly. 2002-01-16 Francis Lachapelle * Changed buttons behavior from "Momentary Push In" to "Momentary Change" in MailboxesManager.nib. * Improved ComposeView.nib. * Imported icon file for Mac OS X. * Added icon file to Project Builder file. * Updated version in Project Builder file and added Copy Files phase in main target.. 2002-01-15 Ludovic Marcotte * Modified FilterEditorWindowController: _addItemsToFolderNamePopUpButton to be sure to always have at least one item in the popup button. * RELEASED 1.0.0pre1 and set the cvs tag to v1_0_0pre1. 2002-01-14 Ludovic Marcotte * Updated MainMenu.nib to include the Print menu and its submenus. * Updated EditWindow.nib to include the Cancel button. * Updated BounceWindowController to add an outlet for or Address Book button and modified -windowDidLoad to set the target/action under OS-X. Modified the BounceWindow nib in order to link the new outlet and to NOT use an instance of the GNUMail class for this nib. Cocoa seems to release all instances of objects inside the nib even if it's not the owner. * Done the same thing for EditWindowController/EditWindow.nib * Done the same thing for MailWindowController/MailWindow.nib * Updated LocalInboxWindow.nib and IMAPMailWindow.nib to connect the outlets. 2002-01-14 Martin Brecher * Updated German translation. 2002-01-13 Ludovic Marcotte * Corrected a minor thing in the swedish translation. Woo. My swedish skills are beginning to be good :-) * Modified GNUMail: -applicationWillFinishLaunching to set the NSApp's windows menu. This is a requirement now under GNUstep since January 7th, 2002. 2002-01-13 Erik Dalen * Updated Swedish translation. 2002-01-13 Ludovic Marcotte * Updated docs/README * Regenerated all Localizable.strings files. * Updated french translation. 2002-01-12 Ludovic Marcotte * Modified MailWindowController: -setFolder to always update our status label if we have or not messages in our folder. * Modified ExtendedAttachmentCell to set the part to nil during initialization of the instance. * Refactored entirely EditWindowController. * Modified EditWindowController: _plainTextContentFromTextView to set the filename to unknown if it's nil. 2002-01-11 Ludovic Marcotte * Refactored MimeUtility: +attributedStringFromContentForPart: mimeTypeManager: and removed +bestRepresentationFromMimeBodyPart: mimeTypeManager: since it was redundant. * Modified TransportMethodEditorWindowController to encrypt/decrypt the SMTP password using our methods in Utilities. * Modified ExtendedAttachmentCell to include a reference to the Part object used when displaying that part. * Modified Utilities.m to set the Part reference to the ExtendedAttachmentCell object when creating one. * Refactored EditWindowController. * Fixed a small but in Utilities when displaying message/rfc822 messages as attachment (we were getting the wrong size). * Same thing when displaying text parts. * Added a ton of TODOs 2002-01-09 Ludovic Marcotte * Modified Utilities: +bestRepresentationFromMimeBodyPart mimeTypeManager: so that we use the NSUTF8StringEncoding instead of the NSASCIIStringEncoding when creating our NSData object from our NSString object. * Added 4 new contants in GNUMailConstants: DELETE_MESSAGE, UNDELETE_MESSAGE, MARK_AS_READ, MARK_AS_UNREAD for the tags of menu items. * Modified MailWindowController: -deleteMessage to not change the selection if the sender isn't the delete button. * Modified MailWindowController: -windowWillClose to verify lastMailWindowOnTop against [self window] instead of self. This fixes a crash bug on GNUstep and OS-X. * Modified MailWindowController: -tableViewSelectionDidChange to post our notification (SelectionOfMessageHasChanged) everytime and not only when the message's selection count is 1. * Added in the GNUMail class a new menu item for setting the selection of messages to read/unread and modified the 'undelete' on to be able to delete and undele. Added methods and outlets to support this new functionnality. * Renamed Utilities: +attributedStringFromContentForMessage: mimeTypeManager: to +attributedStringFromContentForPart: mimeTypeManager: and modified classes (MailWindowController and EditWindowController) that were calling this method. * Modified Utilities: +attributedStringFromContentForPart: mimeTypeManager: to manager inner multipart parts. We now actually support multiple/related parts. We consider them as multipart/mixed ones. * Updated MainMenu.nib for OS-X. * Changed the nib name to LocalInboxWindow in MailboxManagerController 2002-01-07 Ludovic Marcotte * Modified IMAPMailWindowController: -setFolder to set the timer delay to 10mins if the user has set it to 0 minutes. That our default value. * Modified ReceivingWindowController: -setType to set the port value to 110/143 if the selection change (between POP3/IMAP) and it's not a 'custom' port that was defined. * Modified GNUMailConstants. Introduced two new constants: SIGNATURE_BEGINNING and SIGNATURE_END. * Implemented ComposeViewController: -initializeFromDefaults and -saveChanges. Created two new properties in user's defaults db: SIGNATURE_REPLY_POSITION and SIGNATURE_FORWARD_POSITION to store the position of the signature for a reply and a forward. * Modified MailWindowController to set the signature at the right position when doing a reply/replyToAll/forward. * Modified EditWindowController. Moved setSignature to _loadSignature. Modified _loadSigature to load the signature from the file and add it to the content of the textview at the right position. * Modified ComposeView to add the UI elements needed for specifying the signature position. * Modified Utilities: +attributedStringFromContentForMessage: mimeTypeManager: to separate text/plain parts (with Content-Disposition == attachment) with a \n from other parts. * Added a new contant: SIGNATURE_HIDDEN and modified EditWindowController: -_loadSignature to not do anything when we see this signature. * Modified GNUMail: -composeMessageFromDeadLetter to set the signature position to SIGNATURE_HIDDEN. 2002-01-06 Ludovic Marcotte * Implemented MailWindowController: -quoteMessageContentFromAttributedString to replace the > quoting characters by a simple | for now and indent properly the message. Modified -showMessage to call this new method. * Fixed a bug in MailboxManagerController: -browser: willDisplayCell: atRow: column:. It should now correctly show all your IMAP servers defined in the Receiving preferences. It should NOT show any POP3 servers any more. * Modified Utilities: -attributedStringFromContentForMessage: mimeTypeManager: to represent message/rfc822 parts as attachments when the Content-Disposition is set to 'attachment'. * Modified MailWindowController: -highlightAndActivateURLs to support https://. * Updated PersonalView.nib. * Modified PersonalViewController.m to sort the array of profile names and to set the title of the box to the current selected profile. * Modified Utilities: +loadPersonalProfilesInPopUpButton to sort the profile names. * Added the outlets (two popup buttons) and two action methods to compose view controller to allow to select where to put the signature when replying to a mail or when forwarding a mail to ComposeViewController. * Updated ComposeView.nib. 2002-01-05 Ludovic Marcotte * Set the delegate of the window from MailWindow.nib to the controller. * Same thing for MailboxManager.nib * Same thing for NewAddressPanel.nib * Same thing for RAWSourceWindow.nib * Same thing for MailcapWindow.nib * Same thing for FilterEditorWindow.nib * Same thing for FilterHeaderEditorWindow.nib * Same thing for FilterMessageWindow.nib * Same thing for NewPersonalProfilePanel.nib * Same thing for TransportMethodEditorWindow.nib 2002-01-04 Francis Lachapelle * Fixed autosizing of EditWindow.nib and BounceWindow.nib. * Minor changes in MainMenu.nib. 2002-01-04 Ludovic Marcotte * Modified EditWindowController to call the method MimeUtility: +encodeWordUsingQuotedPrintable: prefixLength: instead of the old one. * Added missing macro _() usage in TransportMethodEditorWindow and TransportMethodEditorWindowController. Bug reported by Martin Brecher . * Corrected a typo in MIMEView: -layoutWindow. Bug reported by Martin Brecher . * Modified NSRegEx: -matchString... to use lossyCString instead of cString on 'theString' parameter to avoid conversion problems. * Updated PrefWindow.nib to set the delegate to the controller. * Modified MailWindowController: -windowWillClose so that we assign nil to lastMailWindowOnTop iif it was equal to self * Modified MailWindowController: -windowWillClose so that we remove our observer for the ShouldCloseMailbox notification first and we remove our window from the opened list of windows last. * Modified MailWindowController: -dealloc to not remove the observer on ShouldCloseMailbox since it was removed in -windowWillClose * Modified MailWindowController: -windowDidLoad to set the selection for the ShouldCloseMailbox to close (of NSWindowController) instead -windowWillClose since that method is gonna be called when the window's close method is called. * Modified GNUMail: -applicationShouldTerminate so that we wait until all our MailWindow are released before closing and releasing our localStore. 2002-01-04 Martin Brecher * Updated German translation with missing strings 2002-01-03 Ludovic Marcotte * Modified AddressBookController: -windowDidLoad to mark the addressTableView to be displayed after setting the datasource. 2001-01-03 Francis Lachapelle * Added icons for buttons of SendingView.nib, ViewingView.nib * Improved MainMenu.nib. * Set as editable the columns of of outgoing headers table in SendingView.nib and headers table in ViewingView.nib. 2002-01-03 Ludovic Marcotte * Modified ExtentedAttachmentCell so that if the size is less than 1 KB, we display the size in bytes. * Added NewAddressPanelController: -cancelButton and linked the action in NewAddressPanel for the Cancel button to this method. * Modified NewAddressPanelController to show the NewAddressPanel in modal. * Modified EditWindow.m to fix the autoresizing attributes to most UI elements. * Moved EditWindowController: _profileNameForItemTitle to Utilities: +profileNameForItemTitle. * Modified GNUMail: -bounceMessage so that we verify that at least one transport agent has been defined before showing the BounceWindow. * Moved the 'core code' from EditWindowController: -_loadPersonalProfiles and _loadTransportMethods to class methods in Utilities: + (void) loadPersonalProfilesInPopUpButton: (NSPopUpButton *) thePopUpButton and + (void) loadTransportMethodsInPopUpButton: (NSPopUpButton *) thePopUpButton. Use this code in the two 'private' methods in EditWindowController. * Modified BounceWindow/BounceWindowController to allow the selection of the personal profile and the transport agent when bouncing a message. * Moved EditWindowController: -appendAddress: toTextField: to Utilities: +appendAddress: toTextField: and modified EditWindowController to use this method. * Added GNUMail: +lastAddressTakerWindowOnTop and +setLastAddressTakerWindowOnTop to replace the one defined in EditWindowController. * Removed EditWindowController: +lastMainEditWindowController and +setLastMainEditWindowController and replaced those method calls by their equivalent in the GNUMail class. * Modified AddressBookController to use the new methods in GNUMail instead of the old one (removed) in EditWindowController. * Modified BounceWindowController to support the address book. * Added the AddressTaker Protocol and modified BounceWindowController and EditWindowController to implement the Protocol. This completes TODO #149 (link the AddressBook to the bounce window!) * Commented NSLog call in Filter.m. * Added a print IBAction in the GNUMail class. Linked the action of the print menu to this new action. * Integrated a patch from Francis Lachapelle to allow editing of values in the SendingView table (for additionnal headers). * Same thing in ViewingView for shown headers. * Modified ViewingViewController: -addShown so that we don't add an header to the shown headers if it's already there (ie., with the same name). * Updated MacOS-X project file to include AddressTaker.h * Updated BounceWindow.nib * Updated NewAddressPanel.nib (connected the cancel button) 2002-01-02 Ludovic Marcotte * Modified EditWindowController: -insertFile so that when we create our ExtendedAttachmentCell, we pass the size as the argument to the init method. * Connected the criteriaSource popup button to the right selector. 2001-01-02 Francis Lachapelle * Added icons for buttons of FilteringView.nib, MIMEView.nib, SendingView.nib, ViewingView.nib * Improved FilterHeaderEditorWindow.ni, ReceivingWindow.nib. * Added connection from the Source combo of FilterEditorWindow.nib to the action selectionHasChanged of FilterEditorWindowController class. 2002-01-02 Ludovic Marcotte * Added two new classes: FilterHeaderEditorWindow to allow the users to specify in which headers to search for a criteria string for the filters and its controller, FilterHeaderEditorWindowController. * Added a new identifier (FilterHeaderEditorTableColumnIdentifier) for the table column used in FilterHeaderEditorWindow in GNUMailConstants. * Modified the GNUmakefile to include those files. * Modified FilterEditorWindowController. Added a new action method -criteriaSourceSelectionHasChanged that is called when the selection of the criteria source is changed. If the "Expert..." item is selected, it'll show the FilterHeaderEditorWindow. * Added versioning support in Filter and new accessors: -criteriaHeaders / -setCriteriaHeaders. * Modified MailcapWindowController: -importClicked to warn the user that has not selected any rows in the table and has clicked on 'Import'. * Added FilterHeaderEditorWindow.nib for OS-X * Updated OS-X project file * Changed setFilename to setPreferredFilename and filename to preferredFilename for all NSFileWrapper objects. * Modified ExtendedAttachmentCell to show the size of the text attachment and modified Utilities to set the size of the ExtendedAttachmentCell objects. 2001-12-31 Ludovic Marcotte * Updated MainMenu.nib for OS-X. * Updated ViewingView to add two missing UI elements: the showAllHeaders checkbox and the highlightURLs checkbox. * Updated QuotingView.nib to link the linewrapping text field. 2001-12-30 Ludovic Marcotte * Removed GNUMail: -cleanQuit and implemented instead -applicationShouldTerminate. * Done TODO #201. Activated the find next/previous from the Edit menu. * Removed TODO #123 since it was done a long time ago (verifying the content-disposition when showing text parts) * Done TOOD #118 ( when clicking for viewing an attachment, do this in a separate thread). Added MailWindowController: -launchExternalProgram: and modified textView: clickedOnCell:... to use this method when invoking an external program to view an attachment. -launchExternalProgram: will be invoked in a separate thread to not block GNUMail.app during its execution. * Changed Utilities: -attributedStringFromContentForMessage: ... so that we don't decode the extra alternative representation (by doing a simple else if with multipart/appledouble). * Changed a little bit the GNUMailInfo.plist 2001-12-29 Francis Lachapelle * Improved FilterMessageWindow.nib, FilteringView.nib, NewPersonalProfilePanel.nib, PersonalView.nib, PrefWindow.nib, ReceivingView.nib, TransportMethodEditorWindow.nib, ViewingView.nib. 2001-12-29 Ludovic Marcotte * Modified ViewingView to add a new UI element. Added a a checkbox button to be able to choose if we want or not to highlight URLs in the message content. * Modified ViewingViewController to connect the outlet and to read/write the preference to the user defaults. The preference name is: HIGHLIGHT_URL. * Modified MailWindowController: -showMessage to use this new preference. 2001-12-28 Ludovic Marcotte * Modified NewAddressPanel.m. Inverted the position of the ok and cancel buttons. * Added a new contant in GNUMailConstants for the GNUMail.app version number. The contant name is GNUMAIL_VERSION. * Modified EditWindowController: -initMessageWithData to verify if the X-Mailer additionnal header was defined. If Not, we define it using the GNUMail.app version number. * Updated GNUMailInfo.plist with the correct version number and made some other little corrections in the file. * Modified EditWindowController, IMAPView, MailboxManagerController and NewMailboxPanelController to replace Ok by OK. * Modified ReceivingView.m, MIMEView.m and FilteringView.m to set the target of our tableView objects to the controller in order to make the setDoubleAction work. * Added MailWindowController: -highlightAndActivateURLs to highlight the URLs that we can 'decode' in the content of our message and modified -showMessage to call this method after the 'decoding' is done. Also implemented the delegate method: textView:clickedOnLink:atIndex: so that we open the 'clicked' url with our NSWorkspace object. * Changed _(@"") for @"" in FilterMessageWindowController: -initWithWindowNibName. * Modified MailWindowController: -highlightAndActivateURLs to support file:// and ftp:// links. * Corrected a typo (missing @) in FilterMessgeWindowController -initWithWindowNibName when setting the title. * Modified TextEnrichedConsumer.h to make the class inherit from NSObject. 2001-12-28 Francis Lachapelle * Improved TransportMethodEditorWindow nib 2001-12-27 Ludovic Marcotte * Updated MacOS-X project file. Now includes the NewPersonalPanelController class and the TransportMethodWindowController class. * Corrected a typo in SendingViewController.m * Updated PersonalView.nib for OS-X (needs work) * Added new nib: NewPersonalProfilePanel (needs work) * Updated SendingView.nib for OS-X (needs work) * Added new nib: TransportMethodEditorWindow (needs work) * Modified TransportMethodEditorWindowController: -transportMethodHasChanged to not include the setNextKeyView code under OS-X. * Updated EditWindow.nib (needs work) 2001-12-27 Martin Brecher * Updated German translation * Added new strings to German translation 2001-12-27 Ludovic Marcotte * Added EditWindowController: -_profileNameForItemTitle to get the profile name from the selected title in the personalProfilePopUpButton. * Added EditWindowController: -personalProfilesSelectionHasChanged to select the right transport method depending on the selection just made for the personal profile. * Refactored the outlets names in EditWindowController and EditWindow. * Added two new notification names in GNUMailConstants: PersonalProfilesHaveChanged and TransportMethodsHaveChanged. * Added the sending of those two new notifications in PersonalViewController and SendingViewController when -saveChanges is called. * Modified EditWindowController: -windowDidLoad and -dealloc to add/remove the observer for our two notifications. * Modified MailWindowController: -setFolder to select the first unread message instead of the last one of the mbox when it's first opened. 2001-12-26 Ludovic Marcotte * Modified a comment in Utilities.m so it makes more sense. * Added PrefWindowController: +singleInstance to use a singleton when the window is open (in order to prevent multiple preferences window to be open at the same time) * Modified GNUMail: -showPrefWindow to use the singleInstance method instead of creating directly a PrefWindowController object. * Added a matrix access in PrefWindowController and changed the way we select the first cell. It should now work on GNUstep and OS-X. 2001-12-25 Ludovic Marcotte * Modified EditWindowController: -initWithWindowNibName to verify that we have at least one transport agent defined. If not, we simply warn the user and return nil. * Modified GNUMail.m and MailWindowController to 'expect' a nil value for the EditWindowController object. * Added some TODOs. 2001-12-25 Erik Dalen * Updated Swedish translation. * Done TODO 206 & 207 (translate two strings) and removed them from TODO list. * Added some other missing strings to the Swedish Localizable.strings 2001-12-25 Ludovic Marcotte * Commented TransportMethodEditorWindowController: -transportMethodHasChanged [transportMethodPopUpButton setNextKeyView: smtpHostField] since it's causing a segfault. Could be a bug in GNUstep. Must investigate this problem. * Modified TransportMethodEditorWindowController: -transportMethodHasChanged to set the next and previous key view of our 'unused' objects to nil to prevent a bug in the AppKit (in NSView: -dealloc, it can call [_nextKeyView setPreviousKeyView: nil] or [_previousKeyView setNextKeyView: nil] on a view that has been deallocated but the _nextKeyView or _previousKeyView ivars are referencing a wrong (ie., deallacoted) object) * Re-enabled TransportMethodEditorWindowController: -tableViewSelectionDidChange. * Modified SendingView: -layoutView to set the doubleAction on editTransportMethod: for the transportTableView object. 2001-12-24 Ludovic Marcotte * Modified SendingViewController to add our new outlets and to implement the functionnalities of adding/editing and removing transport methods. * Modified TransportMethodEditorWindowController to implement the required functionnalities when adding or editing transport methods. * Modified GNUMailConstants to rename the identifiers used for the additional headers table in SendingView and added two new identifiers for the transport methods table in SendingView. * Modified EditWindowController.m to use the new sending options. * Modified GNUMail.m: -applicationDidFinishLaunching to convert the old sending options to the new model and to remove the unused keys. * Disabled the 'send' button in BounceWindow since this module needs to be reworked for using the new sending values. * Done TODO #74 (multiple SMTP/personal profile support) and removed it from the TODO list. * Added -transportMethodHasChanged to TransportMethodEditorWindowController in order to set the fields to editable (or not) when the selection of Mailer/SMTP changes in the popup button and to set correctly the nextKeyView for each UI element. 2001-12-23 Ludovic Marcotte * Added our new class for specifying the name of our new personal profile (when we click on Add in PersonalView). The new class name is NewPersonalProfilePanel and it's controller NewPersonalProfilePanelController. * Modified the GNUmakefile to include those files. * Initial modification of PersonalViewController for using NewPersonalProfilePanelController. * Finished the implementation of PersonalViewController for the features related of adding and deleting personal profiles. (implemented -addClicked and -deleteClicked). * Modified NewAddressPanel: -layoutPanel to set the keyEquivalent property of the okButton to @"\r" and also set the image and alternate image. * Done the same thing in NewMailboxPanel and NewPersonalProfilePanel. * Removed extra #import "GNUMailConstants.h" in NewMailboxPanel.m and NewPersonalProfilePanel.m * Added our new classes for specifying multiple transport methods and its controller. The name is TransportMethodEditorWindow and TransportMethodEditorWindowController. * Modified the GNUmakefile to include those files. * Refactored a little bit SendingViewController and SendingView in order to be ready to accept this new class. * Done the UI in TransportMethodEditorWindow. 2001-12-22 Ludovic Marcotte * Modified Utilities: -attributedStringFromContentForMessage: mimeTypeManager: so that when we have a text/* message and the Content-Transfer-Encoding is quoted-printable, we don't decode the content since it has already be done in Pantomime. 2001-12-21 Ludovic Marcotte * Added two new NSPopUpButtons in EditWindow (with labels and accessors) to allow the selection of which Personal and delivery settings to use when sending a particular E-Mail. * Resized the table in FilteringView.m and moved the up/down. * Modified GNUMail: -applicationDidFinishLaunching to convert the old personal preferences (EMAILADDR, NAME, ORGANIZATION and REPLYTOADDR) to the new model. We also remove them after having migrated them to the new model. Also, if GNUMail.app wasn't configured before, we create a default PERSONAL setting with blank values. * Modified PersonalView to use a box for displaying the informations related to the 'personal' settings. An outlet 'box' has been defined for this. Also, added a NSPopUpButton (with outlet name 'popUpButton') for being able to select which personal setting we wand and also added two buttons (Add/Delete) to be able to add or delete personal settings. Currently those buttons do nothing. * Modified PersonalViewController to link our two new outlets defined in PersonalView (box and popUpButton). Added three new IBAction: - okClicked - deleteClicked - changePersonalSelection Modified -initializeFromDefaults and -saveChanges to use the new preferences model. Also added -_synchronizePersonalPreferencesWithCurrentSelection to temporarily save the modified values to our allPersonalValues ivar. * Added EditWindowController: _loadPersonalProfiles to populate the fromPopUpButton with the profiles defined in the preferences panel. Also linked the two outlets defined in EditWindow. Also modified initMessageWithData to use the personal informations from the selected profile in the fromPopUpButton. * Modified PasswordPanel: -layoutPanel to set the keyEquivalent property of the okButton to @"\r" and also set the image and alternate image. This is a 'test'. * Done the same thing in ReceivingWindow. * Done the same thing in PrefWindow. * Done the same thing in MimeTypeEditorWindow. * Done the same thing in FilterEditorWindow. * Changed [self class] to TextEnrichedConsumer in TextEnrichedConsumer: +attributedStringFromTextEnrichedString so it compiles cleanly under OS-X. 2001-12-20 Ludovic Marcotte * Modified ExtendedAttachmentCell to draw the cell a little bit higher (same thing with the string) and we also now center the string under the attachment cell. * Added the new class TextEnrichedConsumer that allows to produce a NSAttributedString from a text/enriched content of a E-Mail part. Done TODO #208. * Modified Utilities.m to use TextEnrichedConsumer: +attributedStringFromTextEnrichedString when it has to display the parts that has a text/enriched Content-Type. * Modified EditWindowController: -insertFile to use the ExtendedAttachmentCell when inserting attachments to an email. * Modified Utilities: +attributedStringFromContentForMessage: mimeTypeManager: to separate our body part for what was before it by adding a \n. * Done TODO #96. The menu item 'Undelete' in the Message menu is now properly 'disabled' if a message can't be undeleted. * Modified MacOS-X project to include TextEnrichedConsumer.h/.m in the build process. 2001-12-19 Ludovic Marcotte * Modified POP3View to add a new NSButton useAPOP for being able to specify if we want to use APOP by default. * Modified ReceivingWindowController to load/save the new USEAPOP preference. * Added the new key ("Use APOP (if possible)") in all Localizable.strings file. * Modified LocalInboxWindowController to set the POP3Store to use APOP or not depending on the user's default USEAPOP. * Added a new class: ExtendedAttachmentCell that displays the filename of a NSTextAttachment with the representation in the cell. * Modified the GNUmakefile to include ExtendedAttachmentCell.h/.m * Modified Utilities.m to make use of the ExtendedAttachmentCell. * Added missing #import GNUMailConstants.h in ExtendedAttachmentCell.m * Updated MacOS-X project. 2001-12-18 Ludovic Marcotte * Modified a wrongly spelled string "comminication" instead of "communication". Updated LocalInboxWindowController, MailboxManagerController and all Localizable.strings files. * Modified EditWindowController: -initMessageWithData to correctly set the Organization and the Reply-To header values since Pantomime was modified to not rely on NSUserDefaults anymore. 2001-12-18 Martin Brecher * Update German translation 2001-12-18 Ludovic Marcotte * Renamed LocalInboxWindowController: -transferMessagesFromFolder: ... to -transferMessagesFromPOP3Folder so it makes more sense. * Moved the filter matching code to LocalInboxWindowController: -matchFilterRuleFromRawSource: count: and modified transferMessagesFromPOP3Folder: count: to use it. * Modified LocalMailDelivery to return an array of messages as raw source (in -messagesFromMailspoolFile) instead of transferring them directly to a folder. * Refactored LocalInboxWindowController: -getNewMessages to activate filters for LocalMailDelivery and moved some code to alert the users so that it is used for both POP3 and LocalMailDelivery. TODO #203 is partially done. * Added IMAPMailWindowController: -setFolder that calls [super setFolder: theFolder] and also starts the timer for fetching new emails in IMAP. Moved the code from -windowDidLoad since the folder wasn't set, [self folder] was of course returning nil. 2001-12-17 Ludovic Marcotte * Modified LocalInboxWindowController -getNewMessages so that if an error occurs while trying to connect to the POP3 server, we handle it properly. * Done the same thing in MailboxManagerController for IMAP servers. * Added some todos. * Changed GNUMailInfo.plist to set the version number to 1.0.0. * Added ExtendedTableColumn.h, ExtendedTableColumn.m, ExtendedTableView.h, ExtendedTableView.m. Patch from Pierre-Yves Rivaille . * Modified FilteringView.h/.m and FilteringViewController.m to use the ExtendedTableView. Patch from Pierre-Yves Rivaille . * Added ExtendedTable* to the GNUMakefile. Patch from Pierre-Yves Rivaille . * Modified FilteringView.nib for MacOS-X. Patch from Pierre-Yves Rivaille . * Added missing keys for new strings in all Localizable.strings files. Also updated the french translation for those strings. * Modified LocalInboxWindowController: -getNewMessages to actually put the alert panel for a wrong password at the place we had it before I made the changes for handling errors while trying to connect to a POP3 server. * Updated MacOS-X project file to include the ExtendedTable* files. 2001-12-16 Ludovic Marcotte * Fixed a bug in LocalInboxWindowController: _transferMessagesFromFolder: count:. We now correctly deletes the messages from the POP3 server. 2001-12-14 Ludovic Marcotte * Corrected FilteringView.nib so that the tableView outlet is properly connected and the dataSource is set. Also set the column identifiers to the right values. * Modified MailWindow.nib, LocalInboxWindow.nib and IMAPMailWindow.nib so that the textView of each nibs has the controller as its delegate. * Changed the custom class from NSTextField to NSSecureTextField in PasswordPanel.nib 2001-12-14 Ludovic Marcotte * Modified AddressBookController: -windowDidLoad to add the target and the double-action selector to the tableview manually under OS-X (like we do in AddressBookWindow.m under GNUstep). * RELEASE OF 0.9.0. * Added tag v0_9_0 for current files 2001-12-13 Francis Lachapele * Fixed autosizing of RAWSourceWindow.nib * Added return key equivalent to NewAddressPanel.nib * Added return key equivalent to NewMailboxPanel.nib * Added return key equivalent to PasswordPanel.nib * Improved MimeTypeEditorWindow.nib * Improved MailcapWindow.nib * Added return key equivalent to FilerEditorWindow.nib * Changed attributes of table of AddressBookWindow.nib 2001-12-13 Ludovic Marcotte * Modified PrefWindow to use _(@"Personal") and not _(@"Personnal"). Reported by Martin Brecher. * Adding missing "No" key and values in all Localizable.strings files. Reported by Martin Brecher. * Added FilterManager: -addFilter: atIndex: * Implemented FilteringViewController: - moveUp - moveDown - duplicate * Modified the class Filter so we now implement the NSCopying protocol (ie., implemented - (id) copyWithZone: (NSZone *) zone) in order to be able to call -copy on a Filter object. * Added some items to the TODO list. * Changed _("OK") to _("Ok") in MailboxManagerController. 2001-12-13 Martin Brecher * Updated German translation 2001-12-13 Ludovic Marcotte * Modified FilterEditorWindowController: -_addItemsToFolderNamePopUpButton to remove all items from the popup before adding the names of our local folders. * Modified FilterEditorWindow.m since we were not using the _() for two strings. * Added all missing keys in all Localizable.strings files. * Finished the french translation with Stephane Peron. 2001-12-12 Francis Lachapelle * Added FilterMessageWindow nib file * Fixed popups of FilterEditorWindow nib file * Fixed table connections of FilterEditorWindow nib file * Fixed table connections of SendingView nib file 2001-12-12 Ludovic Marcotte * Fixed a 'casting' bug in Utilities: -bestRepresentationFromMimeBodyPart: mimeTypeManager: We were casting the content of the MIME body part to NSData * even if it could be a NSString. This fix an exception that was raised under OS-X that would prevent the message to be displayed. * Modified Utilities: GNUMailUserLibraryPath() to not use NSStandardLibraryPaths() on GNUstep but rather the code we are using for MacOS-X. * Renamed originalMessage to unmodifiedMessage in EditWindowController.h/.m and MailWindowController.m * Modified LocalInboxWindowController so we now show how many messages have been transferred to other folders by the filters. Suggestion by Nicolas Roard. * Modified FilteringViewController: -edit so we set the window title to: "Edit a filter" instead of "Add a filter" * Modified GNUMailInfo.plist * Modified FilterEditorWindow to specify the nextKeyViews. 2001-12-12 Francis Lachapelle * Added FilterEditorWindow nib file. 2001-12-11 Francis Lachapelle * Removed FAQ from Project Builder file * Added FilteringView nib file 2001-12-11 Ludovic Marcotte * Modified QuotingView to add a new field for getting the line wrap limit. * Modified QuotingViewController to link the outlet of our QuotingView and to save/load the new preference value: LINE_WRAP_LIMIT. * Modified EditWindowController: -parseBodyText: inPart: to use the new LINE_WRAP_LIMIT when calling [MimeUtility wrapPlainTextString: usingWrappingLimit]. * Added LocalInboxWindowController: - _transferMessagesFromFolder: and - _transferMessageFromRawSource: toFolderWithName: and partially finished the support of filters when receiving mails. Added: - transfer to folder - delete Still need to do 'Bounce/Reply/...'. * Added LocalInboxWindowController: - _folderNameExists: forStore: to verify if a folder with a specific name exits in the specified local store. * Disabled the UI elements of the 'Do ...' in FilterEditorWindow since those aren't supported yet. * Moved FAQ to docs/FAQ * Updated Project files under OS-X * Modified NSRegEx and NSRegExRange to import GNUMailConstants.h * Added missing @end in NSRegEx.m 2001-12-10 Ludovic Marcotte * Done TODO #173. We now save the current working path when saving attachments or when adding attachments to a new E-Mail. Patch from Vincent Ricard . * Done TODO #45. We now update the flags of our message when we sucessfully reply to it (ie., we send the replied message) 2001-12-09 Ludovic Marcotte * Implemented FilterManager: -matchedFilterForMessage. * Fixed a memory leak in FilterEditorWindow. We were not releasing actionFolderNamePopUpButton in -dealloc. * Added FilterEditorWindowController: -_addItemsToFolderNamePopUpButton to add the folder names to our popup button from the LocalStore. * Modified FilterEditorWindowController: -setFilter so that if our folder has been renamed or deleted, we select the 'Inbox' folder. 2001-12-08 Ludovic Marcotte * Implemented the displaying support of message/rfc822 as the Content-Type of messages (not only mime body parts) in Utilities: -attributedStringFromContentForMessage: :mimeTypeManager. 2001-12-06 Ludovic Marcotte * Added a lot of new files for Filtering support. * Modified the GNUmakefile, PrefWindow, PrefWindowController and MailWindowController to use the filters. * Added Icons/Filtering.tiff * Moved README and TODO in /docs * Moved COPYING to /docs * Added doc files from Henry Spencer's regex library * Added Henry Spencer's regex library code * Added NSRexEx and NSRexExRange classes from Francis Lachapelle . This provides a small Objective-C front-end to Henry Spencer's regex library. * Activated the use of the regexp code in FilterManager: -_matchString: operation: criteria: * Activated the regexp code in the FindWindow. * Added more colors in the FilterEditorWindow. * Added an IBAction -setMessage to FilterEditorWindowController * Added missing IBActions for all action methods in MIMEViewController. * Removed extra #import in MimeTypeEditorWindow.m * Removed unused #imports in MimeTypeEditorWindow.h * Added the FilterMessageWindow and its controller to specify the message that will be added before a message is bounced (or an other operation) when a filter is found and applied. * Created a new notification: FiltersHaveChanged so that MailWindowController can reload its list of filters when they change. * Added MailWindowController: -loadFilters to load the filters when the notification is received. We also register the notification in -windowDidLoad and we remove it in -dealloc. * Activated HTML body part support under MacOS-X. 2001-12-05 Ludovic Marcotte * Modified EditWindowController: -parseBodyText: inPart: so that we fold the lines of a QP encoded mail to 76 characters to comply to RFC2045. * Changed void to IBAction for action methods of EditWindowController.m 2001-11-30 Francis Lachapelle * Added tag v0_8_0 to current CVS files 2001-11-30 Ludovic Marcotte * Updated GNUMailInfo.plist for the next release (0.9.0) 2001-11-30 Ludovic Marcotte * Updated FAQ * Added new common_Unknown.tiff that should work on both GNUstep and MacOS-X. Done by Francis. * RELEASE OF 0.8.0 FINAL. 2001-11-30 Francis Lachapelle * Removed Editable option of most table columns 2001-11-29 Francis Lachapelle * Fixed autosizing of MIMEView.nib 2001-11-29 Ludovic Marcotte * Modified EditWindowController so that under OS-X, we don't show/hide ccField and bccField but rather set them enabled or not. * Modified ReceivingViewController so that -getMailspooFile is defined as an IBAction * Updated some nibs. * Modified MIMEViewController: -initWithNibName so that under MacOS-X, we link manually the table columns outlets since you CANNOT connect them in IB if the view isn't in a NSWindow. That's silly. * Done the same thing in SendingViewController * Fixed a remove bug in ReceivingViewController. The way it was done would make it impossible to remove a pop3/imap server under MacOS-X * Modified ReceivingWindowController so that we use under OS-X [[popup selectedItem] title] instead of [[popup selectedCell] stringValue]. 2001-11-29 Francis Lachapelle * Fixed connections in EditWindow.nib * Fixed autosizing in SendingView.nib, ViewingView.nib * Removed window close button of PrefWindow.nib * Added ReceivingView.nib, ComposeView.nib, MIMEView.nib, PGPView.nib 2001-11-29 Ludovic Marcotte * Modifed SendingView and SendingViewController to add two IBOutlets for the table columns for the additional headers table view. * Modified all controller classes (that have a window) to set the window title before the end of -initWithWindowNibName in order to load the window from the nib immediately. * Modified Utilites.m to support multipart/appledouble content types. Refactored the class to reuse the code as much as possible. * Added a #ifndef MACOSX in GNUMail: -applicationWillFinishLaunching so we don't declare the action variable under OS-X 2001-11-28 Francis Lachapelle * Improved BounceWindow.nib, PrefWindow.nib, NewAddressWindow.nib, NewMailboxPanel.nib and PersonalView.nib * Added ViewingView.nib and SendingView.nib 2001-11-28 Ludovic Marcotte * Changed PreferencesModule -init for -initWithNibName. * Changed all controller implementing the PreferencesModule protocol. * Defined two new IBOutlet in MailcapWindowController for the table columns of our table view. * Fixed a bug in MimeTypeEditorWindowController: -setMimeType. We now verify that the values aren't nil before setting them as stringValue to the text fields. * Removed unused methods in RecevingViewController * Moved the data source from MimeTypeManager to MIMEViewController so it makes more sense and it's easier to integrate with OS-X. * Fixed a bug in SendingViewController. We were linking the wrong outlet for sendmailField. 2001-11-27 Ludovic Marcotte * Changed all 'View' controllers for the preferences panel to retain the view when we load the nib under OS-X since it's a weak reference. Modified -dealloc to release the view under OS-X too. * Added a Cancel button in EditWindow * New common_Unknown.tiff, up.tiff and down.tiff images that will work on OS-X. Done by Francis Lachapelle * Added missing @end in MIMEViewController * Updated Project file and MainMenu.nib 2001-11-26 Ludovic Marcotte * Fixed Utilities: GNUMailUserLibraryPath(). It was returning the wrong path under OS-X. * Moved all views in the preferences panel to a MVC design. Created the following classes: - PersonalViewController - ViewingViewController - SendingViewController - PGPViewController - QuotingViewController - ComposeViewController - MIMEViewController - ReceivingViewController * Removed #import "MailWindow.h" in EditWindowController.m * Added some NSBeep() calls if in toButton/ccButton/bccButton we have no selection or the lastMainEditWindowController is nil in AddressBookWindowController. * Added the Protocol PreferencesModule.h 2001-11-25 Ludovic Marcotte * Added Utilities: -bestRepresentationFromMultipartAlternative in to find the best representation from a multipart/alternative content type object. * Modified Utilities: -attributedStringFromContentForMessage: ... to use this new method. * Modified PrefWindowController: -addModuleToView to not set the content view of the box to aModule if aModule is already the content view of the box. * Fixed a small size problem of the Status column in MailWindow. * Added PasswordPanel.nib, RAWSourceWindow.nib and MimeTypeEditorWindow.nib and ReceivingWindow.nib * Updated other nibs and the project file. * Modified ReceivingWindowController so that our two views (imapView and pop3View) are initialized under OS-X. * Added MailcapWindow.nib 2001-11-23 Ludovic Marcotte * Added BounceWindowController.h in PB's project file * Added BounceWindow.nib * Updated some nibs like MainMenu, NewAddressPanel, etc. * Removed unused variable in Utilities: -attributedStringFromHeadersForMessage: showAllHeaders: * Modified Utilities: -attributedStringWithString : attributes: so that if theAttributes is nil we return an attributed string with the systemFont instead of a plain attributed string. * Moved the observer for the NSWindowDidBecomeKeyNotification from MailWindow to MailWindowController * Modified PrefWindowController to call [NSApp stopModal] when the ok/cancel buttons are clicked. Added the method PrefWindowController: -cancelClicked to support this. 2001-11-23 Ludovic Marcotte * Modified Utilities: GNUMailUserLibraryPath() so that we return the right path under OS-X. Patch from Stephane Corthesy . * Put back the old icons. * Modified the about panel. Added Francis Lachapelle as a co-author of the application. * Added a FAQ * Fixed the crash bug in MailcapWindowController. We were using a NSArray instead of a NSMutableArray for the mimeTypes ivar. * Updated some nibs and the OS-X project files. * Corrected some typos in the localization files. 2001-11-22 Ludovic Marcotte * Moved the type of lastMailWindowOnTop from MailWindow * to id since we don't compile MailWindow under MacOS-X. * Removed some compiler warnings in MailWindowController * Defined the menus (and menu items) as IBOutlets in GNUMail.h and now we don't include the manual menu creation in GNUMail.m: -applicationWillFinishLaunching under MacOS-X since we are going to use the MainMenu nib. * Updated Swedish translation, patch from Erik Dalen. * Removed debug output in MailWindowController * Modified MailboxManagerController, EditWindowController and MailWindowController so we use folderForName: parse:NO if we can so that we won't parse an entire mbox for nothing. * Removed the dependancy of MailWindow (the class) in EditWindowController and MailboxManagerController by adding a mutable array of opened windows in GNUMail.m. Added acessors and methods to add and remove an opened window. Modified MailWindowController to add the window in -windowDidLoad and to remove it in -windowWillClose. * Modified ReceivingWindowController so that we don't call initialize from defaults in -setServerName but in ReceivingView when we're editing. 2001-11-21 Ludovic Marcotte * Added OSX's Project Builder project file * Added English.lproj/InfoPlist.strings * Added English.lproj/MainMenu.nib * Starting to add nibs 2001-11-21 Martin Brecher * Updated German translation 2001-11-21 Ludovic Marcotte * Refactored GNUMail.{h,m}. Defined the action methods with IBAction and reorganized the source so it 'looks' better. Documented the code. * Added the new "Local" key in MailboxManagerController section of the localization files. * We now verify if the folder is open before showing the wait panel. Suggestion by Martin Brecher. * Reorganized all the source code and re-imported on the CVS * Added the "Local" German translation. * Updated README * Removed done TODO items * Added a new option in PersonalView to be able to show or hide the wait panels in the entire application. By default, they are hidden. * Added new key in all localization files * Added GNUMail.app in .cvsignore 2001-11-21 Martin Brecher * Updated German localization strings. 2001-11-20 Ludovic Marcotte * Refactored MailWindowController. Moved -attributedStringFromContentForMessage -attributedStringFromHeadersForMessage -attributedStringWithString and -stringFromRecipients to Utilities. Refactored those methods (the are now static) in order to make them work in MailWindowController and EditWindowController. * Refactored EditWindowController and MailWindowController so that they uses the methods in Utilities. TODO #176 * Added missing keys for the translation of "Yes, don't ask again" in all localization files. * Added missing keys for all 'wait panels' in AddressBookController, BounceWindowController, EditWindowController, MailboxManagerController and MailWindowController. * Updated swedish translation. Patch from Erik Dalen. 2001-11-20 Martin Brecher * Updated German translation 2001-11-19 Ludovic Marcotte * Modified GNUMail: -removeAllItemsFromSendToAddressBookMenu so we remove the items at the index 0 and not by using the reference of the object. * Changed EditWindowController: -setSignature so that we use "-- " instead of "--" at the beginning of a signature * First implementation of "Wait panels" in LocalInboxWindowController (for POP3) and in MailboxManagerController (for IMAP - while connecting). * Added 'wait panels' when you open and when you close a mailbox. * We now call [self updateLastMailWindowOnTop: nil] in MailWindowController: -windowDidLoad * Modified LocalInboxWindowController to include an accessor to the instance of that class in order to not try to get the new messages in GNUMail: -getNewMessages if the window have been closed and released. * Added missing keys in all localization files. * Added patch from Vincent Ricard to allow multiple selection in the address book. Modified the patch and fixed small bugs in it. * Updated the Swedish translation. Patch from Erik Dalen * Added a 'wait panel' when bouncing messages and when sending messages 2001-11-18 Ludovic Marcotte * Added -Wall to the GNUmakefile * Suppressed most warning messages and removed all unused variables. * Changed MailcapParser so that it class stringByTrimmingWhiteSpaces instead of stringByTrimmingSpaces * Moved the dataSource from AddressBook to AddressBookController since it makes more sense and since it is 'necessary' for MacOS-X. * Updated all localization files to include missing keys * Corrected a bug in MailWindowController: -attributedStringWithString. * Added more keys to localization files. 2001-11-18 Martin Brecher * Fixed a German error message 2001-11-17 Ludovic Marcotte * Fixed a bug in GNUMail: -addToAddressBook that could totally corrupt the address book if the sender wasn't a NSMenuItem. 2001-11-17 Martin Brecher * Translated new strings to German 2001-11-16 Ludovic Marcotte * Now possible to set the port of your POP3 or IMAP server in ReceivingWindow. Introduced the PORT preference key. * It's now possible to always show all headers by setting the new preference option (SHOWALLHEADERS) un the ViewingView. * It's now possible to send addresses from a message directly from the Message menu -> Send to address book (need to fix some little things here) * Modified ReceivingWindowController so we don't try to remove the password or the server name from the user default's database if they are not in there! (This happens when you add a new entry). 2001-11-16 Martin Brecher * Updated German translation 2001-11-15 Ludovic Marcotte * Moved the FilterTextFieldTag constant from AddressBookWindow to GNUMailConstants so that we can use this constant if we are under MacOS-X. * Moved some imports from PrefWindow.h to PrefWindowController.m so that it compiles under MacOS-X. * Modified NewAddressPanelController so that we don't user -parent/-setParent but rather -addressBookController/-setAddressBookController. Modified AddressBookController to use this new method. * Done the same thing with NewMailboxPanelController * Added a submenu "Save text from message" in the message menu that allows to save the content of a message (text only - ascii) where you want. Suggestion by Erik Dalen. * Added MailWindowController: -textView to return the textView outlet. * Fixed a missing " in the german localization file * Refactored GNUMail.m so we don't use the autorelease pool anymore. 2001-11-14 Ludovic Marcotte * Modified BounceWindowController since I rewrote entirely the way messages are bounced. * Added -appendAdditionalHeadersToString to the BounceWindowController class. This method appends the additional headers defined when bouncing a message. Added an #ifndef MACOSX so we don't call tzset() under MACOSX. * Commented a NSLog in EditWindowController 2001-11-13 Ludovic Marcotte * Finished TODO #153. We now use the charset defined in the Content-Type of the message when decoding QuotedPrintable attachments instead of using ISO-8859-1 all the time. * Refactored EditWindowController * Modified EditWindowController to encode the filename in QP in case we need to. * Modified ReceivingView and LocalInboxWindowController so that we can now start/stop the timer if we modify the preferences and we apply those changes. We don't need to restart the application anymore. (TODO #76) 2001-11-12 Ludovic Marcotte * Modified MailWindowController, IMAPMailWindowController and LocalInboxController to be able to load nibs (for MacOS-X). Modified the classes that depend on these ones. * Done the same thing for EditWindowController. * Refactored EditWindow * Modified PrefWindowController to be able to load nibs (for MacOS-X). Modified the classes that depend on this one. * Done the same thing with MailcapWindowController (A BUG HERE NEEDS TO BE FIXED) * Modified MimeType: - (int) setType -> (void) setType * Added #ifndef MACOSX #import "...Window.h" in all controller classes and refactored most of these controller classes. 2001-11-10 Ludovic Marcotte * Integrated a patch from Jeff Teunissen that allows to have a ~/gnumail of your choice and an Inbox/Outbox/Trash folder of your choice. Currently, it's only configurable through the tool 'defaults'. The new keys are: LOCALMAILDIR, INBOXFOLDERNAME, OUTBOXFOLDERNAME and TRASHFOLDERNAME. * Finished the mailbox rename feature * Updated localization files with minor modifications * It's now possible to desactivate the local mail spoo file mail transferring feature from the ReceivingView preference panel (TODO #174) 2001-11-09 Ludovic Marcotte * In IMAPMailWindowController, replaced NSDebugLog by NSLog * Added a file called NIBS that describes how nibs are used in GNUMail.app * Modified PasswordPanelController to be able to load nibs (for MacOS-X). Modified the classes that depends on this one. * Done the same thing with MailboxManagerController * Done the same thing with NewMailboxPanelController * Done the same thing with AddressBookController and fixed a small bug. * Done the same thing in BounceWindowController * Done the same thing with RAWSourceWindowController * Done the same thing with NewAddressPanel * Done the same thing with MimeTypeEditorWindowController * Done the same thing with ReceivingWindowController 2001-11-09 Vincent Ricard * Fix TODO #177 and #178 (translate some strings to english and french) 2001-11-08 Ludovic Marcotte * Integrated a patch from Vincent Ricard that modifies the way flags are set when doing a delete operation on multiple messages at the same time. The usability is now better. * Now prompts a panel to ask you if you want to reply to all recipients when replying to a mail. 2001-11-08 Martin Brecher * Updated German translation 2001-11-08 Ludovic Marcotte * Removed the #ifdef in NSStringExtensions.h * Now imports NSStringExtensions.h in FindWindowController.m MailWindowController.m and MimeTypeManager.m * Initial support for being able to rename mailboxes. Only the UI is done. 2001-11-07 Ludovic Marcotte * Minor updated for the french translation from TODO #175 * Removed the code the send the NSTableViewSelectionDidChangeNotification in MailWindowController: -deleteMessage since the notification is actually fired in selectRow. If the index stays the same, we don't need to fire his notification. * Modified NSStringExtensions so that if we are under GNUstep, we use the method stringByTrimmingSpaces which is quite efficient. Otherwise, we use our own method. * Updated the Swedish translation. Patch from Erik Dalen for TODO #175 * We now store password in an encrypted format. Patch from Vincent Ricard. TODO #117 is done. 2001-11-07 Vincent Ricard * fix TODO #175 (translate the new strings in EditWindowController.m) 2001-11-07 Ludovic Marcotte * Refactored MailboxManagerController * Fixed a range bug in NSStringExtensions -stringByTrimmingWhiteSpaces * Updated the GNUmakefile to include NSStringExtensions in the build 2001-11-06 Ludovic Marcotte * Modified MailWindowController so we do an extra check on the filename if the Content-Type is image/* * Modified EditWindowController: -initMessageWithData so we verify each recipients before sending the email to be sure that they are all correctly formatted. * Fixed two small memory leaks in EditWindowController * Modified NSStringExtensions so that we always use our own version of stringByTrimmingWhiteSpaces since GNUstep's version consumes a mammoth amount of RAM. 2001-11-05 Ludovic Marcotte * When marking a mail as 'deleted', we scroll to the row that we have selected. 2001-11-02 Ludovic Marcotte * Modified LocalInboxWindowController and IMAPMailWindowController so that we try to aquire the lock instead of 'forcing' to aquire it. * Initial implementation of text parts defined in mime/multipart messages as an attachment. * Modified IMAPMailWindow so we now call the right getNewMessages selector. * Done some refactoring in MailWindowController and fixed memory leaks. 2001-11-01 Ludovic Marcotte * Modified EditWindow.m and MailWindow.m so that we in include insets of 5,5 for our NSTextView object. * We now show a \n before a message/rfc822 part. * GNUMailConstants: removed unused thread notification * Replaced the thread by a timer in LocalInboxWindowController and IMAPMailWindowController. * Removed unused code in GNUMail.app since we don't need to wait until threads are closed in order to quit the application. * Removed some debug informations in RAWSourceWindow 2001-10-31 Ludovic Marcotte * Some refactoring in some classes (GNUMail.m) * Modified PrefWindowController so we now encode properly the text/plain message if it is using charsets other than us-ascii. Now need to do for text body parts. * Added a new method in EditWindowController: - (void) parseBodyText: (NSString *) theString inPart: (Part *) thePart; in order to generalize the process of attaching text parts to a message with the right encoding. Finalized this process. * Refactored MailWindow (a little bit) * Removed unused strings in all language files 2001-10-30 Ludovic Marcotte * Fixed TODO# 172. It's now possible to send messsages when the Outbox folder is open. * Initial support for keeping the size and position of EditWindow in users's defaults. It's currently desactivated since we must fix the resize bug first. 2001-10-29 Ludovic Marcotte * Implement the support of image/* as the only content of a message You need the latest Pantomime for this. * Some cleanups in the preference panel views. 2001-10-26 Ludovic Marcotte * Fixed a little bug in all local files ("Reply all" -> "Reply All") * Updated the french translation (Patch from Stephane Peron) 2001-10-25 Ludovic Marcotte * Completely moved MailWindow to a MVC design. Introduced controller classes for LocalInboxWindow, IMAPMailWindow and MailWindow. * Updated the code everywhere since we introduced those classes. Need to do a lot of testing now. * Updated the swedish translation * Initial implementation of the feature "new message from dead.letter" * Updated the english translation to include the new strings for the dead.letter feature. * Updated the french translation (same as above) * Reactivated the 'get new messages' feature from the menu * Updated the swedish tranlsation (for the dead.letter feature) * Updated the german tranlsation (for the dead.letter feature) * Released 0.8.0pre2 2001-10-24 Ludovic Marcotte * Updated the swedish translation. * In RAWSourceWindow, replaced the FastTextView by a NSTextView so copy & paste is now allowed. * Modified MailWindow: -deleteMessage so that when we delete a message (or more than one), we jump to the message after the last one beeing deleted and we show it. 2001-10-23 Ludovic Marcotte * Changed NSImageOverlaps by NSImageOnly in MailboxManager.m and in AddressBookWindow.m * Modified the way we create our tableView object in MailWindow. * Modified RECT_MAILWINDOW so we save int values and not float values. * We now show text/enriched strings without formatting (and we inform the user that no formatting will be done). * Modified Utilities: GNUMailUserLibraryPath so that we don't call NSStandardLibraryPath() under MacOS-X since there seems to be a bug when linking GNUMail.app. * In AddressBookController: -deleteAddress we now prompt the user before deleting the address. * Translated in english the message above. * Removed (commented) SendingView: -setMode since it was causing problems under MacOS-X. * Reactivated the -setMode. We now call [popup synchronizeTitleAndSelectedItem]; so it fixes the problem we had before. * Modified ReceivingWindowController: -setType so we now call [[receivingWindow popup] synchronizeTitleAndSelectedItem]; to fix the selection bug in the popup button. * Removed [textView setImportsGraphics: YES]; from MailWindow since the bug was corrected in GNUstep. * Updated the French translation. 2001-10-22 Ludovic Marcotte * Modified Utilities.m and GNUMail.m to activate the feature of keeping the size and position of the mail window. I think we should 'deploy' this feature to all windows but, should we deploy it on a per-window basis? To see.. * Partially fixed the bugs of window resize in EditWindow. We need to add the Cc/Bcc labels and fields relatively to our current objects and not at fixed sizes. * Modified more UI code for nil error checking (for MacOS-X). Done ReceivingWindowController, LabelWidget, MailWindow and EditWindowController. * Fixed a potential crash in MailboxManagerController if the RECEIVING key wasn't defined in standardUserDefaults. * Modified GNUMail.m so we now invoke [[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode beforeDate: [NSDate distantFuture]]; in -cleanQuit: when waiting for the thread to be stopped. * In GNUMail: -applicationDidFinishLaunching: we now verify if we really need to create ~/gnumail and Inbox/Outbox/Trash. If they are already present, we skip the creation of those files. * Fixed a bug in MailboxManagerController if RECEIVING wasn't defined. We were not showing the Local folder! * Disable the saving of RECT_MAILWINDOW since there's a bug in GNUstep. 2001-10-21 Ludovic Marcotte * Modified ViewingView so it works better under MacOS-X. * Same thing for SendingView and ReceivingView. * Initial support of keeping the size of the windows once they've been resized (only for MailWindow for now, and it's not really working so it's disabled in Utilities.m). * In MailboxManagerController, we now set the mask to "resizable" to newly created windows too. 2001-10-21 Jonathan B. Leffert * Removed all imports of NSWindowController.h now that CVS current of GNUstep core is required. 2001-10-21 Ludovic Marcotte * Modified PersonalView so that it works under MacOS-X. We must do the same for all other views. 2001-10-20 Ludovic Marcotte * Fixed a small memory leak in PasswordPanel. We now release iconButton. 2001-10-19 Ludovic Marcotte * Again, new French translation from Stephane Peron * Fixed the bug when sending a Message in EditWindow. That bug was in fact in GNUstep and you now MUST have the most recent version of GNUstep in order to run GNUMail.app properly. * New version of the German translation from Martin Brecher. * New file WHOIS that describes who are working on GNUMail.app and what they do. * Modified MailboxManagerController so it's now possible to transfer messages in opened mailboxes (TODO #66). * Cleaned MailWindow: -dealloc. We weren't doing right when removing our observers. * Modified the 'nextKeyView' in PasswordPanel * Added a Swedish translation from Erik Dalen . 2001-10-18 Ludovic Marcotte * Fixed EditWindow: -dealloc of bodyText. That was caused by a serious bug of GNUstep that I've fixed on Oct. 18 2001. You MUST upgrade your CVS sources of GNUstep otherwise, GNUMail.app will crash (actually, GNUstep GUI) if you try to re-open an EditWindow after closing one. * Updated the French translation. Patch from Stephane Peron * Put back the setImportGraphics: YES in MailWindow for the textView since we can't click on attachments otherwise. This breaks copy /paste in the textView. This is a bug in GNUstep for sure. * In EditWindowController: -sendMessage we now close the Outbox folder BEFORE the window. * Removed unused code in EditWindowController: -windowWillClose * Applied a small patch from Pierre-Yves Rivaille to clean-up MailWindow: -removeTransferredMessages. 2001-10-17 Vincent Ricard * the localization is ready (all files are localizated) 2001-10-17 Ludovic Marcotte * Fixed a memory leak in ViewingView. * Added french translation from Stephane Peron * Fixed a memory leak in MailcapWindowController that would cause a segfault. * Fixed the release of singletons for preferences. We need to fix the bug in NSTableView for that (we retain the dataSource and we should not). Modified all the preferences view to set the singleInstance static variable to nil when -dealloc is called. * Fixed a memory leak in ReceivingWindow. We were not releasing our tab view items. There's a bug in GNUstep and you must have the most recent version of GNUstep GUI in order to use GNUMail.app now. * Removed some NSLog that were quite annoying at run-time * Cleaned some things while creating the bodyText in MailWindow. * Removed the setImportGraphics call so that copy/paste now works from bodyText. * In BounceWindowController: -messageInitializationWasSuccessful we verify that at least one To has been defined. 2001-10-16 Ludovic Marcotte * Modified ReceivingWindow/ReceivingWindowController so that we can now use the "remember password" feature. * Implemented PasswordPanel and PasswordPanelController for prompt password. * Implemented 'prompt for password' in LocalInboxWindow.m with a password cache so we don't ask for a correct password more than one time. * Implemented MailboxManagerController: -passwordForServerName for being able to prompt the password for an IMAP connection. * Completed the support for 'prompt password' for IMAP folders. * Fixed a small bug in MailWindow. We moved back the clearing our of textView in showMessage. * Changed the delegate to the window controller in EditWindow for the subject text field. * We now give to the user a better explaination when we can't open the LocalStore. * Now includes Utilities.h in GNUMail.m * Fixed a serious bug in PrefWindowController. The PersonalView was never saved! * Integrated a patch from Pierre-Yves Rivaille so that in removeTransferredMessage, the notification is fired when the selection changes. * Updated the German translation. Patch from Martin Brecher . 2001-10-16 Vincent Ricard * the localization continues (localizated files: Address.m to LabelWidget.m) 2001-10-16 Ludovic Marcotte * In MailWindow: -removeTransferredMessages, changed if (firstIndexOfSelection >= ([folder count] - 1) to if (firstIndexOfSelection > ([folder count] - 1). Patch from Pierre-Yves Rivaille . * Modified MailWindow: -showSelectedMessage (renamed to showMessage) and -attributedStringFromContentForMessage in order to support mime body part of content-type message/rfc822 * Some minor cleanups in GNUMail.m * Added the German translation (initial translation) from Martin Brecher * Fixed a bug in GNUMail.m (showSelectedMessage -> showMessage) * Fixed a bug in GNUMail.m if the Inbox folder of the local store was not present. There's still a strange segfault on exit. Must fix that one. 2001-10-15 Vincent Ricard * beginning of the english localization (just GNUMail.m for the moment) 2001-10-15 Ludovic Marcotte * in ReceivingWindow, removed the #import * Converted EditWindow to the MVC paradigm and fixed the 'move left/right' bug in the bodyText. * Cleaned a little bit EditWindow * Corrected a type in GNUMail (Maiboxes -> Mailboxes) * Added a GNUmakefile in /GNUMail and modified the README * Modified MailWindow so that action methods have an argument * In EditWindowController, we verify that the filename of our attachment is not nil before making an assigment to the filewrapper. * Modified GNUMailConstants.h to include the macros used for the localization. 2001-10-12 Ludovic Marcotte * Moved the buttons +/- in AddressBookWindow so that we have the same UI consistency between AddressBookWindow and MailboxManager * Moved the delegate of the browser from MailboxManager to MailboxManagerController and fixed a bug in MailboxManagerController * Implemented 'double click action' in MailboxManager for opening a mailbox by double-clicking on it * Mailboxes are now sorted in the MailboxManager view. * In MailWindow: -nextMessage and -previousMessage, we now scroll to the visible row 2001-10-11 Ludovic Marcotte * Fixed a crash in EditWindow since we were using object that was autoreleased. * Modified MimeTypeEditorWindowController to make it more OpenStep friendly. (modified MIMEView and MimeTypeEditorWindow too). * Same thing with ReceivingWindowController * Same thing with MailcapWindowController. Created a memory leak? * Same thing with NewMailboxPanelController * Initial fix of selection when adding/removing mailboxes in the MailboxManagerController. 2001-10-11 Ludovic Marcotte * Removed LICENSE.elm (moved to Pantomime) * Release of 0.8.0pre1 2001-10-10 Ludovic Marcotte * Moved ReceivingWindow to the MVC paradigm. Introduced the new class ReceivingWindowController * NewMailboxPanel is now shown in modal * Moved MimeTypeEditorWindow to the MVC paradigm. Introduced the new class MimeTypeEditorWindowController. * Renamed Mailcap to MailcapParser * Renamed MailcapManager to MailcapWindowController and moved MailcapWindow to the MVC paradigm. * Moved PrefWindow to the MVC paradigm. Introduced the new class PrefWindowController. * Modified ReceivingWindow so that it supports the next key view for most UI elements * Reviewed some code for memory leaks but the bug was in NSMatrix: - setTarget. 2001-10-09 Ludovic Marcotte * Modified EditWindow and MailWindow since InternetAddress: -stringValue now returns a QP encoded string if we need to. * Now defines DESTROY and CREATE_AUTORELEASE_POOL in GNUMailConstants.h * Removed CreateWindow and replaced everything by a MVC design. Introduced NewMailboxPanel and NewMailboxPanelController. * Moved BounceWindow to a MVC design and introduced BounceWindowController 2001-10-06 Ludovic Marcotte * Fixed a bug in GNUMail: -init. We now try to open the local store in -applicationDidFinishLaunching instead. 2001-10-05 Ludovic Marcotte * Fixed a small bug into EditWindow: -sendMessage. the Outbox folder wasn't closed if there was an error occuring while sending the message. It would no longer allow the user to send the message. * Refactored MailWindow: -showSelectedMessage. I added two new methods to simplify the processing: - attributedStringFromHeadersForMessage - attributedStringFromContentForMessage * Fixed a memory leak in MailWindow: -rawSourceForSelectedMessages * Fixed a memory leak in MailWindow: -textView: clickedOnCell: ... we now autorelease our NSTask * Fixed memory leaks in MailWindow - now all UI elements are properly released when the window is closed. * Cleaned ComposeView and fixed a memory leak * Cleaned PGPView and fixed a memory leak * Fixed a memory leak in Mailcap: -parseFile * Fixed a memory leak in Mailcap: -parseEntry * Fixed a potential crash bug in PrefWindow * Begin to work on Thread sync when closing LocalInboxWindow and IMAPMailWindow. There's a problem and the app is currently NOT STABLE AT ALL. 2001-10-04 Ludovic Marcotte * When we forward emails, we ensure now that we display the images directly instead as an icon. (TODO #148) * Major bugfix in MailWindow: -showSelectedMessage. We now verify the contentTransferEncoding for message with a content type text/plain BEFORE showing them. So that we support message sent using base64/qp/none/8bit. * We do the samething too, to the Messages with a content type text/plain. 2001-10-03 Ludovic Marcotte * Now support the Description when reading from /etc/mailcap (patch from Vincent Ricard) * Renamed InboxWindow to LocalInboxWindow. That makes more sense. It clears TODO #145. * Fixed memory leaks in EditWindow and cleaned up the code. * Fixed a little bug in EditWindow: -updateViewWithNewMessage wasn't using the MimeTypeManager to set the icons of the attachments. * In FindWindowController, now scrolls to the visible message when calling nextMessage or previousMessage: * Fixed a memory leak in BounceWindow: -messageInitializationWasSuccessful: * In GNUMail: -showLocalInboxWindow, we now set the localInboxWindow to AUTORELEASE. * Done the same thing in MailboxManagerController for all local folder (needs work on the IMAPMailWindow). * Fixed a memory leak in RAWSourceWindow * Added MailboxManagerController: -windowWillClose to add the delegate back when the window has been close. Should we really do that or is it a bug in GNUstep GUI? 2001-10-02 Ludovic Marcotte * Modified GNUMail.app so it now uses the new 'memory model' of Pantomime. * Corrected some memory bugs in Mailcap* * In MailWindow, we now ensure that before appending an attributed string to maStr (in -showSelectedMessage), the attributed string is in the autorelease pool. Modified -attributedStringWithString too, to reflect those changes. * Now every .m includes Constants.h in order to define the RETAIN/RELEASE/... placeholders if we are not using GNUstep * Fixed two small bugs in MailWindow: -removeTransferredMessages. We now 'cache' the messages to delete and we now verify that the folder has at least one message before selecting a row. * Fixed a memory leak in EditWindow * Fix Find that keep the selection of the selected message when results are found (TODO #148) 2001-10-01 Ludovic Marcotte * Implemented IMAPMailWindow. This classe extends MailWindow and is used to provide full IMAP support to an IMAPFolder. * Now scrolls to the last message (the most recent one) when opening a MailWindow. 2001-09-28 Ludovic Marcotte * Imported source on CVS - module GNUMail * GNUMail.app now writes temporary the images received as attachments to a file in order to support more image types by directly showing them in the MailWindow. It now uses all formats supported by libwraster. * Integrated the /etc/mailcap parser from Vincent Ricard. Some cleanups need to be done in the code (I've done some) * Initial implementation of the additional headers you can send when sending a message. The new UI is in the Sending panel of the Preferences. * Fixed a small bug in ViewingView. We won't allow to add empty 'shown headers' 2001-09-27 Ludovic Marcotte * Cleanead MailboxManager * Reactivated all the features in MailboxManagerController for Local mailboxes and IMAP mailbox (transfer to local only) * Added a notification when we change a POP3<->IMAP or when we add/delete one so that the mailbox manager is ok. * Added an option in IMAP to transfer the deleted messages to the local trash folder if you want to. * RELEASE OF 0.7.0 2001-09-26 Ludovic Marcotte * Modified GNUMail so it now uses the new POP3 caching fu * Now should an information panel in IMAPView when clicking on subscribe/unsubscribe. 2001-09-25 Ludovic Marcotte * Cleaned RAWSourceWindow 2001-09-24 Ludovic Marcotte * Reworked the RECEIVING preferences. Now totally incompatible with the previous releases of GNUMail.app * You can now open IMAP folders from the mailbox manager * In IMAPView, initial support for the UI for subscribing to mailboxes. * Now show "verbose" MailWindow window titles. (TODO #134) * The EditWindow window title now has the value of the subject * Cleaned SendingView (TODO #120) 2001-09-22 Ludovic Marcotte * Removed TimeZone configuration in PersonalView and modified BounceWindow to use tzset() instead. 2001-09-21 Ludovic Marcotte * Implemented Bounce. Need to link with the AddressBook. * Renamed POPWindow to ReceivingWindow (TODO #129) * Created IMAPView and POP3View * Changed RECEIVING values: POPPASSWORD -> PASSWORD POPSERVER -> SERVERNAME POPUSERNAME -> USERNAME Change them manually by editing ~/GNUstep/.GNUstepDefaults or recreate you POP3 settings. * Created SERVERTYPE 1 -> POP3, 2 -> IMAP * Modified InboxWindow to not fetch the messages if the server isn't a POP3 server. * Initial support for hiearchical mailboxes. It also shows the IMAP servers defined in the ReceivingView. 2001-09-20 Ludovic Marcotte * POP3 Leave On Server now works. Note that the previous version of the serialized object is no longer supported so emails have to be downloaded again. You can do rm -f ~/GNUstep/Library/GNUMail/UIDs 2001-09-18 Ludovic Marcotte * Fixed forward bug with attachments * Now using Message: - setContentFromRawSource: (NSObject *) theString * Fixed MailWindow when we write the filewrapper to a file; changed the parameter updateFilenames to NO instead of YES. * Reactivated the transfer to the folder Trash on mailboxes closing * Released GNUMail.app 0.7.0pre2 2001-09-17 Ludovic Marcotte * Cleared TODO 130 (problem that we were cutting the last line of a message when appending to a local folder. The problem was in Pantomime. 2001-09-16 Ludovic Marcotte * Reactivated LocalMailDelivery * Changed SEND_TO_OUTBOX to SEND_TO_FOLDER 2001-09-15 Ludovic Marcotte * Pantomime integration * Fixed the Icon in Source/GNUMailInfo.plist * Renamed FindController to FindWindowController 2001-09-04 Ludovic * Fixed a small bug in Flags 2001-09-02 Ludovic * Fixed a small bug in POP3. It wasn't showing the panel that informs you that you don't have any new messages. 2001-08-31 Ludovic * Done some work on Bounce support.. must finish that stuff. * Almost finished the Mime-Type Manager (reviewed the UI too) * Some refactoring in most modules (like Message) * Moved GNUMail's notification names in GNUMailConstants * Optimized a little bit MailWindow * Initial support for the POP3 -> leave on server feature * In ViewingView, if you double click on a pop3 entry, it'll edit it * Finished support of POP3 -> leave on server. It should work very well (TODO #107) 2001-08-30 Ludovic * Added two new mime type fields: description and needsterminal * Added an import button in the MIMEView to import from a mailcap (needs to work on the code that actually imports the data) * Corrected some memory leaks in MIMEView and MimeType * Corrected some memory leaks in MimeBodyPart * Fixed a memory leak in MimeMultipart and some code in Parser that would cause a segfault since we fixed MimeMultipart * Fixed a small memory leak in POP3 * Fixed a small inconsistency in Flags and optimized Parser * Fixed a small memory leak in InternetAddress * Fixed a huge bug in MimeUtility: -decodeText * Fixed a small bug in GNUMail.m for the Print submenu * GNUMail now puts a copy of the sent email in Outbox (TODO #79) * Initial support for Bounce 2001-08-29 Ludovic * Fixed a small bug if now row were selected in the MailWindow (in GNUMail.m and MailWindow.m) * Fixed TODO #90: support of multiple transfer of messages at the same time * Fixed TODO #83: transfer focus to the TextView after inserting an attachment * Modified MimeTypeEditorWindow to set correctly the initial responder and the next key views. * Implemented delete: in MIMEView (for deleting mime-types) * Cleaned a Viewing View and Receiving View * Now enforces some default properties on the NSTableView in MailWindow * Fixed TODO #105: move Retreive interval from Viewing View to Receiving View (to make more sense) * Fixed some memory leaks in PersonalView, refactored and set the next key views. * Refactored SendingView and corrected some memory leaks * Added two new icons for the Preferences Panel * Added PGPView (nothing here for the moment) 2001-08-28 Ludovic * Support of a MIME types manager (initial version) * Integrated the MIME types manager in EditWindow * Fixed some bugs in MimeBodyPart * Fixed a small bug in ViewingView (reported by Martin Brecher) * Fixed the timezone problem in parseDate 2001-08-27 Ludovic * Replaced "Hide All Headers" by "Show Filtered Headers" (TODO #95) * Added the Find submenu in the Edit menu (TODO #98) * Added the "Spelling..." option in the the Edit Menu (TODO #99) * Added the Windows Menu (TODO #102) * RELEASE OF 0.6.0 2001-08-24 Ludovic * Fixed a small bug in Message: -replyWithReplyToAll 2001-08-24 Ludovic * Support of double-click to open a mailbox in the mailboxes manager * Refactored the class MailboxManager * Refactored the class MailboxManagerController 2001-08-23 Ludovic * Support for multiple To * Removed internetAddressWithName:andAddress and internetAddressWithString from EditWindow (moved them) to InternetAddress (and refactored) * Refactored InternetAddresss (removed the 'get' in the methods name) and created stringValue * Fixed a memory leak with InternetAddress * Fixed TODO #73 (File NSView.m: 640. In [NSTextView w -setFrame:] given negative height" error messages in EditWindow * Fixed TODO #52 (included code the stat the mailspool file in the thread) * Fixed TODO #82 - menu Show All Headers -> 'switch' values on click * Fixed TODO #78 - support the delete in Trash (really remove!) * Refactored POPWindow and corrected some memory leaks and bugs * Corrected a small bug in MailboxManagerController:-delete * Refactored CreateWindow and fixed a memory leak * Made some speedups in MailWindow (removed unnecessary calls to showSelectedMessage) and clean some memory leaks 2001-08-22 Ludovic * POP3 now shows the server name in error messages. * Fixed TODO #58 (fix the bug in getMessages if InboxWindow is nil or not visible) * Cleaned up GNUMail.m and InboxWindow.m * Fixed TODO #51 (stop the thread when we close InboxWindow) * Fixed TODO #77 (you can now delete multiple messages at the same time) * Fixed a bug in the release of the mbox in MailboxManagerController * Cleaned Mailbox.m (and .h) and fixed a memory leak * Cleaned RAWSourceWindow.m (and .h) and fixed a memory leak * Removed all references to chloc (indexOfCharacter in NSStringExtensions) 2001-08-21 Ludovic * Moved GNUMail.tiff from Source to Icons * Finished the support for "Show All Headers" * Fixed some memory leaks and a crash bug in EditWindow * Fixed a memory leak in Message and cleaned the forward and the replyWithReplyToAll methods * Fixed a bug in POP3 if the username/password weren't valid and we were in the getNewMessagesThread -> crash the app. * Initial support for Threads (in message fetching) needs more work. 2001-08-20 Ludovic * Fixed a small bug in the MIME encoding * Finished the support of LF vs CRLF sending sending E-Mail * In ViewingView, you now have a "Defaults" button to add the default headers. * Modified PrefWindow (cleaned too) so that if you click on OK or Apply, it saves the informations of all modules * Changed NSMakeRect(0,0,0,0) by NSZeroRect everywhere * Fixed a small bug in Parser, cleaned the code and fixed a bunch of memory leaks * Fixed some memory leaks in Mailbox and MailWindow 2001-08-19 Ludovic Marcotte * Fixed some memory leaks in Flags * Fixed toString() for not inclure \r\n when not sending in SMTP (needs to be finished) * Now includes the Organization header field/value * Cleaned some code 2001-08-17 Ludovic Marcotte * It's now impossible to put more than one more time a contact in a To/Cc/Bcc field * Fixed a bug in SMTP: if there's an error when writing recipients. * Fixed the bug if the Status: header flag wasn't present (we now create a default one) * Fixed a bug in MaiboxManager if you try to open a mailbox w/o selection or if you try to open Inbox (it wasn't opening an InboxWindow but a MailWindow instead) * Fixed a bug in MailboxManager if you try to transfer a message to an unselected mailbox or if you try to delete an unselected mailbox 2001-08-13 Ludovic Marcotte * Cleaned the SMTP code (RFC2821 compliant) * Preferences -> Personal : set a time zone * Message toString() now adds Date: header fields (based on the tz) * When deleting mail and quitting, they get transferred to trash (clears TODO #13) 2001-08-10 Ludovic Marcotte * Cleaned [Foo new] -> [[Foo alloc] init] 2001-08-08 Jonathan B. Leffert * Headers/AddressBookController.h: added #import of NSWindowController.h because AppKit.h doesn't import it. * Headers/EditWindowController.h: Idem. * Headers/FindController.h: Idem. * Headers/MailboxManagerController.h: Idem. * Headers/NewAddressPanelController.h: Idem. 2001-08-05 Ludovic Marcotte * Added the support of dynamically showing mail headers * Finished the 'editor' for those mail headers in the viewing view * Existing users of GNUMail.app will probably want to use the Preferences -> Viewing and add in the Shown Headers the following values: Date, From, To, Cc, Subject 2001-08-05 Jonathan B. Leffert * Source/EditWindow.m ([EditWindow -insertFile:sender]): code cleanup. * Source/GNUMail.m ([GNUMail -applicationDidFinishLaunching:]): we were calling [NSArray arrayWithObjects: @"foo", @"bar", @"hat"] instead of [NSArray arrayWithObjects: @"foo", @"bar", @"hat", nil]. this was causing a segfault. changed [self showPrefWindow: nil] to [self showPrefWindow: self], which is cleaner. * Source/LocalMailDelivery.m ([LocalMailDelivery -init]): in the case that there is no local mail spool, we were releasing self and returning nil. it's probably better to autorelease self and return nil. 2001-07-30 Jonathan B. Leffert * Headers/AddressBookController.h: added #import of NSWindowController.h because AppKit.h doesn't import it. * Headers/EditWindowController.h: Idem. * Headers/FindController.h: Idem. * Headers/MailboxManagerController.h: Idem. * Headers/NewAddressPanelController.h: Idem. 2001-07-30 Jonathan B. Leffert * Header.{h,m}: added dealloc method. changed mutation methods to retain their ivars. * ChangeLog: restructured the file. Since Version 0.5: - Find panel has been implemented (todo #56) - In Preferences -> Viewing: it's now possible to specify which headers you want to see/hide. Current users of GNUMail.app would probably want to add the following values in the hidden list: {TODO} - Fixed a bug in InboxWindow if POP3 couldn't establish a connection - cleaned the API in Message/Part/MimeBodyPart - The sources are now on CVS GNUMail/Documentation/0040755000014600001460000000000010424672357015413 5ustar monotonemonotoneGNUMail/Documentation/COPYING0100644000014600001460000004307610424672357016455 0ustar monotonemonotone GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. GNUMail/Documentation/PREFERENCES0100644000014600001460000001246510424672357017104 0ustar monotonemonotone---------------------------------- DEFAULT_MULTIPART_ALTERNATIVE_TYPE ---------------------------------- This allows you to change the default preferred version of a multipart/alternative content. To favor text/plain parts, use "1". To favor text/html parts, use "2". You can change it by doing: GNUstep: defaults write GNUMail DEFAULT_MULTIPART_ALTERNATIVE_TYPE 2 Mac OS X: defaults write com.collaboration-world.GNUMail DEFAULT_MULTIPART_ALTERNATIVE_TYPE 2 That would change the defaults to favor text/html parts. ---------------------------- MAILBOXMANAGER_OUTLINE_COLOR ---------------------------- This allows you to change the background color of the outline view shown in the mailbox manager window. You can change it by doing: GNUstep: defaults write GNUMail MAILBOXMANAGER_OUTLINE_COLOR "0.850980 0.737255 0.576471" Mac OS X: defaults write com.collaboration-world.GNUMail MAILBOXMANAGER_OUTLINE_COLOR "0.850980 0.737255 0.576471" Colors are specified using RGB values and "0.850980 0.737255 0.576471" gives a nice "salmon" color. --------------------------------- The Date Format in the MailWindow --------------------------------- This allows you to change the format of the date values shown in the Date column of the MailWindow. Three values are used: NSTimeFormatString (for today's mails) NSPriorDayDesignations + NSTimeFormatString (yesterday's mails) NSShortDateFormatString for other mails. These keys are documented in the "NSString Representations for NSDates" section of the following web page: http://developer.apple.com/techpubs/macosx/Cocoa/TasksAndConcepts/ProgrammingTopics/DatesAndTimes/Tasks/DatesToStrings.html You can change them on a per application basis or for all application (NSGlobalDomain). -------------------- MAILHEADERCELL_COLOR -------------------- This allows you to change the background color of the mail headers cell shown in the MailWindow. You can change it by doing: GNUstep: defaults write GNUMail MAILHEADERCELL_COLOR "0.9 0.9 1.0" Mac OS X: defaults write com.collaboration-world.GNUMail MAILHEADERCELL_COLOR "0.9 0.9 1.0" Colors are specified using RGB float values. "0.9 0.9 1.0" gives a very light blue. ------------------------- MAILWINDOW_DATA_VIEW_TYPE ------------------------- This allows you to activate or not message threading by setting the default view used in the MailWindow. To activate message threading, do: GNUstep: defaults write GNUMail MAILWINDOW_DATA_VIEW_TYPE 2 Mac OS X: defaults write com.collaboration-world.GNUMail MAILWINDOW_DATA_VIEW_TYPE 2 and to deactivate it, simply do: GNUstep: defaults write GNUMail MAILWINDOW_DATA_VIEW_TYPE 1 Mac OS X: defaults write com.collaboration-world.GNUMail MAILWINDOW_DATA_VIEW_TYPE 1 ------------------------- MAILWINDOW_REPEAT_SUBJECT ------------------------- This allows you to specify if you want or not to repeat the subject when using message threading in the NSOutlineView of the MailWindow. If you don't want to repeat the subject for children of thread, do: GNUstep: defaults write GNUMail MAILWINDOW_REPEAT_SUBJECT NO Mac OS X: defaults write com.collaboration-world.GNUMail MAILWINDOW_REPEAT_SUBJECT NO If you want to repeat them, just specify YES instead of NO. By default, the subject is repeated. ---------------------- MAILWINDOW_TABLE_COLOR ---------------------- This allows you to change the background color of the table view shown in the MailWindow. You can change it by doing: GNUstep: defaults write GNUMail MAILWINDOW_TABLE_COLOR "0.850980 0.737255 0.576471" Mac OS X: defaults write com.collaboration-world.GNUMail MAILWINDOW_TABLE_COLOR "0.850980 0.737255 0.576471" Colors are specified using RGB float values. For example, the RGB values "0.850980 0.737255 0.576471" gives a nice "salmon" color. ----------------------- OPEN_CONSOLE_ON_STARTUP ----------------------- This allows you to specify if you want the Console's window to automatically open upon GNUMail.app's startup. To activate it, simply do: GNUstep: defaults write GNUMail OPEN_CONSOLE_ON_STARTUP YES Mac OS X: defaults write com.collaboration-world.GNUMail OPEN_CONSOLE_ON_STARTUP YES ------------------------------ OPEN_MAILBOXMANAGER_ON_STARTUP ------------------------------ This allows you to specify if you want the MailboxManager's window to automatically open upon GNUMail.app's startup. To activate it, simply do: GNUstep: defaults write GNUMail OPEN_MAILBOXMANAGER_ON_STARTUP YES Mac OS X: defaults write com.collaboration-world.GNUMail OPEN_MAILBOXMANAGER_ON_STARTUP YES ------------------- QUOTE_COLOR_LEVEL_1 ------------------- This allows you to specify which color you want to use for the first level of quoting. To change the color, simply do: GNUstep: defaults write GNUMail QUOTE_COLOR_LEVEL_1 "1.0 0.0 0.0" Mac OS X: defaults write com.collaboration-world.GNUMail QUOTE_COLOR_LEVEL_1 "1.0 0.0 0.0" There is support for 4 levels of coloration. Other preference keys are: QUOTE_COLOR_LEVEL_2 for the 2nd level, QUOTE_COLOR_LEVEL_3 for the 3rd level, QUOTE_COLOR_LEVEL_4 for the 4th level. ------------- SCROLLER_SIZE ------------- This allows you set the scroller size for the table and text views in the MailWindow to either regular or small. Simply use: on OS X: defaults write com.collaboration-world.GNUMail SCROLLER_SIZE 0 (or 1) on GNUstep: defaults write GNUMail SCROLLER_SIZE 0 (or 1) 0 is regular size, 1 is small size. GNUMail/Documentation/README0100644000014600001460000000567010562042234016264 0ustar monotonemonotoneGNUMail Version 1.2.0 =============================================================================== If you want very good documentation on how to get GNUMail running on your computer, look at the following documentation provided by Dennis Leeuw: http://gnustep.made-it.com/Guides/GNUmail.html For a quick installation guide, read the following lines. Compiling GNUMail for GNUstep =============================================================================== To install GNUMail, install first GNUstep. You can get GNUstep at: http://www.gnustep.org Be sure to fully read and understand the GNUstep installation procedure. You can read a comprehensive guide on how to install GNUstep on Unix systems here: http://documents.made-it.com/GNUstep/Build/ Once you've installed GNUstep, you have to install Pantomime. To install Pantomime, see: http://www.collaboration-world.com/pantomime/ Once you've installed Pantomime, you have to install Addresses for GNUstep. To install Addresses for GNUstep, see: http://giesler.biz/bjoern/en/sw_addr.html Once you've installed GNUstep, Pantomime and Addresses for GNUstep, you can install GNUMail. To compile it: make make install To run it: openapp GNUMail To run it in a different language (English, French, German): defaults write NSGlobalDomain NSLanguages '(French)' openapp GNUMail Compiling GNUMail for Apple Mac OS X =============================================================================== Get Pantomime and GNUMail sources from the URLs above. Uncompress them by using OpenUp (http://www.stepwise.com/Software/OpenUp/) or from the command-line using tar: % cd ~/Desktop (or whereever you saved the source files) % tar -zxvf GNUMail-x.y.z.tar.gz % tar -zxvf Pantomime-x.y.z.tar.gz Start Xcode. Open ~/Desktop/Pantomime/Pantomime.xcodeproj and choose from the menu Build -> Build. Close the project. Now, we are ready to compile GNUMail. Open in Xcode ~/Desktop/GNUMail/GNUMail.xcodeproj and choose from the menu Build -> Build. Compiling and installing the Emoticon, Face and PGP bundles ============================================================================== If you are an OS X user and you've compiled GNUMail, the Emoticon, Face and PGP bundles have also been compiled when compiling the "GNUMail" target. Under GNUstep, simply do the following commands: % cd Bundles/Emoticon; make % cd ../Face; make % cd ../PGP; make % cd ../../ To install the bundles on OS X, simply copy GNUMail/build/Emoticon.bundle, GNUMail/build/Face.bundle and GNUMail/build/PGP.bundle to ~/Library/GNUMail/. For example, one would do: % cp -R build/Emoticon.bundle ~/Library/GNUMail/ Under GNUstep, simply copy GNUMail/Bundles/Face/Emoticon.bundle, GNUMail/Bundles/Face/Face.bundle and GNUMail/Bundles/PGP/PGP.bundle to ~/GNUstep/Library/GNUMail/. For example, one would do: % cp -a Bundles/PGP/PGP.bundle ~/GNUstep/Library/GNUMail/ You must restart GNUMail if you've installed bundles and you want to use them. GNUMail/Documentation/TODO0100644000014600001460000002416010613335063016071 0ustar monotonemonotone# # TODO # # This document lists the features, the bug fixes or the activities # that need to be accomplished (or implemented) for the GNUMail.app project. # # Features that needs to be implemented are categorized as follow: # # FVI : Very Interesting # FII : Interesting # FPI : Potentially Interesting # FNI : Not Interesting (will get removed from the list eventually) # # # Bugs are categirized as follow: # # BUC : Critical Bug (needs a fix very soon) # BUM : Medium Bug # BUS : Small Bug # # # Refactorings are categorized as RRR. # # $Id: TODO,v 1.32 2005/01/22 14:10:24 ludo Exp $ # # # ID TYPE DESCRIPTION 2 BUM When receiving new mails, prevent the scrollback in the MailWindow. 5 BUS Fix all compilation warnings with gcc 3.3.x 6 FPI Be able to drag mailboxes and messages to the Recycler 7 FII Offer the possibility to limit the size of messages we are about to download in POP3. Also verify that the message we are about to download fits on the disk. 10 FVI Finish the Filter management code: - Forward + set message - Bounce message Some issues must be resolved like: a) should we modify pantomime to accept the "text" set for the message? b) which account should we use when sending a message? (should we add the possibility to set a default account in the Sending preferences panel?) etc. 12 FPI Be able to view mails before downloading them. Nisus Email does that. See www.nisus.com for some sshots. 13 FVI Offer translations on OS X (at least French and Italian since people offered their help for thoses) and update the GNUstep ones for the final 1.1.0 release. 14 BUS Fix HTML mails support under OS X. If pictures attached to the mail are referenced in the HTML code, it won't work (ie., the will be considered as normal attachments instead of being replaced in the HTML's content). 17 FPI Offer a switch in EditWindow to specify if we want a MIME message or a text/plain one (like in the original Mail.app). 18 FPI In EditWindow's size label, show the row/column position of the cursor. 26 RRR On OS X, modify all nibs so we really respect Aqua Human Interface Guidelines. 27 FVI Be able to drag and drop attachments in mails from MailWindow/MessageViewWindow to GWorkspace/Finder. 31 FII Implement "smart scrolling" in the message displaying code. For example, it would intelligently scroll to the first "unquoted" line of a message. Offer an user option to activate it or not. 32 FPI On OS X, add a toolbar popup button option to be able to select a different signature when composing a message (ie., a signature other than the one associated with the sending account). 34 FVI Add selection support in the MailHeaderCell. 35 BUS Disable the "Save as Text" menu item when it's not a MailWindow/MessageViewWindow that is on top. 36 BUS When sorting in an Outbox/Drafts folder, sort using To: and not From:. 37 FVI Be able to import mailboxes from: - Eudora - Mail.app 38 FVI On OS X, use sheets for: - opening the AccoutEditorWindow - opening the FilterEditorWindow - opening the MimeTypeEditorWindow 40 FPI Be able to combine actions in the filtering code. For example, we could play a sound and transfer the mail to a mailbox. 41 BUM Modify the filtering code to NOT match a filter a second time when it failed the first time. This slows things down a lot when using an external program like spamassassin and the mail isn't spam. 44 FVI Offer a progress indicator (maybe in a separate window or directly in MailWindow) when compacting a mailbox. 47 BUS On OS X, fix the maximize/zoom issue with all windows. 48 FVI In the AccountEditorWindow (tab Receive Options for IMAP), offer a way to subscribe and unsubscribe to all listed mailboxes and/or allow multiple selection (the 2nd option might be preferable). 49 BUC When deleting a mailbox, remove it from the list of FOLDERS_TO_OPEN and also modify all the filters that had this mailbox as the "Transfer to" target. 50 FVI Use a "strike through font" when displaying deleted message in the MailWindow tableview instead of gray+italic. 51 BUC When adding a folder (w/o any sub-mailboxes) and adding a filter to transfer messages to it, all of them will be lost. Potentially modify the filtering code to verify if the target mailbox is not a folder and use INBOXFOLDERNAME for the specific account if it's not a mailbox. 53 FNI Offer contextual menus on OS X to: - open a URL in a browser or with app xyz 55 FVI Be able "Send later" a mail in EditWindow. 56 FVI Save and restore tasks when quitting / reopening GNUMail.app. Very important for #55. 57 FPI Offer a "Send again" option for message in the outbox. Maybe that could just bounce the mail. 59 FVI Be able to hit the "escape key" to automatically cancel an operation that open a panel. For example, when create a new mailbox, one could hit the escape key and it'll do the same thing as clicking on the Cancel button. 61 FNI Stat() all local mailboxes for new messages, not only Inbox. In case we use procmail to deliver messages to mailboxes. If those mailboxes are open by GNUMail.app, messages will be lost. A better approach would be to modify GNUMail.app's main to accept parameters so the application would deliver the messages to a specific mailbox using DO. 62 FPI Finish NSAttributedString+TextEnriched to add a producer. 63 FNI Set a timer on message reading. For example, we could have a 5 secs timer that will allow us to verify if the user kept the selection on a message for more than 5 secs, If so, we mark this message as read if not, we leave it as unread. 64 FPI When there's a network error (ie., bad connection) while automatically fetching email - we should offer the user the possiblity to deactivate the alert panel. 65 FVI Better support for multipart/related (RFC2387) when displaying messages. 66 FNI For IMAP, allow the users to retreive their emails using IMAP much like they do for POP3. 67 FVI For IMAP, apply filters automatically when mails are receivied. 69 FII The hide deleted/hide read should be saved on a per folder basis and not globally for all folders. Same with the MailWindow size / position. 70 FII Be able to apply the filter before and after the program is executed. 71 FII Be able to save the version of the message produced by the program. 72 BUM Fix the window/tableview/outlineview sizing / position bugs on OS X 73 RRR Review all key binding on OS X and GNUstep. 74 FVI Make use of Localizable.strings files on OS X. 76 FNI Rotate 'sent-mail' (and maybe for other mailboxes) on a monthly basis. This should be rather accomplished by a script (AppleScript or SmallTalk). 78 RRR If an error occurs when appending a mail to a folder (ie., if the folder doesn't exist anymore), we might consider creating this folder. Or, a better approach would be to use the default INBOXFOLDERNAME for the specific account. 79 FVI Have a compact mailbox icon in the Mailboxes window. If for example, it is applied on a folder, it'll compact all mailboxes in that folder. 80 FNI Allow someone to edit incoming mails. 81 FPI Offer an option to the user to change the quoting character from > to | (for example). 82 FVI Filters need a selection for {header: does-not-exist} and {TO: not = one of my accounts} as the simple use of these two filters combined with positive filters for things like mailing lists can be used to manage 95% of spam without needing external products or services. 83 FPI Be able to modify a "bounced" message. We should be able to modify the content and also add other headers. See mail from Paul Williamson for a detailed explanation of the requirements. 85 RRR Modify the bundle interface (and all bundles) so that if we have a multiple selection, the bundles get informed about that so they can hide some "icons" for example. 87 FII Offer a user option ({GS,NX}AutoLaunch == {YES,NO}) to start the application as shown or hidden. 88 FII In the Filter panel, add a "To or From" condition. 90 FVI Better search functionnalities: - search in selected mailboxes (or all) - ability to match against any field/header in a message (see mail from Finn Smith) 92 FNI Offer a group on top of the address book that list the 10 most recently used addresses. 95 FPI Add the focus/unfocus feature in the Mailbox menu like in the original Mail.app. 97 RRR Fix all the "FIXME" in the preferences bundles related to posting notifications when prefs haven't changed. 98 FPI Offer a "text view" source for the signature (not only from a program's output or a file but simply offer a NSTextView object to 'type' the signature in). 100 FII Add two new services: - Attach file(s) - attach selected files to curently edited mail (not very interesting as you can use DnD) - Append text to mail content - append selected string to curently edited email. (that one is not interesting as you can simply use copy/paste) 101 BUM Fix all the issues while deleting messages (mainly, selection issues) from the MessageViewWindow. Test with hide and show deleted messages. 102 FPI When "switching" between folders, verify the "Compact on close" pref's value so that we automatically compact the folder that is beeing closed. 103 FII Add the "Find Text..." panel back (grab it from 1.0.3) and implement the search code (inside the current textview with find & replace options). 105 FPI On OS X, we could offer to the user the possibility to store his passwords in the keychain. 106 FPI We should be able to DnD addresses from the OS X's Address Book to the To/Cc/Bcc fields in the Compose window and even in GNUMail.app's Address Book. 107 RRR Modify Utilities: +attributedStringFromContentForPart so that we use the MimeTypeManager for text/* and message/rfc822 parts. The user could specify to always display text/enriched parts (as inline) even if the part had the attachment disposition. 108 BUS Fix the verify mail on startup issue with the status label in the MailWindow and/or the animation that is started before the task is actually running.GNUMail/Documentation/WHOIS0100644000014600001460000000430410424672357016225 0ustar monotonemonotoneLudovic Marcotte ==================================== - Main developer Martin Brecher ========================================= - German translation - GNUMail.app / Pantomime User Manual Vincent Ricard =================================== - Mailcap parser / import feature (this code was removed from GNUMail.app) - Parts of the English and French translations - Password encryption in user's defaults - Bug fixes Stphane Peron ================================ - French translation Jonathan B. Leffert ========================================== - Parts of the old Address Book code (has been removed from the application) - Refactorings Erik Dalen ========================= - Swedish translation - Bug fixes Francis Lachapelle ====================================== - Most Mac OS X NIB:s - NSRegEx code - DnD, Copy & Paste code - Bug fixing, refactorings and new features - and more... Luis Garcia Alanis & Quique ========================================================================= - Spanish translation Pierre-Yves Rivaille =========================================== - Sorting code - ExtendedTableView / ExtendedTableColumn - Optimizations - and more... Nicolas Roard ================================= - MailHeaderCell - Face bundle enhancements Ujwal S. Sathyam ======================================== - MessageViewWindow.nib and MessageViewWindowController - Mac OS X 10.2 Address Book integration code - ExtendedTextView (for DnD code with Finder) - Other new features and some refactoring Jeff Meininger ====================================== - some icons Andrew Lindesay ================================== - most icons Jeff Teunissen ============================== - rotating GNUstep logo Petr Malat ============================== - Czech translation Ken Ferry ============================ - Auto-completing text field class - Bug fixes GNUMail/Framework/0040755000014600001460000000000010424674013014526 5ustar monotonemonotoneGNUMail/Framework/GNUMail/0040755000014600001460000000000010575213556015772 5ustar monotonemonotoneGNUMail/Framework/GNUMail/AboutPanelController.h0100644000014600001460000000221010424672357022232 0ustar monotonemonotone/* ** AboutPanelController.h ** ** Copyright (c) 2002-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_AboutPanelController #define _GNUMail_H_AboutPanelController #import @interface AboutPanelController: NSWindowController { // Outlets #ifdef MACOSX IBOutlet NSTextField *versionLabel; #endif } // // class methods // + (id) singleInstance; @end #endif // _GNUMail_H_AboutPanelController GNUMail/Framework/GNUMail/AboutPanel.h0100644000014600001460000000175110424672357020177 0ustar monotonemonotone/* ** AboutPanel.h ** ** Copyright (c) 2002-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_AboutPanel #define _GNUMail_H_AboutPanel #import @interface AboutPanel : NSPanel - (void) layoutWindow; @end #endif // _GNUMail_H_AboutPanel GNUMail/Framework/GNUMail/AddressBookController.h0100644000014600001460000000606010557334502022401 0ustar monotonemonotone/* ** AddressBookController.h ** ** Copyright (c) 2003-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_AddressBookController #define _GNUMail_H_AddressBookController #import #import #ifndef MACOSX @class ADSinglePropertyView; #endif // // // @interface NSArray (GNUMailABExtensions) - (BOOL) containsRecord: (ABRecord *) record; @end // // // @interface ABPerson (GNUMailABExtensions) - (NSArray *) formattedValuesForPrefix: (NSString *) thePrefix; - (NSString *) formattedValue; - (NSString *) fullName; #ifdef MACOSX - (BOOL) compare: (ABPerson *) thePerson; #endif @end @class CWMessage; // // // @interface AddressBookController: NSWindowController { // Outlets and ivars #ifdef MACOSX IBOutlet NSTableView *tableView; IBOutlet NSBrowser *browser; IBOutlet NSButton *open; NSMutableDictionary *allPersons; NSMutableArray *allSortedKeys; #else ADSinglePropertyView *singlePropertyView; #endif NSMapTable *_table; } // // Action methods // - (void) doubleClickOnName: (NSString *) theName value: (NSString *) theValue inView: (id) theView; - (IBAction) toClicked: (id) sender; - (IBAction) ccClicked: (id) sender; - (IBAction) bccClicked: (id) sender; - (IBAction) openClicked: (id) sender; // // Other methods // - (NSArray *) addressesWithPrefix: (NSString *) thePrefix; - (NSArray *) addressesWithSubstring: (NSString *) theSubstring; - (NSArray *) addressesWithSubstring: (NSString *) theSubstring inGroupWithId: (NSString *) groupId; - (void) addSenderToAddressBook: (CWMessage *) theMessage; - (void) freeCache; // // Mac OS X-only methods // #ifdef MACOSX - (void) windowDidLoad; - (IBAction) doubleClicked: (id) sender; - (IBAction) selectionInBrowserHasChanged: (id) sender; - (int) browser: (NSBrowser *) sender numberOfRowsInColumn: (int) column; - (void) browser: (NSBrowser *) sender willDisplayCell: (id) cell atRow: (int) row column: (int) column; - (BOOL) browser: (NSBrowser *) sender selectRow: (int) row inColumn: (int) column; #endif // // class methods // + (id) singleInstance; @end // // AddressBookController private category // @interface AddressBookController (Private) - (void) _updateFieldUsingSelector: (SEL) theSelector; @end #endif // _GNUMail_H_AddressBookController GNUMail/Framework/GNUMail/AddressBookPanel.h0100644000014600001460000000225010424672357021320 0ustar monotonemonotone/* ** ** AddressBookPanel.h ** ** Copyright (c) 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_AddressBookPanel #define _GNUMail_H_AddressBookPanel #import #include @interface AddressBookPanel: NSPanel { @public ADSinglePropertyView *singlePropertyView; } - (void) dealloc; - (void) layoutPanel; - (void) prefLabelChanged: (id) sender; @end #endif // _GNUMail_H_AddressBookPanel GNUMail/Framework/GNUMail/AddressTaker.h0100644000014600001460000000216110424672357020515 0ustar monotonemonotone/* ** AddressTaker.h ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_AddressTaker #define _GNUMail_H_AddressTaker #import @protocol AddressTaker - (void) takeToAddress: (NSArray *) theAddress; - (void) takeCcAddress: (NSArray *) theAddress; - (void) takeBccAddress: (NSArray *) theAddress; @end #endif // _GNUMail_H_AddressTaker GNUMail/Framework/GNUMail/ApplicationIconController.h0100644000014600001460000000210610424672357023260 0ustar monotonemonotone/* ** ApplicationIconController.h ** ** Copyright (c) 2004-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ApplicationIconController #define _GNUMail_H_ApplicationIconController #import @interface ApplicationIconController : NSObject + (id) singleInstance; - (void) update; @end #endif // _GNUMail_H_ApplicationIconController GNUMail/Framework/GNUMail/AutoCompletingTextField.h0100644000014600001460000000375210424672357022713 0ustar monotonemonotone/* ** AutoCompletingTextField.h ** ** Copyright (c) 2003 ** ** Author: Ken Ferry ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_AutoCompletingTextField #define _GNUMail_H_AutoCompletingTextField #import @interface NSObject ( CompletionsDataSource ) // should return nil if there is no valid completion - (NSString *)completionForPrefix:(NSString *)prefix; - (NSArray *)allCompletionsForPrefix:(NSString *)prefix; - (BOOL)isACompletion:(NSString *)candidate; @end @interface AutoCompletingTextField : NSTextField { NSRange _componentRange; NSRange _prefixRange; NSArray *_cachedCompletions; float _completionDelay; int _maximumDropDownRows; BOOL _commaDelimited; BOOL _dropDownIsDown; BOOL _justDeleted; BOOL _shouldShowDropDown; BOOL _textViewDoCommandBySelectorResponse; id _dataSource; } - (void)complete:(id)sender; - (NSRange)currentComponentRange; - (BOOL)dropDownIsDown; - (void)setDropDownIsDown:(BOOL)flag; - (id)dataSource; - (void)setDataSource:(id)dataSource; - (BOOL)commaDelimited; - (void)setCommaDelimited:(BOOL)commaDelimited; - (float)completionDelay; - (void)setCompletionDelay:(float)completionDelay; - (int)maximumDropDownRows; - (void)setMaximumDropDownRows:(int)maxRows; @end #endif // _GNUMail_H_AutoCompletingTextField GNUMail/Framework/GNUMail/ConsoleWindowController.h0100644000014600001460000000347310424672357023006 0ustar monotonemonotone/* ** ConsoleWindowController.h ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ConsoleWindowController #define _GNUMail_H_ConsoleWindowController #define ADD_CONSOLE_MESSAGE(format, args...) \ [[ConsoleWindowController singleInstance] addConsoleMessage: [NSString stringWithFormat: format, ##args]]; #import @interface ConsoleWindowController: NSWindowController { // Outlets IBOutlet NSTableView *tasksTableView; IBOutlet NSTableView *messagesTableView; IBOutlet NSBox *currentTaskBox; IBOutlet NSMenu *menu; // Other ivars NSMutableArray *allMessages; NSTimer *animation; int animation_index; } // // action methods // - (IBAction) deleteClicked: (id) sender; - (IBAction) saveClicked: (id) sender; // // access / mutation method // - (NSTableView *) tasksTableView; #ifdef MACOSX - (id) progressIndicators; #endif // // other methods // - (void) addConsoleMessage: (NSString *) theString; - (void) reload; - (void) restoreImage; // // class methods // + (id) singleInstance; @end #endif // _GNUMail_H_ConsoleWindowController GNUMail/Framework/GNUMail/ConsoleWindow.h0100644000014600001460000000222510432177361020726 0ustar monotonemonotone/* ** ConsoleWindow.h ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ConsoleWindow #define _GNUMail_H_ConsoleWindow #import @interface ConsoleWindow : NSPanel { @public NSScrollView *tasksScrollView; NSTableView *tasksTableView; NSScrollView *messagesScrollView; NSTableView *messagesTableView; } - (void) layoutWindow; @end #endif // _GNUMail_H_ConsoleWindow GNUMail/Framework/GNUMail/Constants.h0100644000014600001460000001121410601706267020107 0ustar monotonemonotone/* ** Constants.h ** ** Copyright (c) 2003-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_GNUMailConstants #define _GNUMail_H_GNUMailConstants // // Useful macros // #ifdef MACOSX #define RETAIN(object) [object retain] #define RELEASE(object) [object release] #define AUTORELEASE(object) [object autorelease] #define TEST_RELEASE(object) ({ if (object) [object release]; }) #define ASSIGN(object,value) ({\ id __value = (id)(value); \ id __object = (id)(object); \ if (__value != __object) \ { \ if (__value != nil) \ { \ [__value retain]; \ } \ object = __value; \ if (__object != nil) \ { \ [__object release]; \ } \ } \ }) #define DESTROY(object) ({ \ if (object) \ { \ id __o = object; \ object = nil; \ [__o release]; \ } \ }) #define NSLocalizedString(key, comment) \ [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil] #define _(X) NSLocalizedString (X, @"") #ifdef DEBUG #define NSDebugLog(format, args...) \ do { NSLog(format, ##args); } while(0) #else #define NSDebugLog(format, args...) #endif #endif // // Constants for the application // #define RETAIN_PERIOD 300 #define THREAD_ARCS_CELL_WIDTH 180 #define THREAD_ARCS_CELL_MIN_HEIGHT 105 enum { MANUALLY = 0, AUTOMATICALLY = 1, NEVER = 2 }; enum { SHOW_ALL_HEADERS = 1, HIDE_ALL_HEADERS = 2 }; enum { DELETE_MESSAGE = 1, UNDELETE_MESSAGE = 2, }; enum { MARK_AS_FLAGGED = 1, MARK_AS_UNFLAGGED = 2 }; enum { MARK_AS_READ = 1, MARK_AS_UNREAD = 2 }; enum { SHOW_DELETED_MESSAGES = 1, HIDE_DELETED_MESSAGES = 2 }; enum { SHOW_READ_MESSAGES = 1, HIDE_READ_MESSAGES = 2 }; enum { THREAD_MESSAGES = 1, UNTHREAD_MESSAGES = 2 }; enum { OTHER = 0, POP3 = 1, IMAP = 2, UNIX = 3 }; enum { SECURITY_NONE = 0, SECURITY_SSL = 1, SECURITY_TLS_IF_AVAILABLE = 2, SECURITY_TLS = 3 }; enum { TRANSPORT_MAILER = 1, TRANSPORT_SMTP = 2 }; enum { SIGNATURE_BEGINNING = 0, SIGNATURE_END = 1, SIGNATURE_HIDDEN = 2 }; enum { MOVE_MESSAGES = 1, COPY_MESSAGES = 2 }; enum { MODE_STANDARD = 1, MODE_EXPERT = 2 }; enum { TYPE_PLAIN = 1, TYPE_HTML = 2 }; enum { IMAP_SHOW_ALL = 0, IMAP_SHOW_SUBSCRIBED_ONLY = 1 }; enum { ACTION_REPLY_TO_MESSAGE = 0, ACTION_VIEW_MESSAGE = 1, ACTION_NO_ACTION = 2 }; // // // enum { GNUMailComposeMessage, GNUMailForwardMessage, GNUMailRedirectMessage, GNUMailReplyToMessage, GNUMailRestoreFromDrafts }; // // // enum { GNUMailDateColumn = 1, GNUMailFlagsColumn = 2, GNUMailFromColumn = 3, GNUMailNumberColumn = 4, GNUMailSizeColumn = 5, GNUMailStatusColumn = 6, GNUMailSubjectColumn = 7 }; // // // enum { GNUMailSmallIconSize, GNUMailStandardIconSize, GNUMailLargeIconSize }; // // // enum { GNUMailDrawerView = 0, GNUMailFloatingView = 1, GNUMail3PaneView = 2, GNUMailWidescreenView = 3 }; // // Constants for the UI // enum { TextFieldHeight = 21, ButtonHeight = 25, }; // // Notifications used in GNUMail // extern NSString *AccountsHaveChanged; extern NSString *FiltersHaveChanged; extern NSString *FontValuesHaveChanged; extern NSString *MessageThreadingNotification; extern NSString *ReloadMessageList; extern NSString *TableColumnsHaveChanged; // // Operations and attributes for folders and messages // extern NSString *FolderExpireDate; extern NSString *MessageData; extern NSString *MessageDestinationChangeEncoding; extern NSString *MessageDestinationFolder; extern NSString *MessageDestinationPasteboard; extern NSString *MessageDestinationStore; extern NSString *MessageExpireDate; extern NSString *MessageFlags; extern NSString *MessageLoading; extern NSString *MessageNumber; extern NSString *MessageOperation; extern NSString *MessagePreloading; extern NSString *MessageRedirecting; extern NSString *MessageViewing; // // Pasteboard data types // extern NSString *MessagePboardType; #endif // _GNUMail_H_GNUMailConstants GNUMail/Framework/GNUMail/EditWindowController.h0100644000014600001460000000643410424672357022271 0ustar monotonemonotone/* ** EditWindowController.h ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_EditWindowController #define _GNUMail_H_EditWindowController #import #include "AddressTaker.h" @class AutoCompletingTextField; @class CWFolder; @class CWMessage; @class CWPart; @class EditWindow; @class ExtendedTextView; @interface EditWindowController: NSWindowController { // Outlets IBOutlet NSTextField *subjectText; IBOutlet AutoCompletingTextField *toText; IBOutlet AutoCompletingTextField *ccText; IBOutlet AutoCompletingTextField *bccText; IBOutlet NSTextField *subjectLabel; IBOutlet NSTextField *toLabel; IBOutlet NSTextField *ccLabel; IBOutlet NSTextField *bccLabel; IBOutlet NSTextField *sizeLabel; IBOutlet NSScrollView *scrollView; IBOutlet ExtendedTextView *textView; IBOutlet id send; IBOutlet id insert; IBOutlet id addBcc; IBOutlet id addCc; IBOutlet id addresses; IBOutlet id saveInDrafts; IBOutlet NSPopUpButton *accountPopUpButton; IBOutlet NSPopUpButton *transportMethodPopUpButton; // Other ivars CWMessage *message; CWMessage *unmodifiedMessage; NSString *charset; BOOL showCc; BOOL showBcc; BOOL updateColors; NSRange affectedRangeForColors; int signaturePosition; int _mode; NSMutableArray *allowedToolbarItemIdentifiers; NSMutableDictionary *additionalToolbarItems; @private NSMutableArray *addressCompletionCandidates; NSString *previousSignatureValue; } // // action methods // - (IBAction) insertFile: (id) sender;; - (IBAction) sendMessage: (id) sender; - (IBAction) showBcc: (id) sender; - (IBAction) showCc: (id) sender; - (IBAction) accountSelectionHasChanged: (id) sender; // // access/mutation methods // - (CWMessage *) message; - (void) setMessage: (CWMessage *) theMessage; - (CWMessage *) unmodifiedMessage; - (void) setUnmodifiedMessage: (CWMessage *) theUnmodifiedMessage; - (void) setMessageFromDraftsFolder: (CWMessage *) theMessage; - (BOOL) showCc; - (void) setShowCc: (BOOL) theBOOL; - (BOOL) showBcc; - (void) setShowBcc: (BOOL) theBOOL; - (int) signaturePosition; - (void) setSignaturePosition: (int) thePosition; - (NSPopUpButton *) accountPopUpButton; - (void) setAccountName: (NSString *) theAccountName; - (NSString *) charset; - (void) setCharset: (NSString *) theCharset; - (int) mode; - (void) setMode: (int) theMode; - (NSTextView *) textView; // // Other methods // - (BOOL) updateMessageContentFromTextView; - (void) updateWithMessage: (CWMessage *) theMessage; @end #endif // _GNUMail_H_EditWindowController GNUMail/Framework/GNUMail/EditWindow.h0100644000014600001460000000311710424672357020220 0ustar monotonemonotone/* ** EditWindow.h ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_EditWindow #define _GNUMail_H_EditWindow #import @class AutoCompletingTextField; @class ExtendedTextView; @class LabelWidget; @interface EditWindow : NSWindow { @public AutoCompletingTextField *toText; AutoCompletingTextField *ccText; AutoCompletingTextField *bccText; ExtendedTextView *textView; NSTextField *subjectText; LabelWidget *fromLabel; LabelWidget *usingLabel; LabelWidget *toLabel; LabelWidget *ccLabel; LabelWidget *bccLabel; LabelWidget *subjectLabel; LabelWidget *sizeLabel; NSScrollView *scrollView; NSPopUpButton *accountPopUpButton; NSPopUpButton *transportMethodPopUpButton; } - (void) dealloc; - (void) layoutWindow; @end #endif // _GNUMail_H_EditWindow GNUMail/Framework/GNUMail/EditWindowToolbar.h0100644000014600001460000000272110506157373021540 0ustar monotonemonotone/* ** EditWindowToolbar.h ** ** Copyright (c) 2002-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_EditWindowToolbar #define _GNUMail_H_EditWindowToolbar #import #include "EditWindowController.h" @interface EditWindowController (EditWindowToolbar) // // NSToolbar delegate methods // - (NSToolbarItem *) toolbar: (NSToolbar *) toolbar itemForItemIdentifier: (NSString *) itemIdentifier willBeInsertedIntoToolbar: (BOOL) flag; - (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar*) toolbar; - (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar*) toolbar; // // NSToolbarItemValidation protocol // - (BOOL) validateToolbarItem: (NSToolbarItem *) theItem; @end #endif // _GNUMail_H_EditWindowToolbar GNUMail/Framework/GNUMail/ExtendedCell.h0100644000014600001460000000221110424672357020475 0ustar monotonemonotone/* ** ExtendedCell.h ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ExtendedCell #define _GNUMail_H_ExtendedCell #import @class Flags; @interface ExtendedCell : NSTextFieldCell { @private NSImage *_answered_flag; NSImage *_recent_flag; NSImage *_flagged_flag; int _flags; } - (void) setFlags: (int) theFlags; @end #endif // _GNUMail_H_ExtendedCell GNUMail/Framework/GNUMail/ExtendedFileWrapper.h0100644000014600001460000000177410424672357022053 0ustar monotonemonotone/* ** ExtendedFileWrapper.h ** ** Copyright (c) 2004 ** ** Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ExtendedFileWrapper #define _GNUMail_H_ExtendedFileWrapper #import @interface ExtendedFileWrapper : NSFileWrapper { } @end #endif // _GNUMail_H_ExtendedFileWrapper GNUMail/Framework/GNUMail/ExtendedMenuItem.h0100644000014600001460000000244310424672357021350 0ustar monotonemonotone/* ** ExtendedMenuItem.h ** ** Copyright (c) 2002-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ExtendedMenuItem #define _GNUMail_H_ExtendedMenuItem #include #include @class NSTextAttachment; @interface ExtendedMenuItem : NSMenuItem { @private NSTextAttachment *_textAttachment; NSString *_key; } - (NSString *) key; - (void) setKey: (NSString *) theKey; - (NSTextAttachment *) textAttachment; - (void) setTextAttachment: (NSTextAttachment *) theTextAttachment; @end #endif // _GNUMail_H_ExtendedMenuItem GNUMail/Framework/GNUMail/ExtendedOutlineView.h0100644000014600001460000000217710506157373022100 0ustar monotonemonotone/* ** ExtendedOutlineView.h ** ** Copyright (c) 2002-2006 ** ** Author: Francis Lachapelle ** Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ExtendedOutlineView #define _GNUMail_H_ExtendedOutlineView #import @interface ExtendedOutlineView: NSOutlineView - (BOOL) shouldCollapseAutoExpandedItemsForDeposited: (BOOL) deposited; @end #endif // _GNUMail_H_ExtendedOutlineView GNUMail/Framework/GNUMail/ExtendedTableView.h0100644000014600001460000000343410432177361021502 0ustar monotonemonotone/* ** ExtendedTableView.h ** ** Copyright (c) 2002-2006 ** ** Author: Francis Lachapelle ** Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ExtendedTableView #define _GNUMail_H_ExtendedTableView #import @interface ExtendedTableView : NSTableView { NSMutableString *_typedString; NSString *_previousSortOrder; NSString *_currentSortOrder; BOOL _reverseOrder; BOOL _reloading; } - (NSImage *) dragImageForRows: (NSArray *) dragRows event: (NSEvent *) dragEvent dragImageOffset: (NSPointPointer) dragImageOffset; - (void) setDropRow: (int) row dropOperation: (NSTableViewDropOperation) operation; - (void) scrollIfNeeded; - (void) setReverseOrder: (BOOL) theBOOL; - (BOOL) isReverseOrder; - (void) setReloading: (BOOL) theBOOL; - (BOOL) isReloading; - (NSString *) currentSortOrder; - (void) setCurrentSortOrder: (NSString *) theCurrentOrder; - (NSString *) previousSortOrder; - (void) setPreviousSortOrder: (NSString *) thePreviousOrder; @end #endif // _GNUMail_H_ExtendedTableView GNUMail/Framework/GNUMail/ExtendedTextAttachmentCell.h0100644000014600001460000000251410424672357023361 0ustar monotonemonotone/* ** ExtendedTextAttachmentCell.h ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ExtendedTextAttachmentCell #define _GNUMail_H_ExtendedTextAttachmentCell #import @class CWPart; @interface ExtendedTextAttachmentCell : NSTextAttachmentCell { @private NSAttributedString *_attributedString; CWPart *_part; } // // // - (id) initWithFilename: (NSString *) theFilename size: (int) theSize; // // access/mutation methods // - (CWPart *) part; - (void) setPart: (CWPart *) thePart; @end #endif // _GNUMail_H_ExtendedTextAttachmentCell GNUMail/Framework/GNUMail/ExtendedTextView.h0100644000014600001460000000251210432177361021373 0ustar monotonemonotone/* ** ExtendedTextView.h ** ** Copyright (c) 2002-2006 ** ** Author: Ujwal S. Sathyam ** Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ExtendedTextView #define _GNUMail_H_ExtendedTextView #import @class EditWindowController; @interface ExtendedTextView : NSTextView { NSCursor *cursor; } // // Other methods // - (void) insertFile: (NSString *) theFilename; - (void) insertImageData: (NSData *) theData filename: (NSString *) theFilename; - (void) pasteAsQuoted: (id) sender; - (void) updateCursorForLinks; @end #endif // _GNUMail_H_ExtendedTextView GNUMail/Framework/GNUMail/ExtendedWindow.h0100644000014600001460000000174410424672357021077 0ustar monotonemonotone/* ** ExtendedWindow.h ** ** Copyright (c) 2001-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ExtendedWindow #define _GNUMail_H_ExtendedWindow #import @interface ExtendedWindow: NSWindow @end #endif // _GNUMail_H_ExtendedWindow GNUMail/Framework/GNUMail/Filter.h0100644000014600001460000001032610504172776017367 0ustar monotonemonotone/* ** Filter.h ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_Filter #define _GNUMail_H_Filter #import // criteria source #define NONE 0 #define TO 1 #define CC 2 #define TO_OR_CC 3 #define SUBJECT 4 #define FROM 5 #define EXPERT 6 // External program operation #define AFTER_CRITERIA 1 #define BEFORE_CRITERIA 2 // Criteria condition #define AND 1 #define OR 2 // Criteria find operations #define CONTAINS 1 #define IS_EQUAL 2 #define HAS_PREFIX 3 #define HAS_SUFFIX 4 #define MATCH_REGEXP 5 #define IS_IN_ADDRESS_BOOK 6 #define IS_IN_ADDRESS_BOOK_GROUP 7 // Actions #define SET_COLOR 1 #define TRANSFER_TO_FOLDER 2 #define BOUNCE_OR_FORWARD_OR_REPLY 3 #define DELETE 4 #define PLAY_SOUND 5 // E-Mail operations #define BOUNCE 1 #define FORWARD 2 #define REPLY 3 // Filter type #define TYPE_INCOMING 1 #define TYPE_OUTGOING 2 #define TYPE_INCOMING_QUICK 3 /* For matchedFilterForMessage:type: only */ @interface Filter: NSObject { @private BOOL _isActive; NSString *_description; int _type; BOOL _useExternalProgram; NSString *_externalProgramName; int _externalProgramOperation; NSMutableArray *_allCriterias; int _action; NSColor *_actionColor; NSString *_actionFolderName; int _actionEMailOperation; NSString *_actionEMailString; NSString *_actionMessageString; NSString *_pathToSound; } // // access/mutation methods // - (BOOL) isActive; - (void) setIsActive: (BOOL) theBOOL; - (NSString *) description; - (void) setDescription: (NSString *) theDescription; - (int) type; - (void) setType: (int) theType; - (BOOL) useExternalProgram; - (void) setUseExternalProgram: (BOOL) theBOOL; - (NSString *) externalProgramName; - (void) setExternalProgramName: (NSString *) theExternalProgramName; - (int) externalProgramOperation; - (void) setExternalProgramOperation: (int) theExternalProgramOperation; - (NSArray *) allCriterias; - (void) setCriterias: (NSArray *) theCriterias; - (int) action; - (void) setAction: (int) theAction; - (NSColor *) actionColor; - (void) setActionColor: (NSColor *) theActionColor; - (NSString *) actionFolderName; - (void) setActionFolderName: (NSString *) theActionFolderName; - (int) actionEMailOperation; - (void) setActionEMailOperation: (int) theActionEMailOperation; - (NSString *) actionEMailString; - (void) setActionEMailString: (NSString *) theActionEMailString; - (NSString *) actionMessageString; - (void) setActionMessageString: (NSString *) theActionMessageString; - (NSString *) pathToSound; - (void) setPathToSound: (NSString *) thePath; @end // // // @interface FilterCriteria : NSObject { @private NSArray *_criteriaHeaders; NSString *_criteriaString; int _criteriaFindOperation; int _criteriaCondition; int _criteriaSource; } // // access / mutation methods // - (int) criteriaCondition; - (void) setCriteriaCondition: (int) theCriteriaCondition; - (int) criteriaSource; - (void) setCriteriaSource: (int) theCriteriaSource; - (NSArray *) criteriaHeaders; - (void) setCriteriaHeaders: (NSArray *) theCriteriaHeaders; - (int) criteriaFindOperation; - (void) setCriteriaFindOperation: (int) theCriteriaFindOperation; - (NSString *) criteriaString; - (void) setCriteriaString: (NSString *) theCriteriaString; @end #endif // _GNUMail_H_Filter GNUMail/Framework/GNUMail/FilterManager.h0100644000014600001460000000501610424672357020663 0ustar monotonemonotone/* ** FilterManager.h ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_FilterManager #define _GNUMail_H_FilterManager #import @class CWMessage; @class CWURLName; @class Filter; @class FilterCriteria; NSString *PathToFilters(); @interface FilterManager: NSObject { @private NSMutableArray *_filters; } - (BOOL) synchronize; // // access/mutation methods // - (Filter *) filterAtIndex: (int) theIndex; - (void) addFilter: (Filter *) theFilter; - (void) addFilter: (Filter *) theFilter atIndex: (int) theIndex; - (void) removeFilter: (Filter *) theFilter; - (NSArray *) filters; - (void) setFilters: (NSArray *) theFilters; - (BOOL) matchExistsForFilter: (Filter *) theFilter message: (CWMessage *) theMessage; - (Filter *) matchedFilterForMessage: (CWMessage *) theMessage type: (int) theType; - (Filter *) matchedFilterForMessageAsRawSource: (NSData *) theRawSource type: (int) theType; - (NSColor *) colorForMessage: (CWMessage *) theMessage; - (CWURLName *) matchedURLNameFromMessage: (CWMessage *) theMessage type: (int) theType key: (NSString *) theKey filter: (Filter *) theFilter; - (CWURLName *) matchedURLNameFromMessageAsRawSource: (NSData *) theRawSource type: (int) theType key: (NSString *) theKey filter: (Filter *) theFilter; - (void) updateFiltersFromOldPath: (NSString *) theOldPath toPath: (NSString *) thePath; // // class methods // + (id) singleInstance; @end #endif // _GNUMail_H_FilterManager GNUMail/Framework/GNUMail/FindWindowController.h0100644000014600001460000000347610424672357022267 0ustar monotonemonotone/* ** FindWindowController.h ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_FindWindowController #define _GNUMail_H_FindWindowController #import @class CWFolder; @interface FindWindowController: NSWindowController { // Outlets IBOutlet NSTextField *findField; IBOutlet NSTextField *foundLabel; IBOutlet NSButton *ignoreCaseButton; IBOutlet NSButton *regularExpressionButton; IBOutlet NSButton *findAllButton; IBOutlet NSButton *previousButton; IBOutlet NSButton *nextButton; IBOutlet NSMatrix *matrix; // Other ivar @private NSMutableArray *_indexes; CWFolder *_folder; int _location; } // // action methods // - (IBAction) findAll : (id) sender; - (IBAction) nextMessage: (id) sender; - (IBAction) previousMessage: (id) sender; // // delegate methods // - (void) windowDidLoad; // // access/mutation methods // - (NSTextField *) findField; - (void) setSearchResults: (NSArray *) theResults forFolder: (CWFolder *) theFolder; // // class methods // + (id) singleInstance; @end #endif // _GNUMail_H_FindWindowController GNUMail/Framework/GNUMail/FindWindow.h0100644000014600001460000000247310432175455020213 0ustar monotonemonotone/* ** FindWindow.h ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_FindWindow #define _GNUMail_H_FindWindow #import #include "LabelWidget.h" #ifdef __MINGW32__ @interface FindWindowX: NSPanel #else @interface FindWindow: NSPanel #endif { @public NSTextField *findField; LabelWidget *foundLabel; NSMatrix *matrix; NSButton *ignoreCaseButton; NSButton *regularExpressionButton; NSButton *findAllButton; NSButton *previousButton; NSButton *nextButton; } - (void) layoutWindow; @end #endif // _GNUMail_H_FindWindow GNUMail/Framework/GNUMail/FolderNode.h0100644000014600001460000000363310424672357020167 0ustar monotonemonotone/* ** FolderNode.h ** ** Copyright (C) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_FolderNode #define _GNUMail_H_FolderNode #import @interface FolderNode : NSObject { @private FolderNode *_parent; NSString *_name; NSString *_path; BOOL _subscribed; NSMutableArray *_children; } // // access / mutation methods // - (NSString *) name; - (void) setName: (NSString *) theName; - (NSString *) path; - (void) setPath: (NSString *) thePath; - (FolderNode *) parent; - (void) setParent: (FolderNode *) theParent; - (BOOL) subscribed; - (void) setSubscribed: (BOOL) theBOOL; - (NSArray *) children; - (void) setChildren: (NSArray *) theChildren; - (void) addChild: (FolderNode *) theChild; - (void) removeChild: (FolderNode *) theChild; - (FolderNode *) childAtIndex: (int) theIndex; - (FolderNode *) childWithName: (NSString *) theName; - (int) childCount; // // Comparison // - (NSComparisonResult) compare: (FolderNode *) theFolderNode; // // class methods // + (FolderNode *) folderNodeWithName: (NSString *) theName parent: (FolderNode *) theParent; @end #endif // _GNUMail_H_FolderNode GNUMail/Framework/GNUMail/FolderNodePopUpItem.h0100644000014600001460000000221310424672357021763 0ustar monotonemonotone/* ** FolderNodePopUpItem.h ** ** Copyright (c) 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_FolderNodePopUpItem #define _GNUMail_H_FolderNodePopUpItem #import @class FolderNode; @interface FolderNodePopUpItem : NSMenuItem { FolderNode *folderNode; } - (FolderNode *) folderNode; - (void) setFolderNode: (FolderNode *) theFolderNode; @end #endif // _GNUMail_H_FolderNodePopUpItem GNUMail/Framework/GNUMail/GetURLScriptCommand.h0100644000014600001460000000233410424672357021731 0ustar monotonemonotone/* ** GetURLScriptCommand.h ** ** Copyright (c) 2003 ** ** Author: Ujwal S. Sathyam ** ** Project: GNUMail ** ** Description: Header file for Applescript support for GNUMail. ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_GetURLScriptCommand #define _GNUMail_H_GetURLScriptCommand #import @interface GetURLScriptCommand : NSScriptCommand { } - (id)scriptError:(int)errorNumber description:(NSString *)description; - (id)performDefaultImplementation; @end #endif // _GNUMail_H_GetURLScriptCommand GNUMail/Framework/GNUMail/GNUMail+Extensions.h0100644000014600001460000000267010601706267021530 0ustar monotonemonotone/* ** GNUMail+Extensions.h ** ** Copyright (c) 2002-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_GNUMail_Extensions #define _GNUMail_H_GNUMail_Extensions #include "GNUMail.h" @interface GNUMail (Extensions) - (void) taskDidTerminate: (NSNotification *) theNotification; - (void) moveLocalMailDirectoryFromPath: (NSString *) theSourcePath toPath: (NSString *) theDestinationPath; - (void) removeTemporaryFiles; - (void) update_112_to_120; - (NSString *) updatePathForFolderName: (NSString *) theFolderName current: (NSString *) theCurrentPath previous: (NSString *) thePreviousPath; @end #endif // _GNUMail_H_GNUMail_Extensions GNUMail/Framework/GNUMail/GNUMail.h0100644000014600001460000001464110575213556017402 0ustar monotonemonotone/* ** GNUMail.h ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_GNUMail #define _GNUMail_H_GNUMail #import @class AddressBookController; @class CWMessage; @class CWURLName; @class EditWindowController; @class MessageComposition; @interface GNUMail : NSObject { // Outlets IBOutlet NSMenu *drafts; #ifdef MACOSX IBOutlet NSMenu *dock; #endif IBOutlet NSMenu *columns; IBOutlet NSMenu *edit; IBOutlet NSMenu *filters; IBOutlet NSMenu *find; IBOutlet NSMenu *forward; IBOutlet NSMenu *incomingMailServers; IBOutlet NSMenu *info; IBOutlet NSMenu *mailbox; IBOutlet NSMenu *menu; IBOutlet NSMenu *message; IBOutlet NSMenu *messageFilter; IBOutlet NSMenu *reply; IBOutlet NSMenu *save; IBOutlet NSMenu *services; IBOutlet NSMenu *sorting; IBOutlet NSMenu *textEncodings; IBOutlet NSMenu *view; IBOutlet NSMenu *windows; IBOutlet NSMenuItem *create; IBOutlet NSMenuItem *customizeToolbar; IBOutlet NSMenuItem *delete; IBOutlet NSMenuItem *deleteOrUndelete; IBOutlet NSMenuItem *deliver; IBOutlet NSMenuItem *markAsFlaggedOrUnflagged; IBOutlet NSMenuItem *markAsReadOrUnread; IBOutlet NSMenuItem *showAllHeaders; IBOutlet NSMenuItem *showOrHideDeleted; IBOutlet NSMenuItem *showOrHideRead; IBOutlet NSMenuItem *showOrHideToolbar; IBOutlet NSMenuItem *enterSelection; IBOutlet NSMenuItem *rename; IBOutlet NSMenuItem *saveInDrafts; IBOutlet NSMenuItem *selectAllMessagesInThread; IBOutlet NSMenuItem *showRawSource; IBOutlet NSMenuItem *threadOrUnthreadMessages; // // For scripting on Mac OS X. Simple instance variable for to-many relationships. // #ifdef MACOSX NSMutableArray *_messageCompositions; #endif } - (id) init; // // action methods // - (IBAction) addSenderToAddressBook: (id) sender; - (IBAction) applyManualFilter: (id) sender; - (IBAction) changeTextEncoding: (id) sender; - (IBAction) checkForUpdates: (id) sender; - (IBAction) close: (id) sender; - (IBAction) compactMailbox: (id) sender; - (IBAction) composeMessage: (id) sender; - (IBAction) copy: (id) sender; - (IBAction) customizeToolbar: (id) sender; - (IBAction) cut: (id) sender; - (IBAction) deleteOrUndeleteMessage: (id) sender; - (IBAction) enterSelectionInFindPanel: (id) sender; - (IBAction) findNext: (id) sender; - (IBAction) findPrevious: (id) sender; - (IBAction) forwardMessage: (id) sender; - (IBAction) getNewMessages: (id) sender; - (IBAction) importMailboxes: (id) sender; - (IBAction) makeFilterFromListId: (id) sender; - (IBAction) makeFilterFromSender: (id) sender; - (IBAction) makeFilterFromSubject: (id) sender; - (IBAction) markMessageAsFlaggedOrUnflagged: (id) sender; - (IBAction) markMessageAsReadOrUnread: (id) sender; - (IBAction) nextUnreadMessage: (id) sender; - (IBAction) newViewerWindow: (id) sender; - (IBAction) paste: (id) sender; - (IBAction) previousUnreadMessage: (id) sender; - (IBAction) printMessage: (id) sender; - (IBAction) redirectMessage: (id) sender; - (IBAction) replyToMessage: (id) sender; - (IBAction) restoreDraft: (id) sender; - (IBAction) saveAllAttachments: (id) sender; - (IBAction) saveAttachment: (id) sender; - (IBAction) saveInDrafts: (id) sender; - (IBAction) saveTextFromMessage: (id) sender; - (IBAction) selectAllMessagesInThread: (id) sender; - (IBAction) sortByNumber: (id) sender; - (IBAction) sortByDate: (id) sender; - (IBAction) sortByName: (id) sender; - (IBAction) sortBySubject: (id) sender; - (IBAction) sortBySize: (id) sender; - (IBAction) showAboutPanel: (id) sender; - (IBAction) showAddressBook: (id) sender; - (IBAction) showAllHeaders: (id) sender; - (IBAction) showConsoleWindow: (id) sender; - (IBAction) showFindWindow: (id) sender; - (IBAction) showMailboxInspectorPanel: (id) sender; - (IBAction) showMailboxManager: (id) sender; - (IBAction) showOrHideDeletedMessages: (id) sender; - (IBAction) showOrHideReadMessages: (id) sender; - (IBAction) showOrHideTableColumns: (id) sender; - (IBAction) showOrHideToolbar: (id) sender; - (IBAction) showPreferencesWindow: (id) sender; - (IBAction) showRawSource: (id) sender; - (IBAction) threadOrUnthreadMessages: (id) sender; // // methods invoked by notifications // - (void) selectionInTextViewHasChanged: (id) sender; // // access / mutation methods // + (NSArray *) allBundles; + (NSArray *) allMailWindows; + (NSString *) currentWorkingPath; + (void) setCurrentWorkingPath: (NSString *) thePath; + (id) lastAddressTakerWindowOnTop; + (void) setLastAddressTakerWindowOnTop: (id) aWindow; + (id) lastMailWindowOnTop; + (void) setLastMailWindowOnTop: (id) aWindow; - (NSMenu *) saveMenu; // // other methods // - (void) addItemToMenuFromTextAttachment: (NSTextAttachment *) theTextAttachment; + (void) addEditWindow: (id) theEditWindow; + (void) addMailWindow: (id) theMailWindow; - (void) newMessageWithRecipient: (NSString *) aString; + (void) removeEditWindow: (id) theEditWindow; + (void) removeMailWindow: (id) theMailWindow; @end // // Experimental code used for Mac OS X scripting support. // #ifdef MACOSX @interface GNUMail (KeyValueCoding) - (BOOL)application:(NSApplication *)sender delegateHandlesKey:(NSString *)key; - (NSMutableArray*)messageCompositions; - (void)setMessageCompositions: (NSMutableArray*)messageCompositions; - (void) addInMessageCompositions: (MessageComposition *)object; - (void) insertInMessageCompositions: (MessageComposition *) object; - (void) insertInMessageCompositions: (MessageComposition *) object atIndex: (unsigned) index; - (void) replaceInMessageCompositions: (MessageComposition *) object atIndex: (unsigned) index; - (void) removeFromMessageCompositionsAtIndex: (unsigned) index; - (id) valueInMessageCompositionsAtIndex: (unsigned) index; @end #endif #endif // _GNUMail_H_GNUMail GNUMail/Framework/GNUMail/GNUMail+Services.h0100644000014600001460000000267510575213556021165 0ustar monotonemonotone/* ** GNUMail+Services.h ** ** Copyright (c) 2004-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_GNUMail_Services #define _GNUMail_H_GNUMail_Services #include "GNUMail.h" @interface GNUMail (Services) - (void) newMessageWithAttachments: (NSPasteboard *) pboard userData: (NSString *) userData error: (NSString **) error; - (void) newMessageWithContent: (NSPasteboard *) pboard userData: (NSString *) userData error: (NSString **) error; - (void) newMessageWithRecipient: (NSPasteboard *) pboard userData: (NSString *) userData error: (NSString **) error; @end #endif // _GNUMail_H_GNUMail_Services GNUMail/Framework/GNUMail/ImageTextCell.h0100644000014600001460000000232410606371542020623 0ustar monotonemonotone/* ** ImageTextCell.h ** ** Copyright (c) 2003-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ImageTextCell #define _GNUMail_H_ImageTextCell #import @interface ImageTextCell : NSTextFieldCell { @private NSImage *_image; int _delta; } - (void) setDelta: (int) theDelta; - (void) setImage: (NSImage *) theImage; - (void) drawWithFrame: (NSRect) theFrame inView: (NSView *) theView; - (NSSize) cellSize; @end #endif // _GNUMail_H_ImageTextCell GNUMail/Framework/GNUMail/LabelWidget.h0100644000014600001460000000247510601706270020321 0ustar monotonemonotone/* ** LabelWidget.h ** ** Copyright (c) 2001-2007 ** ** Author: Jonathan B. Leffert ** Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_LabelWidget #define _GNUMail_H_LabelWidget #import @interface LabelWidget: NSTextField - (id) initWithFrame: (NSRect) theFrame; - (id) initWithFrame: (NSRect) theFrame label: (NSString *) theLabel; + (id) labelWidgetWithFrame: (NSRect) theFrame label: (NSString *) theLabel; + (id) labelWidgetWithFrame: (NSRect) theFrame label: (NSString *) theLabel alignment: (int) theAlignment; @end #endif // _GNUMail_H_LabelWidget GNUMail/Framework/GNUMail/MailboxInspectorPanelController.h0100644000014600001460000000314010424672357024445 0ustar monotonemonotone/* ** MailboxInspectorPanelController.h ** ** Copyright (c) 2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_MailboxInspectorPanelController #define _GNUMail_H_MailboxInspectorPanelController #import @class CWMessage; @class ThreadArcsCell; @interface MailboxInspectorPanelController: NSWindowController { // Views outlets IBOutlet id threadArcsView; // Subviews outlets IBOutlet NSTextView *textView; IBOutlet NSTextField *subject; IBOutlet NSBox *box; // Other ivars CWMessage *_message; ThreadArcsCell *_cell; } // // delegate methods // - (IBAction) selectionHasChanged: (id) sender; // // access / mutation methods // - (NSTextView *) textView; - (CWMessage *) selectedMessage; - (void) setSelectedMessage: (CWMessage *) theMessage; // // class methods // + (id) singleInstance; @end #endif // _GNUMail_H_MailboxInspectorPanelController GNUMail/Framework/GNUMail/MailboxInspectorPanel.h0100644000014600001460000000244310424672357022406 0ustar monotonemonotone/* ** MailboxInspectorPanel.h ** ** Copyright (c) 2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_MailboxInspectorPanel #define _GNUMail_H_MailboxInspectorPanel #import @class LabelWidget; // // // @interface MailboxInspectorThreadArcsView : NSView { @public NSTextView *textView; LabelWidget *subject; } - (void) layoutView; @end // // // @interface MailboxInspectorPanel: NSPanel { @public NSBox *box; MailboxInspectorThreadArcsView *threadArcsView; } - (void) layoutPanel; @end #endif // _GNUMail_H_MailboxInspectorPanel GNUMail/Framework/GNUMail/MailboxManagerCache.h0100644000014600001460000000441410432177361021750 0ustar monotonemonotone/* ** MailboxManagerCache.h ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_MailboxManagerCache #define _GNUMail_H_MailboxManagerCache #import NSString *PathToMailboxManagerCache(); @interface MailboxManagerCache : NSObject { @private NSMutableDictionary *_cache; } - (BOOL) synchronize; // // Access / mutation methods // - (NSDictionary *) allCacheObjects; - (void) setAllCacheObjects: (NSDictionary *) theObjects; - (void) allValuesForStoreName: (NSString *) theStoreName folderName: (NSString *) theFolderName username: (NSString *) theUsername nbOfMessages: (unsigned int *) theNbOfMessages nbOfUnreadMessages: (unsigned int *) theNbOfUnreadMessages; - (void) setAllValuesForStoreName: (NSString *) theStoreName folderName: (NSString *) theFolderName username: (NSString *) theUsername nbOfMessages: (unsigned int) theNbOfMessages nbOfUnreadMessages: (unsigned int) theNbOfUnreadMessages; - (void) removeAllValuesForStoreName: (NSString *) theStoreName folderName: (NSString *) theFolderName username: (NSString *) theUsername; // // class methods // + (id) cacheFromDisk; @end // // Our cached object // @interface MailboxManagerCacheObject : NSObject { @public int nbOfMessages; int nbOfUnreadMessages; } @end #endif // _GNUMail_H_MailboxManagerCache GNUMail/Framework/GNUMail/MailboxManagerController.h0100644000014600001460000001071510613064243023064 0ustar monotonemonotone/* ** MailboxManagerController.h ** ** Copyright (C) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_MailboxManagerController #define _GNUMail_H_MailboxManagerController #import @class CWFlags; @class CWFolder; @class CWIMAPFolder; @class CWIMAPStore; @class CWMessage; @class CWStore; @class CWURLName; @class EditWindowController; @class ExtendedOutlineView; @class FolderNode; @class MailboxManagerCache; #ifdef MACOSX @interface MailboxManagerController: NSObject #else @interface MailboxManagerController: NSWindowController #endif { // Outlets - PS: _no_ view under OS X, only the model/controller. // The view is actually owned by the MailWindowController under OS X. #ifndef MACOSX IBOutlet NSScrollView *scrollView; #endif IBOutlet ExtendedOutlineView *outlineView; IBOutlet NSMenu *menu; // Private ivars @private MailboxManagerCache *_cache; NSMutableArray *_allFolders; FolderNode *localNodes; NSMutableDictionary *allStores; NSImage *_open_folder; NSImage *_sort_right; NSImage *_sort_down; NSImage *_drafts; NSImage *_inbox; NSImage *_sent; NSImage *_trash; int _font_size; } // // delegate methods // - (void) windowDidLoad; // // action methods // - (IBAction) changeSize: (id) sender; - (IBAction) open: (id) sender; - (IBAction) create: (id) sender; - (IBAction) delete: (id) sender; - (IBAction) rename: (id) sender; - (IBAction) takeOffline: (id) sender; - (IBAction) setMailboxAs: (id) sender; // // access/mutation methods // - (NSOutlineView *) outlineView; - (id) storeForFolderNode: (FolderNode *) theFolderNode; - (id) storeForName: (NSString *) theName username: (NSString *) theUsername; - (id) storeForURLName: (CWURLName *) theURLName; - (id) folderForURLName: (CWURLName *) theURLName; - (void) setStore: (id) theStore name: (NSString *) theName username: (NSString *) theUsername; - (void) closeWindowsForStore: (id) theStore; - (MailboxManagerCache *) cache; - (void) addMessage: (NSData *) theMessage toFolder: (CWURLName *) theURLName; - (CWMessage *) messageFromDraftsFolder; - (NSDictionary *) allStores; - (NSMenu *) outlineView: (NSOutlineView *) aOutlineView contextMenuForItem: (id) item; - (void) setCurrentOutlineView: (id) theOutlineView; - (void) updateFolderInformation: (NSDictionary *) theInformation; - (void) updateOutlineViewForFolder: (NSString *) theFolder store: (NSString *) theStore username: (NSString *) theUsername controller: (id) theController; // // class methods // + (id) singleInstance; // // Other methods // - (void) panic: (NSData *) theData folder: (NSString *) theFolder; - (void) deleteSentMessageWithID: (NSString *) theID; - (void) restoreUnsentMessages; - (void) saveUnsentMessage: (NSData *) theMessage withID: (NSString *) theID; - (void) openFolderWithURLName: (CWURLName *) theURLName sender: (id) theSender; - (void) reloadAllFolders; - (void) transferMessage: (NSData *) theMessage flags: (CWFlags *) theFlags folder: (CWFolder *) theFolder; - (void) transferMessages: (NSArray *) theMessages fromStore: (id) theSourceStore fromFolder: (id) theSourceFolder toStore: (id) theDestinationStore toFolder: (id) theDestinationFolder operation: (int) theOperation; - (void) reloadFoldersForStore: (id) theStore folders: (NSEnumerator *) theFolders; - (FolderNode *) storeFolderNodeForName: (NSString *) theName; - (void) saveMessageInDraftsFolderForController: (EditWindowController *) theEditWindowController; @end #endif // _GNUMail_H_MailboxManagerController GNUMail/Framework/GNUMail/MailboxManager.h0100644000014600001460000000227610424672357021036 0ustar monotonemonotone/* ** MailboxManager.h ** ** Copyright (c) 2001, 2002, 2003, 2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_MailboxManager #define _GNUMail_H_MailboxManager #import @class ExtendedOutlineView; @interface MailboxManager : NSPanel { @public NSTableColumn *mailboxColumn, *messagesColumn; ExtendedOutlineView *outlineView; NSScrollView *scrollView; } - (void) layoutWindow; - (void) dealloc; @end #endif // _GNUMail_H_MailboxManager GNUMail/Framework/GNUMail/MailboxManagerToolbar.h0100644000014600001460000000275710424672357022365 0ustar monotonemonotone/* ** MailboxManagerToolbar.h ** ** Copyright (c) 2002-2004 ** ** Author: Francis Lachapelle ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_MailboxManagerToolbar #define _GNUMail_H_MailboxManagerToolbar #import #include "MailboxManagerController.h" @interface MailboxManagerController (MailboxManagerToolbar) // // NSToolbar delegate methods // - (NSToolbarItem *) toolbar: (NSToolbar *) toolbar itemForItemIdentifier: (NSString *) itemIdentifier willBeInsertedIntoToolbar: (BOOL) flag; - (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar*) toolbar; - (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar*) toolbar; // // NSToolbarItemValidation protocol // - (BOOL) validateToolbarItem: (NSToolbarItem *) theItem; @end #endif // _GNUMail_H_MailboxManagerToolbar GNUMail/Framework/GNUMail/MailHeaderCell.h0100644000014600001460000000275610424672357020746 0ustar monotonemonotone/* ** MailHeaderCell.h ** ** Copyright (c) 2002-2004 ** ** Author: Nicolas Roard ** Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_MailHeaderCell #define _GNUMail_H_MailHeaderCell #import // // // @interface MailHeaderCell : NSTextAttachmentCell { NSAttributedString *_originalAttributedString; NSMutableArray *_allViews; NSColor *_color; id _controller; float _width; } // // access / mutation methods // - (float) height; - (float) width; - (void) resize: (id) sender; - (void) setWidth: (float) theWidth; - (void) setColor: (NSColor *) theColor; - (void) setController: (id) theController; // // other methods // - (void) addView: (id) theView; - (BOOL) containsView: (id) theView; @end #endif // _GNUMail_H_MailHeaderCell GNUMail/Framework/GNUMail/MailWindowController.h0100644000014600001460000001251110601706270022244 0ustar monotonemonotone/* ** MailWindowController.h ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_MailWindowController #define _GNUMail_H_MailWindowController #import #import @class ExtendedOutlineView; @class CWFolder; @class CWLocalStore; @class CWMessage; @class CWPOP3Folder; @class CWURLName; @class FolderNode; @class LabelWidget; @class MailHeaderCell; @class ThreadArcsCell; @class MailWindow; @interface MailWindowController : NSWindowController { // // Outlets // IBOutlet NSScrollView *tableScrollView; IBOutlet NSScrollView *textScrollView; IBOutlet NSSplitView *splitView; IBOutlet NSTextView *textView; IBOutlet NSButton *mailboxes; IBOutlet NSButton *compose; IBOutlet NSButton *forward; IBOutlet NSButton *reply; IBOutlet NSButton *addresses; IBOutlet NSButton *find; IBOutlet NSTextField *label; IBOutlet NSTableColumn *flaggedColumn; IBOutlet NSTableColumn *statusColumn; IBOutlet NSTableColumn *idColumn; IBOutlet NSTableColumn *dateColumn; IBOutlet NSTableColumn *fromColumn; IBOutlet NSTableColumn *subjectColumn; IBOutlet NSTableColumn *sizeColumn; IBOutlet NSMenu *menu; IBOutlet NSDrawer *drawer; IBOutlet ExtendedOutlineView *outlineView; // // Other ivars // NSMutableArray *allMessageViewWindowControllers; NSMutableArray *_allVisibleMessages; NSArray *_allMessages; FolderNode *allNodes; CWFolder *_folder; MailHeaderCell *mailHeaderCell; ThreadArcsCell *threadArcsCell; id dataView; BOOL _noResetSearchField; BOOL draftsOrSentFolder; BOOL showAllHeaders; BOOL showRawSource; NSMutableArray *allowedToolbarItemIdentifiers; NSMutableDictionary *additionalToolbarItems; // // Public ivars // @public IBOutlet NSButton *next; IBOutlet NSButton *previous; IBOutlet id get; IBOutlet id delete; IBOutlet NSButton *icon; #ifdef MACOSX IBOutlet NSProgressIndicator *progressIndicator; #endif IBOutlet NSSearchField *searchField; } // // Action methods // - (IBAction) doubleClickedOnDataView: (id) sender; - (IBAction) deleteMessage: (id) sender; - (IBAction) lastMessage: (id) sender; - (IBAction) firstMessage: (id) sender; - (IBAction) pageDownMessage: (id) sender; - (IBAction) pageUpMessage: (id) sender; - (IBAction) nextInThread: (id) sender; - (IBAction) nextMessage: (id) sender; - (IBAction) nextUnreadMessage: (id) sender; - (IBAction) previousInThread: (id) sender; - (IBAction) previousMessage: (id) sender; - (IBAction) previousUnreadMessage: (id) sender; - (IBAction) replyToMessage: (id) sender; - (IBAction) viewMessageInWindow: (id) sender; - (IBAction) getNewMessages: (id) sender; - (IBAction) copyOrMoveMessages: (id) sender; - (IBAction) openOrCloseDrawer: (id) sender; // // Access / mutation methods // - (CWFolder *) folder; - (void) setFolder: (CWFolder *) theFolder; - (CWMessage *) selectedMessage; - (NSArray *) selectedMessages; - (BOOL) showAllHeaders; - (void) setShowAllHeaders: (BOOL) aBOOL; - (BOOL) showRawSource; - (void) setShowRawSource: (BOOL) aBool; - (id) dataView; - (void) setDataViewType: (int) theType; - (NSTextView *) textView; - (MailHeaderCell *) mailHeaderCell; - (ThreadArcsCell *) threadArcsCell; - (NSMutableArray *) allMessageViewWindowControllers; - (NSArray *) allMessages; // // delegate methods // - (NSMenu *) dataView: (id) aDataView contextMenuForRow: (int) theRow; - (int) numberOfRowsInTableView: (NSTableView *)aTableView; - (id) tableView: (NSTableView *) aTableView objectValueForTableColumn: (NSTableColumn *) aTableColumn row: (int) rowIndex; - (void) tableView: (NSTableView *) aTableView willDisplayCell: (id) aCell forTableColumn: (NSTableColumn *) aTableColumn row: (int) rowIndex; - (void) tableViewSelectionDidChange: (NSNotification *) aNotification; - (void) tableView: (NSTableView *) theTableView didReceiveTyping: (NSString *) theString; - (void) textView: (NSTextView *) aTextView clickedOnCell: (id ) attachmentCell inRect: (NSRect) cellFrame atIndex: (unsigned) charIndex; - (BOOL) textView: (NSTextView *) textView clickedOnLink: (id) link atIndex: (unsigned) charIndex; - (void) windowWillClose: (NSNotification *) not; - (void) windowDidLoad; - (void) windowDidBecomeKey: (NSNotification *) aNotification; // // Other methods // - (void) tableViewShouldReloadData; - (void) updateDataView; - (void) updateStatusLabel; - (void) updateWindowTitle; - (void) doFind: (id) sender; - (void) resetSearchField; @end #endif // _GNUMail_H_MailWindowController GNUMail/Framework/GNUMail/MailWindow.h0100644000014600001460000000233010506157373020206 0ustar monotonemonotone/* ** MailWindow.h ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_MailWindow #define _GNUMail_H_MailWindow #import #include "ExtendedWindow.h" @class LabelWidget; @interface MailWindow : ExtendedWindow { @public NSScrollView *tableScrollView, *textScrollView; NSSplitView *splitView; NSTextView *textView; LabelWidget *label; NSButton *icon; } - (void) dealloc; - (void) layoutWindow; @end #endif // _GNUMail_H_MailWindow GNUMail/Framework/GNUMail/MailWindowToolbar.h0100644000014600001460000000300510432175455021530 0ustar monotonemonotone/* ** MailWindowToolbar.h ** ** Copyright (c) 2002-2006 ** ** Author: Francis Lachapelle ** Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_MailWindowToolbar #define _GNUMail_H_MailWindowToolbar #import #include "MailWindowController.h" @interface MailWindowController (MailWindowToolbar) // // NSToolbar delegate methods // - (NSToolbarItem *) toolbar: (NSToolbar *) toolbar itemForItemIdentifier: (NSString *) itemIdentifier willBeInsertedIntoToolbar: (BOOL) flag; - (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar*) toolbar; - (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar*) toolbar; // // NSToolbarItemValidation protocol // - (BOOL) validateToolbarItem: (NSToolbarItem *) theItem; @end #endif // _GNUMail_H_MailWindowToolbar GNUMail/Framework/GNUMail/MessageComposition.h0100644000014600001460000001055610424672357021760 0ustar monotonemonotone/* ** MessageComposition.h ** ** Copyright (c) 2001-2004 ** ** Author: Ujwal S. Sathyam ** ** Description: Header file for scriptable MessageComposition class. ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_MessageComposition #define _GNUMail_H_MessageComposition #import #import @class CWInternetAddress; @class ToRecipient; @class CcRecipient; @class BccRecipient; @class EditWindowController; @interface MessageComposition : NSObject { // instance variables for attributes: NSString *_author; NSTextStorage *_content; int _signaturePosition; BOOL _hasSignature; NSString *_subject; NSMutableArray *_attachments; NSString *_account; // instance variables for to-many relationships: NSMutableArray *_recipients; @private EditWindowController *_editWindowController; } - (void) send; - (void) show: (BOOL) flag; - (void) addAttachment: (NSString *) aFileName; // // accessors for attributes: // - (NSString *) author; - (void) setAuthor: (NSString *)author; - (NSTextStorage *) content; - (void) setContent: (NSTextStorage *)content; - (int) signaturePosition; - (void) setSignaturePosition: (int) signaturePosition; - (BOOL) hasSignature; - (void) setHasSignature: (BOOL) hasSignature; - (NSString *) subject; - (void) setSubject: (NSString *) subject; - (NSArray *) attachments; - (void) setAttachments: (NSArray *) attachments; - (NSString *) account; - (void) setAccount: (NSString *) accountName; // // accessors for to-many relationships: // - (NSArray *)recipients; - (void) setRecipients: (NSArray *) recipients; - (NSArray *)ccRecipients; - (void) setCcRecipients: (NSArray *) ccRecipients; - (NSArray *)bccRecipients; - (void) setBccRecipients: (NSArray *) bccRecipients; - (NSArray *)toRecipients; - (void) setToRecipients: (NSArray *) toRecipients; @end // // // @interface MessageComposition (KeyValueCoding) - (void) insertInRecipients: (CWInternetAddress *) object; - (void) insertInRecipients: (CWInternetAddress *) object atIndex: (unsigned) index; - (void) removeFromRecipientsAtIndex: (unsigned) index; - (void) replaceInRecipients: (CWInternetAddress *) object atIndex: (unsigned) index; - (id) valueInRecipientsAtIndex: (unsigned) index; - (void) insertInToRecipients: (ToRecipient *) object; - (void) insertInToRecipients: (ToRecipient *) object atIndex: (unsigned) index; - (void) removeFromToRecipientsAtIndex: (unsigned) index; - (void) replaceInToRecipients: (ToRecipient *) object atIndex: (unsigned) index; - (id) valueInToRecipientsAtIndex: (unsigned) index; - (void) insertInCcRecipients: (CcRecipient *) object; - (void) insertInCcRecipients: (CcRecipient *) object atIndex: (unsigned) index; - (void) removeFromCcRecipientsAtIndex: (unsigned) index; - (void) replaceInCcRecipients: (CcRecipient *) object atIndex: (unsigned) index; - (id) valueInCcRecipientsAtIndex: (unsigned) index; - (void) insertInBccRecipients: (BccRecipient *) object; - (void) insertInBccRecipients: (BccRecipient *) object atIndex: (unsigned) index; - (void) removeFromBccRecipientsAtIndex: (unsigned) index; - (void) replaceInBccRecipients: (BccRecipient *) object atIndex: (unsigned) index; - (id) valueInBccRecipientsAtIndex: (unsigned) index; @end @interface MessageComposition (Private) - (void) _loadMessage; @end #ifdef MACOSX @interface MessageComposition (ScriptingSupport) // // Object specifier // - (NSScriptObjectSpecifier *)objectSpecifier; // // Handlers for supported commands: // - (void) handleSendMessageScriptCommand: (NSScriptCommand *) command; - (void) handleShowMessageScriptCommand: (NSScriptCommand *) command; - (void) handleAttachScriptCommand: (NSScriptCommand *) command; @end #endif #endif // _GNUMail_H_MessageComposition GNUMail/Framework/GNUMail/MessageViewWindowController.h0100644000014600001460000000700210524045777023614 0ustar monotonemonotone/* ** MessageViewWindowController.h ** ** Copyright (c) 2001-2006 ** ** Author: Ujwal S. Sathyam ** Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_MessageViewWindowController #define _GNUMail_H_MessageViewWindowController #import @class CWFolder; @class CWMessage; @class MailHeaderCell; @class MailWindowController; @class ThreadArcsCell; @interface MessageViewWindowController : NSWindowController { IBOutlet NSTextView *textView; CWMessage *message; // the message that will be displayed CWFolder *folder; // the folder this message lives in MailWindowController *mailWindowController; // the owning/parent mail window controller BOOL showAllHeaders; // flag to show all email headers BOOL showRawSource; // flag to show raw source int indexOffset; // offset to our initial index MailHeaderCell *mailHeaderCell; // cell in which we display the headers ThreadArcsCell *threadArcsCell; @public IBOutlet NSButton *showOrHideAllHeaders; IBOutlet NSButton *raw; } // // action methods // - (IBAction) deleteMessage: (id) sender; - (IBAction) replyToMessage: (id) sender; - (IBAction) previousMessage: (id) sender; - (IBAction) nextMessage: (id) sender; - (IBAction) firstMessage: (id) sender; - (IBAction) lastMessage: (id) sender; - (IBAction) showOrHideAllHeaders: (id) sender; // // delegate methods // - (void) windowWillClose: (NSNotification *) theNotification; - (void) windowDidLoad; - (void) windowDidBecomeKey: (NSNotification *) aNotification; // // access/mutation methods // - (NSTextView *) textView; - (CWMessage *) message; - (CWMessage *) selectedMessage; - (NSArray *) allMessages; - (void) setMessage:(CWMessage *)aMessage; - (CWFolder *) folder; - (void) setFolder:(CWFolder *) aFolder; - (MailWindowController *) mailWindowController; - (void) setMailWindowController: (MailWindowController *)aMailWindowController; - (BOOL) showAllHeaders; - (void) setShowAllHeaders: (BOOL) aBool; - (BOOL) showRawSource; - (void) setShowRawSource: (BOOL) aBool; - (MailHeaderCell *) mailHeaderCell; - (ThreadArcsCell *) threadArcsCell; - (int) indexOffset; - (void) setIndexOffset: (int) theIndexOffset; // // other methods // - (void) textView: (NSTextView *) aTextView clickedOnCell: (id ) attachmentCell inRect: (NSRect) cellFrame atIndex: (unsigned) charIndex; - (BOOL) textView: (NSTextView *) textView clickedOnLink: (id) link atIndex: (unsigned) charIndex; @end // // Private interface // @interface MessageViewWindowController (Private) - (void) _loadAccessoryViews; @end #endif // _GNUMail_H_MessageViewWindowController GNUMail/Framework/GNUMail/MessageViewWindow.h0100644000014600001460000000217210424672357021552 0ustar monotonemonotone/* ** MessageViewWindow.h ** ** Copyright (c) 2002-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_MessageViewWindow #define _GNUMail_H_MessageViewWindow #import #include "ExtendedWindow.h" @interface MessageViewWindow : ExtendedWindow { @public NSScrollView *textScrollView; NSTextView *textView; } - (void) layoutWindow; @end #endif // _GNUMail_H_MessageViewWindow GNUMail/Framework/GNUMail/MessageViewWindowToolbar.h0100644000014600001460000000300410506157373023065 0ustar monotonemonotone/* ** MessageViewWindowToolbar.h ** ** Copyright (c) 2002-2006 ** ** Author: Francis Lachapelle ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_MessageViewWindowToolbar #define _GNUMail_H_MessageViewWindowToolbar #import #include "MessageViewWindowController.h" @interface MessageViewWindowController (MessageViewWindowToolbar) // // NSToolbar delegate methods // - (NSToolbarItem *) toolbar: (NSToolbar *) toolbar itemForItemIdentifier: (NSString *) itemIdentifier willBeInsertedIntoToolbar: (BOOL) flag; - (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar*) toolbar; - (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar*) toolbar; // // NSToolbarItemValidation protocol // - (BOOL) validateToolbarItem: (NSToolbarItem *) theItem; @end #endif // _GNUMail_H_MessageViewWindowToolbar GNUMail/Framework/GNUMail/MimeType.h0100644000014600001460000000417010556071303017662 0ustar monotonemonotone/* ** MimeType.h ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_MimeType #define _GNUMail_H_MimeType #import #define DISPLAY_IF_POSSIBLE 0 #define DISPLAY_AS_ICON 1 #define PROMPT_SAVE_PANEL 0 #define OPEN_WITH_WORKSPACE 1 #define OPEN_WITH_EXTERNAL_PROGRAM 2 @interface MimeType: NSObject { NSString *mimeType; NSString *fileExtensions; NSString *description; int view, action; NSString *dataHandlerCommand; NSImage *icon; } - (void) encodeWithCoder: (NSCoder *) theCoder; - (id) initWithCoder: (NSCoder *) theCoder; // // class methods // // // access/mutation methods // - (NSString *) mimeType; - (void) setMimeType: (NSString *) theMimeType; - (NSString *) primaryType; - (void) setPrimaryType: (NSString *) thePrimaryType; - (NSString *) subType; - (void) setSubType: (NSString *) theSubType; - (NSEnumerator *) fileExtensions; - (NSString *) stringValueOfFileExtensions; - (void) setFileExtensions: (NSString *) theFileExtensions; - (int) view; - (void) setView: (int) theView; - (int) action; - (void) setAction: (int) theAction; - (NSString *) dataHandlerCommand; - (void) setDataHandlerCommand: (NSString *) theDataHandlerCommand; - (NSImage *) icon; - (void) setIcon: (NSImage *) theIcon; - (NSString *) description; - (void) setDescription: (NSString *) theDescription; @end #endif // _GNUMail_H_MimeType GNUMail/Framework/GNUMail/MimeTypeManager.h0100644000014600001460000000406310424672357021170 0ustar monotonemonotone/* ** MimeTypeManager.h ** ** Copyright (c) 2001, 2002 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_MimeTypeManager #define _GNUMail_H_MimeTypeManager #import @class MimeType; @class NSTableView; @class NSTableColumn; NSString *PathToMimeTypes(); @interface MimeTypeManager: NSObject { NSMutableDictionary *standardMimeTypes; NSMutableArray *mimeTypes; } - (id) init; - (void) dealloc; - (BOOL) synchronize; // // NSCoding protocol // - (void) encodeWithCoder: (NSCoder *) theCoder; - (id) initWithCoder: (NSCoder *) theCoder; // // access/mutation methods // - (MimeType *) mimeTypeAtIndex: (int) theIndex; - (void) addMimeType: (MimeType *) theMimeType; - (void) removeMimeType: (MimeType *) theMimeType; - (NSArray *) mimeTypes; - (void) setMimeTypes: (NSArray *) theMimeTypes; - (MimeType *) bestMimeTypeForFileExtension: (NSString *) theFileExtension; - (MimeType *) mimeTypeForFileExtension: (NSString *) theFileExtension; - (MimeType *) mimeTypeFromString: (NSString *) theString; - (NSImage *) bestIconForMimeType: (MimeType *) theMimeType pathExtension: (NSString *) thePathExtension; // // class methods // + (id) singleInstance; @end // // Private methods // @interface MimeTypeManager (Private) - (void) _loadStandardMimeTypes; @end #endif // _GNUMail_H_MimeTypeManager GNUMail/Framework/GNUMail/NavigationToolbarItem.h0100644000014600001460000000213010424672357022376 0ustar monotonemonotone/* ** NavigationToolbarItem.h ** ** Copyright (c) 2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_NavigationToolbarItem #define _GNUMail_H_NavigationToolbarItem #import @interface NavigationToolbarItem: NSToolbarItem { id _delegate; } - (void) setDelegate: (id) theDelegate; - (void) validate; @end #endif // _GNUMail_H_NavigationToolbarItem GNUMail/Framework/GNUMail/NewMailboxPanelController.h0100644000014600001460000000246710424672357023243 0ustar monotonemonotone/* ** NewMailboxPanelController.h ** ** Copyright (c) 2001-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_NewMailboxPanelController #define _GNUMail_H_NewMailboxPanelController #import @interface NewMailboxPanelController: NSWindowController { // Outlets IBOutlet NSTextField *mailboxNameField; IBOutlet NSPopUpButton *popUpButton; } // // action methods // - (IBAction) okClicked: (id) sender; - (IBAction) cancelClicked: (id) sender; // // access/mutation methods // - (NSTextField *) mailboxNameField; @end #endif // _GNUMail_H_NewMailboxPanelController GNUMail/Framework/GNUMail/NewMailboxPanel.h0100644000014600001460000000215210424672357021166 0ustar monotonemonotone/* ** NewMailboxPanel.h ** ** Copyright (c) 2001-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_NewMailboxPanel #define _GNUMail_H_NewMailboxPanel #import @class LabelWidget; @interface NewMailboxPanel : NSPanel { @public LabelWidget *mailboxNameLabel; NSTextField *mailboxNameField; } - (void) layoutPanel; @end #endif // _GNUMail_H_NewMailboxPanel GNUMail/Framework/GNUMail/NSAttributedString+Extensions.h0100644000014600001460000000452110524045777024036 0ustar monotonemonotone/* ** NSAttributedString+Extensions.h ** ** Copyright (c) 2004-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_NSAttributedString_Extensions #define _GNUMail_H_NSAttributedString_Extensions #import @class CWMessage; @class CWMIMEMultipart; @class CWPart; @interface NSAttributedString (GNUMailAttributedStringExtensions) + (NSAttributedString *) attributedStringFromContentForPart: (CWPart *) thePart controller: (id) theController; + (NSAttributedString *) attributedStringFromHeadersForMessage: (CWMessage *) theMessage showAllHeaders: (BOOL) showAllHeader useMailHeaderCell: (BOOL) useMailHeaderCell; + (NSAttributedString *) attributedStringFromMultipartAlternative: (CWMIMEMultipart *) theMimeMultipart controller: (id) theController; + (NSAttributedString *) attributedStringFromMultipartAppleDouble: (CWMIMEMultipart *) theMimeMultipart controller: (id) theController; + (NSAttributedString *) attributedStringFromTextPart: (CWPart *) thePart; + (NSAttributedString *) attributedStringWithString: (NSString *) theString attributes: (NSDictionary *) theAttributes; - (NSSize) sizeInRect: (NSRect) theRect; @end @interface NSMutableAttributedString (GNUMailMutableAttributedStringExtensions) - (void) format; - (void) highlightAndActivateURL; - (void) quote; @end #endif // _GNUMail_H_NSAttributedString_Extensions GNUMail/Framework/GNUMail/NSAttributedString+TextEnriched.h0100644000014600001460000000320310424672357024260 0ustar monotonemonotone/* ** NSAttributedString+TextEnriched.h ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_NSAttributedString_TextEnriched #define _GNUMail_H_NSAttributedString_TextEnriched #import @interface NSAttributedString (TextEnriched) + (NSAttributedString *) attributedStringFromTextEnrichedString: (NSString *) theString; + (void) _alterAttributedString: (NSMutableAttributedString *) theMutableAttributedString withScanner: (NSScanner *) theScanner fontManager: (NSFontManager *) theFontManager startCmd: (NSString *) theStartCmd endCmd: (NSString *) theEndCmd trait: (int) theTrait; + (void) _removeCommandsFromAttributedString: (NSMutableAttributedString *) theMutableAttributedString; + (void) _unfoldAttributedString: (NSMutableAttributedString *) theMutableAttributedString; @end #endif // _NSAttributedString_TextEnriched GNUMail/Framework/GNUMail/NSBezierPath+Extensions.h0100644000014600001460000000224510424672357022575 0ustar monotonemonotone/* ** NSBezierPath+Extensions.m ** ** Copyright (c) 2002-2005 ** ** Author: Francis Lachapelle ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_NSBezierPath_Extensions #define _GNUMail_H_NSBezierPath_Extensions #import @interface NSBezierPath (GNUMailBezierPathExtensions) - (void) appendBezierPathWithRoundedRectangle: (NSRect) theRect withRadius: (float) theRadius; @end #endif // _GNUMail_H_NSBezierPath_Extensions GNUMail/Framework/GNUMail/NSBundle+Extensions.h0100644000014600001460000000207410424672357021751 0ustar monotonemonotone/* ** NSBundle+Extensions.m ** ** Copyright (c) 2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_NSBundle_Extensions #define _GNUMail_H_NSBundle_Extensions #import @interface NSBundle (GNUMailBundleExtensions) + (id) instanceForBundleWithName: (NSString *) theName; @end #endif // _GNUMail_H_NSBundle_Extensions GNUMail/Framework/GNUMail/NSColor+Extensions.h0100644000014600001460000000210410424672357021610 0ustar monotonemonotone/* ** NSColor+Extensions.h ** ** Copyright (c) 2004-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_NSColor_Extensions #define _GNUMail_H_NSColor_Extensions #import @interface NSColor (GNUMailColorExtensions) + (NSColor *) colorForLevel: (int) theLevel; + (void) updateCache; @end #endif // _GNUMail_H_NSColor_Extensions GNUMail/Framework/GNUMail/NSFont+Extensions.h0100644000014600001460000000254710424672357021453 0ustar monotonemonotone/* ** NSFont+Extensions.h ** ** Copyright (c) 2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_NSFont_Extensions #define _GNUMail_H_NSFont_Extensions #import @interface NSFont (GNUMailFontExtensions) + (NSFont *) fontFromFamilyName: (NSString *) theName trait: (int) theTrait size: (int) theSize; + (NSFont *) deletedMessageFont; + (NSFont *) headerNameFont; + (NSFont *) headerValueFont; + (NSFont *) messageFont; + (NSFont *) plainTextMessageFont; + (NSFont *) recentMessageFont; + (NSFont *) seenMessageFont; + (void) updateCache; @end #endif // _GNUMail_H_NSFont_Extensions GNUMail/Framework/GNUMail/NSPasteboard+Extensions.h0100644000014600001460000000213610424672357022623 0ustar monotonemonotone/* ** NSPasteboard+Extensions.h ** ** Copyright (c) 2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_NSPasteboard_Extensions #define _GNUMail_H_NSPasteboard_Extensions #import @class CWMessage; @interface NSPasteboard (GNUMailPasteboardExtensions) - (void) addMessage: (CWMessage *) theMessage; @end #endif // _GNUMail_H_NSPasteboard_Extensions GNUMail/Framework/GNUMail/NSUserDefaults+Extensions.h0100644000014600001460000000237110424672357023146 0ustar monotonemonotone/* ** NSUserDefaults+Extensions.h ** ** Copyright (C) 2002-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_NSUserDefaults_Extensions #define _GNUMail_H_NSUserDefaults_Extensions #import @interface NSUserDefaults (GNUMailColorExtensions) - (NSColor *) colorForKey: (NSString *) theKey; - (void) setColor: (NSColor *) theColor forKey: (NSString *) theKey; - (int) integerForKey: (NSString *) theKey default: (int) theValue; @end #endif // _GNUMail_H_NSUserDefaults_Extensions GNUMail/Framework/GNUMail/PasswordPanelController.h0100644000014600001460000000301110424672357022762 0ustar monotonemonotone/* ** PasswordPanelController.h ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_PasswordPanelController #define _GNUMail_H_PasswordPanelController #import @interface PasswordPanelController: NSWindowController { // Outlets IBOutlet NSSecureTextField *passwordSecureField; // Other ivar NSString *password; } - (id) initWithWindowNibName: (NSString *) windowNibName; - (void) dealloc; // // action methods // - (IBAction) okClicked: (id) sender; - (IBAction) cancelClicked: (id) sender; // // delegate methods // - (void) windowWillClose: (NSNotification *) theNotification; // // access/mutation methods // - (NSString *) password; - (void) setPassword: (NSString *) thePassword; @end #endif // _GNUMail_H_PasswordPanelController GNUMail/Framework/GNUMail/PasswordPanel.h0100644000014600001460000000211210424672357020717 0ustar monotonemonotone/* ** PasswordPanel.h ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_PasswordPanel #define _GNUMail_H_PasswordPanel #import @interface PasswordPanel : NSPanel { @public NSSecureTextField *passwordSecureField; } - (void) layoutPanel; - (void) dealloc; @end #endif // _GNUMail_H_PasswordPanel GNUMail/Framework/GNUMail/PreferencesWindowController.h0100644000014600001460000000354310601706270023630 0ustar monotonemonotone/* ** PreferencesWindowController.h ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_PreferencesWindowController #define _GNUMail_H_PreferencesWindowController #import #include "PreferencesModule.h" @interface PreferencesWindowController: NSWindowController { // Outlets IBOutlet NSMatrix *matrix; IBOutlet NSScrollView *scrollView; IBOutlet NSBox *box; IBOutlet NSButton *expert; // Other ivars @private NSMutableDictionary *_allModules; NSView *_blankView; int _mode; } // // action methods // - (IBAction) cancelClicked: (id) sender; - (IBAction) expertClicked: (id) sender; - (IBAction) saveAndClose: (id) sender; - (IBAction) savePreferences: (id) sender; - (void) handleCellAction: (id) sender; // // other methods // - (void) addModuleToView: (id) aModule; - (void) initializeWithStandardModules; - (void) initializeWithOptionalModules; // // access/mutation methods // - (NSMatrix *) matrix; - (int) mode; - (void) setMode: (int) theMode; // // class methods // + (id) singleInstance; @end #endif // _GNUMail_H_PreferencesWindowController GNUMail/Framework/GNUMail/PreferencesWindow.h0100644000014600001460000000216510424672357021576 0ustar monotonemonotone/* ** PreferencesWindow.h ** ** Copyright (c) 2001-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_PreferencesWindow #define _GNUMail_H_PreferencesWindow #import @interface PreferencesWindow : NSWindow { @public NSScrollView *scrollView; NSMatrix *matrix; NSBox *box; NSButton *expert; } - (void) layoutWindow; @end #endif // _GNUMail_H_PreferencesWindow GNUMail/Framework/GNUMail/StripeTableView.h0100644000014600001460000000212310424672357021210 0ustar monotonemonotone/* ** StripeTableView.h ** ** Copyright (c) 2003 ** ** Author: Francis Lachapelle ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_StripeTableView #define _GNUMail_H_StripeTableView #import static NSColor *sStripeColor = nil; @interface StripeTableView : NSTableView - (void) drawStripesInRect: (NSRect) theRect; @end #endif // _GNUMail_H_StripeTableView GNUMail/Framework/GNUMail/STScriptingSupport.h0100644000014600001460000000270210424672357021750 0ustar monotonemonotone/** ScriptingSupport Code for loading scripting NOTE: Copy and include this file into your application project. Copyright (c) 2002 Stefan Urbanek Written by: Stefan Urbanek Date: 2002 Apr 13 This file is part of the StepTalk project. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _GNUMail_H_STScriptingSupport #define _GNUMail_H_STScriptingSupport #import @interface NSApplication (STApplicationScripting) - (BOOL)initializeApplicationScripting; - (BOOL)isScriptingSupported; /* User interface */ - (void)orderFrontScriptsPanel:(id)sender; - (void)orderFrontTranscriptWindow:(id)sender; - (NSMenu *)scriptingMenu; @end #endif // _GNUMail_H_STScriptingSupport GNUMail/Framework/GNUMail/Task.h0100644000014600001460000001050010601435447017031 0ustar monotonemonotone/* ** Task.h ** ** Copyright (c) 2002-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_Task #define _GNUMail_H_Task #include #include #include #define SEND_SENDMAIL 1 #define SEND_SMTP 2 #define RECEIVE_IMAP 3 #define RECEIVE_POP3 4 #define RECEIVE_UNIX 5 #define LOAD_ASYNC 6 #define SAVE_ASYNC 7 #define CONNECT_ASYNC 8 #define SEARCH_ASYNC 9 #define OPEN_ASYNC 10 #define EXPUNGE_ASYNC 11 #define ORIGIN_USER 1 #define ORIGIN_TIMER 2 #define ORIGIN_STARTUP 3 // // When sending a message using SENDMAIL or SMTP // subOp can old GNUMailComposeMessage, GNUMailRedirectMessage... // Over IMAP, it can hold IMAP commands such as IMAP_STATUS. // @class NSMutableArray; @class NSString; @interface Task : NSObject { @public id message; // The Message, if it exists (used when sending a mail). // Could be as raw source (for bounce, for example) or an instance of Message id service; id unmodifiedMessage; // The original message - useful when we reply to a message. id key; // Account name. id sendingKey; // The account name used to send the mail - we only use the SMTP or the // mailer informations from this account. int op; // One of the SEND_{SENDMAIL,SMTP} or RECEIVE_{IMAP,POP3} value. int sub_op; // A sub-operation, generally an IMAP command. BOOL immediate; // If YES, we run this task immediately when it has been // added to our task's pool. NSDate *date; // The date at which we will retry to do the op for this task. int origin; // "Where" the task has been created. This could be by the user, // the timer or when the application was started. BOOL is_running; // YES if the task is running, NO otherwise. id owner; // The object that owns this task. It could be a MailWindowController // instance, for example. NSMutableArray *filteredMessagesFolders; // The names of the folders when messages where // transferred since matching filters were found // during the reception of those messages. int filtered_count; // The number of messages that have been filtered. int received_count; // The number of messages we have received while // this task was running. It could also be the // number of "mailboxes" when performing an // IMAP STATUS command. float total_size; float current_size; int total_count; // The number of messages or mailboxes to receive @private NSMutableArray *_controllers; NSString *_subtitle; } // // // - (id) message; - (void) setMessage: (id) theMessage; - (id) unmodifiedMessage; - (void) setUnmodifiedMessage: (id) theMessage; - (id) key; - (void) setKey: (id) theKey; - (id) sendingKey; - (void) setSendingKey: (id) theKey; - (NSDate *) date; - (void) setDate: (NSDate *) theDate; - (id) owner; - (void) setOwner: (id) theOwner; - (NSMutableArray *) filteredMessagesFolders; - (void) setFilteredMessagesFolders: (NSMutableArray *) theMutableArray; - (void) addController: (id) theController; - (NSArray *) allControllers; - (NSString *) subtitle; - (void) setSubtitle: (NSString *) theSubtitle; @end #endif // _GNUMail_H_Task GNUMail/Framework/GNUMail/TaskManager.h0100644000014600001460000000516610613064243020333 0ustar monotonemonotone/* ** TaskManager.h ** ** Copyright (c) 2002-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_TaskManager #define _GNUMail_H_TaskManager #include #include @class CWMessage; @class CWService; @class MailWindowController; @class NSMutableArray; @class NSNotification; @class NSTimer; @class Task; @interface TaskManager : NSObject { @private NSTimer *_timer; NSMapTable *_table; NSMutableArray *_tasks; unsigned int _counter; } - (void) run; - (void) stop; - (void) addTask: (Task *) theTask; - (void) nextTask; - (void) removeTask: (Task *) theTask; - (Task *) taskForService: (CWService *) theService; - (Task *) taskForService: (CWService *) theService message: (CWMessage *) theMessage; - (NSArray *) allTasks; - (void) checkForNewMail: (id) theSender controller: (MailWindowController *) theMailWindowController; - (void) stopTask: (Task *) theTask; - (void) stopTasksForService: (id) theService; - (void) setMessage: (id) theMessage forHash: (int) theHash; // // Pantomime's delegate methods // - (void) authenticationCompleted: (NSNotification *) theNotification; - (void) authenticationFailed: (NSNotification *) theNotification; - (void) connectionEstablished: (NSNotification *) theNotification; - (void) connectionTerminated: (NSNotification *) theNotification; - (void) connectionTimedOut: (NSNotification *) theNotification; - (void) folderPrefetchCompleted: (NSNotification *) theNotification; - (void) messagePrefetchCompleted: (NSNotification *) theNotification; - (void) messageNotSent: (NSNotification *) theNotification; - (void) messageSent: (NSNotification *) theNotification; - (void) service: (CWService *) theService receivedData: (NSData *) theData; - (void) service: (CWService *) theService sentData: (NSData *) theData; // // Class methods // + (id) singleInstance; @end #endif // _GNUMail_H_TaskManager GNUMail/Framework/GNUMail/ThreadArcsCell.h0100644000014600001460000000256710424672357020773 0ustar monotonemonotone/* ** ThreadArcsCell.h ** ** Copyright (c) 2004-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_ThreadArcsCell #define _GNUMail_H_ThreadArcsCell #import @class CWMessage; // // // @interface ThreadArcsCell : NSTextAttachmentCell { @private NSColor *_color; NSMapTable *_rect_table; NSRect _right_scroll_rect; NSRect _left_scroll_rect; BOOL _uses_inspector; CWMessage *_last_selected_message; CWMessage *_start_message; int _start_message_nr; id _controller; } - (void) setUsesInspector: (BOOL) theBOOL; - (void) setController: (id) theController; @end #endif // _GNUMail_H_ThreadArcsCell GNUMail/Framework/GNUMail/Utilities.h0100644000014600001460000001344310524045777020122 0ustar monotonemonotone/* ** Utilities.h ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_Utilities #define _GNUMail_H_Utilities #import #include #include @class FolderNode; @class FolderNodePopUpItem; @class CWFolder; @class CWMessage; @class CWMimeMultipart; @class CWPart; @class CWURLName; @class NSView; // // C functions // NSComparisonResult CompareVersion(NSString *theCurrentVersion, NSString *theLatestVersion); NSString *GNUMailTemporaryDirectory(); NSString *GNUMailUserLibraryPath(); NSString *GNUMailVersion(); // // // @interface Utilities: NSObject + (NSString *) encryptPassword: (NSString *) thePassword withKey: (NSString *) theKey; + (NSString *) decryptPassword: (NSString *) thePassword withKey: (NSString *) theKey; // // // + (void) loadAccountsInPopUpButton: (NSPopUpButton *) thePopUpButton select: (NSString *) theAccount; + (void) loadTransportMethodsInPopUpButton: (NSPopUpButton *) thePopUpButton; // // // + (NSString *) accountNameForFolder: (CWFolder *) theFolder; + (NSString *) accountNameForMessage: (CWMessage *) theMessage; + (NSString *) accountNameForServerName: (NSString *) theServerName username: (NSString *) theUsername; + (NSDictionary *) allEnabledAccounts; + (NSString *) defaultAccountName; + (id) windowForFolderName: (NSString *) theName store: (id) theStore; + (FolderNode *) folderNodeForPath: (NSString *) thePath using: (FolderNode *) rootNode separator: (unsigned char) theSeparator; + (FolderNode *) folderNodesFromFolders: (NSEnumerator *) theFolders separator: (unsigned char) theSeparator; + (NSString *) completePathForFolderNode: (FolderNode *) theFolderNode separator: (unsigned char) theSeparator; + (NSString *) pathOfFolderFromFolderNode: (FolderNode *) theFolderNode separator: (unsigned char) theSeparator; + (NSString *) flattenPathFromString: (NSString *) theString separator: (unsigned char) theSeparator; + (NSString *) storeKeyForFolderNode: (FolderNode *) theFolderNode serverName: (NSString **) theServerName username: (NSString **) theUsername; + (BOOL) URLWithString: (NSString *) theString matchFolder: (CWFolder *) theFolder; + (BOOL) stringValueOfURLName: (NSString *) theString isEqualTo: (NSString *) theName; + (NSString *) stringValueOfURLNameFromFolder: (CWFolder *) theFolder; + (NSString *) stringValueOfURLNameFromFolderNode: (FolderNode *) theFolderNode serverName: (NSString *) theServerName username: (NSString *) theUsername; + (FolderNode *) initializeFolderNodesUsingAccounts: (NSDictionary *) theAccounts; + (void) addItemsToMenu: (NSMenu *) theMenu tag: (int) theTag action: (SEL) theAction folderNodes: (FolderNode *) theFolderNodes; + (void) addItemsToPopUpButton: (NSPopUpButton *) thePopUpButton usingFolderNodes: (FolderNode *) theFolderNodes; + (void) addItem: (FolderNode *) theFolderNode tag: (int) theTag action: (SEL) theAction toMenu: (NSMenu *) theMenu; + (void) addItem: (FolderNode *) theFolderNode level: (int) theLevel tag: (int) theTag action: (SEL) theAction toMenu: (NSMenu *) theMenu; + (FolderNodePopUpItem *) folderNodePopUpItemForFolderNode: (FolderNode *) theFolderNode popUpButton: (NSPopUpButton *) thePopUpButton; + (FolderNodePopUpItem *) folderNodePopUpItemForURLNameAsString: (NSString *) theString usingFolderNodes: (FolderNode *) theFolderNodes popUpButton: (NSPopUpButton *) thePopUpButton account: (NSString *) theAccountName; + (NSString *) passwordForKey: (id) theKey type: (int) theType prompt: (BOOL) aBOOL; + (NSMutableDictionary *) passwordCache; + (void) replyToMessage: (CWMessage *) theMessage folder: (CWFolder *) theFolder mode: (PantomimeReplyMode) theMode; + (void) forwardMessage: (CWMessage *) theMessage mode: (PantomimeForwardMode) theMode; + (void) showMessage: (CWMessage *) theMessage target: (NSTextView *) theTextView showAllHeaders: (BOOL) headersFlag; + (void) showMessageRawSource: (CWMessage *)theMessage target: (NSTextView *)theTextView; + (void) clickedOnCell: (id ) attachmentCell inRect: (NSRect) cellFrame atIndex: (unsigned) charIndex sender: (id) sender; + (void) restoreOpenFoldersForStore: (id) theStore; @end #endif // _GNUMail_H_Utilities GNUMail/Framework/GNUMail/WelcomePanel.h0100644000014600001460000000205710606371542020512 0ustar monotonemonotone/* ** WelcomePanel.h ** ** Copyright (c) 2006-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_WelcomePanel #define _GNUMail_H_WelcomePanel #import @interface WelcomePanel : NSPanel { @private NSMatrix *matrix; } - (void) layoutWindow; - (NSMatrix *) matrix; @end #endif // _GNUMail_H_WelcomePanel GNUMail/Framework/GNUMail/AboutPanelController.m0100644000014600001460000000513210424672357022245 0ustar monotonemonotone/* ** AboutPanelController.m ** ** Copyright (c) 2002-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "AboutPanelController.h" #ifndef MACOSX #include "AboutPanel.h" #else #include "Utilities.h" #endif #include "Constants.h" static AboutPanelController *singleInstance = nil; // // // @implementation AboutPanelController - (id) initWithWindowNibName: (NSString *) windowNibName { #ifdef MACOSX self = [super initWithWindowNibName: windowNibName]; #else AboutPanel *aboutPanel; aboutPanel = [[AboutPanel alloc] initWithContentRect: NSMakeRect(100,100,490,470) styleMask: NSTitledWindowMask|NSClosableWindowMask backing: NSBackingStoreBuffered defer: NO]; self = [super initWithWindow: aboutPanel]; [aboutPanel layoutWindow]; [aboutPanel setDelegate: self]; RELEASE(aboutPanel); #endif [[self window] setTitle: _(@"About GNUMail")]; // We finally set our autosave window frame name and restore the one from the user's defaults. [[self window] setFrameAutosaveName: @"AboutPanel"]; [[self window] setFrameUsingName: @"AboutPanel"]; return self; } // // // - (void) dealloc { NSDebugLog(@"AboutPanelController: -dealloc"); singleInstance = nil; [super dealloc]; } // // action methods // // // delegate methods // - (void) windowWillClose: (NSNotification *) theNotification { AUTORELEASE(self); } // // // - (void) windowDidLoad { #ifdef MACOSX [[self window] setBackgroundColor: [NSColor whiteColor]]; [(NSPanel *)[self window] setFloatingPanel: YES]; [versionLabel setStringValue: [NSString stringWithFormat: _(@"GNUMail Version %@ - http://www.collaboration-world.com/gnumail"), GNUMailVersion()]]; #endif } // // class methods // + (id) singleInstance { if ( !singleInstance ) { singleInstance = [[AboutPanelController alloc] initWithWindowNibName: @"AboutPanel"]; } return singleInstance; } @end GNUMail/Framework/GNUMail/AboutPanel.m0100644000014600001460000000766710601435446020211 0ustar monotonemonotone/* ** AboutPanel.m ** ** Copyright (c) 2002-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "AboutPanel.h" #include "Constants.h" #include "LabelWidget.h" #include "Utilities.h" @implementation AboutPanel // // // - (void) layoutWindow { LabelWidget *label; NSButton *icon; [self setBackgroundColor: [NSColor whiteColor]]; icon = [[NSButton alloc] initWithFrame: NSMakeRect(0,65,180,400)]; [icon setImagePosition: NSImageOnly]; [icon setImage: [NSImage imageNamed: @"GNUMail_big"]]; [icon setBordered: NO]; [icon setTarget: [NSApp delegate]]; [icon setAction: @selector(orderFrontSharedMemoryPanel:)]; [[self contentView] addSubview: icon]; RELEASE(icon); // // App's title // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(190,385,295,50) label: @"GNUMail" alignment: NSLeftTextAlignment]; [label setFont: [NSFont boldSystemFontOfSize: 40]]; [[self contentView] addSubview: label]; // // Main author // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(200,355,430,20) label: _(@"Main author:") alignment: NSLeftTextAlignment]; [label setFont: [NSFont boldSystemFontOfSize: 14]]; [[self contentView] addSubview: label]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(210,335,430,20) label: @"Ludovic Marcotte " alignment: NSLeftTextAlignment]; [[self contentView] addSubview: label]; // // Contributors // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(200,305,430,20) label: _(@"Contributors:") alignment: NSLeftTextAlignment]; [label setFont: [NSFont boldSystemFontOfSize: 14]]; [[self contentView] addSubview: label]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(210,205,430,110) label: @"Ken Ferry, Francis Lachapelle\nBjorn Giesler, Jonathan B. Leffert\nVincent Ricard, Pierre-Yves Rivaille\nNicolas Roard, Jesse Ross\nUjwal S. Setlur" alignment: NSLeftTextAlignment]; [[self contentView] addSubview: label]; // // Special thanks // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(200,185,430,20) label: _(@"Special thanks:") alignment: NSLeftTextAlignment]; [label setFont: [NSFont boldSystemFontOfSize: 14]]; [[self contentView] addSubview: label]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(210,40,430,145) label: @"Matt Ackeret, Luis Garcia Alanis\nMartin Brecher\nErik Dalen\nAndrew Lindesay\nJeff Meininger\nStphane Peron\nJeff Teunissen\nQuique" alignment: NSLeftTextAlignment]; [[self contentView] addSubview: label]; // // Bottom labels // label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,20,460,15) label: [NSString stringWithFormat: _(@"GNUMail Version %@ - http://www.collaboration-world.com/gnumail"), GNUMailVersion()] alignment: NSLeftTextAlignment]; [label setTextColor: [NSColor darkGrayColor]]; [[self contentView] addSubview: label]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(10,5,460,15) label: _(@"(c) 1998-2007 Ludovic Marcotte and contributors.") alignment: NSLeftTextAlignment]; [label setTextColor: [NSColor darkGrayColor]]; [[self contentView] addSubview: label]; } @end GNUMail/Framework/GNUMail/AddressBookController.m0100644000014600001460000004761710443040415022412 0ustar monotonemonotone/* ** AddressBookController.m ** ** Copyright (c) 2003-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "AddressBookController.h" #include "AddressTaker.h" #ifndef MACOSX #include "AddressBookPanel.h" #endif #include "GNUMail.h" #include "Constants.h" #include "Utilities.h" #include #include #include #define AB_SEARCH_ELEMENT(class, property, prefix) \ [class searchElementForProperty: property \ label: nil \ key: nil \ value: prefix \ comparison: kABPrefixMatchCaseInsensitive] static AddressBookController *singleInstance = nil; // // // @implementation NSArray (GNUMailABExtensions) - (BOOL) containsRecord: (ABRecord *) record { int i; i = [self count]; while( i-- ) { if ( [[[self objectAtIndex: i] uniqueId] isEqualToString: [record uniqueId]] ) { return YES; } } return NO; } @end // // // @implementation ABPerson (GNUMailABExtensions) - (NSArray *) formattedValuesForPrefix: (NSString *) thePrefix { NSMutableArray *arr; ABMultiValue *emails; NSString *firstName, *lastName; int i; thePrefix = [thePrefix lowercaseString]; // only check to-lower emails = [self valueForProperty: kABEmailProperty]; if(![emails count]) return [NSArray array]; firstName = [self valueForProperty: kABFirstNameProperty]; lastName = [self valueForProperty: kABLastNameProperty]; arr = [NSMutableArray array]; if (firstName && [[firstName lowercaseString] hasPrefix: thePrefix]) { for (i=0; i<[emails count]; i++) { if (lastName) { [arr addObject: [NSString stringWithFormat: @"%@ %@ <%@>", firstName, lastName, [emails valueAtIndex: i]]]; } else { [arr addObject: [NSString stringWithFormat: @"%@ <%@>", firstName, [emails valueAtIndex: i]]]; } } return [NSArray arrayWithArray: arr]; } if (lastName && [[lastName lowercaseString] hasPrefix: thePrefix]) { for (i=0; i<[emails count]; i++) { if (firstName) { [arr addObject: [NSString stringWithFormat: @"%@, %@ <%@>", lastName, firstName, [emails valueAtIndex: i]]]; } else { [arr addObject: [NSString stringWithFormat: @"%@ <%@>", lastName, [emails valueAtIndex: i]]]; } } return [NSArray arrayWithArray: arr]; } for (i=0; i<[emails count]; i++) { if ([[[emails valueAtIndex: i] lowercaseString] hasPrefix: thePrefix]) { [arr addObject: [emails valueAtIndex: i]]; } } return [NSArray arrayWithArray: arr]; } - (NSString *) formattedValue { NSString *firstName, *lastName; firstName = [self valueForProperty: kABFirstNameProperty]; lastName = [self valueForProperty: kABLastNameProperty]; if ( firstName && lastName ) { return [NSString stringWithFormat: @"%@ %@ <%@>", firstName, lastName, [[self valueForProperty: kABEmailProperty] valueAtIndex: 0]]; } else if ( firstName || lastName ) { return [NSString stringWithFormat: @"%@ <%@>", (firstName == nil ? lastName : firstName), [[self valueForProperty: kABEmailProperty] valueAtIndex: 0]]; } return [[self valueForProperty: kABEmailProperty] valueAtIndex: 0]; } - (NSString *) fullName { NSString *firstName, *lastName; firstName = [self valueForProperty: kABFirstNameProperty]; lastName = [self valueForProperty: kABLastNameProperty]; if ( firstName && lastName ) { return [NSString stringWithFormat: @"%@ %@", firstName, lastName]; } else if ( firstName && !lastName ) { return firstName; } else if ( !firstName && lastName ) { return lastName; } return _(@"< unknown >"); } #ifdef MACOSX - (BOOL) compare: (ABPerson *) thePerson { return [[self fullName] compare: [thePerson fullName]]; } #endif @end // // We use the window ivar to represent the Address Book window, but we // expect only a single instance of the controller app-wide. // @implementation AddressBookController - (id) initWithWindowNibName: (NSString *) windowNibName { #ifdef MACOSX self = [super initWithWindowNibName: windowNibName]; allPersons = [[NSMutableDictionary alloc] init]; allSortedKeys = [[NSMutableArray alloc] init]; #else AddressBookPanel *thePanel; thePanel = [[AddressBookPanel alloc] initWithContentRect: NSMakeRect(200,200,520,325) styleMask: NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask backing: NSBackingStoreBuffered defer: YES]; self = [super initWithWindow: thePanel]; [thePanel layoutPanel]; [thePanel setDelegate: self]; [thePanel setMinSize: [thePanel frame].size]; // We link our outlets singlePropertyView = thePanel->singlePropertyView; RELEASE(thePanel); #endif // We set some initial parameters [[self window] setTitle: _(@"Address Book")]; #ifdef MACOSX [browser setAction: @selector(selectionInBrowserHasChanged:)]; [browser setDoubleAction: @selector(doubleClicked:)]; [tableView setDoubleAction: @selector(doubleClicked:)]; [browser selectRow: 0 inColumn: 0]; #endif // We finally set our autosave window frame name and restore the one from the user's defaults. [[self window] setFrameAutosaveName: @"AddressBookPanel"]; [[self window] setFrameUsingName: @"AddressBookPanel"]; _table = NSCreateMapTable(NSObjectMapKeyCallBacks, NSObjectMapValueCallBacks, 64); return self; } // // // - (void) dealloc { #ifdef MACOSX [tableView setDataSource: nil]; RELEASE(allPersons); RELEASE(allSortedKeys); #endif NSFreeMapTable(_table); [super dealloc]; } // // // - (void) addSenderToAddressBook: (CWMessage *) theMessage { NSString *personal, *email, *first, *last; ABMutableMultiValue *aMutableMultiValue; #ifdef MACOSX NSArray *allObjects, *allKeys; int i, j; #endif NSEnumerator *theEnumerator; ABPerson *aPerson; ABPerson *other; int v; personal = [[theMessage from] personal]; email = [[theMessage from] address]; if (!email && !personal) { NSBeep(); return; } aPerson = [[[ABPerson alloc] init] autorelease]; if (email) { #ifdef MACOSX aMutableMultiValue = AUTORELEASE([[ABMutableMultiValue alloc ] init ]); #else aMutableMultiValue = AUTORELEASE([[aPerson valueForProperty: kABEmailProperty] mutableCopy]); #endif [aMutableMultiValue addValue: email withLabel: kABEmailWorkLabel]; [aPerson setValue: aMutableMultiValue forProperty: kABEmailProperty]; } if (personal) { if ([personal rangeOfString: @","].location == NSNotFound) { NSArray *theComponents; theComponents = [personal componentsSeparatedByString: @" "]; if ([theComponents count] > 1) { first = [[theComponents subarrayWithRange: NSMakeRange(0, [theComponents count]-1)] componentsJoinedByString: @" "]; last = [theComponents objectAtIndex: [theComponents count]-1]; [aPerson setValue: first forProperty: kABFirstNameProperty]; [aPerson setValue: last forProperty: kABLastNameProperty]; } else { [aPerson setValue: personal forProperty: kABLastNameProperty]; } } else { NSArray *theComponents; theComponents = [personal componentsSeparatedByString: @","]; if ([theComponents count] > 1) { last = [theComponents objectAtIndex: 0]; first = [theComponents objectAtIndex: 1]; [aPerson setValue: first forProperty: kABFirstNameProperty]; [aPerson setValue: last forProperty: kABLastNameProperty]; } else { [aPerson setValue: personal forProperty: kABLastNameProperty]; } } } // We verify if the person is already in the address book theEnumerator = [[[ABAddressBook sharedAddressBook] people] objectEnumerator]; while ((other = [theEnumerator nextObject])) { if ([[other fullName] isEqualToString: [aPerson fullName]]) { v = NSRunAlertPanel(_(@"Person exists!"), _(@"There is already a person named '%@'\nin the address book."), _(@"Don't add"), // Default _(@"Add anyway"), // Alternate _(@"Add address to existing"), // Other [aPerson fullName]); switch (v) { // add anyway, i.e. continue case NSAlertAlternateReturn: break; // add email to existing case NSAlertOtherReturn: if (!email) { NSRunAlertPanel(_(@"No address!"), _(@"The sender of this messages has no email address!"), _(@"OK"), nil, nil, nil); return; } aMutableMultiValue = AUTORELEASE([[other valueForProperty: kABEmailProperty] mutableCopy]); [aMutableMultiValue addValue: email withLabel: kABEmailWorkLabel]; [other setValue: aMutableMultiValue forProperty: kABEmailProperty]; [[ABAddressBook sharedAddressBook] save]; return; case 1: default: return; } } } if (![[ABAddressBook sharedAddressBook] addRecord: aPerson]) { NSRunAlertPanel(_(@"The person could not be added " @"to the address book."), _(@"OK"), nil, nil, nil); } [[ABAddressBook sharedAddressBook] save]; #ifdef MACOSX [allPersons setObject: aPerson forKey: email ]; allObjects = [[allPersons allValues] sortedArrayUsingSelector: @selector(compare:)]; for (i = 0; i < [allObjects count]; i++) { allKeys = [allPersons allKeysForObject: [allObjects objectAtIndex: i]]; for (j = 0; j < [allKeys count]; j++) { if (![allSortedKeys containsObject: [allKeys objectAtIndex: j]]) { [allSortedKeys addObject: [allKeys objectAtIndex: j]]; } } } [tableView reloadData]; #endif } // // // - (void) freeCache { NSResetMapTable(_table); } // // Action methods // - (void) doubleClickOnName: (NSString *) theName value: (NSString *) theValue inView: (id) theView { int modifier; modifier = [[[self window] currentEvent] modifierFlags]; if ( (modifier&NSControlKeyMask) && !(modifier&NSShiftKeyMask) ) { return [self ccClicked: nil]; } else if ( !(modifier&NSControlKeyMask) && (modifier&NSShiftKeyMask) ) { return [self bccClicked: nil]; } else { return [self toClicked: nil]; } } // // // - (IBAction) toClicked: (id) sender { [self _updateFieldUsingSelector: @selector(takeToAddress:)]; } // // // - (IBAction) ccClicked: (id) sender { [self _updateFieldUsingSelector: @selector(takeCcAddress:)]; } // // // - (IBAction) bccClicked: (id) sender { [self _updateFieldUsingSelector: @selector(takeBccAddress:)]; } // // // - (IBAction) openClicked: (id) sender { #ifdef MACOSX [[NSWorkspace sharedWorkspace] launchApplication: @"Address Book"]; #else [[NSWorkspace sharedWorkspace] launchApplication: @"AddressManager"]; #endif } // // Other methods // - (NSArray *) addressesWithPrefix: (NSString *) thePrefix { ABSearchElement *firstNameElement, *lastNameElement, *emailElement, *groupNameElement; NSEnumerator *e; ABRecord *r; NSMutableArray *aMutableArray; if ( !thePrefix || [[thePrefix stringByTrimmingWhiteSpaces] length] == 0 ) { return [NSArray array]; } // // Create our search elements; we search on first name, last name, and E-Mail address. // Do search on last name last so that the order of the list is sensible. // firstNameElement = AB_SEARCH_ELEMENT(ABPerson, kABFirstNameProperty, thePrefix); lastNameElement = AB_SEARCH_ELEMENT(ABPerson, kABLastNameProperty, thePrefix); emailElement = AB_SEARCH_ELEMENT(ABPerson, kABEmailProperty, thePrefix); // We also search on groups groupNameElement = AB_SEARCH_ELEMENT(ABGroup, kABGroupNameProperty, thePrefix); aMutableArray = [[NSMutableArray alloc] init]; [aMutableArray addObjectsFromArray: [[ABAddressBook sharedAddressBook] recordsMatchingSearchElement: firstNameElement]]; e = [[[ABAddressBook sharedAddressBook] recordsMatchingSearchElement: lastNameElement] objectEnumerator]; while((r = [e nextObject])) if(![aMutableArray containsRecord: r]) [aMutableArray addObject: r]; e = [[[ABAddressBook sharedAddressBook] recordsMatchingSearchElement: emailElement] objectEnumerator]; while((r = [e nextObject])) if(![aMutableArray containsRecord: r]) [aMutableArray addObject: r]; e = [[[ABAddressBook sharedAddressBook] recordsMatchingSearchElement: groupNameElement] objectEnumerator]; while((r = [e nextObject])) if(![aMutableArray containsRecord: r]) [aMutableArray addObject: r]; return AUTORELEASE(aMutableArray); } // // // - (NSArray *) addressesWithSubstring: (NSString *) theSubstring inGroupWithId: (NSString *) theGroupId { if (!theSubstring || ![theSubstring length]) { return [NSArray array]; } else { NSMutableArray *aMutableArray; NSArray *thePeople; ABPerson *aPerson; ABGroup *aGroup; int i, j, count; aMutableArray = NSMapGet(_table, theSubstring); if (aMutableArray && !theGroupId) return aMutableArray; if (theGroupId) { aGroup = (id)[[ABAddressBook sharedAddressBook] recordForUniqueId: theGroupId]; if (!aGroup || ![aGroup isKindOfClass: [ABGroup class]]) { return [NSArray array]; } thePeople = [aGroup members]; } else { thePeople = [[ABAddressBook sharedAddressBook] people]; } aMutableArray = [[NSMutableArray alloc] init]; count = [thePeople count]; for (i = 0; i < count; i++) { aPerson = [thePeople objectAtIndex: i]; // We first look for the name if ([theSubstring rangeOfString: [aPerson fullName] options: NSCaseInsensitiveSearch].length) { for (j = 0; j < [[aPerson valueForProperty: kABEmailProperty] count]; j++) { [aMutableArray addObject: [[aPerson valueForProperty: kABEmailProperty] valueAtIndex: j]]; } } // We look at the addresses directly else { for (j = 0; j < [[aPerson valueForProperty: kABEmailProperty] count]; j++) { if ([theSubstring rangeOfString: [[aPerson valueForProperty: kABEmailProperty] valueAtIndex: j] options: NSCaseInsensitiveSearch].length) { [aMutableArray addObject: [[aPerson valueForProperty: kABEmailProperty] valueAtIndex: j]]; } } } } if (!theGroupId) NSMapInsert(_table, theSubstring, aMutableArray); return AUTORELEASE(aMutableArray); } } - (NSArray *) addressesWithSubstring: (NSString *) theSubstring { return [self addressesWithSubstring: theSubstring inGroupWithId: nil]; } // // Mac OS X methods (delegates, data source methods, etc.) // #ifdef MACOSX - (void) windowDidLoad { [browser loadColumnZero]; [browser setNeedsDisplay: YES]; } // // // - (IBAction) doubleClicked: (id) sender { if ( sender == browser ) { [tableView selectAll: self]; } else { [self doubleClickOnName: nil value: nil inView: nil]; } } // // // - (IBAction) selectionInBrowserHasChanged: (id) sender { [tableView deselectAll: self]; [self browser: browser selectRow: [browser selectedRowInColumn: 0] inColumn: 0]; } // // // - (int) browser: (NSBrowser *) sender numberOfRowsInColumn: (int) column { // We return the number of groups we have return ([[[ABAddressBook sharedAddressBook] groups] count] + 1); } // // // - (void) browser: (NSBrowser *) sender willDisplayCell: (id) cell atRow: (int) row column: (int) column { // We display the group name if (row == 0) { [cell setStringValue: _(@"All")]; } else { [cell setStringValue: [[[[ABAddressBook sharedAddressBook] groups] objectAtIndex: (row-1)] valueForProperty: kABGroupNameProperty]]; } [cell setLeaf: YES]; } - (BOOL) browser: (NSBrowser *) sender selectRow: (int) row inColumn: (int) column { NSArray *allObjects, *allKeys; ABAddressBook *addressBook; ABPerson *aPerson; int i, j; addressBook = [ABAddressBook sharedAddressBook]; [allPersons removeAllObjects]; [allSortedKeys removeAllObjects]; if ( row == 0 ) { allObjects = [addressBook people]; } else { allObjects = [[[addressBook groups] objectAtIndex: (row-1)] members]; } for (i = 0; i < [allObjects count]; i++) { aPerson = [allObjects objectAtIndex: i]; for (j = 0; j < [[aPerson valueForProperty: kABEmailProperty] count]; j++) { [allPersons setObject: aPerson forKey: [[aPerson valueForProperty: kABEmailProperty] valueAtIndex: j]]; } } allObjects = [[allPersons allValues] sortedArrayUsingSelector: @selector(compare:)]; for (i = 0; i < [allObjects count]; i++) { allKeys = [allPersons allKeysForObject: [allObjects objectAtIndex: i]]; for (j = 0; j < [allKeys count]; j++) { if ( ![allSortedKeys containsObject: [allKeys objectAtIndex: j]] ) { [allSortedKeys addObject: [allKeys objectAtIndex: j]]; } } } [tableView reloadData]; return YES; } - (int) numberOfRowsInTableView: (NSTableView *) theTableView { return [allSortedKeys count]; } - (id) tableView: (NSTableView *) aTableView objectValueForTableColumn: (NSTableColumn *) aTableColumn row: (int) rowIndex { ABPerson *aPerson; aPerson = [allPersons objectForKey: [allSortedKeys objectAtIndex: rowIndex]]; // Email column if ( aTableColumn == [[aTableView tableColumns] lastObject] ) { return [allSortedKeys objectAtIndex: rowIndex]; } // Person name else { return [aPerson fullName]; } // Never reached. return nil; } - (BOOL) tableView: (NSTableView *) theTableView shouldEditTableColumn: (NSTableColumn *) theTableColumn row: (int) theRow { // We prevent any kind of editing in the table view return NO; } // // End of Mac OS X-only methods. // #endif // // class methods // + (id) singleInstance { if (!singleInstance) { singleInstance = [[AddressBookController alloc] initWithWindowNibName: @"AddressBookPanel"]; } return singleInstance; } @end // // AddressBookController private category // @implementation AddressBookController (Private) - (void) _updateFieldUsingSelector: (SEL) theSelector { #ifdef MACOSX NSEnumerator *theEnumerator; ABPerson *aPerson; id aRow; #endif id theValues; if (![GNUMail lastAddressTakerWindowOnTop]) { [[NSApp delegate] composeMessage: self]; } #ifdef MACOSX theValues = AUTORELEASE([[NSMutableArray alloc] init]); theEnumerator = [tableView selectedRowEnumerator]; while ((aRow = [theEnumerator nextObject])) { aPerson = [allPersons objectForKey: [allSortedKeys objectAtIndex: [aRow intValue]]]; [theValues addObject: [NSArray arrayWithObjects: [aPerson fullName], [allSortedKeys objectAtIndex: [aRow intValue]], nil]]; } #else theValues = [singlePropertyView selectedNamesAndValues]; #endif if ([theValues count] > 0) { int i; for (i = 0; i < [theValues count]; i++) { [(id)[GNUMail lastAddressTakerWindowOnTop] performSelector: theSelector withObject: [theValues objectAtIndex: i]]; } } else { NSBeep(); } } @end GNUMail/Framework/GNUMail/AddressBookPanel.m0100644000014600001460000001066010424672357021331 0ustar monotonemonotone/* ** ** AddressBookPanel.m ** ** Copyright (c) 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "AddressBookPanel.h" #include #include "Constants.h" // // // @implementation AddressBookPanel - (void) dealloc { RELEASE(singlePropertyView); [super dealloc]; } // // // - (void) layoutPanel { NSButton *open, *to, *cc, *bcc; NSPopUpButton *prefLabelPopup; NSTextField *prefLabelField; NSEnumerator *e; ADPerson *person; float x, w; open = [[NSButton alloc] initWithFrame: NSMakeRect(10,280,40,40)]; [open setStringValue: @""]; [open setImagePosition: NSImageOnly]; [open setImage: [NSImage imageNamed: @"AddressManager_32.tiff"]]; [open setTarget: [self windowController]]; [open setAction: @selector(openClicked:)]; [[self contentView] addSubview: open]; RELEASE(open); prefLabelField = [[NSTextField alloc] initWithFrame: NSMakeRect(60,285,310,30)]; [prefLabelField setStringValue: _(@"Preferred Address Type:")]; [prefLabelField setEditable: NO]; [prefLabelField setSelectable: NO]; [prefLabelField setDrawsBackground: NO]; [prefLabelField setBezeled: NO]; [prefLabelField setBordered: NO]; [prefLabelField sizeToFit]; w = [prefLabelField frame].size.width; [prefLabelField setFrameSize: NSMakeSize(w, 30)]; [[self contentView] addSubview: prefLabelField]; RELEASE(prefLabelField); x = [prefLabelField frame].origin.x + [prefLabelField frame].size.width + 5; prefLabelPopup = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(x,285,370-x,30)]; [prefLabelPopup setTarget: self]; [prefLabelPopup setAction: @selector(prefLabelChanged:)]; [[self contentView] addSubview: prefLabelPopup]; [prefLabelPopup addItemWithTitle: _(@"Any")]; e = [[[ADAddressBook sharedAddressBook] people] objectEnumerator]; while((person = [e nextObject])) { ADMultiValue *emails; int i; emails = [person valueForProperty: ADEmailProperty]; for(i=0; i<[emails count]; i++) { NSString *label = [emails labelAtIndex: i]; if([prefLabelPopup indexOfItemWithRepresentedObject: label] == -1) { [prefLabelPopup addItemWithTitle: ADLocalizedPropertyOrLabel(label)]; [[prefLabelPopup lastItem] setRepresentedObject: label]; } } } RELEASE(prefLabelPopup); to = [[NSButton alloc] initWithFrame: NSMakeRect(380,280,40,40)]; [to setStringValue: @""]; [to setImagePosition: NSImageOnly]; [to setImage: [NSImage imageNamed: @"Address_to.tiff"]]; [to setTarget: [self windowController]]; [to setAction: @selector(toClicked:)]; [[self contentView] addSubview: to]; RELEASE(to); cc = [[NSButton alloc] initWithFrame: NSMakeRect(425,280,40,40)]; [cc setStringValue: @""]; [cc setImagePosition: NSImageOnly]; [cc setImage: [NSImage imageNamed: @"Address_cc.tiff"]]; [cc setTarget: [self windowController]]; [cc setAction: @selector(ccClicked:)]; [[self contentView] addSubview: cc]; RELEASE(cc); bcc = [[NSButton alloc] initWithFrame: NSMakeRect(470,280,40,40)]; [bcc setStringValue: @""]; [bcc setImagePosition: NSImageOnly]; [bcc setImage: [NSImage imageNamed: @"Address_bcc.tiff"]]; [bcc setTarget: [self windowController]]; [bcc setAction: @selector(bccClicked:)]; [[self contentView] addSubview: bcc]; RELEASE(bcc); //[ADPerson setScreenNameFormat: ADScreenNameFirstNameFirst]; singlePropertyView = [[ADSinglePropertyView alloc] initWithFrame: NSMakeRect(10,5,500,265)]; [singlePropertyView setDelegate: [self windowController]]; [singlePropertyView setAutoselectMode: ADAutoselectFirstValue]; [[self contentView] addSubview: singlePropertyView]; } - (void) prefLabelChanged: (id) sender { [singlePropertyView setPreferredLabel: [[sender selectedItem] representedObject]]; } @end GNUMail/Framework/GNUMail/ApplicationIconController.m0100644000014600001460000002337310601706267023271 0ustar monotonemonotone/* ** ApplicationIconController.m ** ** Copyright (c) 2004-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ApplicationIconController.h" #include #include #include #include #include #include "Constants.h" #include "MailboxManagerCache.h" #include "MailboxManagerController.h" static ApplicationIconController *singleInstance; static NSMapTable *_cache; #ifndef GNUSTEP static int previous_unread_count = -1; #endif @interface UglyHack : NSObject -(NSSize)iconSize; -(NSImage *)iconTileImage; @end // // // void draw_value(int value) { NSMutableDictionary *attrs; NSString *aString; NSPoint text_location; NSRect disc_rect; NSSize disc_size; int image_width, pad; attrs = [[NSMutableDictionary alloc] init]; #ifdef MACOSX [attrs setObject: [NSFont fontWithName: @"Helvetica" size: 32] forKey: NSFontAttributeName]; #else [attrs setObject: [NSFont boldSystemFontOfSize: 0] forKey: NSFontAttributeName]; #endif [attrs setObject: [NSColor blackColor] forKey: NSForegroundColorAttributeName]; aString = [NSString stringWithFormat: @"%d", value]; disc_size = [aString sizeWithAttributes: attrs]; #ifdef MACOSX image_width = 128; pad = 20; #else image_width = 64; pad = 8; #endif disc_size.height += pad; disc_size.width += pad; disc_size.width = (disc_size.width < disc_size.height ? disc_size.height : disc_size.width); disc_size.height = (disc_size.height < disc_size.width ? disc_size.width : disc_size.height); disc_rect = NSMakeRect(image_width-disc_size.width-5, image_width-disc_size.height-5, disc_size.width, disc_size.height); text_location = NSMakePoint(image_width-(disc_size.width - ((disc_size.width - [aString sizeWithAttributes: attrs].width) * 0.5))-5, image_width-(disc_size.height - ((disc_size.height - [aString sizeWithAttributes: attrs].height) * 0.5))-4); [[NSColor colorWithDeviceRed: 1.0 green: 0.90 blue: 0.24 alpha: 1.0] set]; [[NSBezierPath bezierPathWithOvalInRect: disc_rect] fill]; [aString drawAtPoint: text_location withAttributes: attrs]; RELEASE(attrs); } // // Set of all INBOX mailboxes (INBOXFOLDERNAME:s) // NSArray* inbox_folder_names() { NSDictionary *allAccounts, *theAccount; NSEnumerator *theEnumerator; NSMutableArray *names; names = [NSMutableArray arrayWithCapacity: 10]; allAccounts = [[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"]; theEnumerator = [allAccounts keyEnumerator]; while ((theAccount = [theEnumerator nextObject])) { [names addObject: [[[allAccounts objectForKey: theAccount] objectForKey: @"MAILBOXES"] objectForKey: @"INBOXFOLDERNAME"]]; } return names; } // // // NSString* stringValueOfURLNameFromFolderName(NSString *folderName, id aStore) { NSString *aString; if ([aStore isKindOfClass: [CWIMAPStore class]]) { aString = [NSString stringWithFormat: @"imap://%@@%@/%@", [((CWIMAPStore *)aStore) username], [((CWIMAPStore *)aStore) name], folderName]; } else { aString = [NSString stringWithFormat: @"local://%@/%@", [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"], folderName]; } return aString; } // // // int number_of_unread_messages() { NSArray *allFolders, *allKeys; MailboxManagerCache *cache; NSString *aFolderName; id aStore; NSArray *inboxNames; BOOL inboxOnly; unsigned int c, i, j, v, result; cache = [[MailboxManagerController singleInstance] cache]; allKeys = NSAllMapTableKeys(_cache); result = 0; inboxOnly = [[NSUserDefaults standardUserDefaults] boolForKey: @"ShowUnreadForInboxOnly"]; inboxNames = nil; if (inboxOnly) { inboxNames = inbox_folder_names(); } for (i = 0; i < [allKeys count]; i++) { aStore = [allKeys objectAtIndex: i]; allFolders = NSMapGet(_cache, aStore); c = [allFolders count]; for (j = 0; j < c; j++) { aFolderName = [allFolders objectAtIndex: j]; if (inboxOnly && ![inboxNames containsObject: stringValueOfURLNameFromFolderName(aFolderName, aStore)]) continue; [cache allValuesForStoreName: ([aStore isKindOfClass: [CWIMAPStore class]] ? (id)[(CWIMAPStore *)aStore name] : (id)@"GNUMAIL_LOCAL_STORE") folderName: [aFolderName stringByReplacingOccurrencesOfCharacter: [(id)aStore folderSeparator] withCharacter: '/'] username: ([aStore isKindOfClass: [CWIMAPStore class]] ? [(CWIMAPStore *)aStore username] : NSUserName()) nbOfMessages: NULL nbOfUnreadMessages: &v]; result += v; } } return result; } // // // #ifndef MACOSX @interface ApplicationIconView : NSView { @private NSImage *_icon; NSImage *_tile; NSPoint _borderPoint; } @end @implementation ApplicationIconView - (id) init { id currentServer = nil; NSSize serverIconSize; self = [super init]; currentServer = [[[NSThread currentThread] threadDictionary] objectForKey:@"NSCurrentServerThreadKey"]; _icon = [NSImage imageNamed: @"GNUMail_128"]; [_icon setScalesWhenResized: YES]; if (currentServer && [currentServer respondsToSelector: @selector(iconSize)]) { serverIconSize = [currentServer iconSize]; [_icon setSize: NSMakeSize(serverIconSize.width - (serverIconSize.width / 4), serverIconSize.height - (serverIconSize.height / 4))]; _borderPoint = NSMakePoint(serverIconSize.width/8,serverIconSize.height/8); } else { serverIconSize = NSMakeSize(64,64); [_icon setSize: NSMakeSize(56,56)]; _borderPoint = NSMakePoint(0, 4); } RETAIN(_icon); _tile = nil; if (currentServer && [currentServer respondsToSelector:@selector(iconTileImage)]) { _tile = [[currentServer iconTileImage] copy]; [_tile setScalesWhenResized:YES]; [_tile setSize:serverIconSize]; } else { _tile = [NSImage imageNamed: @"common_Tile"]; RETAIN(_tile); } [self setFrame: NSMakeRect(0,0,serverIconSize.width,serverIconSize.height)]; return self; } - (void) dealloc { RELEASE(_icon); TEST_RELEASE(_tile); [super dealloc]; } - (BOOL) acceptsFirstMouse: (NSEvent *) theEvent { return YES; } - (void) drawRect: (NSRect) theRect { int v; [_tile compositeToPoint: NSMakePoint(0,0) operation: NSCompositeSourceAtop]; [_icon compositeToPoint: _borderPoint operation: NSCompositeSourceOver]; v = number_of_unread_messages(); if (v > 0) { draw_value(v); } } - (void) mouseDown: (NSEvent *) theEvent { [[self superview] mouseDown: theEvent]; } @end #endif // // // @implementation ApplicationIconController - (id) init { self = [super init]; _cache = NSCreateMapTable(NSObjectMapKeyCallBacks, NSObjectMapValueCallBacks, 16); #ifndef MACOSX [[[NSApp iconWindow] contentView] addSubview: AUTORELEASE([[ApplicationIconView alloc] init])]; #endif [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(folderListCompleted:) name: PantomimeFolderListCompleted object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(connectionTerminated:) name: PantomimeConnectionTerminated object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(folderListCompleted:) name: PantomimeFolderListSubscribedCompleted object: nil]; return self; } // // // - (void) dealloc { [[NSNotificationCenter defaultCenter] removeObserver: self]; NSFreeMapTable(_cache); [super dealloc]; } // // // - (void) update { #ifndef MACOSX [[[NSApp iconWindow] contentView] setNeedsDisplay: YES]; #else NSImage *image; int v; image = AUTORELEASE([[NSImage alloc] initWithContentsOfFile: [[NSBundle mainBundle] pathForImageResource: @"GNUMail_128"]]); [image lockFocus]; v = number_of_unread_messages(); if (previous_unread_count != -1 && previous_unread_count < v) { [NSApp requestUserAttention: NSInformationalRequest]; } previous_unread_count = v; if (v > 0) { draw_value(v); } [image unlockFocus]; [NSApp setApplicationIconImage: image]; #endif } // // // + (id) singleInstance { if (!singleInstance) { singleInstance = [[ApplicationIconController alloc] init]; } return singleInstance; } // // // - (void) connectionTerminated: (NSNotification *) theNotification { NSMapRemove(_cache, [theNotification object]); [self update]; } // // // - (void) folderListCompleted: (NSNotification *) theNotification { // // We skip those notifications for the STATUS'ing task AND // we verify if it's our LocalStore (since it's not added to the allStores ivar in MailboxManagerController) // if ([[[[MailboxManagerController singleInstance] allStores] allValues] containsObject: [theNotification object]] || [[theNotification object] isKindOfClass: [CWLocalStore class]]) { NSMapInsert(_cache, [theNotification object], [[[theNotification userInfo] objectForKey: @"NSEnumerator"] allObjects]); [self update]; } } @end GNUMail/Framework/GNUMail/AutoCompletingTextField.m0100644000014600001460000003732210424672357022720 0ustar monotonemonotone/* ** AutoCompletingTextField.m ** ** Copyright (c) 2003 ** ** Author: Ken Ferry ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "AutoCompletingTextField.h" #include "Constants.h" static NSWindow *_sharedDropDown = nil; static NSScrollView *_sharedDropDownScrollView = nil; static NSTableView *_sharedDropDownTableView = nil; @interface AutoCompletingTextField (Private) - (void)_setupAutoCompletingTextField; - (NSRange)_defaultCurrentComponentRange; - (NSRange)_commaDelimitedCurrentComponentRange; @end @implementation AutoCompletingTextField + (void)initialize { NSTableColumn *aTableColumn; aTableColumn = AUTORELEASE([[NSTableColumn alloc] init]); [aTableColumn setResizable: YES]; [aTableColumn setDataCell: AUTORELEASE([[NSTextFieldCell alloc] init])]; _sharedDropDownTableView = AUTORELEASE([[NSTableView alloc] init]); [_sharedDropDownTableView addTableColumn: aTableColumn]; [_sharedDropDownTableView setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; [_sharedDropDownTableView setHeaderView: nil]; [_sharedDropDownTableView setCornerView: nil]; [_sharedDropDownTableView setDrawsGrid: NO]; [_sharedDropDownTableView sizeLastColumnToFit]; _sharedDropDownScrollView = AUTORELEASE([[NSScrollView alloc] init]); [_sharedDropDownScrollView setDocumentView: _sharedDropDownTableView]; [_sharedDropDownScrollView setHasVerticalScroller: YES]; [_sharedDropDownScrollView setBorderType: NSBezelBorder]; [_sharedDropDownScrollView setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; _sharedDropDown = [[NSWindow alloc] initWithContentRect: NSMakeRect(1000000,1000000,0,0) styleMask: NSBorderlessWindowMask backing: NSBackingStoreBuffered defer: YES]; [_sharedDropDown setContentView: _sharedDropDownScrollView]; [_sharedDropDown setHasShadow: YES]; [_sharedDropDown setAlphaValue: .88]; [_sharedDropDown useOptimizedDrawing: YES]; } - (id)initWithFrame:(NSRect)frameRect { if ((self = [super initWithFrame:frameRect])) { [self _setupAutoCompletingTextField]; } return self; } - (id)initWithCoder:(NSCoder *)decoder { if ((self = [super initWithCoder:decoder])) { [self _setupAutoCompletingTextField]; } return self; } - (void)_setupAutoCompletingTextField { [self setCompletionDelay: .2]; [self setMaximumDropDownRows: 10]; _justDeleted = NO; _shouldShowDropDown = YES; } - (void)dealloc { [_cachedCompletions release]; [self setDataSource:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self]; // at least NSWindowWillMoveNotification [super dealloc]; } - (void)textDidBeginEditing:(NSNotification *)aNotification { [super textDidBeginEditing:aNotification]; [_sharedDropDownTableView setDelegate:self]; [_sharedDropDownTableView setDataSource:self]; [self setDropDownIsDown:NO]; } - (void)textDidEndEditing:(NSNotification *)aNotification { [super textDidEndEditing:aNotification]; [_sharedDropDownTableView setDelegate:nil]; [_sharedDropDownTableView setDataSource:nil]; [_sharedDropDownTableView reloadData]; [self setDropDownIsDown:NO]; } - (void)textDidChange:(NSNotification *)aNotification { [super textDidChange:aNotification]; if (_justDeleted) { _justDeleted = NO; _shouldShowDropDown = NO; } else { _shouldShowDropDown = YES; } [NSObject cancelPreviousPerformRequestsWithTarget:self selector :@selector(complete:) object :nil]; [self performSelector:@selector(complete:) withObject :nil afterDelay :_completionDelay]; } - (void)complete:(id)sender { id fieldEditor; NSRange selectedRange; BOOL shouldShowDropDown, shouldComplete; int numTableRows; fieldEditor = [[self window] fieldEditor:YES forObject:self]; _componentRange = [self currentComponentRange]; selectedRange = [fieldEditor selectedRange]; shouldShowDropDown = (_shouldShowDropDown && NSMaxRange(selectedRange) == NSMaxRange(_componentRange) && NSEqualRanges(NSUnionRange(_componentRange, selectedRange), _componentRange)); shouldComplete = (shouldShowDropDown && selectedRange.length == 0); _shouldShowDropDown = YES; if (shouldComplete) { NSString *prefix, *newComponent; AUTORELEASE(_cachedCompletions); _prefixRange = _componentRange; prefix = [[self stringValue] substringWithRange:_prefixRange]; newComponent = [_dataSource completionForPrefix:prefix]; if (newComponent) { id insertedText; _componentRange.length = [newComponent length]; selectedRange.length = _componentRange.length - _prefixRange.length; insertedText = [newComponent substringWithRange:NSMakeRange(_prefixRange.length, selectedRange.length)]; [fieldEditor insertText:insertedText]; [fieldEditor setSelectedRange:selectedRange]; _cachedCompletions = [[_dataSource allCompletionsForPrefix:prefix] retain]; } else { _cachedCompletions = nil; } } numTableRows = [_cachedCompletions count]; shouldShowDropDown = shouldShowDropDown && (numTableRows > 1); if (shouldShowDropDown && shouldComplete) { NSString *component; int selectedRow; component = [[self stringValue] substringWithRange:_componentRange]; selectedRow = [_cachedCompletions indexOfObject:component]; [_sharedDropDownTableView reloadData]; if (selectedRow == -1 || selectedRow >= [_sharedDropDownTableView numberOfRows]) { [_sharedDropDownTableView deselectAll: nil]; } else { [_sharedDropDownTableView selectRow: selectedRow byExtendingSelection: NO]; } } [self setDropDownIsDown: shouldShowDropDown]; } - (BOOL)dropDownIsDown { return _dropDownIsDown; } - (void)setDropDownIsDown:(BOOL)flag { if (flag) { int numTableRows, numVisibleTableRows, selectedRow; float visibleTableHeight; NSSize dropDownSize; NSPoint dropDownTopLeft; numTableRows = [_cachedCompletions count]; selectedRow = [_sharedDropDownTableView selectedRow]; numVisibleTableRows = numTableRows < _maximumDropDownRows ? numTableRows : _maximumDropDownRows; // this is not quite what you'd expect it to be, but seems to be correct on Mac OS X visibleTableHeight = numVisibleTableRows * ([_sharedDropDownTableView rowHeight] + [_sharedDropDownTableView intercellSpacing].height); #ifndef MACOSX // We set the table column min/max width. [[[_sharedDropDownTableView tableColumns] objectAtIndex: 0] setMinWidth: [self frame].size.width]; [[[_sharedDropDownTableView tableColumns] objectAtIndex: 0] setMaxWidth: [self frame].size.width]; #endif dropDownSize = [NSScrollView frameSizeForContentSize:NSMakeSize(0, visibleTableHeight) hasHorizontalScroller:NO hasVerticalScroller:NO borderType:NSBezelBorder]; dropDownSize.width = [self frame].size.width; dropDownTopLeft = [self convertPoint:NSMakePoint(0,[self frame].size.height) toView:nil]; dropDownTopLeft = [[self window] convertBaseToScreen:dropDownTopLeft]; [[[_sharedDropDownTableView tableColumns] objectAtIndex: 0] setWidth: dropDownSize.width]; [_sharedDropDown setFrame:NSMakeRect(dropDownTopLeft.x, #ifdef MACOSX dropDownTopLeft.y - dropDownSize.height, #else dropDownTopLeft.y - dropDownSize.height - [self frame].size.height, #endif dropDownSize.width, dropDownSize.height) display: YES]; [_sharedDropDownScrollView setHasVerticalScroller:(numVisibleTableRows != numTableRows)]; if (selectedRow != -1) { [_sharedDropDownTableView scrollRowToVisible:selectedRow]; } [_sharedDropDown orderWindow:NSWindowAbove relativeTo:[[self window] windowNumber]]; } else // get rid of the drop down { [_sharedDropDown orderOut:nil]; } _dropDownIsDown = flag; } - (NSRange)currentComponentRange { if (_commaDelimited) { return [self _commaDelimitedCurrentComponentRange]; } else { return [self _defaultCurrentComponentRange]; } } - (NSRange)_defaultCurrentComponentRange { return NSMakeRange(0,[[self stringValue] length]); } - (NSRange)_commaDelimitedCurrentComponentRange { NSRange currentComponentRange; int componentEndInd, componentStartInd, insertionPoint; NSString *insertionPtOnward, *toInsertionPt; NSCharacterSet *commaCharSet = [NSCharacterSet characterSetWithCharactersInString:@","]; NSCharacterSet *nonWhiteCharSet = [[NSCharacterSet whitespaceCharacterSet] invertedSet]; insertionPoint = [[[self window] fieldEditor:YES forObject:self] selectedRange].location; // separate into halves of the string broken at insertionPoint insertionPtOnward = [[self stringValue] substringFromIndex:insertionPoint]; toInsertionPt = [[self stringValue] substringToIndex:insertionPoint]; // first we find the end of the component // first approximation: the next comma after the insertion point componentEndInd = [insertionPtOnward rangeOfCharacterFromSet:commaCharSet].location; // if we didn't find a comma then the end of the string is the (approximate) end of the component if (componentEndInd == NSNotFound) componentEndInd = [insertionPtOnward length]; // we cut off any trailing white space to get the real end of the component componentEndInd = [insertionPtOnward rangeOfCharacterFromSet:nonWhiteCharSet options:NSBackwardsSearch range:NSMakeRange(0,componentEndInd)].location; if (componentEndInd == NSNotFound) componentEndInd = 0; else componentEndInd++; // now we have to find the beginning of the component // first approximation: comma before the insertion point componentStartInd = [toInsertionPt rangeOfCharacterFromSet:commaCharSet options:NSBackwardsSearch].location; // if we didn't find a comma, the beginning of the string is the desired index // if we did find a comma, we want the component to start with the next char if (componentStartInd == NSNotFound) componentStartInd = 0; else componentStartInd++; // cut off whitespace in the beginning of the component componentStartInd = [toInsertionPt rangeOfCharacterFromSet:nonWhiteCharSet options:0 range:NSMakeRange(componentStartInd, [toInsertionPt length] - componentStartInd)].location; // if we didn't find anything, the component begins at the insertion point. if (componentStartInd == NSNotFound) componentStartInd = [toInsertionPt length]; // set the current component range currentComponentRange.location = componentStartInd; currentComponentRange.length = [toInsertionPt length] - componentStartInd + componentEndInd; return currentComponentRange; } - (BOOL)textView:(NSTextView *)aTextView doCommandBySelector:(SEL)aSelector { _textViewDoCommandBySelectorResponse = NO; if ([self respondsToSelector:aSelector]) { [self performSelector:aSelector withObject:nil]; } return _textViewDoCommandBySelectorResponse; } - (void)moveDown:(id)sender { int selectedRow; selectedRow = [_sharedDropDownTableView selectedRow] + 1; if (0 <= selectedRow && selectedRow < [_sharedDropDownTableView numberOfRows] ) { [_sharedDropDownTableView selectRow:selectedRow byExtendingSelection:NO]; [_sharedDropDownTableView scrollRowToVisible:selectedRow]; _textViewDoCommandBySelectorResponse = YES; } // LM #ifndef MACOSX [[self window] makeFirstResponder: self]; #endif } - (void)moveUp:(id)sender { int selectedRow; selectedRow = [_sharedDropDownTableView selectedRow] - 1; if (0 <= selectedRow && selectedRow < [_sharedDropDownTableView numberOfRows] ) { [_sharedDropDownTableView selectRow:selectedRow byExtendingSelection:NO]; [_sharedDropDownTableView scrollRowToVisible:selectedRow]; _textViewDoCommandBySelectorResponse = YES; } #ifndef MACOSX [[self window] makeFirstResponder: self]; #endif } - (void)deleteBackward:(id)sender { NSRange selectedRange; selectedRange = [[[self window] fieldEditor:YES forObject:self] selectedRange]; if (selectedRange.location != 0 || selectedRange.length != 0) { _justDeleted = YES; } } // // // - (void) tableViewSelectionDidChange: (NSNotification *) theNotification { NSMutableString *newString; NSString *newComponent; NSRange selectedRange; int selectedRow; selectedRow = [_sharedDropDownTableView selectedRow]; if (selectedRow < 0 || selectedRow >= [_cachedCompletions count]) { return; } newComponent = [_cachedCompletions objectAtIndex: selectedRow]; newString = [NSMutableString stringWithString: [self stringValue]]; [newString replaceCharactersInRange: _componentRange withString:newComponent]; _componentRange.length = [newComponent length]; selectedRange = NSMakeRange(_componentRange.location + _prefixRange.length, _componentRange.length - _prefixRange.length); [self setStringValue: newString]; [[[self window] fieldEditor:YES forObject:self] setSelectedRange:selectedRange]; } - (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex { if (rowIndex >= 0 && rowIndex < [_cachedCompletions count]) { return [_cachedCompletions objectAtIndex: rowIndex]; } return nil; } - (BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex { return NO; } - (int)numberOfRowsInTableView:(NSTableView *)aTableView { return [_cachedCompletions count]; } - (void) viewWillMoveToWindow: (NSWindow *) newWindow { [super viewWillMoveToWindow: newWindow]; [[NSNotificationCenter defaultCenter] removeObserver: self name: NSWindowWillMoveNotification object: [self window]]; [[NSNotificationCenter defaultCenter] removeObserver: self name: NSWindowWillCloseNotification object: [self window]]; // FIXME - This doesn't work under GNUstep - the notification is never posted. [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(windowWillMove:) name: NSWindowWillMoveNotification object: newWindow]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(windowWillClose:) name: NSWindowWillCloseNotification object: newWindow]; } - (void) windowWillClose: (NSNotification *) theNotification { // We do the same thing as in -windowWillMove [self windowWillMove: theNotification]; } - (void)windowWillMove: (NSNotification *) theNotification { [NSObject cancelPreviousPerformRequestsWithTarget: self selector: @selector(complete:) object: nil]; [self setDropDownIsDown: NO]; } - (id)dataSource { return _dataSource; } - (void)setDataSource:(id)dataSource { _dataSource = dataSource; } - (BOOL)commaDelimited { return _commaDelimited; } - (void)setCommaDelimited:(BOOL)commaDelimited { _commaDelimited = commaDelimited; } - (float)completionDelay { return _completionDelay; } - (void)setCompletionDelay:(float)completionDelay { _completionDelay = completionDelay; } - (int)maximumDropDownRows { return _maximumDropDownRows; } - (void)setMaximumDropDownRows:(int)maxRows { _maximumDropDownRows = maxRows; } @end GNUMail/Framework/GNUMail/ConsoleWindowController.m0100644000014600001460000005307410601435447023007 0ustar monotonemonotone/* ** ConsoleWindowController.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ConsoleWindowController.h" #include "Constants.h" #include "GNUMail.h" #include "MailWindowController.h" #include "MailboxManagerController.h" #include "Task.h" #include "TaskManager.h" #ifndef MACOSX #include "ConsoleWindow.h" #endif #include #include #include #include #include #include // // NOTE: For a good descriptions on what are the available "tasks" and how // each one of them is used, please read the documentation on top // of the TaskManager.m file. // static ConsoleWindowController *singleInstance = nil; #ifdef MACOSX static NSMutableArray *progressIndicators = nil; #endif static NSProgressIndicator *progress = nil; static NSImage *restart = nil; static NSImage *stop = nil; // // // @interface ProgressIndicatorCell : NSCell { Task *_task; } - (void) setTask: (Task *) theTask; @end @implementation ProgressIndicatorCell - (id) copyWithZone: (NSZone *) theZone { return [super copyWithZone:theZone]; } - (void) drawWithFrame: (NSRect) cellFrame inView: (NSView *) controlView { NSString *aString; float f, w; #ifdef MACOSX int i; #endif [super drawWithFrame: cellFrame inView: controlView]; if (_task == nil) { return; } if (_task->op == RECEIVE_IMAP) { f = (float)_task->received_count/(float)_task->total_count; } else { f = _task->current_size/_task->total_size; } cellFrame.size.width = cellFrame.size.width-40; cellFrame.origin.x += 1.5; w = cellFrame.size.width; // // We draw the text above our progress indicator. // switch (_task->op) { case RECEIVE_IMAP: aString = [NSString stringWithFormat: _(@"Receiving IMAP - %@"), [_task key]]; break; case RECEIVE_POP3: aString = [NSString stringWithFormat: _(@"Receiving POP3 - %@"), [_task key]]; break; case RECEIVE_UNIX: aString = [NSString stringWithFormat: _(@"Receiving UNIX - %@"), [_task key]]; break; case SEND_SENDMAIL: aString = [NSString stringWithFormat: _(@"Sending Mailer - %@"), ([_task sendingKey] ? [_task sendingKey] : [_task key])]; break; case SEND_SMTP: aString = [NSString stringWithFormat: _(@"Sending SMTP - %@"), ([_task sendingKey] ? [_task sendingKey] : [_task key])]; break; case SAVE_ASYNC: aString = [NSString stringWithFormat: _(@"Saving message to the mailbox...")]; break; case LOAD_ASYNC: aString = [NSString stringWithFormat: _(@"Loading message from the mailbox...")]; break; case CONNECT_ASYNC: aString = [NSString stringWithFormat: _(@"Connecting to IMAP server %@..."), [_task key]]; break; case SEARCH_ASYNC: aString = [NSString stringWithFormat: _(@"Searching in account %@..."), [_task key]]; break; case OPEN_ASYNC: aString = [NSString stringWithFormat: _(@"Opening mailbox on %@..."), [_task key]]; break; case EXPUNGE_ASYNC: aString = [NSString stringWithFormat: _(@"Compacting mailbox on %@..."), [_task key]]; break; default: aString = nil; } if (aString) { NSMutableAttributedString *s; s = [[NSMutableAttributedString alloc] initWithString: aString]; [s addAttribute: NSFontAttributeName value: [NSFont boldSystemFontOfSize: [NSFont smallSystemFontSize]] range: NSMakeRange(0, [s length])]; [s drawAtPoint: NSMakePoint(cellFrame.origin.x,cellFrame.origin.y+2)]; RELEASE(s); } // // We now draw our progress indicator // cellFrame.size.height = 12; #ifdef MACOSX cellFrame.origin.y += 18; i = [[[TaskManager singleInstance] allTasks] indexOfObject: _task]; if (i >= [progressIndicators count]) { progress = [[NSProgressIndicator alloc] init]; [progress setIndeterminate: NO]; [progress setMinValue: 0]; [progress setMaxValue: 1.0]; [progress setDoubleValue: 0]; [progressIndicators addObject: progress]; RELEASE(progress); } progress = [progressIndicators objectAtIndex: i]; [progress setFrame: cellFrame]; if ([progress superview] != controlView) { [controlView addSubview: progress]; } [progress setDoubleValue: f]; #else cellFrame.origin.y += 15; [progress setBounds: cellFrame]; [progress setDoubleValue: f]; [progress drawRect: cellFrame]; #endif cellFrame.origin.x -= 1.5; // // We draw the text below our progress indicator. // aString = nil; if (_task->is_running) { if (_task->op == RECEIVE_POP3 && _task->total_count) { aString = [NSString stringWithFormat: _(@"Received message %d of %d"), _task->received_count, _task->total_count]; } if (_task->op == RECEIVE_IMAP && _task->total_count) { aString = [NSString stringWithFormat: _(@"Got status for mailbox %d (%-.*@) of %d"), _task->received_count, 20, [_task subtitle], _task->total_count]; } else if (_task->op == SEND_SMTP || _task->op == SAVE_ASYNC || _task->op == LOAD_ASYNC) { aString = [NSString stringWithFormat: _(@"Completed %0.1fKB of %0.1fKB."), (_task->current_size > _task->total_size ? _task->total_size : _task->current_size), _task->total_size]; } } else { aString = [NSString stringWithFormat: _(@"Suspended - Scheduled to run at %@"), [[_task date] descriptionWithCalendarFormat: @"%H:%M:%S" timeZone: nil locale: nil]]; } if (aString) { NSMutableAttributedString *s; s = [[NSMutableAttributedString alloc] initWithString: aString]; [s addAttribute: NSFontAttributeName value: [NSFont systemFontOfSize: [NSFont smallSystemFontSize]] range: NSMakeRange(0, [s length])]; [s drawAtPoint: NSMakePoint(cellFrame.origin.x,cellFrame.origin.y+15)]; RELEASE(s); } // // // if (_task->is_running) { [stop compositeToPoint: NSMakePoint(w+6,cellFrame.origin.y+23) operation: NSCompositeSourceAtop]; } else { [restart compositeToPoint: NSMakePoint(w+6,cellFrame.origin.y+23) operation: NSCompositeSourceAtop]; } } - (void) setTask: (Task *) theTask { _task = theTask; } @end // // // @interface ConsoleWindowController (Private) - (void) _startAnimation; - (void) _startTask; - (void) _stopAnimation; - (void) _stopTask; - (void) _updateAnimatedIcon: (id) sender; @end // // // @interface ConsoleMessage : NSObject { @public NSString *message; NSCalendarDate *date; } - (id) initWithMessage: (NSString *) theMessage; @end // // // @implementation ConsoleWindowController - (id) initWithWindowNibName: (NSString *) windowNibName { #ifdef MACOSX self = [super initWithWindowNibName: windowNibName]; #else ConsoleWindow *aConsoleWindow; aConsoleWindow = [[ConsoleWindow alloc] initWithContentRect: NSMakeRect(100,100,500,280) styleMask: NSTitledWindowMask|NSClosableWindowMask|NSResizableWindowMask backing: NSBackingStoreBuffered defer: NO]; self = [super initWithWindow: aConsoleWindow]; [aConsoleWindow layoutWindow]; [aConsoleWindow setDelegate: self]; // We link our outlets tasksTableView = aConsoleWindow->tasksTableView; messagesTableView = aConsoleWindow->messagesTableView; RELEASE(aConsoleWindow); #endif [[self window] setTitle: _(@"GNUMail Console")]; // We finally set our autosave window frame name and restore the one from the user's defaults. [[self window] setFrameAutosaveName: @"ConsoleWindow"]; [[self window] setFrameUsingName: @"ConsoleWindow"]; // We set the custom cell for the Status column [[tasksTableView tableColumnWithIdentifier: @"Status"] setDataCell: AUTORELEASE([[ProgressIndicatorCell alloc] init])]; [tasksTableView setIntercellSpacing: NSZeroSize]; // We initialize our static ivars restart = RETAIN([NSImage imageNamed: @"restart_32.tiff"]); stop = RETAIN([NSImage imageNamed: @"stop_32.tiff"]); #ifndef MACOSX progress = [[NSProgressIndicator alloc] initWithFrame: NSZeroRect]; [progress setIndeterminate: NO]; [progress setMinValue: 0]; [progress setMaxValue: 1.0]; #else progressIndicators = [[NSMutableArray alloc] init]; #endif // We remove the header / corner view from our tables [tasksTableView setHeaderView: nil]; [tasksTableView setCornerView: nil]; [messagesTableView setHeaderView: nil]; [messagesTableView setCornerView: nil]; animation = nil; return self; } // // // - (void) dealloc { #ifdef MACOSX [tasksTableView setDataSource: nil]; [messagesTableView setDataSource: nil]; #endif RELEASE(allMessages); RELEASE(restart); RELEASE(stop); #ifndef MACOSX RELEASE(progress); #else RELEASE(progressIndicators); #endif [super dealloc]; } // // action methods // - (IBAction) clickedOnTableView: (id) sender { NSPoint aPoint; float x, y; int row; row = [tasksTableView clickedRow]; aPoint = [[[[NSApp currentEvent] window] contentView] convertPoint: [[NSApp currentEvent] locationInWindow] toView: [tasksTableView enclosingScrollView]]; // We the location of our start/stop button on the clickedRow x = [[tasksTableView enclosingScrollView] frame].size.width-36; y = row*46+7; if (NSPointInRect(aPoint, NSMakeRect(x,y,32,32))) { if (((Task *)[[[TaskManager singleInstance] allTasks] objectAtIndex: row])->is_running) { [self _stopTask]; } else { [self _startTask]; } } } // // // - (NSMenu *) dataView: (id) aDataView contextMenuForRow: (int) theRow { Task *aTask; if (theRow >= 0 && [tasksTableView numberOfRows] > 0 && (aTask = [[[TaskManager singleInstance] allTasks] objectAtIndex: theRow]) && aTask->op != LOAD_ASYNC && aTask->op != SAVE_ASYNC) { [[menu itemAtIndex: 0] setEnabled: YES]; // Start / Stop [[menu itemAtIndex: 1] setEnabled: YES]; // Delete [[menu itemAtIndex: 2] setEnabled: YES]; // Save in Drafts if (aTask->is_running) { [[menu itemAtIndex: 0] setTitle: _(@"Stop")]; [[menu itemAtIndex: 0] setAction: @selector(_stopTask)]; } else { [[menu itemAtIndex: 0] setTitle: _(@"Start")]; [[menu itemAtIndex: 0] setAction: @selector(_startTask)]; } } else { [[menu itemAtIndex: 0] setEnabled: NO]; // Start / Stop [[menu itemAtIndex: 1] setEnabled: NO]; // Delete [[menu itemAtIndex: 2] setEnabled: NO]; // Save in Drafts } return menu; } - (IBAction) deleteClicked: (id) sender { int aRow; aRow = [tasksTableView selectedRow]; if (aRow >= 0) { Task *aTask; // No need to call reloadData here since it's called in -removeTask. aTask = [[[TaskManager singleInstance] allTasks] objectAtIndex: aRow]; if (aTask->is_running) { NSRunInformationalAlertPanel(_(@"Delete error!"), _(@"You can't delete a running task. Stop it first."), _(@"OK"), NULL, NULL, NULL); return; } [[TaskManager singleInstance] removeTask: aTask]; } else { NSBeep(); } } // // // - (IBAction) saveClicked: (id) sender { int aRow; aRow = [tasksTableView selectedRow]; if (aRow >= 0) { CWURLName *theURLName; NSData *aData; Task *aTask; aTask = [[[TaskManager singleInstance] allTasks] objectAtIndex: aRow]; if (aTask->is_running) { NSRunInformationalAlertPanel(_(@"Save error!"), _(@"You can't save the message in Drafts if the task is running. Stop it first."), _(@"OK"), NULL, NULL, NULL); return; } // We finally get our CWURLName object. theURLName = [[CWURLName alloc] initWithString: [[[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: [aTask key]] objectForKey: @"MAILBOXES"] objectForKey: @"DRAFTSFOLDERNAME"] path: [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]]; if ([[aTask message] respondsToSelector: @selector(isEqualToData:)]) { aData = [aTask message]; } else { aData = [[aTask message] dataValue]; } [[MailboxManagerController singleInstance] addMessage: aData toFolder: theURLName]; RELEASE(theURLName); } else { NSBeep(); } } // // delegate methods // - (void) windowWillClose: (NSNotification *) theNotification { // Do nothing } // // // - (void) windowDidLoad { NSMenuItem *aMenuItem; allMessages = [[NSMutableArray alloc] init]; // We set up our context menu menu = [[NSMenu alloc] init]; [menu setAutoenablesItems: NO]; aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Stop") action: NULL keyEquivalent: @""]; [aMenuItem setTarget: self]; [menu addItem: aMenuItem]; RELEASE(aMenuItem); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Delete") action: @selector(deleteClicked:) keyEquivalent: @""]; [aMenuItem setTarget: self]; [menu addItem: aMenuItem]; RELEASE(aMenuItem); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Save in Drafts") action: @selector(saveClicked:) keyEquivalent: @""]; [aMenuItem setTarget: self]; [menu addItem: aMenuItem]; RELEASE(aMenuItem); #ifdef MACOSX [tasksTableView setAction: @selector(clickedOnTableView:)]; [tasksTableView reloadData]; [messagesTableView reloadData]; #endif } // // Data Source methods // - (int) numberOfRowsInTableView: (NSTableView *)aTableView { if (aTableView == tasksTableView) { return [[[TaskManager singleInstance] allTasks] count]; } else { return [allMessages count]; } } // // // - (id) tableView: (NSTableView *) aTableView objectValueForTableColumn: (NSTableColumn *) aTableColumn row: (int) rowIndex { if (aTableView == messagesTableView) { ConsoleMessage *aMessage; aMessage = [allMessages objectAtIndex: rowIndex]; if ([[aTableColumn identifier] isEqualToString: @"Message Date"]) { return [aMessage->date descriptionWithCalendarFormat: _(@"%H:%M:%S") timeZone: [aMessage->date timeZone] locale: nil]; } else { return aMessage->message; } } return nil; } // // // - (void) tableView: (NSTableView *)aTableView willDisplayCell: (id)aCell forTableColumn: (NSTableColumn *)aTableColumn row: (int)rowIndex { if (aTableView == tasksTableView && [[aTableColumn identifier] isEqualToString: @"Status"]) { [(ProgressIndicatorCell *)[aTableColumn dataCell] setTask: [[[TaskManager singleInstance] allTasks] objectAtIndex: rowIndex]]; } else if (aTableView == messagesTableView) { if ([[aTableColumn identifier] isEqualToString: @"Date"]) { [aCell setAlignment: NSRightTextAlignment]; } [aCell setFont: [NSFont systemFontOfSize: [NSFont smallSystemFontSize]]]; } } // // // - (NSString *) tableView: (NSTableView *)aTableView toolTipForCell: (NSCell *)aCell rect: (NSRectPointer)rect tableColumn:(NSTableColumn *)aTableColumn row:(int)row mouseLocation:(NSPoint)mouseLocation { if (aTableView == messagesTableView) { ConsoleMessage *aMessage; aMessage = [allMessages objectAtIndex: row]; return [NSString stringWithFormat: _(@"%@ (%@)"), aMessage->message, [aMessage->date descriptionWithCalendarFormat: _(@"%H:%M:%S") timeZone: [aMessage->date timeZone] locale: nil]]; } return nil; } // // access / mutation method // - (NSTableView *) tasksTableView { return tasksTableView; } // // // #ifdef MACOSX - (id) progressIndicators { return progressIndicators; } #endif // // Other methods // - (void) addConsoleMessage: (NSString *) theString { ConsoleMessage *aMessage; aMessage = [[ConsoleMessage alloc] initWithMessage: theString]; [allMessages insertObject: aMessage atIndex: 0]; RELEASE(aMessage); // We never keep more than 25 object in our array if ([allMessages count] > 25) { [allMessages removeLastObject]; } [messagesTableView reloadData]; } // // // - (void) reload { int count; #ifdef MACOSX int i; #endif [tasksTableView reloadData]; count = [[[TaskManager singleInstance] allTasks] count]; #ifdef MACOSX // Remove all unused progress indicators from table view for (i = count; i < [progressIndicators count]; i++) { [[progressIndicators objectAtIndex: i] removeFromSuperview]; } #endif while (count--) { if (((Task *)[[[TaskManager singleInstance] allTasks] objectAtIndex: count])->is_running) { [self _startAnimation]; return; } } [self _stopAnimation]; } // // // - (void) restoreImage { MailWindowController *aController; int count; count = [[GNUMail allMailWindows] count]; while (count--) { aController = (MailWindowController *)[[[GNUMail allMailWindows] objectAtIndex: count] windowController]; // We verify if we are using a secure (SSL) connection or not if ([[aController folder] isKindOfClass: [CWIMAPFolder class]] && [(CWTCPConnection *)[(CWIMAPStore *)[[aController folder] store] connection] isSSL]) { [aController->icon setImage: [NSImage imageNamed: @"pgp-mail-small.tiff"]]; } else { [aController->icon setImage: nil]; } } } // // class methods // + (id) singleInstance { if (singleInstance == nil) { singleInstance = [[ConsoleWindowController alloc] initWithWindowNibName: @"ConsoleWindow"]; } return singleInstance; } @end // // // @implementation ConsoleWindowController (Private) - (void) _startAnimation { // If our animation is already started, we do nothing. if (animation == nil) { #ifdef MACOSX unsigned int count; count = [[GNUMail allMailWindows] count]; while (count--) { [((MailWindowController *)[[[GNUMail allMailWindows] objectAtIndex: count] windowController])->progressIndicator startAnimation: self]; } #endif animation_index = 1; animation = [NSTimer timerWithTimeInterval: 0.1 target: self selector: @selector(_updateAnimatedIcon:) userInfo: nil repeats: YES]; [[NSRunLoop currentRunLoop] addTimer: animation forMode: NSEventTrackingRunLoopMode]; [[NSRunLoop currentRunLoop] addTimer: animation forMode: NSDefaultRunLoopMode]; [[NSRunLoop currentRunLoop] addTimer: animation forMode: NSModalPanelRunLoopMode]; RETAIN(animation); } } - (void) _startTask { int count, row; count = [[[TaskManager singleInstance] allTasks] count]; row = [tasksTableView selectedRow]; if (row >= 0 && row < count) { Task *aTask; aTask = [[[TaskManager singleInstance] allTasks] objectAtIndex: row]; [aTask setDate: [NSDate date]]; aTask->immediate = YES; [[TaskManager singleInstance] nextTask]; [[menu itemAtIndex: 0] setTitle: _(@"Stop")]; [[menu itemAtIndex: 0] setAction: @selector(_stopTask)]; [self reload]; } } - (void) _stopAnimation { if (animation != nil) { MailWindowController *aController; unsigned int count; count = [[GNUMail allMailWindows] count]; while (count--) { aController = (MailWindowController *)[[[GNUMail allMailWindows] objectAtIndex: count] windowController]; #ifdef MACOSX [aController->progressIndicator stopAnimation: self]; #endif [aController updateStatusLabel]; } [animation invalidate]; DESTROY(animation); [self restoreImage]; } } - (void) _stopTask { int count, row; count = [[[TaskManager singleInstance] allTasks] count]; row = [tasksTableView selectedRow]; if (row >= 0 && row < count) { [[TaskManager singleInstance] stopTask: [[[TaskManager singleInstance] allTasks] objectAtIndex: row]]; [[menu itemAtIndex: 0] setTitle: _(@"Start")]; [[menu itemAtIndex: 0] setAction: @selector(_startTask)]; [tasksTableView setNeedsDisplay: YES]; } } // // This method does absolutely nothing under OS X // - (IBAction) _updateAnimatedIcon: (id) sender { NSWindow *aWindow; int count; #ifndef MACOSX if (animation_index == 9) { animation_index = 1; } count = [[GNUMail allMailWindows] count]; while (count--) { aWindow = [[GNUMail allMailWindows] objectAtIndex: count]; #ifdef MACOSX if ([[aWindow toolbar] customizationPaletteIsRunning]) { continue; } #endif [((MailWindowController *)[aWindow windowController])->icon setImage: [NSImage imageNamed: [NSString stringWithFormat: @"anim-logo-%d.tiff", animation_index]]]; } animation_index += 1; #endif } @end // // // @implementation ConsoleMessage - (id) initWithMessage: (NSString *) theMessage { self = [super init]; message = RETAIN(theMessage); date = RETAIN([NSCalendarDate calendarDate]); return self; } - (void) dealloc { RELEASE(message); RELEASE(date); [super dealloc]; } @end GNUMail/Framework/GNUMail/ConsoleWindow.m0100644000014600001460000001272210432177361020736 0ustar monotonemonotone/* ** ConsoleWindow.m ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ConsoleWindow.h" #include "Constants.h" #include "ExtendedTableView.h" @implementation ConsoleWindow // // // - (void) dealloc { NSDebugLog(@"ConsoleWindow: -dealloc"); RELEASE(tasksTableView); RELEASE(tasksScrollView); RELEASE(messagesTableView); RELEASE(messagesScrollView); [super dealloc]; } // // // - (void) layoutWindow { NSTableColumn *statusColumn, *dateColumn, *messageColumn; NSTabViewItem *tabViewItem1, *tabViewItem2; NSTabView *tabView; // // Our tab view // tabView = [[NSTabView alloc] initWithFrame: NSMakeRect(0,0,500,278)]; [tabView setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; // // Our first tabview // statusColumn = [(NSTableColumn *)[NSTableColumn alloc] initWithIdentifier: @"Status"]; [statusColumn setEditable: NO]; [statusColumn setResizable: YES]; [[statusColumn headerCell] setStringValue: _(@"Status")]; [[statusColumn headerCell] setAlignment: NSLeftTextAlignment]; tasksScrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect(0,0,495,275)]; tasksTableView = [[ExtendedTableView alloc] initWithFrame: [[tasksScrollView contentView] frame]]; [tasksTableView setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; [tasksTableView setDrawsGrid: YES]; [tasksTableView setRowHeight: 46]; [tasksTableView setAllowsColumnSelection: NO]; [tasksTableView setAllowsColumnReordering: NO]; [tasksTableView setAllowsColumnResizing: YES]; [tasksTableView setAllowsEmptySelection: YES]; [tasksTableView setAllowsMultipleSelection: NO]; [tasksTableView addTableColumn: statusColumn]; [tasksTableView setAutoresizesAllColumnsToFit: YES]; [tasksTableView sizeLastColumnToFit]; [tasksTableView setAction: @selector(clickedOnTableView:)]; [tasksTableView setDataSource: [self windowController]]; [tasksTableView setDelegate: [self windowController]]; RELEASE(statusColumn); [tasksScrollView setDocumentView: tasksTableView]; [tasksScrollView setHasHorizontalScroller: NO]; [tasksScrollView setHasVerticalScroller: YES]; [tasksScrollView setBorderType: NSBezelBorder]; [tasksScrollView setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; // // Our second item // tabViewItem1 = [(NSTableColumn *)[NSTabViewItem alloc] initWithIdentifier: @"Activities"]; [tabViewItem1 setLabel: _(@"Activities")]; [tabViewItem1 setView: tasksScrollView]; [tabView addTabViewItem: tabViewItem1]; RELEASE(tabViewItem1); // // Our second tabview // messageColumn = [(NSTableColumn *)[NSTableColumn alloc] initWithIdentifier: @"Message"]; [messageColumn setEditable: NO]; [messageColumn setResizable: YES]; [[messageColumn headerCell] setStringValue: _(@"Message")]; [messageColumn setMinWidth: 115]; dateColumn = [(NSTableColumn *)[NSTableColumn alloc] initWithIdentifier: @"Message Date"]; [dateColumn setEditable: NO]; [dateColumn setResizable: YES]; [[dateColumn headerCell] setStringValue: _(@"Date")]; [dateColumn setMinWidth: 60]; [dateColumn setMaxWidth: 60]; messagesScrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect(5,35,470,100)]; messagesTableView = [[NSTableView alloc] initWithFrame: [[messagesScrollView contentView] frame]]; [messagesTableView setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; [messagesTableView setDrawsGrid: NO]; [messagesTableView setAllowsColumnSelection: NO]; [messagesTableView setAllowsColumnReordering: NO]; [messagesTableView setAllowsColumnResizing: YES]; [messagesTableView setAllowsEmptySelection: YES]; [messagesTableView setAllowsMultipleSelection: NO]; [messagesTableView addTableColumn: messageColumn]; [messagesTableView addTableColumn: dateColumn]; [messagesTableView setAutoresizesAllColumnsToFit: YES]; [messagesTableView sizeLastColumnToFit]; [messagesTableView setDataSource: [self windowController]]; [messagesTableView setDelegate: [self windowController]]; RELEASE(messageColumn); RELEASE(dateColumn); [messagesScrollView setDocumentView: messagesTableView]; [messagesScrollView setHasHorizontalScroller: NO]; [messagesScrollView setHasVerticalScroller: YES]; [messagesScrollView setBorderType: NSBezelBorder]; [messagesScrollView setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; tabViewItem2 = [(NSTableColumn *)[NSTabViewItem alloc] initWithIdentifier: @"Messages"]; [tabViewItem2 setLabel: _(@"Messages")]; [tabViewItem2 setView: messagesScrollView]; [tabView addTabViewItem: tabViewItem2]; RELEASE(tabViewItem2); // // We add our tabView // [[self contentView] addSubview: tabView]; RELEASE(tabView); // // We set the window's minimum size // //[self setMinSize: NSMakeSize(400,320)]; } @end GNUMail/Framework/GNUMail/Constants.m0100644000014600001460000000421610575213556020124 0ustar monotonemonotone/* ** Constants.m ** ** Copyright (c) 2003-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #import // // Notifications used in GNUMail // NSString *AccountsHaveChanged = @"AccountsHaveChanged"; NSString *FiltersHaveChanged = @"FiltersHaveChanged"; NSString *FontValuesHaveChanged = @"FontValuesHaveChanged"; NSString *MessageThreadingNotification = @"MessageThreadingNotification"; NSString *ReloadMessageList = @"ReloadMessageList"; NSString *TableColumnsHaveChanged = @"TableColumnsHaveChanged"; // // Operations and attributes for messages // NSString *FolderExpireDate = @"FolderExpireDate"; NSString *MessageData = @"MessageData"; NSString *MessageDestinationChangeEncoding = @"MessageDestinationChangeEncoding"; NSString *MessageDestinationFolder = @"MessageDestinationFolder"; NSString *MessageDestinationPasteboard = @"MessageDestinationPasteboard"; NSString *MessageDestinationStore = @"MessageDestinationStore"; NSString *MessageExpireDate = @"MessageExpireDate"; NSString *MessageFlags = @"MessageFlags"; NSString *MessageLoading = @"MessageLoading"; NSString *MessageNumber = @"MessageNumber"; NSString *MessageOperation = @"MessageOperation"; NSString *MessagePreloading = @"MessagePreloading"; NSString *MessageRedirecting = @"MessageRedirecting"; NSString *MessageViewing = @"MessageViewing"; // // Pasteboard data types // NSString *MessagePboardType = @"MessagePboardType"; GNUMail/Framework/GNUMail/EditWindowController.m0100644000014600001460000021103610613064243022257 0ustar monotonemonotone/* ** EditWindowController.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "EditWindowController.h" #include "AddressBookController.h" #include "AutoCompletingTextField.h" #ifndef MACOSX #include "EditWindow.h" #endif #include "ExtendedMenuItem.h" #include "ExtendedTextAttachmentCell.h" #include "ExtendedTextView.h" #include "GNUMail.h" #include "GNUMailBundle.h" #include "Constants.h" #include "LabelWidget.h" #include "MailboxManagerController.h" #include "MailWindowController.h" #include "MimeTypeManager.h" #include "MimeType.h" #include "NSAttributedString+Extensions.h" #include "NSFont+Extensions.h" #include "NSUserDefaults+Extensions.h" #include "Task.h" #include "TaskManager.h" #include "Utilities.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define AB_MATCH_ELEMENT(class, property, prefix) \ [class searchElementForProperty: property \ label: nil \ key: nil \ value: prefix \ comparison: kABEqualCaseInsensitive] #define SHOW_ALERT_PANEL(s) \ NSRunInformationalAlertPanel(_(@"Error!"), \ _(@"An error occurred while decoding %@. Please fix this address."), \ _(@"OK"), \ NULL, \ NULL, \ s); #ifdef MACOSX #define L_X 8 #define L_HEIGHT 17 #define L_WIDTH 55 #define Y_DELTA 30 #define W_DELTA 91 #define F_X 71 #define F_HEIGHT 22 #define S_X 0 #define S_Y 0 #else #define L_X 5 #define L_HEIGHT 21 #define L_WIDTH 50 #define Y_DELTA 25 #define W_DELTA 75 #define F_X 65 #define F_HEIGHT 21 #define S_X 5 #define S_Y 5 #endif // // private methods // @interface EditWindowController (Private) - (void) _adjustNextKeyViews; - (void) _adjustWidgetsPosition; - (void) _appendAddress: (NSArray *) theAddress toTextField: (NSTextField *) theTextField; - (NSData *) _dataValueOfRedirectedMessage; - (float) _estimatedSizeOfMessage; - (void) _loadAccessoryViews; - (void) _loadAccounts; - (void) _loadCharset; - (NSString *) _loadSignature; - (void) _openPanelDidEnd: (NSOpenPanel *) theOpenPanel returnCode: (int) theReturnCode contextInfo: (void *) theContextInfo; - (void) _replaceSignature; - (NSString *) _plainTextContentFromTextView; - (NSArray *) _recipientsFromString: (NSString *) theString; - (void) _setPlainTextContentFromString: (NSString *) theString inPart: (CWPart *) thePart; #ifdef MACOSX - (void) _sheetDidEnd: (NSWindow *) sheet returnCode: (int) returnCode contextInfo: (void *) contextInfo; - (void) _sheetDidDismiss: (NSWindow *) sheet returnCode: (int) returnCode contextInfo: (void *) contextInfo; #endif - (void) _updateViewWithMessage: (CWMessage *) theMessage appendSignature: (BOOL) aBOOL; - (void) _updateSizeLabel; - (void) _updatePart: (CWPart *) thePart usingTextAttachment: (NSTextAttachment *) theTextAttachment; @end // // // @implementation EditWindowController - (id) initWithWindowNibName: (NSString *) windowNibName { NSDictionary *allAccounts; NSToolbar *aToolbar; #ifndef MACOSX EditWindow *theEditWindow; #endif allAccounts = [Utilities allEnabledAccounts]; // We first verify if we have at least one transport agent defined if (!allAccounts || [allAccounts count] == 0) { NSRunAlertPanel(_(@"Error!"), _(@"You must have at least one transport agent defined and enabled.\nSee Preferences -> Account."), _(@"OK"), // default NULL, // alternate NULL); AUTORELEASE(self); return nil; } // // We create our mutable array and our mutable dictionary allowing // us to dynamically add toolbar items. // allowedToolbarItemIdentifiers = [[NSMutableArray alloc] initWithObjects: NSToolbarSeparatorItemIdentifier, NSToolbarSpaceItemIdentifier, NSToolbarFlexibleSpaceItemIdentifier, NSToolbarCustomizeToolbarItemIdentifier, @"send", @"insert", @"add_cc", @"add_bcc", @"addresses", @"save_in_drafts", nil]; additionalToolbarItems = [[NSMutableDictionary alloc] init]; #ifdef MACOSX self = [super initWithWindowNibName: windowNibName]; #else theEditWindow = [[EditWindow alloc] initWithContentRect: NSMakeRect(50,75,750,520) styleMask: (NSClosableWindowMask|NSTitledWindowMask| NSMiniaturizableWindowMask|NSResizableWindowMask) backing: NSBackingStoreRetained defer: NO]; self = [super initWithWindow: theEditWindow]; [theEditWindow layoutWindow]; [theEditWindow setDelegate: self]; // We link our outlets subjectText = theEditWindow->subjectText; toText = theEditWindow->toText; ccText = theEditWindow->ccText; bccText = theEditWindow->bccText; subjectLabel = theEditWindow->subjectLabel; toLabel = theEditWindow->toLabel; ccLabel = theEditWindow->ccLabel; bccLabel = theEditWindow->bccLabel; sizeLabel = theEditWindow->sizeLabel; scrollView = theEditWindow->scrollView; textView = theEditWindow->textView; accountPopUpButton = theEditWindow->accountPopUpButton; transportMethodPopUpButton = theEditWindow->transportMethodPopUpButton; RELEASE(theEditWindow); #endif // // We set our window title and edited attributes // [[self window] setTitle: @""]; [[self window] setDocumentEdited: NO]; // We initialize our toolbar aToolbar = [[NSToolbar alloc] initWithIdentifier: @"EditWindowToolbar"]; [aToolbar setDelegate: self]; [aToolbar setAllowsUserCustomization: YES]; [aToolbar setAutosavesConfiguration: YES]; [[self window] setToolbar: aToolbar]; RELEASE(aToolbar); #ifdef MACOSX RETAIN(ccLabel); RETAIN(ccText); RETAIN(bccLabel); RETAIN(bccText); #endif // We initialize our variables [self setShowCc: NO]; [self setShowBcc: NO]; [self setUnmodifiedMessage: nil]; [self setSignaturePosition: SIGNATURE_END]; // We set some ivars _mode = GNUMailComposeMessage; previousSignatureValue = nil; // We load our accessory views [self _loadAccessoryViews]; // We load our accounts and our charsets [self _loadAccounts]; [self _loadCharset]; // We finally set our autosave window frame name and restore the one from the user's defaults. [[self window] setFrameAutosaveName: @"EditWindow"]; [[self window] setFrameUsingName: @"EditWindow"]; // We tile our windows if ([GNUMail lastAddressTakerWindowOnTop]) { NSRect aRect; aRect = [[[GNUMail lastAddressTakerWindowOnTop] window] frame]; aRect.origin.x += 15; aRect.origin.y -= 10; [[self window] setFrame: aRect display: NO]; } // Set the data sources and delegates for the address text fields [toText setCommaDelimited: YES]; [toText setDataSource: self]; [toText setDelegate: self]; [ccText setCommaDelimited: YES]; [ccText setDataSource: self]; [ccText setDelegate: self]; [bccText setCommaDelimited: YES]; [bccText setDataSource: self]; [bccText setDelegate: self]; // Enable spellchecking, if needed if ([[NSUserDefaults standardUserDefaults] boolForKey: @"ENABLE_SPELL_CHECKING"]) { [textView setContinuousSpellCheckingEnabled: YES]; } // Allow undo [textView setAllowsUndo: YES]; [textView setImportsGraphics: YES]; // Set updateColors updateColors = YES; // Set the sizes for the scroll bars if ([[NSUserDefaults standardUserDefaults] integerForKey: @"SCROLLER_SIZE" default: NSOffState] == NSOffState) { [[scrollView verticalScroller] setControlSize: NSRegularControlSize]; [[scrollView horizontalScroller] setControlSize: NSRegularControlSize]; } else { [[scrollView verticalScroller] setControlSize: NSSmallControlSize]; [[scrollView horizontalScroller] setControlSize: NSSmallControlSize]; } // We the font to a fixed pitch, if we need to. Otherwise, we set it to the font used to view the parts // in the MailWindow/MessageViewWindow's textview. if ([[NSUserDefaults standardUserDefaults] integerForKey: @"USE_FIXED_FONT_FOR_TEXT_PLAIN_MESSAGES"] == NSOnState) { [textView setFont: [NSFont plainTextMessageFont]]; } else { [textView setFont: [NSFont messageFont]]; } // We add our observer to update our size label if the size of the text view has changed [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector (_updateSizeLabel) name: @"NSViewFrameDidChangeNotification" object: textView]; [[self window] setInitialFirstResponder: toText]; return self; } // // // - (void) dealloc { NSDebugLog(@"EditWindowController: -dealloc"); [[NSNotificationCenter defaultCenter] removeObserver: self]; #ifdef MACOSX RELEASE(ccLabel); RELEASE(ccText); RELEASE(bccLabel); RELEASE(bccText); #endif TEST_RELEASE(message); TEST_RELEASE(unmodifiedMessage); TEST_RELEASE(previousSignatureValue); TEST_RELEASE(charset); RELEASE(send); RELEASE(insert); RELEASE(addCc); RELEASE(addBcc); RELEASE(addresses); RELEASE(saveInDrafts); RELEASE(allowedToolbarItemIdentifiers); RELEASE(additionalToolbarItems); RELEASE(addressCompletionCandidates); [super dealloc]; } // // Implementation of the AddressTaker protocol. // - (void) takeToAddress: (NSArray *) theAddress { [self _appendAddress: theAddress toTextField: toText]; [self controlTextDidChange: [NSNotification notificationWithName: @"" object: toText]]; } // // // - (void) takeCcAddress: (NSArray *) theAddress { if (![self showCc]) { [self showCc: self]; } [self _appendAddress: theAddress toTextField: ccText]; [self controlTextDidChange: [NSNotification notificationWithName: @"" object: ccText]]; } // // // - (void) takeBccAddress: (NSArray *) theAddress { if (![self showBcc]) { [self showBcc: self]; } [self _appendAddress: theAddress toTextField: bccText]; [self controlTextDidChange: [NSNotification notificationWithName: @"" object: bccText]]; } // // action methods // - (IBAction) insertFile: (id) sender { NSOpenPanel *oPanel; oPanel = [NSOpenPanel openPanel]; [oPanel setAllowsMultipleSelection:YES]; #ifdef MACOSX [oPanel beginSheetForDirectory: [GNUMail currentWorkingPath] file:nil types:nil modalForWindow: [self window] modalDelegate: self didEndSelector: @selector(_openPanelDidEnd: returnCode: contextInfo:) contextInfo: nil]; #else [self _openPanelDidEnd: oPanel returnCode: [oPanel runModalForDirectory: [GNUMail currentWorkingPath] file: nil types: nil] contextInfo: nil]; #endif } // // // - (IBAction) showBcc: (id) sender { [self setShowBcc: ![self showBcc]]; [[[self window] contentView] setNeedsDisplay: YES]; } // // // - (IBAction) showCc: (id) sender { [self setShowCc: ![self showCc]]; [[[self window] contentView] setNeedsDisplay: YES]; } // // // - (IBAction) accountSelectionHasChanged: (id) sender { NSDictionary *theAccount; NSString *aString; NSRange aRange; int i; // We synchronize our selection from the popup [accountPopUpButton synchronizeTitleAndSelectedItem]; theAccount = [[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: [(ExtendedMenuItem *)[accountPopUpButton selectedItem] key]]; for (i = 0; i < [transportMethodPopUpButton numberOfItems]; i++) { if ([[[theAccount objectForKey: @"SEND"] objectForKey: @"TRANSPORT_METHOD"] intValue] == TRANSPORT_MAILER) { aString = [[theAccount objectForKey: @"SEND"] objectForKey: @"MAILER_PATH"]; } else { aString = [[theAccount objectForKey: @"SEND"] objectForKey: @"SMTP_HOST"]; } aRange = [[transportMethodPopUpButton itemTitleAtIndex: i] rangeOfString: aString]; if (aRange.length) { [transportMethodPopUpButton selectItemAtIndex: i]; [transportMethodPopUpButton synchronizeTitleAndSelectedItem]; [self _replaceSignature]; return; } } [transportMethodPopUpButton selectItemAtIndex: 0]; [transportMethodPopUpButton synchronizeTitleAndSelectedItem]; [self _replaceSignature]; } // // // - (IBAction) sendMessage: (id) sender { NSString *aKey, *aSendingKey; NSDictionary *allValues; Task *aTask; id aMessage; int op; // We first try to initialize our message with all the information if (_mode != GNUMailRedirectMessage && ![self updateMessageContentFromTextView]) { return; } // We sync our popup [transportMethodPopUpButton synchronizeTitleAndSelectedItem]; [accountPopUpButton synchronizeTitleAndSelectedItem]; aKey = [(ExtendedMenuItem *)[accountPopUpButton selectedItem] key]; aSendingKey = [(ExtendedMenuItem *)[transportMethodPopUpButton selectedItem] key]; // We check if a 'Sent' mailbox has been specified for this particular account. // If not, we warn the user about this. if (![[[[Utilities allEnabledAccounts] objectForKey: aKey] objectForKey: @"MAILBOXES"] objectForKey: @"SENTFOLDERNAME"]) { int choice; choice = NSRunAlertPanel(_(@"Warning!"), _(@"You don't have a sent mail folder set up to keep copies of your sent mail.\nTo set up the sent mail folder, bring up the contextual menu on the mailbox list\nfor the folder you want to use as a sent mail folder and choose\n\"Set Mailbox as > Sent for Account > %@\"."), _(@"Send Anyway"), _(@"Cancel"), NULL, aKey); if (choice == NSAlertAlternateReturn) return; } // We get our transport method type allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: aSendingKey] objectForKey: @"SEND"]; if ([[allValues objectForKey: @"TRANSPORT_METHOD"] intValue] == TRANSPORT_SMTP) { op = SEND_SMTP; } else { op = SEND_SENDMAIL; } aTask = [[Task alloc] init]; // We get the message we want to assign to our Task object, depending on // if we are redirecting or not the original message. if (_mode == GNUMailRedirectMessage) { aMessage = [self _dataValueOfRedirectedMessage]; if (!aMessage) { NSRunAlertPanel(_(@"Error!"), _(@"Unable to create a valid message for redirection.\nYou have to specify at least one To recipient."), _(@"OK"), NULL, NULL); RELEASE(aTask); return; } aTask->total_size = (float)[(NSData *)aMessage length]/(float)1024; } else { aMessage = [self message]; aTask->total_size = [self _estimatedSizeOfMessage]; } aTask->op = op; aTask->sub_op = _mode; [aTask setMessage: aMessage]; [aTask setUnmodifiedMessage: [self unmodifiedMessage]]; [aTask setKey: aKey]; [aTask setSendingKey: aSendingKey]; [[TaskManager singleInstance] addTask: aTask]; RELEASE(aTask); // If this message is already in the drafts folder, set the "deleted" flag // of the original message. if (_mode == GNUMailRestoreFromDrafts) { CWFlags *theFlags; theFlags = [[[self message] flags] copy]; [theFlags add: PantomimeDeleted]; [[self message] setFlags: theFlags]; RELEASE(theFlags); [[NSNotificationCenter defaultCenter] postNotificationName: ReloadMessageList object: nil userInfo: nil]; } // Since we're done, we close our window. [self close]; } // // // - (void) controlTextDidEndEditing: (NSNotification *) aNotification { NSControl *theControl = [aNotification object]; if (theControl == toText || theControl == ccText || theControl == bccText) { NSArray *allRecipientsFromString; NSMutableArray *allRecipients; NSString *aString; int i; aString = [[theControl stringValue] stringByTrimmingWhiteSpaces]; if ([aString length] == 0) { return; } allRecipientsFromString = [self _recipientsFromString: aString]; allRecipients = [NSMutableArray array]; for (i = 0; i < [allRecipientsFromString count]; i++) { ABSearchElement *aSearchElement; NSArray *allMembers; NSString *aValue; aValue = [allRecipientsFromString objectAtIndex: i]; aSearchElement = [ABGroup searchElementForProperty: kABGroupNameProperty label: nil key: nil value: aValue comparison: kABPrefixMatchCaseInsensitive]; allMembers = [[[[ABAddressBook sharedAddressBook] recordsMatchingSearchElement: aSearchElement] lastObject] members]; if ([allMembers count]) { int j; for (j = 0; j < [allMembers count]; j++) { /* Don't add names with invalid addresses */ NSArray *emails = [[allMembers objectAtIndex: j] valueForProperty: kABEmailProperty]; if ([emails count]) { [allRecipients addObject: [[allMembers objectAtIndex: j] formattedValue]]; } } } // person else { [allRecipients addObject: aValue]; } } [theControl setStringValue: [allRecipients componentsJoinedByString: @", "]]; } } // // // - (BOOL) isACompletion: (NSString *) theCandidate { return [[self allCompletionsForPrefix: theCandidate] containsObject: theCandidate]; } // // // - (NSString *) completionForPrefix: (NSString *) thePrefix { NSArray *allCompletions; NSString *completion; allCompletions = [self allCompletionsForPrefix: thePrefix]; completion = nil; if ([allCompletions count] > 0) { completion = [allCompletions objectAtIndex:0]; } return completion; } // // // - (NSArray *) allCompletionsForPrefix: (NSString *) thePrefix { NSArray *searchResults; NSMutableArray *retval; int i; searchResults = [[AddressBookController singleInstance] addressesWithPrefix: thePrefix]; retval = [NSMutableArray arrayWithCapacity: [searchResults count]]; for(i = 0; i < [searchResults count]; i++) { if ([[searchResults objectAtIndex: i] isKindOfClass: [ABGroup class]]) { [retval addObject: [[searchResults objectAtIndex: i] valueForProperty: kABGroupNameProperty]]; } else { [retval addObjectsFromArray: [[searchResults objectAtIndex: i] formattedValuesForPrefix: thePrefix]]; } } return retval; } // // // - (void) controlTextDidChange: (NSNotification *) aNotification { if ( [aNotification object] == subjectText ) { if ([[subjectText stringValue] length] > 0) { [[self window] setTitle: [subjectText stringValue]]; } else { [[self window] setTitle: _(@"(no subject)")]; } } else if ([aNotification object] == toText || [aNotification object] == ccText || [aNotification object] == bccText) { if ((_mode == GNUMailRedirectMessage && ![message rawSource]) || (_mode == GNUMailRestoreFromDrafts && ![message content]) || ([[toText stringValue] length] == 0 && [[ccText stringValue] length] == 0 && [[bccText stringValue] length] == 0)) { [send setEnabled: NO]; } else { [send setEnabled: YES]; } } if (_mode != GNUMailRedirectMessage) { [[self window] setDocumentEdited: YES]; } } // // // - (BOOL) shouldChangeTextInRange: (NSRange) affectedCharRange replacementString: (NSString *) replacementString { NSString *aString; aString = [[[textView textStorage] string] substringWithRange: affectedCharRange]; if ( (([replacementString length] > 0) && (([replacementString characterAtIndex: 0] =='\n') || ([replacementString characterAtIndex: 0] =='>'))) || (([aString length] > 0) && ([aString characterAtIndex: 0] == '>')) ) { updateColors = YES; affectedRangeForColors = NSMakeRange(affectedCharRange.location, [replacementString length]); } return YES; } // // // - (void) textDidChange: (NSNotification *) aNotification { if (_mode != GNUMailRedirectMessage) { [[self window] setDocumentEdited: YES]; } [self _updateSizeLabel]; if (updateColors) { NSTextStorage *aTextStorage; aTextStorage = [textView textStorage]; if ([aTextStorage length] > 1) { NSRange aRange, r; r = [textView selectedRange]; aRange = [[aTextStorage string] lineRangeForRange: affectedRangeForColors]; if (aRange.length) { NSMutableAttributedString *aMutableAttributedString; aMutableAttributedString = [[NSMutableAttributedString alloc] initWithAttributedString: [aTextStorage attributedSubstringFromRange: aRange]]; [aMutableAttributedString quote]; [aTextStorage replaceCharactersInRange: aRange withAttributedString: aMutableAttributedString]; RELEASE(aMutableAttributedString); } [textView setSelectedRange: r]; } updateColors = NO; } } // // // - (BOOL) windowShouldClose: (id) sender { if ([[self window] isDocumentEdited]) { #ifdef MACOSX NSBeginAlertSheet(_(@"Closing..."), _(@"Cancel"), // defaultButton _(@"Save in Drafts"), // alternateButton _(@"No"), // otherButton [self window], self, // delegate @selector(_sheetDidEnd:returnCode:contextInfo:), // didEndSelector @selector(_sheetDidDismiss:returnCode:contextInfo:), // didDismissSelector nil, // contextInfo _(@"Would you like to save this message in the Drafts folder?")); return NO; #else int choice; choice = NSRunAlertPanel(_(@"Closing..."), _(@"Would you like to save this message in the Drafts folder?"), _(@"Cancel"), // default _(@"Save in Drafts"), // alternate _(@"No")); // other return // We don't want to close the window if (choice == NSAlertDefaultReturn) { return NO; } // Yes we want to close it, and we also want to save the message to the Drafts folder. else if (choice == NSAlertAlternateReturn) { // We append the message to the Drafts folder. [[MailboxManagerController singleInstance] saveMessageInDraftsFolderForController: self]; } #endif } return YES; } // // // - (void) windowWillClose: (NSNotification *) theNotification { if ([GNUMail lastAddressTakerWindowOnTop] == self) { [GNUMail setLastAddressTakerWindowOnTop: nil]; } [GNUMail removeEditWindow: [self window]]; AUTORELEASE(self); } // // // - (void) windowDidBecomeMain: (NSNotification *) theNotification { #ifndef MACOSX [[[self window] contentView] setNeedsDisplay: YES]; #endif [GNUMail setLastAddressTakerWindowOnTop: self]; } // // // - (void) windowDidLoad { // We add our observer for our two notifications [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_loadAccounts) name: AccountsHaveChanged object: nil]; // We add our window from our list of opened windows [GNUMail addEditWindow: [self window]]; } // // // - (CWMessage *) message { return message; } // // // - (void) setMessage: (CWMessage *) theMessage { if (theMessage) { ASSIGN(message, theMessage); [self _updateViewWithMessage: message appendSignature: YES]; [self _updateSizeLabel]; } else { DESTROY(message); } } // // // - (CWMessage *) unmodifiedMessage { return unmodifiedMessage; } // // // - (void) setUnmodifiedMessage: (CWMessage *) theUnmodifiedMessage { if (theUnmodifiedMessage) { ASSIGN(unmodifiedMessage, theUnmodifiedMessage); } else { DESTROY(unmodifiedMessage); } } // // // - (void) setMessageFromDraftsFolder: (CWMessage *) theMessage { if (theMessage) { ASSIGN(message, theMessage); [self _updateViewWithMessage: message appendSignature: NO]; [self _updateSizeLabel]; } else { DESTROY(message); } } // // // - (BOOL) showCc { return showCc; } // // // - (void) setShowCc: (BOOL) theBOOL { showCc = theBOOL; if (showCc) { [addCc setLabel: _(@"Remove Cc")]; [addCc setImage: [NSImage imageNamed: @"remove_cc_32.tiff"]]; [[[self window] contentView] addSubview: ccLabel]; [[[self window] contentView] addSubview: ccText]; } else { [addCc setLabel: _(@"Add Cc")]; [addCc setImage: [NSImage imageNamed: @"add_cc_32.tiff"]]; [ccLabel removeFromSuperviewWithoutNeedingDisplay]; [ccText removeFromSuperviewWithoutNeedingDisplay]; } [self _adjustWidgetsPosition]; [self _adjustNextKeyViews]; } // // // - (BOOL) showBcc { return showBcc; } // // // - (void) setShowBcc: (BOOL) theBOOL { showBcc = theBOOL; if (showBcc) { [addBcc setLabel: _(@"Remove Bcc")]; [addBcc setImage: [NSImage imageNamed: @"remove_bcc_32.tiff"]]; [[[self window] contentView] addSubview: bccLabel]; [[[self window] contentView] addSubview: bccText]; } else { [addBcc setLabel: _(@"Add Bcc")]; [addBcc setImage: [NSImage imageNamed: @"add_bcc_32.tiff"]]; [bccLabel removeFromSuperviewWithoutNeedingDisplay]; [bccText removeFromSuperviewWithoutNeedingDisplay]; } [self _adjustWidgetsPosition]; [self _adjustNextKeyViews]; } // // // - (int) signaturePosition { return signaturePosition; } // // // - (void) setSignaturePosition: (int) thePosition { signaturePosition = thePosition; } // // // - (NSPopUpButton *) accountPopUpButton { return accountPopUpButton; } // // Changes and select the right account in the popup button. // - (void) setAccountName: (NSString *) theAccountName { [Utilities loadAccountsInPopUpButton: accountPopUpButton select: theAccountName]; [self accountSelectionHasChanged: nil]; } // // // - (NSString *) charset { return charset; } - (void) setCharset: (NSString *) theCharset { if (theCharset) { ASSIGN(charset, theCharset); } else { DESTROY(charset); } } // // // - (int) mode { return _mode; } - (void) setMode: (int) theMode { _mode = theMode; if (_mode == GNUMailRedirectMessage) { [textView setEditable: NO]; [subjectText setEditable: NO]; [send setEnabled: NO]; [insert setEnabled: NO]; } } // // // - (NSTextView *) textView { return textView; } // // Other methods // - (BOOL) updateMessageContentFromTextView { NSTextStorage *textStorage; NSArray *theArray; NSDictionary *allAdditionalHeaders, *allValues; CWInternetAddress *anInternetAddress; BOOL hasFoundUserAgentHeader; NSString *aString; int i; // We initialize our boolean value to false hasFoundUserAgentHeader = NO; // We get the current selected account when sending this email [accountPopUpButton synchronizeTitleAndSelectedItem]; // Then, we get our account from our user defaults allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: [(ExtendedMenuItem *)[accountPopUpButton selectedItem] key]] objectForKey: @"PERSONAL"]; // We set the From header value anInternetAddress = [[CWInternetAddress alloc] initWithPersonal: [allValues objectForKey: @"NAME"] address: [allValues objectForKey: @"EMAILADDR"]]; [message setFrom: anInternetAddress]; RELEASE(anInternetAddress); // We set the Reply-To address (if we need too) aString = [allValues objectForKey: @"REPLYTOADDR"]; if (aString && [[aString stringByTrimmingWhiteSpaces] length] > 0) { anInternetAddress = [[CWInternetAddress alloc] initWithString: aString]; if (anInternetAddress) { [message setReplyTo: [NSArray arrayWithObject: anInternetAddress]]; RELEASE(anInternetAddress); } } else { [message setReplyTo: nil]; } // We set the Organization header value (if we need to) aString = [allValues objectForKey: @"ORGANIZATION"]; if (aString && [[aString stringByTrimmingWhiteSpaces] length] > 0) { [message setOrganization: aString]; } // For now, if there are recipients, we remove them in case a user add or changed them manually if ([message recipientsCount] > 0) { [message removeAllRecipients]; } // We decode our recipients, let's begin with the To field. if ([[[toText stringValue] stringByTrimmingWhiteSpaces] length] > 0) { theArray = [self _recipientsFromString: [toText stringValue] ]; for (i = 0; i < [theArray count]; i++) { anInternetAddress = [[CWInternetAddress alloc] initWithString: [theArray objectAtIndex:i]]; if (!anInternetAddress) { SHOW_ALERT_PANEL([theArray objectAtIndex: i]); return NO; } [anInternetAddress setType: PantomimeToRecipient]; [message addRecipient: anInternetAddress]; RELEASE(anInternetAddress); } } // We decode our Cc field, if we need to if (showCc) { theArray = [self _recipientsFromString: [ccText stringValue]]; for (i = 0; i < [theArray count]; i++) { anInternetAddress = [[CWInternetAddress alloc] initWithString: [theArray objectAtIndex:i]]; if (!anInternetAddress) { SHOW_ALERT_PANEL([theArray objectAtIndex: i]); return NO; } [anInternetAddress setType: PantomimeCcRecipient]; [message addRecipient: anInternetAddress]; RELEASE(anInternetAddress); } } // We decode our Bcc field, if we need to if (showBcc) { theArray = [self _recipientsFromString: [bccText stringValue]]; for (i = 0; i < [theArray count]; i++) { anInternetAddress = [[CWInternetAddress alloc] initWithString: [theArray objectAtIndex:i]]; if (!anInternetAddress) { SHOW_ALERT_PANEL([theArray objectAtIndex: i]); return NO; } [anInternetAddress setType: PantomimeBccRecipient]; [message addRecipient: anInternetAddress]; RELEASE(anInternetAddress); } } // We decode our Subject field [message setSubject: [subjectText stringValue]]; // We finally add all our addition headers from the user defaults allAdditionalHeaders = [[NSUserDefaults standardUserDefaults] objectForKey: @"ADDITIONALOUTGOINGHEADERS"]; if (allAdditionalHeaders) { NSEnumerator *anEnumerator; NSString *aKey, *aValue; anEnumerator = [allAdditionalHeaders keyEnumerator]; while ((aKey = [anEnumerator nextObject])) { // We get our value aValue = [[allAdditionalHeaders objectForKey: aKey] stringByTrimmingWhiteSpaces]; // We skip over additional headers with no specified value. if ([aValue length] == 0) { continue; } if ([aKey compare: @"User-Agent" options: NSCaseInsensitiveSearch] == NSOrderedSame) { hasFoundUserAgentHeader = YES; continue; } // We add our X- if we don't have it if (![aKey hasPrefix: @"X-"]) { aKey = [NSString stringWithFormat: @"X-%@", aKey]; } if (![message headerValueForName: aKey]) { [message addHeader: aKey withValue: aValue]; } } } // We add our User-Agent: GNUMail (Version ...) header if the user hasn't defined one if (!hasFoundUserAgentHeader && ![message headerValueForName: @"User-Agent"]) { [message addHeader: @"User-Agent" withValue: [NSString stringWithFormat: @"GNUMail (Version %@)", GNUMailVersion()]]; } // We get our text storage textStorage = [textView textStorage]; // We now build our message body - considering all the attachments if ([textStorage length] == 1 && [textStorage containsAttachments]) { NSTextAttachment *aTextAttachment; aTextAttachment = [textStorage attribute: NSAttachmentAttributeName atIndex: 0 effectiveRange: NULL]; [self _updatePart: message usingTextAttachment: aTextAttachment]; } else if (![textStorage containsAttachments]) { [self _setPlainTextContentFromString: [textView string] inPart: message]; } else { CWMIMEMultipart *aMimeMultipart; CWPart *aPart; NSAutoreleasePool *pool; NSString *aString; // We create our local autorelease pool pool = [[NSAutoreleasePool alloc] init]; aMimeMultipart = [[CWMIMEMultipart alloc] init]; // We first decode our text/plain body aPart = [[CWPart alloc] init]; [self _setPlainTextContentFromString: [self _plainTextContentFromTextView] inPart: aPart]; // We add our new part [aMimeMultipart addPart: aPart]; RELEASE(aPart); // We get our text store string representation aString = [textStorage string]; // We finally add all our attachments for (i = 0; i < [textStorage length]; i++) { NSTextAttachment *aTextAttachment; if ( [aString characterAtIndex: i] != NSAttachmentCharacter ) { continue; } aTextAttachment = [textStorage attribute: NSAttachmentAttributeName atIndex: i effectiveRange: NULL]; if (aTextAttachment) { if ( [[aTextAttachment attachmentCell] respondsToSelector: @selector(part)] ) { aPart = [(ExtendedTextAttachmentCell *)[aTextAttachment attachmentCell] part]; } else { aPart = nil; } if (aPart) { [aMimeMultipart addPart: (CWPart *)aPart]; } else { aPart = [[CWPart alloc] init]; [self _updatePart: aPart usingTextAttachment: aTextAttachment]; [aMimeMultipart addPart: aPart]; RELEASE(aPart); } } // if ( aTextAttachment ) } // for (...) [message setContentTransferEncoding: PantomimeEncodingNone]; [message setContentType: @"multipart/mixed"]; [message setContent: aMimeMultipart]; // We generate a new boundary for our message [message setBoundary: [CWMIMEUtility globallyUniqueBoundary]]; RELEASE(aMimeMultipart); RELEASE(pool); } // // We inform our bundles that our message WAS encoded // for (i = 0; i < [[GNUMail allBundles] count]; i++) { id aBundle; aBundle = [[GNUMail allBundles] objectAtIndex: i]; if ( [aBundle respondsToSelector: @selector(messageWasEncoded:)] ) { // If AT LEAST ONE bundle failed to encode the message, we // stop everything for now. // // FIXME: should use the returned copy successively instead of // modifying directly "message" // if (![aBundle messageWasEncoded: message]) { return NO; } } } return YES; } // // // - (void) updateWithMessage: (CWMessage *) theMessage { CWInternetAddress *aInternetAddress; NSEnumerator *enumerator; [self setAccountName: [Utilities accountNameForMessage: theMessage]]; [self setShowCc: NO]; if ([[theMessage subject] length] != 0) { [[self window] setTitle: [theMessage subject]]; } else { [[self window] setTitle: _(@"New message...")]; } // We verify if we need to show the Cc field enumerator = [[theMessage recipients] objectEnumerator]; while ((aInternetAddress = [enumerator nextObject])) { if ([aInternetAddress type] == PantomimeCcRecipient) { if (![self showCc]) { [self setShowCc: YES]; } } else if ([aInternetAddress type] == PantomimeBccRecipient) { if (![self showBcc]) { [self setShowBcc: YES]; } } } } @end // // private methods // @implementation EditWindowController (Private) - (void) _adjustNextKeyViews { if (showCc && showBcc) { [toText setNextKeyView: ccText]; [ccText setNextKeyView: bccText]; [bccText setNextKeyView: subjectText]; } else if (showCc && !showBcc) { [toText setNextKeyView: ccText]; [ccText setNextKeyView: subjectText]; } else if (!showCc && showBcc) { [toText setNextKeyView: bccText]; [bccText setNextKeyView: subjectText]; } else { [toText setNextKeyView: subjectText]; } } // // // - (void) _adjustWidgetsPosition { NSRect rectOfToText; float widthOfScrollView; rectOfToText = [toText frame]; widthOfScrollView = [scrollView frame].size.width; if (showCc && showBcc) { // To - Y_DELTA [ccLabel setFrame: NSMakeRect(L_X,rectOfToText.origin.y-Y_DELTA,L_WIDTH,L_HEIGHT)]; [ccText setFrame: NSMakeRect(F_X,rectOfToText.origin.y-Y_DELTA,widthOfScrollView-W_DELTA,F_HEIGHT)]; // To - Y_DELTA*2 [bccLabel setFrame: NSMakeRect(L_X,rectOfToText.origin.y-Y_DELTA*2,L_WIDTH,L_HEIGHT)]; [bccText setFrame: NSMakeRect(F_X,rectOfToText.origin.y-Y_DELTA*2,widthOfScrollView-W_DELTA,F_HEIGHT)]; // To - Y_DELTA*3 [subjectLabel setFrame: NSMakeRect(L_X-5,rectOfToText.origin.y-Y_DELTA*3,L_WIDTH+5,L_HEIGHT)]; [subjectText setFrame: NSMakeRect(F_X,rectOfToText.origin.y-Y_DELTA*3,widthOfScrollView-W_DELTA,F_HEIGHT)]; // To - Y_DELTA*4 [sizeLabel setFrame: NSMakeRect(L_X,rectOfToText.origin.y-Y_DELTA*4,200,L_HEIGHT)]; // Space left... [scrollView setFrame: NSMakeRect(S_X,S_Y,widthOfScrollView,rectOfToText.origin.y-Y_DELTA*4-5)]; } else if (showCc && !showBcc) { // To - Y_DELTA [ccLabel setFrame: NSMakeRect(L_X,rectOfToText.origin.y-Y_DELTA,L_WIDTH,L_HEIGHT)]; [ccText setFrame: NSMakeRect(F_X,rectOfToText.origin.y-Y_DELTA,widthOfScrollView-W_DELTA,F_HEIGHT)]; // To - Y_DELTA*2 [subjectLabel setFrame: NSMakeRect(L_X-5,rectOfToText.origin.y-Y_DELTA*2,L_WIDTH+5,L_HEIGHT)]; [subjectText setFrame: NSMakeRect(F_X,rectOfToText.origin.y-Y_DELTA*2,widthOfScrollView-W_DELTA,F_HEIGHT)]; // To - Y_DELTA*3 [sizeLabel setFrame: NSMakeRect(L_X,rectOfToText.origin.y-Y_DELTA*3,200,L_HEIGHT)]; // Space left... [scrollView setFrame: NSMakeRect(S_X,S_Y,widthOfScrollView,rectOfToText.origin.y-Y_DELTA*3-5)]; } else if (!showCc && showBcc) { // To - Y_DELTA [bccLabel setFrame: NSMakeRect(L_X,rectOfToText.origin.y-Y_DELTA,L_WIDTH,L_HEIGHT)]; [bccText setFrame: NSMakeRect(F_X,rectOfToText.origin.y-Y_DELTA,widthOfScrollView-W_DELTA,F_HEIGHT)]; // To - Y_DELTA*2 [subjectLabel setFrame: NSMakeRect(L_X-5,rectOfToText.origin.y-Y_DELTA*2,L_WIDTH+5,L_HEIGHT)]; [subjectText setFrame: NSMakeRect(F_X,rectOfToText.origin.y-Y_DELTA*2,widthOfScrollView-W_DELTA,F_HEIGHT)]; // To - Y_DELTA*3 [sizeLabel setFrame: NSMakeRect(L_X,rectOfToText.origin.y-Y_DELTA*3,200,L_HEIGHT)]; // Space left... [scrollView setFrame: NSMakeRect(S_X,S_Y,widthOfScrollView,rectOfToText.origin.y-Y_DELTA*3-5)]; } else { // To - Y_DELTA [subjectLabel setFrame: NSMakeRect(L_X-5,rectOfToText.origin.y-Y_DELTA,L_WIDTH+5,L_HEIGHT)]; [subjectText setFrame: NSMakeRect(F_X,rectOfToText.origin.y-Y_DELTA,widthOfScrollView-W_DELTA,F_HEIGHT)]; // To - Y_DELTA*2 [sizeLabel setFrame: NSMakeRect(L_X,rectOfToText.origin.y-Y_DELTA*2,200,L_HEIGHT)]; // Space left... [scrollView setFrame: NSMakeRect(S_X,S_Y,widthOfScrollView,rectOfToText.origin.y-Y_DELTA*2-5)]; } } // // // - (void) _appendAddress: (NSArray *) theAddress toTextField: (NSTextField *) theTextField { NSString *aString; NSRange aRange; aString = [theAddress objectAtIndex: 0]; if (aString && [aString length]) { // If there's a comma in the name, we quote the whole thing. if ([aString indexOfCharacter: ','] >= 0) { aString = [NSString stringWithFormat: @"\"%@\"", aString]; } aString = [NSString stringWithFormat: @"%@ <%@>", aString, [theAddress objectAtIndex: 1]]; } else { aString = [theAddress objectAtIndex: 1]; } aRange = [[theTextField stringValue] rangeOfString: aString options: NSCaseInsensitiveSearch]; if (aRange.location != NSNotFound) { return; } if ([[theTextField stringValue] length]) { [theTextField setStringValue: [NSString stringWithFormat: @"%@, %@", [theTextField stringValue], aString]]; } else { [theTextField setStringValue: aString]; } } // // // - (NSData *) _dataValueOfRedirectedMessage { CWInternetAddress *anInternetAddress; NSMutableData *aMessageAsData; NSData *rawSource, *aData; NSAutoreleasePool *pool; NSCalendarDate *aCalendarDate; NSDictionary *allValues; NSDictionary *aLocale; NSRange aRange; // We first verify if at least a recipient To has been defined if (![[[toText stringValue] stringByTrimmingWhiteSpaces] length]) { return nil; } // We create our local pool pool = [[NSAutoreleasePool alloc] init]; // We create our mutable string aMessageAsData = [[NSMutableData alloc] init]; // We get the raw source of the message rawSource = [[self message] rawSource]; // We get our headers delimiter aRange = [rawSource rangeOfCString: "\n\n"]; if (aRange.length == 0) { RELEASE(pool); return nil; } // We append the content of our headers aData = [rawSource subdataToIndex: aRange.location + 1]; // If we have our "From " separator, we remove it since we don't want to send this. if ([aData hasCPrefix: "From "]) { NSRange r; r = [aData rangeOfCString: "\n"]; if (r.length > 0) { aData = [aData subdataWithRange: NSMakeRange(r.location + 1, [aData length] - r.location - 1)]; } } // We append all our headers [aMessageAsData appendData: aData]; // We get our locale in English #ifndef MACOSX aLocale = [NSDictionary dictionaryWithContentsOfFile: [[NSBundle bundleForLibrary: @"gnustep-base"] pathForResource: @"English" ofType: nil inDirectory: @"Languages"]]; #else aLocale = [NSDictionary dictionaryWithContentsOfFile: [[NSBundle bundleForClass:[NSObject class]] pathForResource: @"English" ofType: nil inDirectory: @"Languages"] ]; #endif // We set the Resent-Date #ifndef MACOSX tzset(); aCalendarDate = [[[NSDate alloc] init] dateWithCalendarFormat:@"%a, %d %b %Y %H:%M:%S %z" timeZone: [NSTimeZone timeZoneWithAbbreviation: [NSString stringWithCString: tzname[1]]] ]; #else aCalendarDate = [[[NSDate alloc] init] dateWithCalendarFormat:@"%a, %d %b %Y %H:%M:%S %z" timeZone: [NSTimeZone systemTimeZone] ]; #endif [aMessageAsData appendCFormat: @"Resent-Date: %@\n", [aCalendarDate descriptionWithLocale: aLocale]]; // We get our account from our user defaults allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: [(ExtendedMenuItem *)[accountPopUpButton selectedItem] key]] objectForKey: @"PERSONAL"]; // We set the Resent-From anInternetAddress = [[CWInternetAddress alloc] initWithPersonal: [allValues objectForKey: @"NAME"] address: [allValues objectForKey: @"EMAILADDR"]]; [aMessageAsData appendCString: "Resent-From: "]; [aMessageAsData appendData: [anInternetAddress dataValue]]; [aMessageAsData appendCString: "\n"]; RELEASE(anInternetAddress); // We set the Resent-To [aMessageAsData appendCString: "Resent-To: "]; [aMessageAsData appendData: [[toText stringValue] dataUsingEncoding: NSASCIIStringEncoding]]; [aMessageAsData appendCString: "\n"]; // We set the ReSent-Cc, if we need to. if ([[[ccText stringValue] stringByTrimmingWhiteSpaces] length]) { [aMessageAsData appendCString: "Resent-Cc: "]; [aMessageAsData appendData: [[ccText stringValue] dataUsingEncoding: NSASCIIStringEncoding]]; [aMessageAsData appendCString: "\n"]; } // We set the ReSent-Bcc, if we need to. if ([[[bccText stringValue] stringByTrimmingWhiteSpaces] length]) { [aMessageAsData appendCString: "Resent-Bcc: "]; [aMessageAsData appendData: [[bccText stringValue] dataUsingEncoding: NSASCIIStringEncoding]]; [aMessageAsData appendCString: "\n"]; } // We set the ReSent-Message-ID [aMessageAsData appendCString: "Resent-Message-ID: <"]; [aMessageAsData appendData: [CWMIMEUtility globallyUniqueID]]; [aMessageAsData appendCString: ">\n"]; // We append our header delimiter [aMessageAsData appendCString: "\n"]; // We finally append the content of our message [aMessageAsData appendData: [rawSource subdataFromIndex: aRange.location + 2]]; RELEASE(pool); return AUTORELEASE(aMessageAsData); } // // // - (float) _estimatedSizeOfMessage { NSTextStorage *aTextStorage; NSAutoreleasePool *pool; float size; pool = [[NSAutoreleasePool alloc] init]; size = [[textView string] length]; size = (float)(size / (float)1024); aTextStorage = [textView textStorage]; // FIXME // This is _very_ slow if ([aTextStorage containsAttachments]) { NSTextAttachment *aTextAttachment; int i, len; len = [aTextStorage length]; for (i = 0; i < len; i++) { aTextAttachment = [aTextStorage attribute: NSAttachmentAttributeName atIndex: i effectiveRange: NULL]; if ( aTextAttachment ) { CWPart *aPart; if ([[aTextAttachment attachmentCell] respondsToSelector: @selector(part)]) { aPart = [(ExtendedTextAttachmentCell *)[aTextAttachment attachmentCell] part]; } else { aPart = nil; } if (aPart) { size += (float)((float)[aPart size] / (float)1024); } else { NSFileWrapper *aFileWrapper; aFileWrapper = [aTextAttachment fileWrapper]; size += (float)((float)[[aFileWrapper regularFileContents] length] / (float)1024); } } } } RELEASE(pool); return size; } // // // - (void) _loadAccessoryViews { int i; for (i = 0; i < [[GNUMail allBundles] count]; i++) { id aBundle; aBundle = [[GNUMail allBundles] objectAtIndex: i]; if ( [aBundle hasComposeViewAccessory] ) { NSToolbarItem *aToolbarItem; NSToolbar *aToolbar; id aView; aToolbarItem = [[NSToolbarItem alloc] initWithItemIdentifier: [aBundle name]]; [allowedToolbarItemIdentifiers addObject: [aBundle name]]; [additionalToolbarItems setObject: aToolbarItem forKey: [aBundle name]]; aView = [aBundle composeViewAccessory]; [aToolbarItem setView: aView]; [aToolbarItem setLabel: [aBundle name]]; // name [aToolbarItem setPaletteLabel: [aBundle description]]; // description [aToolbarItem setMinSize: [aView frame].size]; [aToolbarItem setMaxSize: [aView frame].size]; RELEASE(aToolbarItem); aToolbar = [[self window] toolbar]; [aToolbar insertItemWithItemIdentifier: [aBundle name] atIndex: [[aToolbar visibleItems] count]]; } // We also set the current superview [aBundle setCurrentSuperview: [[self window] contentView]]; } } // // // - (void) _loadCharset { if ([[NSUserDefaults standardUserDefaults] objectForKey: @"DEFAULT_CHARSET"]) { NSString *aString; aString = [[CWCharset allCharsets] objectForKey: [[[NSUserDefaults standardUserDefaults] objectForKey: @"DEFAULT_CHARSET"] lowercaseString]]; if (aString) { [self setCharset: aString]; } else { [self setCharset: nil]; } } else { [self setCharset: nil]; } } // // // - (void) _loadAccounts { [Utilities loadAccountsInPopUpButton: accountPopUpButton select: nil]; [Utilities loadTransportMethodsInPopUpButton: transportMethodPopUpButton]; } // // // - (NSString *) _loadSignature { NSDictionary *allValues; NSString *aSignature; [accountPopUpButton synchronizeTitleAndSelectedItem]; allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: [(ExtendedMenuItem *)[accountPopUpButton selectedItem] key]] objectForKey: @"PERSONAL"]; aSignature = nil; if ([allValues objectForKey: @"SIGNATURE_SOURCE"] && [[allValues objectForKey: @"SIGNATURE_SOURCE"] intValue] == 0) { aSignature = [NSString stringWithContentsOfFile: [[allValues objectForKey: @"SIGNATURE"] stringByExpandingTildeInPath]]; } else if ([allValues objectForKey: @"SIGNATURE_SOURCE"] && [[allValues objectForKey: @"SIGNATURE_SOURCE"] intValue] == 1) { NSFileHandle *aFileHandle; NSString *aString; NSTask *aTask; NSPipe *aPipe; NSData *aData; NSRange aRange; // We get our program's name (and arguments, if any) aString = [allValues objectForKey: @"SIGNATURE"]; // If a signature hasn't been set, let's return. if (!aString) { return nil; } aPipe = [NSPipe pipe]; aFileHandle = [aPipe fileHandleForReading]; aTask = [[NSTask alloc] init]; [aTask setStandardOutput: aPipe]; // We trim our string from any whitespaces aString = [aString stringByTrimmingWhiteSpaces]; // We verify if our program to lauch has any arguments aRange = [aString rangeOfString: @" "]; if (aRange.length) { [aTask setLaunchPath: [aString substringToIndex: aRange.location]]; [aTask setArguments: [NSArray arrayWithObjects: [aString substringFromIndex: (aRange.location + 1)], nil]]; } else { [aTask setLaunchPath: aString]; } // We verify if our launch path points to an executable file if (![[NSFileManager defaultManager] isExecutableFileAtPath: [aTask launchPath]]) { NSDebugLog(@"The signature's path doesn't point to an executable! Ignored."); RELEASE(aTask); return nil; } // We launch our task [aTask launch]; while ([aTask isRunning]) { [[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode beforeDate: [NSDate distantFuture]]; } aData = [aFileHandle readDataToEndOfFile]; aSignature = [[NSString alloc] initWithData: aData encoding: NSUTF8StringEncoding]; AUTORELEASE(aSignature); RELEASE(aTask); } if (aSignature) { return [NSString stringWithFormat: @"\n\n-- \n%@", aSignature]; } return nil; } // // // - (void) _openPanelDidEnd: (NSOpenPanel *) theOpenPanel returnCode: (int) theReturnCode contextInfo: (void *) theContextInfo { if (theReturnCode == NSOKButton) { NSEnumerator *filesToOpenEnumerator; NSFileManager *aFileManager; NSString *theFilename; filesToOpenEnumerator = [[theOpenPanel filenames] objectEnumerator]; aFileManager = [NSFileManager defaultManager]; while ((theFilename = [filesToOpenEnumerator nextObject])) { if (![aFileManager isReadableFileAtPath: theFilename]) { NSRunAlertPanel(_(@"Error!"), _(@"The file %@ is not readable and has not been attached to this E-Mail."), _(@"OK"), NULL, NULL, theFilename); } else { [textView insertFile: theFilename]; } } [[self window] makeFirstResponder: textView]; } } // // // - (void) _replaceSignature { NSString *aSignature; // If we don't want a signature... if ([self signaturePosition] == SIGNATURE_HIDDEN || _mode == GNUMailRedirectMessage) { return; } if (previousSignatureValue) { NSRange aRange; aRange.location = NSNotFound; aRange.length = 0; if ([self signaturePosition] == SIGNATURE_BEGINNING) { aRange = [[[textView textStorage] string] rangeOfString: previousSignatureValue]; } else if ([self signaturePosition] == SIGNATURE_END) { aRange = [[[textView textStorage] string] rangeOfString: previousSignatureValue options: NSBackwardsSearch]; } if (aRange.length) { [[textView textStorage] deleteCharactersInRange: aRange]; } } // We load the new signature and insert it at the proper position aSignature = [self _loadSignature]; ASSIGN(previousSignatureValue, aSignature); if (aSignature) { if ([self signaturePosition] == SIGNATURE_BEGINNING) { NSMutableAttributedString *theMutableAttributedString; if ([textView font]) { theMutableAttributedString = [[NSMutableAttributedString alloc] initWithString: aSignature attributes: [NSDictionary dictionaryWithObject: [textView font] forKey: NSFontAttributeName]]; } else { theMutableAttributedString = [[NSMutableAttributedString alloc] initWithString: aSignature]; } // // We must be careful here. GNUstep might raise an exception if we loaded the signature // with the wrong encoding. The theMutableAttributedString's string will be nil! // if ([theMutableAttributedString string]) { [theMutableAttributedString appendAttributedString: [textView textStorage]]; [[textView textStorage] setAttributedString: theMutableAttributedString]; } RELEASE(theMutableAttributedString); } else if ([self signaturePosition] == SIGNATURE_END) { NSAttributedString *theAttributedString; if ([textView font]) { theAttributedString = [[NSAttributedString alloc] initWithString: aSignature attributes: [NSDictionary dictionaryWithObject: [textView font] forKey: NSFontAttributeName]]; } else { theAttributedString = [[NSAttributedString alloc] initWithString: aSignature]; } [[textView textStorage] appendAttributedString: theAttributedString]; RELEASE(theAttributedString); } [textView setSelectedRange: NSMakeRange(0,0)]; } // We update our size label [self _updateSizeLabel]; } // // // - (NSString *) _plainTextContentFromTextView { NSMutableString *aMutableString; NSTextStorage *textStorage; NSAutoreleasePool *pool; int i, len; textStorage = [textView textStorage]; aMutableString = [[NSMutableString alloc] initWithString: [textStorage string]]; pool = [[NSAutoreleasePool alloc] init]; len = [aMutableString length]; for (i = (len - 1); i >= 0; i--) { NSTextAttachment *aTextAttachment; id cell; if ( [aMutableString characterAtIndex: i] != NSAttachmentCharacter ) { continue; } aTextAttachment = [textStorage attribute: NSAttachmentAttributeName atIndex: i effectiveRange: NULL]; cell = (ExtendedTextAttachmentCell *)[aTextAttachment attachmentCell]; if ( ![cell respondsToSelector: @selector(part)] ) { cell = nil; } if ( cell && [cell part] && [[cell part] filename] ) { [aMutableString replaceCharactersInRange: NSMakeRange(i, 1) withString: [NSString stringWithFormat: @"<%@>", [[cell part] filename]] ]; } else if ( [[[aTextAttachment fileWrapper] filename] lastPathComponent] ) { [aMutableString replaceCharactersInRange: NSMakeRange(i, 1) withString: [NSString stringWithFormat: @"<%@>", [[[aTextAttachment fileWrapper] filename] lastPathComponent]] ]; } else { [aMutableString replaceCharactersInRange: NSMakeRange(i, 1) withString: @""]; } } RELEASE(pool); return AUTORELEASE(aMutableString); } /* Autocompletion might give us "last, first " so check the previous recipient and see if it matches last. Also match just an email. Give them the formattedValue. */ - (void) _recipientSplitEmail: (NSMutableString *)aString inArray: (NSMutableArray *)returnArray { NSRange estart, eend; BOOL email_only; NSString *last, *email; ABSearchElement *lastNameElement, *emailElement, *combElement; ABRecord *r; email_only = NO; estart = [aString rangeOfString: @"<"]; eend = [aString rangeOfString: @">"]; if (estart.length == 0 || eend.length == 0) { /* No canonical email address (name ) so check if it is just the email by itself */ estart = [aString rangeOfString: @"@"]; if (estart.length == 0) return; /* Nope, just a plain name (will match next time through) or perhaps a group */ email_only = YES; } if (email_only == NO && [returnArray count] != 0 && [[returnArray lastObject] rangeOfString: @"<"].length != 0) { /* Previous address is already canonical, skip */ /* But make sure name is upper case */ unichar c = [aString characterAtIndex: 0]; if (estart.length != 0 && islower(c)) [aString replaceCharactersInRange: NSMakeRange(0, 1) withString: [[aString substringWithRange: NSMakeRange(0, 1)] uppercaseString]]; return; } if ([returnArray count]) last = [returnArray lastObject]; else last = nil; if (last == nil && email_only == NO) { /* No previous string, so this email is probably already correct. */ /* But make sure name is upper case */ unichar c = [aString characterAtIndex: 0]; if (islower(c)) [aString replaceCharactersInRange: NSMakeRange(0, 1) withString: [[aString substringWithRange: NSMakeRange(0, 1)] uppercaseString]]; return; } if (email_only) email = aString; else email = [aString substringWithRange: NSMakeRange(estart.location+1, eend.location-estart.location-1)]; emailElement = AB_MATCH_ELEMENT(ABPerson, kABEmailProperty, email); if (email_only == NO) { lastNameElement = AB_MATCH_ELEMENT(ABPerson, kABLastNameProperty, last); combElement = [ABSearchElement searchElementForConjunction: kABSearchAnd children: [NSArray arrayWithObjects: lastNameElement, emailElement, nil]]; } else { combElement = emailElement; } r = [[[ABAddressBook sharedAddressBook] recordsMatchingSearchElement: combElement] lastObject]; if (r) { if (email_only == NO && [returnArray count]) [returnArray removeLastObject]; [aString replaceCharactersInRange: NSMakeRange(0, [aString length]) withString: [(ABPerson *)r formattedValue]]; } } // // // - (NSArray *) _recipientsFromString: (NSString *) theString { NSMutableArray *pairsStack, *returnArray; NSMutableString *aString; unichar c; int i; returnArray = [NSMutableArray array]; pairsStack = [NSMutableArray array]; aString = (NSMutableString *)[NSMutableString string]; for (i = 0; i < [theString length]; i++) { c = [theString characterAtIndex: i]; switch (c) { case ',': if ([pairsStack count] == 0 && [aString length]) { [self _recipientSplitEmail: aString inArray: returnArray]; [returnArray addObject: [NSString stringWithString: aString]]; [aString replaceCharactersInRange: NSMakeRange(0, [aString length]) withString: @""]; continue; } break; case ' ': if (![aString length]) { continue; } break; case '"': if ([pairsStack count] == 0 || [(NSNumber*)[pairsStack lastObject] intValue] != '"') { [pairsStack addObject: [NSNumber numberWithChar: c]]; } else { [pairsStack removeLastObject]; } break; case '<': [pairsStack addObject: [NSNumber numberWithChar: c]]; break; case '>': if ([pairsStack count] && [(NSNumber*)[pairsStack lastObject] intValue] == '<') { [pairsStack removeLastObject]; } break; case '(': [pairsStack addObject: [NSNumber numberWithChar: c]]; break; case ')': if ([pairsStack count] && [(NSNumber*)[pairsStack lastObject] intValue] == '(') { [pairsStack removeLastObject]; } break; } [aString appendFormat: @"%C", c]; } if ([pairsStack count] == 0 && [aString length]) { [self _recipientSplitEmail: aString inArray: returnArray]; [returnArray addObject: [NSString stringWithString: aString]]; } return returnArray; } // // // - (void) _setPlainTextContentFromString: (NSString *) theString inPart: (CWPart *) thePart { // We must first verify if our string contains any non-ascii character if ([theString is7bitSafe]) { [thePart setContentType: @"text/plain"]; // Content-Type [thePart setContentTransferEncoding: PantomimeEncodingNone]; // encoding -> none [thePart setCharset: @"us-ascii"]; [thePart setFormat: PantomimeFormatFlowed]; [thePart setLineLength: [[NSUserDefaults standardUserDefaults] integerForKey: @"LINE_WRAP_LIMIT" default: 72]]; [thePart setContent: [theString dataUsingEncoding: NSASCIIStringEncoding]]; } else { NSString *aCharset; // We verify if we are using automatic charset detection (when it's nil) if (![self charset]) { aCharset = [theString charset]; } else { NSArray *allKeys; allKeys = [[CWCharset allCharsets] allKeysForObject: [self charset]]; if ([allKeys count]) { aCharset = [allKeys objectAtIndex: 0]; } else { aCharset = [theString charset]; } } [thePart setContentType: @"text/plain"]; // Content-Type // Next, we verify if we can use an encoding other than QP for a specific // Content-Type. For now, we only verify for ISO-2022-JP charsets. if ([[aCharset lowercaseString] isEqualToString: @"iso-2022-jp"]) { [thePart setContentTransferEncoding: PantomimeEncodingNone]; // encoding -> none } else { [thePart setContentTransferEncoding: PantomimeEncodingQuotedPrintable]; // encoding -> quoted-printable } [thePart setFormat: PantomimeFormatUnknown]; [thePart setCharset: aCharset]; [thePart setContent: [theString dataUsingEncoding: [NSString encodingForCharset: [aCharset dataUsingEncoding: NSASCIIStringEncoding]]]]; } } // // Only called under MacOS X // #ifdef MACOSX - (void) _sheetDidEnd: (NSWindow *) sheet returnCode: (int) returnCode contextInfo: (void *) contextInfo { if ( returnCode == NSAlertAlternateReturn ) { // We append the message to the Drafts folder. [[MailboxManagerController singleInstance] saveMessageInDraftsFolderForController: self]; } } // // Only called under MacOS X // - (void) _sheetDidDismiss: (NSWindow *) sheet returnCode: (int) returnCode contextInfo: (void *) contextInfo { // We cancel the closing operation if (returnCode == NSAlertDefaultReturn) { return; } [[self window] close]; } #endif // // // - (void) _updateViewWithMessage: (CWMessage *) theMessage appendSignature: (BOOL) aBOOL { // We set our subject if ([theMessage subject]) { [subjectText setStringValue: [theMessage subject]]; } else { [subjectText setStringValue: @""]; } if (_mode == GNUMailRedirectMessage) { [[textView textStorage] deleteCharactersInRange: NSMakeRange(0, [[textView textStorage] length])]; if (![theMessage rawSource]) { [textView setString: _(@"Loading message...")]; if (![[TaskManager singleInstance] taskForService: [[theMessage folder] store]]) { Task *aTask; aTask = [[Task alloc] init]; [aTask setKey: [Utilities accountNameForFolder: [theMessage folder]]]; aTask->op = LOAD_ASYNC; aTask->immediate = YES; aTask->total_size = (float)[theMessage size]/(float)1024; [aTask setMessage: theMessage]; [aTask addController: self]; [[TaskManager singleInstance] addTask: aTask]; RELEASE(aTask); } } else { [[textView textStorage] appendAttributedString: [NSAttributedString attributedStringFromContentForPart: theMessage controller: self]]; [[textView textStorage] quote]; [[textView textStorage] format]; [[textView textStorage] insertAttributedString: [NSAttributedString attributedStringFromHeadersForMessage: theMessage showAllHeaders: NO useMailHeaderCell: NO] atIndex: 0]; } } else if (_mode == GNUMailRestoreFromDrafts && ![message content]) { [textView setString: _(@"Loading message...")]; [send setEnabled: NO]; } else { NSMutableString *toString, *ccString, *bccString; NSEnumerator *recipientsEnumerator; CWInternetAddress *theRecipient; // We get all recipients and we set our To/Cc/Bcc fields. toString = [[NSMutableString alloc] init]; ccString = [[NSMutableString alloc] init]; bccString = [[NSMutableString alloc] init]; recipientsEnumerator = [[theMessage recipients] objectEnumerator]; while ((theRecipient = [recipientsEnumerator nextObject])) { if ([theRecipient type] == PantomimeToRecipient) { [toString appendString: [NSString stringWithFormat: @"%@, ", [theRecipient stringValue]]]; } else if ([theRecipient type] == PantomimeCcRecipient) { [ccString appendString: [NSString stringWithFormat: @"%@, ", [theRecipient stringValue]]]; } else if ([theRecipient type] == PantomimeBccRecipient) { [bccString appendString: [NSString stringWithFormat: @"%@, ", [theRecipient stringValue]]]; } } // We set the value to our fields, if we need to. if ([toString length] > 0) { [toText setStringValue: [toString substringToIndex: ([toString length]-2)]]; } if ([ccString length] > 0) { [ccText setStringValue: [ccString substringToIndex: ([ccString length]-2)]]; } if ([bccString length] > 0) { [bccText setStringValue: [bccString substringToIndex: ([bccString length]-2)]]; } RELEASE(toString); RELEASE(ccString); RELEASE(bccString); if ([[toText stringValue] length] == 0 && [[ccText stringValue] length] == 0 && [[bccText stringValue] length] == 0) { [send setEnabled: NO]; } // We now set the content of the message (considering all attachments) // in case of a forward / reply. We quote it properly. if ([theMessage content]) { [[textView textStorage] setAttributedString: [NSAttributedString attributedStringFromContentForPart: theMessage controller: self]]; [[textView textStorage] quote]; [[textView textStorage] format]; } // We finally set the signature, if we need to if (aBOOL) { [self _replaceSignature]; } } [textView scrollPoint: NSMakePoint(0,0)]; } // // // - (void) _updateSizeLabel { NSString *aString; if (_mode == GNUMailRedirectMessage) { aString = _(@"Redirecting the following message...."); } else { NSTextStorage *aTextStorage; float size; aTextStorage = [textView textStorage]; size = [self _estimatedSizeOfMessage]; // We finally update the string value of our label if ( [[NSUserDefaults standardUserDefaults] integerForKey: @"USE_FIXED_FONT_FOR_TEXT_PLAIN_MESSAGES"] == NSOnState ) { aString = [NSString stringWithFormat: _(@"%0.1fKB (%d characters) - %d characters per line are shown"), size, [aTextStorage length], ((int)floor((float)[textView frame].size.width / (float)[[textView font] maximumAdvancement].width) - 1)]; } else { aString = [NSString stringWithFormat: _(@"%0.1fKB (%d characters)"), size, [aTextStorage length]]; } } [sizeLabel setStringValue: aString]; [sizeLabel setNeedsDisplay: YES]; } // // // - (void) _updatePart: (CWPart *) thePart usingTextAttachment: (NSTextAttachment *) theTextAttachment { NSFileWrapper *aFileWrapper; MimeType *aMimeType; NSData *aData; aFileWrapper = [theTextAttachment fileWrapper]; [thePart setFilename: [[aFileWrapper filename] lastPathComponent]]; // We search for the content-type to use aMimeType = [[MimeTypeManager singleInstance] bestMimeTypeForFileExtension: [[[aFileWrapper filename] lastPathComponent] pathExtension]]; if (aMimeType) { [thePart setContentType: [aMimeType mimeType]]; } else { [thePart setContentType: @"application/octet-stream"]; } [thePart setContentTransferEncoding: PantomimeEncodingBase64]; // always base64 encoding for now [thePart setContentDisposition: PantomimeAttachmentDisposition]; // always attachment for now aData = [aFileWrapper regularFileContents]; [thePart setContent: aData]; } @end GNUMail/Framework/GNUMail/EditWindow.m0100644000014600001460000001471710570772216020232 0ustar monotonemonotone/* ** EditWindow.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "EditWindow.h" #include "ExtendedTextView.h" #include "AutoCompletingTextField.h" #include "Constants.h" #include "LabelWidget.h" @implementation EditWindow // // // - (void) dealloc { NSDebugLog(@"EditWindow: -dealloc"); RELEASE(scrollView); RELEASE(textView); RELEASE(fromLabel); RELEASE(accountPopUpButton); RELEASE(usingLabel); RELEASE(transportMethodPopUpButton); RELEASE(toLabel); RELEASE(toText); RELEASE(ccLabel); RELEASE(ccText); RELEASE(bccLabel); RELEASE(bccText); RELEASE(subjectLabel); RELEASE(subjectText); RELEASE(sizeLabel); [super dealloc]; } // // // - (void) layoutWindow { // From fromLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,490,50,21) label: _(@"From:") alignment: NSRightTextAlignment]; [fromLabel setAutoresizingMask: NSViewMinYMargin]; RETAIN(fromLabel); accountPopUpButton = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(65,490,300,ButtonHeight)]; [accountPopUpButton setAutoresizingMask: NSViewMinYMargin|NSViewWidthSizable]; [accountPopUpButton setTarget: [self windowController]]; [accountPopUpButton setAction: @selector(accountSelectionHasChanged:)]; // Using usingLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(370,490,50,21) label: _(@"Using:") alignment: NSRightTextAlignment]; [usingLabel setAutoresizingMask: NSViewMinXMargin|NSViewMinYMargin]; RETAIN(usingLabel); transportMethodPopUpButton = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(430,490,300,ButtonHeight)]; [transportMethodPopUpButton setAutoenablesItems: NO]; [transportMethodPopUpButton setAutoresizingMask: NSViewMinXMargin|NSViewMinYMargin]; [transportMethodPopUpButton addItemWithTitle: @"smtp.server.com"]; // To toLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,465,50,21) label: _(@"To:") alignment: NSRightTextAlignment]; [toLabel setAutoresizingMask: NSViewMinYMargin]; RETAIN(toLabel); toText = [[AutoCompletingTextField alloc] initWithFrame: NSMakeRect(65,465,665,21)]; [toText setAutoresizingMask: NSViewMinYMargin|NSViewWidthSizable]; [[toText cell] setScrollable: YES]; [toText setDelegate: [self windowController]]; // Cc ccLabel = [LabelWidget labelWidgetWithFrame: NSZeroRect label: _(@"Cc:") alignment: NSRightTextAlignment]; [ccLabel setAutoresizingMask: NSViewMinYMargin]; RETAIN(ccLabel); ccText = [[AutoCompletingTextField alloc] init]; [ccText setAutoresizingMask: NSViewMinYMargin|NSViewWidthSizable]; [[ccText cell] setScrollable: YES]; [ccText setDelegate: [self windowController]]; // Bcc bccLabel = [LabelWidget labelWidgetWithFrame: NSZeroRect label: _(@"Bcc:") alignment: NSRightTextAlignment]; [bccLabel setAutoresizingMask: NSViewMinYMargin]; RETAIN(bccLabel); bccText = [[AutoCompletingTextField alloc] init]; [bccText setAutoresizingMask: NSViewMinYMargin|NSViewWidthSizable]; [[bccText cell] setScrollable: YES]; [bccText setDelegate: [self windowController]]; // Subject subjectLabel = [LabelWidget labelWidgetWithFrame: NSZeroRect label: _(@"Subject:") alignment: NSRightTextAlignment]; [subjectLabel setAutoresizingMask: NSViewMinYMargin]; RETAIN(subjectLabel); subjectText = [[NSTextField alloc] init]; [subjectText setAutoresizingMask: NSViewMinYMargin|NSViewWidthSizable]; [subjectText setDelegate: [self windowController]]; // Size sizeLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,420,740,TextFieldHeight) label: @"0 KB"]; [sizeLabel setFont: [NSFont systemFontOfSize: 10]]; [sizeLabel setTextColor: [NSColor darkGrayColor]]; [sizeLabel setAutoresizingMask: NSViewMinYMargin|NSViewWidthSizable]; RETAIN(sizeLabel); // Scrollview and text view scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect(5,5,740,415)]; [scrollView setBorderType: NSBezelBorder]; [scrollView setHasHorizontalScroller: NO]; [scrollView setHasVerticalScroller: YES]; [scrollView setAutoresizingMask: NSViewHeightSizable|NSViewWidthSizable]; [[scrollView contentView] setAutoresizingMask: NSViewHeightSizable|NSViewWidthSizable]; [[scrollView contentView] setAutoresizesSubviews:YES]; textView = [[ExtendedTextView alloc] initWithFrame: [[scrollView contentView] frame]]; [textView setDelegate: [self windowController]]; [textView setTextContainerInset: NSMakeSize(5,5)]; [textView setBackgroundColor: [NSColor textBackgroundColor]]; [textView setRichText: YES]; [textView setUsesFontPanel: YES]; [textView setHorizontallyResizable: NO]; [textView setVerticallyResizable: YES]; [textView setMinSize: NSMakeSize (0, 0)]; [textView setMaxSize: NSMakeSize (1E7, 1E7)]; [textView setAutoresizingMask: NSViewWidthSizable]; [[textView textContainer] setContainerSize: NSMakeSize([[scrollView contentView] frame].size.width, 1E7)]; [[textView textContainer] setWidthTracksTextView: YES]; [textView setEditable: YES]; [textView setString: @""]; [textView registerForDraggedTypes: [NSArray arrayWithObjects: MessagePboardType, NSFilenamesPboardType,nil]]; [subjectText setNextKeyView: textView]; [scrollView setDocumentView: textView]; // We add our UI elemnts [[self contentView] addSubview: fromLabel]; [[self contentView] addSubview: accountPopUpButton]; [[self contentView] addSubview: usingLabel]; [[self contentView] addSubview: transportMethodPopUpButton]; [[self contentView] addSubview: toLabel]; [[self contentView] addSubview: toText]; [[self contentView] addSubview: subjectLabel]; [[self contentView] addSubview: subjectText]; [[self contentView] addSubview: sizeLabel]; [[self contentView] addSubview: scrollView]; [self setMinSize: NSMakeSize(700,450)]; } @end GNUMail/Framework/GNUMail/EditWindowToolbar.m0100644000014600001460000001242710506157373021551 0ustar monotonemonotone/* ** EditWindowToolbar.m ** ** Copyright (c) 2002-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "EditWindowToolbar.h" #include "Constants.h" @implementation EditWindowController (EditWindowToolbar) // // NSToolbar delegate methods // - (void) toolbarDidRemoveItem: (NSNotification *) theNotification { if ([[theNotification userInfo] objectForKey: @"item"] == send) { DESTROY(send); } else if ([[theNotification userInfo] objectForKey: @"item"] == insert) { DESTROY(insert); } else if ([[theNotification userInfo] objectForKey: @"item"] == addCc) { DESTROY(addCc); } else if ([[theNotification userInfo] objectForKey: @"item"] == addBcc) { DESTROY(addBcc); } else if ([[theNotification userInfo] objectForKey: @"item"] == addresses) { DESTROY(addresses); } else if ([[theNotification userInfo] objectForKey: @"item"] == saveInDrafts) { DESTROY(saveInDrafts); } } // // // - (void) toolbarWillAddItem: (NSNotification *) theNotification { id item; item = [[theNotification userInfo] objectForKey: @"item"]; if ([[item itemIdentifier] isEqualToString: @"send"]) { send = (id)item; RETAIN(send); } else if ([[item itemIdentifier] isEqualToString: @"insert"]) { insert = (id)item; RETAIN(insert); } else if ([[item itemIdentifier] isEqualToString: @"add_cc"]) { addCc = (id)item; RETAIN(addCc); } else if ([[item itemIdentifier] isEqualToString: @"add_bcc"]) { addBcc = (id)item; RETAIN(addBcc); } else if ([[item itemIdentifier] isEqualToString: @"addresses"]) { addresses = (id)item; RETAIN(addresses); } else if ([[item itemIdentifier] isEqualToString: @"save_in_drafts"]) { saveInDrafts = (id)item; RETAIN(saveInDrafts); } } // // // - (NSToolbarItem *) toolbar: (NSToolbar *) toolbar itemForItemIdentifier: (NSString *) itemIdentifier willBeInsertedIntoToolbar: (BOOL) flag { NSToolbarItem *item = [[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; if ([itemIdentifier isEqualToString: @"send"]) { [item setLabel: _(@"Send")]; [item setPaletteLabel: _(@"Send Message")]; [item setImage: [NSImage imageNamed: @"send_32.tiff"]]; [item setTarget: self]; [item setAction: @selector(sendMessage:)]; } else if ([itemIdentifier isEqualToString: @"insert"]) { [item setLabel: _(@"Attach")]; [item setPaletteLabel: _(@"Insert Attachment")]; [item setImage: [NSImage imageNamed: @"attach_32.tiff"]]; [item setTarget: self]; [item setAction: @selector(insertFile:)]; } else if ([itemIdentifier isEqualToString: @"add_cc"]) { [item setLabel: _(@"Add Cc")]; [item setPaletteLabel: _(@"Add Cc Field")]; [item setImage: [NSImage imageNamed: @"add_cc_32.tiff"]]; [item setTarget: self]; [item setAction: @selector(showCc:)]; } else if ([itemIdentifier isEqualToString: @"add_bcc"]) { [item setLabel: _(@"Add Bcc")]; [item setPaletteLabel: _(@"Add Bcc Field")]; [item setImage: [NSImage imageNamed: @"add_bcc_32.tiff"]]; [item setTarget: self]; [item setAction: @selector(showBcc:)]; } else if ([itemIdentifier isEqualToString: @"addresses"]) { [item setLabel: _(@"Addresses")]; [item setPaletteLabel: @"Show Address Book"]; [item setImage: [NSImage imageNamed: @"addresses_32.tiff"]]; [item setTarget: [NSApp delegate]]; [item setAction: @selector(showAddressBook:)]; } else if ([itemIdentifier isEqualToString: @"save_in_drafts"]) { [item setLabel: _(@"Save in Drafts")]; [item setPaletteLabel: @"Add Save in Drafts"]; [item setImage: [NSImage imageNamed: @"drafts_32.tiff"]]; [item setTarget: [NSApp delegate]]; [item setAction: @selector(saveInDrafts:)]; } else { // We return the toolbar item from a bundle... RELEASE(item); return [additionalToolbarItems objectForKey: itemIdentifier]; } return AUTORELEASE(item); } // // // - (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar*) toolbar { return allowedToolbarItemIdentifiers; } // // // - (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar*) toolbar { return [NSArray arrayWithObjects: @"send", @"insert", @"add_cc", @"add_bcc", @"addresses", @"save_in_drafts", nil]; } // // NSToolbarItemValidation protocol // - (BOOL) validateToolbarItem:(NSToolbarItem *) theItem { return [theItem isEnabled]; } @end GNUMail/Framework/GNUMail/ExtendedCell.m0100644000014600001460000000466710424672357020523 0ustar monotonemonotone/* ** ExtendedCell.m ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ExtendedCell.h" #include "Constants.h" #include #include @implementation ExtendedCell // // // - (id) init { self = [super init]; _answered_flag = RETAIN([NSImage imageNamed: @"answered-flag.tiff"]); _recent_flag = RETAIN([NSImage imageNamed: @"recent-flag.tiff"]); _flagged_flag = RETAIN([NSImage imageNamed: @"flagged-flag.tiff"]); _flags = 0; return self; } // // // - (void) dealloc { NSDebugLog(@"ExtendedCell: -dealloc"); RELEASE(_answered_flag); RELEASE(_recent_flag); RELEASE(_flagged_flag); [super dealloc]; } // // // - (id) copyWithZone: (NSZone *) theZone { ExtendedCell *aCell; aCell = [[ExtendedCell alloc] init]; [aCell setFlags: _flags]; return aCell; } // // // - (void) setFlags: (int) theFlags { _flags = theFlags; } // // // - (void) drawWithFrame: (NSRect) cellFrame inView: (NSView *) controlView { [super drawInteriorWithFrame: cellFrame inView: controlView]; if ((_flags&PantomimeSeen) != PantomimeSeen) { [_recent_flag compositeToPoint: NSMakePoint(cellFrame.origin.x+4,cellFrame.origin.y + 12) operation: NSCompositeSourceAtop]; return; } if ((_flags&PantomimeAnswered) == PantomimeAnswered) { [_answered_flag compositeToPoint: NSMakePoint(cellFrame.origin.x+4,cellFrame.origin.y + 12) operation: NSCompositeSourceAtop]; return; } if ((_flags&PantomimeFlagged) == PantomimeFlagged) { [_flagged_flag compositeToPoint: NSMakePoint(cellFrame.origin.x+4,cellFrame.origin.y + 12) operation: NSCompositeSourceAtop]; return; } } @end GNUMail/Framework/GNUMail/ExtendedFileWrapper.m0100644000014600001460000000734410424672357022057 0ustar monotonemonotone/* ** ExtendedFileWrapper.h ** ** Copyright (c) 2004 ** ** Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ExtendedFileWrapper.h" #include "Constants.h" #include "Utilities.h" #include #include // // // @interface ExtendedFileWrapper (Private) - (id) _initWithPath: (NSString *) thePath pathToTar: (NSString *) thePathToTar; - (id) _initWithPath: (NSString *) thePath pathToZip: (NSString *) thePathToZip; @end // // // @implementation ExtendedFileWrapper - (id) initWithPath: (NSString *) thePath { NSFileManager *aFileManager; BOOL aBOOL; aFileManager = [NSFileManager defaultManager]; if ( [aFileManager fileExistsAtPath: thePath isDirectory: &aBOOL] ) { if ( aBOOL ) { NSString *aString, *pathToTar, *pathToZip; NSArray *components; int i; aString = [[[NSProcessInfo processInfo] environment] objectForKey: @"PATH"]; components = [aString componentsSeparatedByString: @":"]; pathToTar = nil; pathToZip = nil; for (i = 0; i < [components count]; i++) { if ( [aFileManager isExecutableFileAtPath: [NSString stringWithFormat: @"%@/zip", [components objectAtIndex: i]]] ) { pathToZip = [NSString stringWithFormat: @"%@/zip", [components objectAtIndex: i]]; break; } else if ( [aFileManager isExecutableFileAtPath: [NSString stringWithFormat: @"%@/tar", [components objectAtIndex: i]]] ) { pathToTar = [NSString stringWithFormat: @"%@/tar", [components objectAtIndex: i]]; } } if ( pathToZip ) { return [self _initWithPath: thePath pathToZip: pathToZip]; } else if ( pathToTar ) { return [self _initWithPath: thePath pathToTar: pathToTar]; } } else { return [super initWithPath: thePath]; } } // If the file doesn't exist or if the path to tar/zip // are both nil, we fall back here. AUTORELEASE(self); return nil; } @end @implementation ExtendedFileWrapper (Private) - (id) _initWithPath: (NSString *) thePath pathToTar: (NSString *) thePathToTar { NSTask *aTask; aTask = [NSTask launchedTaskWithLaunchPath: thePathToTar arguments: [NSArray arrayWithObjects: @"-cf", [NSString stringWithFormat: @"%@/%@.tar", GNUMailTemporaryDirectory(), [thePath lastPathComponent]], thePath, nil]]; [aTask waitUntilExit]; return [super initWithPath: [NSString stringWithFormat: @"%@/%@.tar", GNUMailTemporaryDirectory(), [thePath lastPathComponent]]]; } - (id) _initWithPath: (NSString *) thePath pathToZip: (NSString *) thePathToZip { NSTask *aTask; aTask = [NSTask launchedTaskWithLaunchPath: thePathToZip arguments: [NSArray arrayWithObjects: @"-q", [NSString stringWithFormat: @"%@/%@.zip", GNUMailTemporaryDirectory(), [thePath lastPathComponent]], @"-r", thePath, nil]]; [aTask waitUntilExit]; return [super initWithPath: [NSString stringWithFormat: @"%@/%@.zip", GNUMailTemporaryDirectory(), [thePath lastPathComponent]]]; } @end GNUMail/Framework/GNUMail/ExtendedMenuItem.m0100644000014600001460000000242210424672357021352 0ustar monotonemonotone/* ** ExtendedMenuItem.h ** ** Copyright (c) 2002-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ExtendedMenuItem.h" #include #include "Constants.h" @implementation ExtendedMenuItem - (void) dealloc { RELEASE(_key); [super dealloc]; } - (NSString *) key { return _key; } - (void) setKey: (NSString *) theKey { ASSIGN(_key, theKey); } - (NSTextAttachment *) textAttachment { return _textAttachment; } - (void) setTextAttachment: (NSTextAttachment *) theTextAttachment { _textAttachment = theTextAttachment; } @end GNUMail/Framework/GNUMail/ExtendedOutlineView.m0100644000014600001460000000770010606371542022077 0ustar monotonemonotone/* ** ExtendedOutlineView.m ** ** Copyright (c) 2002-2007 ** ** Author: Francis Lachapelle ** Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ExtendedOutlineView.h" #include "Constants.h" #include "MailboxManagerController.h" #include "MailWindowController.h" /*! * @class ExtendedOutlineView * @abstract This class overwrites some methods of NSOutlineView. * @discussion This class is used by the MailboxManager class so * all items look like folders un Mac OS X and items * can be dragged on items and not inbetween nodes. * */ @implementation ExtendedOutlineView: NSOutlineView - (BOOL) acceptsFirstMouse: (NSEvent *) theEvent { return YES; } // // // - (NSMenu *) menuForEvent: (NSEvent *) theEvent { int row; id item; row = [self rowAtPoint: [self convertPoint: [theEvent locationInWindow] fromView: nil]]; if (row >= 0) { [self abortEditing]; item = [self itemAtRow: row]; if (item) { id delegate; delegate = [self delegate]; if ( [self numberOfSelectedRows] <= 1 ) { [self selectRow: row byExtendingSelection: NO]; } if ( [delegate respondsToSelector: @selector(outlineView:contextMenuForItem:)] ) { return [delegate outlineView: self contextMenuForItem: item]; } else if ( [delegate respondsToSelector: @selector(dataView:contextMenuForRow:)] ) { return [delegate dataView: self contextMenuForRow: row]; } } } else { [self deselectAll: self]; return [self menu]; } return nil; } - (void) keyDown:(NSEvent *)ev { NSString *characters = [ev characters]; int i, c; for (i = 0, c = [characters length]; i < c; i++) { switch([characters characterAtIndex:i]) { case '\t': [[self delegate] performSelector:@selector(_switchWindows:) withObject:self]; break; default: [super keyDown:ev]; return; } } } // // // - (void) textDidEndEditing: (NSNotification *) theNotification { NSMutableDictionary *aDictionary; aDictionary = [NSMutableDictionary dictionaryWithDictionary: [theNotification userInfo]]; [aDictionary setObject: [NSNumber numberWithInt: NSIllegalTextMovement] forKey: @"NSTextMovement"]; [super textDidEndEditing: [NSNotification notificationWithName: [theNotification name] object: [theNotification object] userInfo: aDictionary]]; } /*! * @method shouldCollapseAutoExpandedItemsForDeposited: * @abstract Indicate if auto expanded items should return to * their original collapsed state. * @discussion * @param deposited Tells whether or not the drop terminated due * to a successful drop. * @result Always returns NO, so that items never return to * their original collapsed state. */ - (BOOL) shouldCollapseAutoExpandedItemsForDeposited: (BOOL) deposited { return NO; } // // // - (NSImage *) dragImageForRows: (NSArray *) dragRows event: (NSEvent *) dragEvent dragImageOffset: (NSPointPointer) dragImageOffset { if ([dragRows count] > 1) { return [NSImage imageNamed: @"drag_mails.tiff"]; } return [NSImage imageNamed: @"drag_mail.tiff"]; } @end GNUMail/Framework/GNUMail/ExtendedTableView.m0100644000014600001460000001276610606371542021517 0ustar monotonemonotone/* ** ExtendedTableView.m ** ** Copyright (c) 2002-2007 ** ** Author: Francis Lachapelle ** Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ExtendedTableView.h" #include "Constants.h" #include "MailWindowController.h" // // // @interface ExtendedTableView (Private) - (NSString *) _typedString; - (void) _setTypedString: (NSString *) theString; - (void) _appendToTypedString: (NSString *) theString; @end // // // @implementation ExtendedTableView - (void) dealloc { TEST_RELEASE(_typedString); TEST_RELEASE(_currentSortOrder); TEST_RELEASE(_previousSortOrder); [super dealloc]; } - (BOOL) acceptsFirstMouse: (NSEvent *) theEvent { return YES; } // // // - (NSImage *) dragImageForRows: (NSArray *) dragRows event: (NSEvent *) dragEvent dragImageOffset: (NSPointPointer) dragImageOffset { if ([dragRows count] > 1) { return [NSImage imageNamed: @"drag_mails.tiff"]; } return [NSImage imageNamed: @"drag_mail.tiff"]; } // // // - (NSMenu *) menuForEvent: (NSEvent *) theEvent { int row; row = [self rowAtPoint: [self convertPoint: [theEvent locationInWindow] fromView: nil]]; if (row >= 0) { id delegate; delegate = [self delegate]; if ([self numberOfSelectedRows] <= 1) { [self selectRow: row byExtendingSelection: NO]; } if ([delegate respondsToSelector: @selector(dataView:contextMenuForRow:)]) { return [delegate dataView: self contextMenuForRow: row]; } } else { [self deselectAll: self]; return [self menu]; } return nil; } // // // - (void) setDropRow: (int) row dropOperation: (NSTableViewDropOperation) operation { [super setDropRow: -1 dropOperation: NSTableViewDropOn]; } // DOCS FOR KEYDOWN, DOCOMMANDBYSELECTOR AND INSERTTEXT // // this table view accepts typing, informingits delegate // that some string has been typed. We use it to get 'type-ahead' behavior - // search google for that if you want. - (void) keyDown: (NSEvent *) theEvent { [self interpretKeyEvents: [NSArray arrayWithObject: theEvent]]; [super keyDown: theEvent]; } - (void) doCommandBySelector: (SEL) theSelector { // do nothing, we only react to insertText: } - (void) insertText: (id) theString { [self _appendToTypedString: theString]; [NSObject cancelPreviousPerformRequestsWithTarget: self selector: @selector(_didReceiveTyping) object: nil]; [NSObject cancelPreviousPerformRequestsWithTarget: self selector: @selector(_setTypedString:) object: @""]; [self performSelector: @selector(_didReceiveTyping) withObject: nil afterDelay: 0.1]; [self performSelector: @selector(_setTypedString:) withObject: @"" afterDelay: 1.0]; } // // We check if the row is the last selected one and is visible. The // row must also NOT be the last one that CAN BE selected. That is, // the current selected row is the last one visible but some more // rows might have been added. // - (void) scrollIfNeeded { NSRect r1, r2; int row; row = [self selectedRow]; if (row < 0 || [self numberOfSelectedRows] > 1) { return; } // We get the rect our of selected row r1 = [self rectOfRow: [self selectedRow]]; // We get the visible rect the scrollview r2 = [(NSScrollView *)[self superview] documentVisibleRect]; if (((r1.origin.y+r1.size.height) >= (r2.origin.y+r2.size.height-r1.size.height)) && (row < ([self numberOfRows]-1)) && !_reverseOrder) { r2.origin.y += r1.size.height; [self scrollRectToVisible: r2]; } } // // // - (void) setReverseOrder: (BOOL) theBOOL { _reverseOrder = theBOOL; } - (BOOL) isReverseOrder { return _reverseOrder; } // // // - (void) setReloading: (BOOL) theBOOL { _reloading = theBOOL; } - (BOOL) isReloading { return _reloading; } // // // - (NSString *) currentSortOrder { return _currentSortOrder; } // // // - (void) setCurrentSortOrder: (NSString *) theCurrentOrder { ASSIGN(_currentSortOrder, theCurrentOrder); } // // // - (NSString *) previousSortOrder { return _previousSortOrder; } // // // - (void) setPreviousSortOrder: (NSString *) thePreviousOrder { ASSIGN(_previousSortOrder, thePreviousOrder); } @end // // // @implementation ExtendedTableView (Private) - (void) _didReceiveTyping { if ([[self delegate] respondsToSelector: @selector(tableView:didReceiveTyping:)]) { [[self delegate] tableView: self didReceiveTyping: [self _typedString]]; } } - (NSString *) _typedString { return AUTORELEASE([_typedString copy]); } - (void) _setTypedString: (NSString *) theString { AUTORELEASE(_typedString); _typedString = [theString mutableCopy]; } - (void)_appendToTypedString: (NSString *) theString { if (!_typedString) { [self _setTypedString: @""]; } [_typedString appendString: theString]; } @end GNUMail/Framework/GNUMail/ExtendedTextAttachmentCell.m0100644000014600001460000000604110424672357023365 0ustar monotonemonotone/* ** ExtendedTextAttachmentCell.m ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ExtendedTextAttachmentCell.h" #include "Constants.h" #include // // // @implementation ExtendedTextAttachmentCell - (id) initWithFilename: (NSString *) theFilename size: (int) theSize { NSMutableDictionary *attributes; NSString *aString; self = [super init]; _part = nil; // We create our string that we'll display under the attachment cell if ( (theSize / 1024) == 0 ) { aString = [NSString stringWithFormat: _(@"%@ (%d bytes)"), theFilename, theSize]; } else { aString = [NSString stringWithFormat: _(@"%@ (%d KB)"), theFilename, theSize/1024]; } // We create a set of attributes (base font, color red) attributes = [[NSMutableDictionary alloc] init]; [attributes setObject: [NSColor redColor] forKey: NSForegroundColorAttributeName]; #ifdef MACOSX [attributes setObject: [NSFont systemFontOfSize: 10] forKey: NSFontAttributeName]; #else [attributes setObject: [NSFont systemFontOfSize: 0] forKey: NSFontAttributeName]; #endif _attributedString = [[NSAttributedString alloc] initWithString: aString attributes: attributes]; RELEASE(attributes); return self; } // // // - (void) dealloc { RELEASE(_attributedString); TEST_RELEASE(_part); [super dealloc]; } // // // - (NSSize) cellSize { NSSize aSize; aSize = [super cellSize]; aSize.height += 15; if (aSize.width < [_attributedString size].width) { aSize.width = [_attributedString size].width; } return aSize; } // // // - (void) drawWithFrame: (NSRect) cellFrame inView: (NSView *) controlView { int delta; cellFrame.origin.y -= 7.5; [super drawWithFrame: cellFrame inView: controlView]; if ([self cellSize].width > [_attributedString size].width) { delta = ([self cellSize].width/2) - ([_attributedString size].width/2); } else { delta = 0; } [_attributedString drawInRect: NSMakeRect(cellFrame.origin.x + delta, cellFrame.origin.y + cellFrame.size.height - 5, cellFrame.size.width, 15) ]; } // // access/mutation methods // - (CWPart *) part { return _part; } - (void) setPart: (CWPart *) thePart { ASSIGN(_part, thePart); } @end GNUMail/Framework/GNUMail/ExtendedTextView.m0100644000014600001460000002477410601706267021417 0ustar monotonemonotone/* ** ExtendedTextView.m ** ** Copyright (c) 2002-2006 ** ** Author: Ujwal S. Sathyam ** Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ExtendedTextView.h" #include "ExtendedFileWrapper.h" #include "ExtendedTextAttachmentCell.h" #include "GNUMail.h" #include "Constants.h" #include "MimeTypeManager.h" #include "MimeType.h" #include "Utilities.h" #include static int imageCounter = 0; // // Private methods // @interface ExtendedTextView (Private) - (unsigned int) _checkForSupportedDragTypes:(id ) sender; @end // // // @implementation ExtendedTextView - (id) init { self = [super init]; if (cursor == nil) { cursor = [[NSCursor alloc] initWithImage: [NSImage imageNamed: @"hand"] hotSpot: NSZeroPoint]; } return self; } - (id) initWithFrame: (NSRect) theFrame { self = [super initWithFrame: theFrame]; if (cursor == nil) { cursor = [[NSCursor alloc] initWithImage: [NSImage imageNamed: @"hand"] hotSpot: NSZeroPoint]; } return (self); } - (id) initWithFrame: (NSRect) theRect textContainer: (NSTextContainer *) theTextContainer { self = [super initWithFrame: theRect textContainer: theTextContainer]; if (cursor == nil) { cursor = [[NSCursor alloc] initWithImage: [NSImage imageNamed: @"hand"] hotSpot: NSZeroPoint]; } return (self); } // // // - (void) dealloc { RELEASE(cursor); [super dealloc]; } // // NSTextView // - (void) paste: (id) sender { if ([[[NSPasteboard generalPasteboard] types] containsObject: NSTIFFPboardType]) { [self insertImageData: [[NSPasteboard generalPasteboard] dataForType: NSTIFFPboardType] filename: [NSString stringWithFormat: @"pasteGraphic%d.tiff", ++imageCounter]]; } else { [self readSelectionFromPasteboard: [NSPasteboard generalPasteboard]]; } } - (void) pasteAsQuoted: (id) sender { NSData *aData; aData = [[[NSPasteboard generalPasteboard] stringForType: NSStringPboardType] dataUsingEncoding: NSUTF8StringEncoding]; if (aData) { [self insertText: AUTORELEASE([[NSString alloc] initWithData: [[aData unwrapWithLimit: 78] quoteWithLevel: 1 wrappingLimit: 80] encoding: NSUTF8StringEncoding])]; } } // // Drag and Drop methods for our text view // // // Ensure that we declare the dragging types we will accept // (such as NSFilenamesPBoardType) // - (NSArray *) acceptableDragTypes { NSMutableArray *dragTypes; dragTypes = [NSMutableArray arrayWithArray: [super acceptableDragTypes]]; if (![dragTypes containsObject: NSFilenamesPboardType]) { [dragTypes addObject: NSFilenamesPboardType]; } return dragTypes; } // // Called when our drop area is entered // - (unsigned int) draggingEntered: (id) sender { return [self _checkForSupportedDragTypes: sender]; } // // Called when the dragged object is moved within our drop area // - (unsigned int) draggingUpdated: (id) sender { return [self _checkForSupportedDragTypes: sender]; } // // Called when the dragged item is about to be released in our drop area. // - (BOOL) prepareForDragOperation: (id) sender { if ([self _checkForSupportedDragTypes: sender] != NSDragOperationNone) { return YES; } return NO; } // // Called when the dragged item is released in our drop area. // - (BOOL) performDragOperation: (id) sender { NSPasteboard *pb = [sender draggingPasteboard]; NSArray *propertyList; int i, dragOperation; dragOperation = [self _checkForSupportedDragTypes: sender]; switch (dragOperation) { case NSDragOperationCopy: propertyList = [pb propertyListForType: NSFilenamesPboardType]; for (i = 0; i < [propertyList count]; i++) { [self insertFile: (NSString*)[propertyList objectAtIndex: i]]; } return YES; } return NO; } // // // - (void) concludeDragOperation: (id) sender { // Do nothing. } // // Inserts an individual file. // - (void) insertFile: (NSString *) theFilename { NSAttributedString *aAttributedString; NSTextAttachment *aTextAttachment; ExtendedTextAttachmentCell *cell; ExtendedFileWrapper *aFileWrapper; MimeType *aMimeType; aFileWrapper = [[ExtendedFileWrapper alloc] initWithPath: theFilename]; AUTORELEASE(aFileWrapper); // We save the path of the last file [GNUMail setCurrentWorkingPath: [theFilename stringByDeletingLastPathComponent]]; // We set the icon of the attachment if the mime-type is found aMimeType = [[MimeTypeManager singleInstance] bestMimeTypeForFileExtension: [[theFilename lastPathComponent] pathExtension]]; // If we found a MIME-type for this attachment... if ((aMimeType && [aMimeType icon]) || (aMimeType && [[aMimeType primaryType] caseInsensitiveCompare: @"image"] == NSOrderedSame)) { // If we got an image, we resize our attachment to fix the text view, if we need to. if ([[aMimeType primaryType] caseInsensitiveCompare: @"image"] == NSOrderedSame) { [self insertImageData: [NSData dataWithContentsOfFile: theFilename] filename: [theFilename lastPathComponent]]; return; } else { [aFileWrapper setIcon: [aMimeType icon]]; } } // We now create our attachment from our filewrapper aTextAttachment = [[NSTextAttachment alloc] initWithFileWrapper: aFileWrapper]; cell = [[ExtendedTextAttachmentCell alloc] initWithFilename: [[aFileWrapper filename] lastPathComponent] size: [[aFileWrapper regularFileContents] length]]; [aTextAttachment setAttachmentCell: cell]; // Cocoa bug #ifdef MACOSX [cell setAttachment: aTextAttachment]; [cell setImage: [aFileWrapper icon]]; #endif RELEASE(cell); aAttributedString = [NSAttributedString attributedStringWithAttachment: aTextAttachment]; RELEASE(aTextAttachment); if (aAttributedString) { [self insertText: (id)aAttributedString]; } } // // // - (void) insertImageData: (NSData *) theData filename: (NSString *) theFilename { ExtendedFileWrapper *aFileWrapper; NSTextAttachment *aTextAttachment; ExtendedTextAttachmentCell *cell; NSImage *theImage; NSRect rectOfTextView; NSSize imageSize; theImage = AUTORELEASE([[NSImage alloc] initWithData: theData]); rectOfTextView = [self frame]; imageSize = [theImage size]; if (imageSize.width > rectOfTextView.size.width) { double delta = 1.0 / ( imageSize.width / rectOfTextView.size.width ); double dy = 15*delta; [theImage setScalesWhenResized: YES]; [theImage setSize: NSMakeSize(((imageSize.width-15) * delta), (imageSize.height-dy) * delta)]; } aFileWrapper = AUTORELEASE([[ExtendedFileWrapper alloc] initRegularFileWithContents: theData]); [aFileWrapper setFilename: theFilename]; [aFileWrapper setIcon: theImage]; aTextAttachment = [[NSTextAttachment alloc] initWithFileWrapper: aFileWrapper]; cell = [[ExtendedTextAttachmentCell alloc] initWithFilename: theFilename size: [[aFileWrapper regularFileContents] length]]; [aTextAttachment setAttachmentCell: cell]; // Cocoa bug #ifdef MACOSX [cell setAttachment: aTextAttachment]; [cell setImage: [aFileWrapper icon]]; #endif RELEASE(cell); [self insertText: [NSAttributedString attributedStringWithAttachment: aTextAttachment]]; RELEASE(aTextAttachment); } // // // - (void) updateCursorForLinks { NSTextStorage *aTextStorage; NSRange visibleGlyphRange, visibleCharRange, attrsRange; NSPoint aPoint; NSRect aRect; // We get the attributed text aTextStorage = [self textStorage]; // We found out what part is visible aPoint = [self textContainerOrigin]; aRect = NSOffsetRect ([self visibleRect], -aPoint.x, -aPoint.y); // We found out what characters are visible visibleGlyphRange = [[self layoutManager] glyphRangeForBoundingRect: aRect inTextContainer: [self textContainer]]; visibleCharRange = [[self layoutManager] characterRangeForGlyphRange: visibleGlyphRange actualGlyphRange: NULL]; attrsRange = NSMakeRange(visibleCharRange.location, 0); // Loop whitin the visible range of characters while (NSMaxRange(attrsRange) < NSMaxRange(visibleCharRange)) { if ( [aTextStorage attribute: NSLinkAttributeName atIndex: NSMaxRange(attrsRange) effectiveRange: &attrsRange] ) { unsigned int rectCount, rectIndex; NSRect *rects; // Find the rectangle(s) associated to the link // NB: there may be multiple rects if the link uses many lines rects = [[self layoutManager] rectArrayForCharacterRange: attrsRange #ifdef MACOSX withinSelectedCharacterRange: NSMakeRange(NSNotFound, 0) #else withinSelectedCharacterRange: attrsRange #endif inTextContainer: [self textContainer] rectCount: &rectCount]; // For the visible part of each rectangle, make the cursor visible for (rectIndex = 0; rectIndex < rectCount; rectIndex++) { aRect = NSIntersectionRect(rects[rectIndex], [self visibleRect]); [self addCursorRect: aRect cursor: cursor]; } } } } // // // - (void) resetCursorRects { [super resetCursorRects]; [self updateCursorForLinks]; } @end // // private methods // @implementation ExtendedTextView (Private) - (unsigned int) _checkForSupportedDragTypes: (id) sender { NSString *sourceType; BOOL iResult; iResult = NSDragOperationNone; // We support the FileName drag type for attching files sourceType = [[sender draggingPasteboard] availableTypeFromArray: [NSArray arrayWithObjects: NSFilenamesPboardType, NSStringPboardType, nil]]; if (sourceType) { iResult = NSDragOperationCopy; } return iResult; } @end GNUMail/Framework/GNUMail/ExtendedWindow.m0100644000014600001460000000746610424672357021113 0ustar monotonemonotone/* ** ExtendedWindow.m ** ** Copyright (c) 2001-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ExtendedWindow.h" #include "Constants.h" #include "MailWindowController.h" // // // @implementation ExtendedWindow #ifdef MACOSX - (NSDragOperation) draggingUpdated: (id)sender { NSWindow *aWindow; aWindow = [sender draggingDestinationWindow]; if ([[aWindow windowController] isKindOfClass: [MailWindowController class]]) { NSPoint aPoint; NSRect aRect; int state; state = [[[aWindow drawers] lastObject] state]; aPoint = [sender draggingLocation]; aRect = [aWindow frame]; if (aPoint.x < 5 && state == NSDrawerClosedState) { [[[aWindow drawers] lastObject] openOnEdge: NSMinXEdge]; } else if (aPoint.x > aRect.size.width-5 && state == NSDrawerClosedState) { [[[aWindow drawers] lastObject] openOnEdge: NSMaxXEdge]; } } return NSDragOperationNone; } #endif // // // - (void) keyDown: (NSEvent *) theEvent { NSString *characters; unichar character; characters = [theEvent characters]; character = 0; if ( [characters length] > 0 ) { character = [characters characterAtIndex: 0]; switch ( character ) { case '\n': case '\r': #ifdef MACOSX case 0x03: // Enter key #endif if ([_delegate isKindOfClass: [MailWindowController class]]) { [(MailWindowController *)_delegate doubleClickedOnDataView: _delegate]; } break; case NSUpArrowFunctionKey: if ([theEvent modifierFlags] & NSControlKeyMask) { [(MailWindowController *)_delegate previousUnreadMessage: _delegate]; } else { [(MailWindowController *)_delegate previousMessage: _delegate]; } break; case NSDownArrowFunctionKey: if ([theEvent modifierFlags] & NSControlKeyMask) { [(MailWindowController *)_delegate nextUnreadMessage: _delegate]; } else { [(MailWindowController *)_delegate nextMessage: _delegate]; } break; case NSLeftArrowFunctionKey: if ([theEvent modifierFlags] & NSControlKeyMask) { [(MailWindowController *)_delegate previousInThread: _delegate]; } break; case NSRightArrowFunctionKey: if ([theEvent modifierFlags] & NSControlKeyMask) { [(MailWindowController *)_delegate nextInThread: _delegate]; } break; case NSPageUpFunctionKey: case '-': [(MailWindowController *)_delegate pageUpMessage: _delegate]; break; case NSPageDownFunctionKey: case ' ': [(MailWindowController *)_delegate pageDownMessage: _delegate]; break; case NSHomeFunctionKey: case NSBeginFunctionKey: [(MailWindowController *)_delegate firstMessage: _delegate]; break; case NSEndFunctionKey: [(MailWindowController *)_delegate lastMessage: _delegate]; break; case NSDeleteFunctionKey: case NSBackspaceCharacter: case NSDeleteCharacter: [(MailWindowController *)_delegate deleteMessage: self]; break; } } } @end GNUMail/Framework/GNUMail/Filter.m0100644000014600001460000002570610424672357017405 0ustar monotonemonotone/* ** Filter.m ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "Filter.h" #include "Constants.h" static int currentFilterVersion = 4; // // // @implementation Filter - (id) init { FilterCriteria *aFilterCriteria; self = [super init]; [Filter setVersion: currentFilterVersion]; [self setIsActive: YES]; [self setDescription: @""]; [self setType: TYPE_INCOMING]; // We initialize our 3 filter criterias _allCriterias = [[NSMutableArray alloc] init]; aFilterCriteria = [[FilterCriteria alloc] init]; [_allCriterias addObject: aFilterCriteria]; RELEASE(aFilterCriteria); aFilterCriteria = [[FilterCriteria alloc] init]; [aFilterCriteria setCriteriaSource: NONE]; [_allCriterias addObject: aFilterCriteria]; RELEASE(aFilterCriteria); aFilterCriteria = [[FilterCriteria alloc] init]; [aFilterCriteria setCriteriaSource: NONE]; [_allCriterias addObject: aFilterCriteria]; RELEASE(aFilterCriteria); // We initialize the rest of our ivars [self setAction: SET_COLOR]; [self setActionColor: [NSColor lightGrayColor]]; [self setActionFolderName: @""]; [self setActionEMailOperation: BOUNCE]; [self setActionEMailString: @""]; [self setActionMessageString: @""]; [self setExternalProgramName: @""]; [self setPathToSound: @""]; return self; } // // // - (void) dealloc { RELEASE(_description); RELEASE(_externalProgramName); RELEASE(_allCriterias); RELEASE(_actionColor); RELEASE(_actionFolderName); RELEASE(_actionEMailString); RELEASE(_actionMessageString); RELEASE(_pathToSound); [super dealloc]; } // // NSCoding protocol // - (void) encodeWithCoder: (NSCoder *) theCoder { [Filter setVersion: currentFilterVersion]; [theCoder encodeObject: [NSNumber numberWithBool: [self isActive]]]; [theCoder encodeObject: [self description] ]; [theCoder encodeObject: [NSNumber numberWithInt: [self type]]]; [theCoder encodeObject: [NSNumber numberWithBool: [self useExternalProgram]]]; [theCoder encodeObject: [self externalProgramName] ]; [theCoder encodeObject: [NSNumber numberWithInt: [self externalProgramOperation]]]; [theCoder encodeObject: [self allCriterias]]; [theCoder encodeObject: [NSNumber numberWithInt: [self action]]]; [theCoder encodeObject: [self actionColor]]; [theCoder encodeObject: [self actionFolderName]]; [theCoder encodeObject: [NSNumber numberWithInt: [self actionEMailOperation]]]; [theCoder encodeObject: [self actionEMailString]]; [theCoder encodeObject: [self actionMessageString]]; [theCoder encodeObject: [self pathToSound]]; } - (id) initWithCoder: (NSCoder *) theCoder { int version; version = [theCoder versionForClassName: NSStringFromClass([self class])]; //NSDebugLog(@"Filter's Version number = %d", version); self = [super init]; // NOTE: After Version 1.0.1 of GNUMail, we removed the support for version 0 and 1 // of the filters. // After 1.1.0pre1, we removed support for version 2. if (version >= 3) { [self setIsActive: [[theCoder decodeObject] boolValue]]; [self setDescription: [theCoder decodeObject]]; [self setType: [[theCoder decodeObject] intValue]]; [self setUseExternalProgram: [[theCoder decodeObject] boolValue]]; [self setExternalProgramName: [theCoder decodeObject]]; [self setExternalProgramOperation: [[theCoder decodeObject] intValue]]; [self setCriterias: [theCoder decodeObject]]; [self setAction: [[theCoder decodeObject] intValue]]; [self setActionColor: [theCoder decodeObject]]; [self setActionFolderName: [theCoder decodeObject]]; [self setActionEMailOperation: [[theCoder decodeObject] intValue]]; [self setActionEMailString: [theCoder decodeObject]]; [self setActionMessageString: [theCoder decodeObject]]; if (version == 4) { [self setPathToSound: [theCoder decodeObject]]; } } else { [NSException raise: NSInternalInconsistencyException format: @"Filter cache error. Ignoring all entries."]; } return self; } // // NSCopying protocol // - (id) copyWithZone: (NSZone *) zone { NSArray *criterias; Filter *aFilter; aFilter = [[Filter alloc] init]; [aFilter setIsActive: [self isActive]]; [aFilter setDescription: [self description]]; [aFilter setType: [self type]]; [aFilter setUseExternalProgram: [self useExternalProgram]]; [aFilter setExternalProgramName: [self externalProgramName]]; [aFilter setExternalProgramOperation: [self externalProgramOperation]]; // We MUST copy all criterias criterias = [[NSArray alloc] initWithArray: [self allCriterias] copyItems: YES]; [aFilter setCriterias: criterias]; RELEASE(criterias); [aFilter setAction: [self action]]; [aFilter setActionColor: [self actionColor]]; [aFilter setActionFolderName: [self actionFolderName]]; [aFilter setActionEMailOperation: [self actionEMailOperation]]; [aFilter setActionEMailString: [self actionEMailString]]; [aFilter setActionMessageString: [self actionMessageString]]; [aFilter setPathToSound: [self pathToSound]]; return aFilter; } // // access/mutation methods // - (BOOL) isActive { return _isActive; } - (void) setIsActive: (BOOL) theBOOL { _isActive = theBOOL; } // // // - (NSString *) description { return _description; } - (void) setDescription: (NSString *) theDescription { ASSIGN(_description, theDescription); } // // // - (int) type { return _type; } - (void) setType: (int) theType { _type = theType; } // // // - (BOOL) useExternalProgram { return _useExternalProgram; } - (void) setUseExternalProgram: (BOOL) theBOOL { _useExternalProgram = theBOOL; } // // // - (NSString *) externalProgramName { return _externalProgramName; } - (void) setExternalProgramName: (NSString *) theExternalProgramName { ASSIGN(_externalProgramName, theExternalProgramName); } // // // - (int) externalProgramOperation { return _externalProgramOperation; } - (void) setExternalProgramOperation: (int) theExternalProgramOperation { _externalProgramOperation = theExternalProgramOperation; } // // // - (NSArray *) allCriterias { return [NSArray arrayWithArray: _allCriterias]; } - (void) setCriterias: (NSArray *) theCriterias { RELEASE(_allCriterias); _allCriterias = [[NSMutableArray alloc] initWithArray: theCriterias]; } // // // - (int) action { return _action; } - (void) setAction: (int) theAction { _action = theAction; } // // // - (NSColor *) actionColor { return _actionColor; } - (void) setActionColor: (NSColor *) theActionColor { ASSIGN(_actionColor, theActionColor); } // // // - (NSString *) actionFolderName { return _actionFolderName; } - (void) setActionFolderName: (NSString *) theActionFolderName { ASSIGN(_actionFolderName, theActionFolderName); } // // // - (int) actionEMailOperation { return _actionEMailOperation; } - (void) setActionEMailOperation: (int) theActionEMailOperation { _actionEMailOperation = theActionEMailOperation; } // // // - (NSString *) actionEMailString { return _actionEMailString; } - (void) setActionEMailString: (NSString *) theActionEMailString { ASSIGN(_actionEMailString, theActionEMailString); } // // // - (NSString *) actionMessageString { return _actionMessageString; } - (void) setActionMessageString: (NSString *) theActionMessageString { ASSIGN(_actionMessageString, theActionMessageString); } // // // - (NSString *) pathToSound { return _pathToSound; } - (void) setPathToSound: (NSString *) thePath { ASSIGN(_pathToSound, thePath); } @end // // // @implementation FilterCriteria - (id) init { self = [super init]; [self setCriteriaCondition: AND]; [self setCriteriaSource: NONE]; [self setCriteriaHeaders: [NSArray array]]; [self setCriteriaFindOperation: CONTAINS]; [self setCriteriaString: @""]; return self; } - (void) dealloc { RELEASE(_criteriaHeaders); RELEASE(_criteriaString); [super dealloc]; } // // NSCoding protocol // - (void) encodeWithCoder: (NSCoder *) theCoder { [theCoder encodeObject: [NSNumber numberWithInt: [self criteriaCondition]]]; [theCoder encodeObject: [NSNumber numberWithInt: [self criteriaSource]]]; [theCoder encodeObject: [self criteriaHeaders]]; [theCoder encodeObject: [NSNumber numberWithInt: [self criteriaFindOperation]]]; [theCoder encodeObject: [self criteriaString]]; } - (id) initWithCoder: (NSCoder *) theCoder { self = [super init]; [self setCriteriaCondition: [[theCoder decodeObject] intValue]]; [self setCriteriaSource: [[theCoder decodeObject] intValue]]; [self setCriteriaHeaders: [theCoder decodeObject]]; [self setCriteriaFindOperation: [[theCoder decodeObject] intValue]]; [self setCriteriaString: [theCoder decodeObject] ]; return self; } // // NSCopying protocol // - (id) copyWithZone: (NSZone *) zone { FilterCriteria *aFilterCriteria; NSArray *headers; aFilterCriteria = [[FilterCriteria alloc] init]; [aFilterCriteria setCriteriaCondition: [self criteriaCondition]]; [aFilterCriteria setCriteriaSource: [self criteriaSource]]; // We MUST copy the headers headers = [[NSArray alloc] initWithArray: [self criteriaHeaders] copyItems: YES]; [aFilterCriteria setCriteriaHeaders: headers]; RELEASE(headers); [aFilterCriteria setCriteriaFindOperation: [self criteriaFindOperation]]; [aFilterCriteria setCriteriaString: AUTORELEASE([[self criteriaString] copy]) ]; return aFilterCriteria; } // // access / mutation methods // - (int) criteriaCondition { return _criteriaCondition; } - (void) setCriteriaCondition: (int) theCriteriaCondition { _criteriaCondition = theCriteriaCondition; } // // // - (int) criteriaSource { return _criteriaSource; } - (void) setCriteriaSource: (int) theCriteriaSource { _criteriaSource = theCriteriaSource; } // // // - (NSArray *) criteriaHeaders { return _criteriaHeaders; } - (void) setCriteriaHeaders: (NSArray *) theCriteriaHeaders { ASSIGN(_criteriaHeaders, theCriteriaHeaders); } // // // - (int) criteriaFindOperation { return _criteriaFindOperation; } - (void) setCriteriaFindOperation: (int) theCriteriaFindOperation { _criteriaFindOperation = theCriteriaFindOperation; } // // // - (NSString *) criteriaString { return _criteriaString; } - (void) setCriteriaString: (NSString *) theCriteriaString { ASSIGN(_criteriaString, theCriteriaString); } @end GNUMail/Framework/GNUMail/FilterManager.m0100644000014600001460000005321610504172776020674 0ustar monotonemonotone/* ** FilterManager.m ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "FilterManager.h" #include "AddressBookController.h" #include "ConsoleWindowController.h" #include "Constants.h" #include "Filter.h" #include "MailboxManagerController.h" #include "Utilities.h" #include #include #include #include #include #include #include static FilterManager *singleInstance = nil; // // private methods // @interface FilterManager (Private) - (CWMessage *) _messageFromExternalProgramUsingFilter: (Filter *) theFilter message: (CWMessage *) theMessage; - (BOOL) _matchCriteriasFromMessage: (CWMessage *) theMessage filter: (Filter *) theFilter; - (BOOL) _matchStrings: (NSArray *) theStrings operation: (int) theOperation criteria: (NSString *) theCriteria; - (NSArray *) _stringsFromMessage: (CWMessage *) theMessage criteria: (FilterCriteria *) theFilterCriteria; @end NSString *PathToFilters() { return [NSString stringWithFormat: @"%@/%@", GNUMailUserLibraryPath(), @"Filters"]; } // // // @implementation FilterManager - (id) init { self = [super init]; [self setFilters: [NSMutableArray array]]; return self; } // // // - (void) dealloc { RELEASE(_filters); [super dealloc]; } // // // - (BOOL) synchronize { return [NSArchiver archiveRootObject: self toFile: PathToFilters()]; } // // NSCoding protocol // - (void) encodeWithCoder: (NSCoder *) theCoder { [theCoder encodeObject: [self filters]]; } - (id) initWithCoder: (NSCoder *) theCoder { self = [super init]; [self setFilters: [theCoder decodeObject]]; return self; } // // access/mutation methods // - (Filter *) filterAtIndex: (int) theIndex { return [_filters objectAtIndex: theIndex]; } // // // - (void) addFilter: (Filter *) theFilter { [_filters addObject: theFilter]; } // // // - (void) addFilter: (Filter *) theFilter atIndex: (int) theIndex { [_filters insertObject: theFilter atIndex: theIndex]; } // // // - (void) removeFilter: (Filter *) theFilter; { [_filters removeObject: theFilter]; } // // // - (NSArray *) filters { return _filters; } // // // - (void) setFilters: (NSArray *) theFilters { RELEASE(_filters); if (theFilters) { _filters = [[NSMutableArray alloc] initWithArray: theFilters]; } else { _filters = nil; } } // // // - (BOOL) matchExistsForFilter: (Filter *) theFilter message: (CWMessage *) theMessage { NSAutoreleasePool *pool; CWMessage *aMessage; BOOL aBOOL; if (!theFilter || !theMessage) { return NO; } pool = [[NSAutoreleasePool alloc] init]; // // FIXME: This can be CPU intensive. // if ([theFilter useExternalProgram]) { aMessage = [self _messageFromExternalProgramUsingFilter: theFilter message: theMessage]; if (!aMessage) { RELEASE(pool); return NO; } } else { aMessage = theMessage; } aBOOL = [self _matchCriteriasFromMessage: aMessage filter: theFilter]; if (aMessage != theMessage) { RELEASE(aMessage); } RELEASE(pool); return aBOOL; } // // This method returns the *first* filter that matches // for the specified message. If no filter matches, nil // is returned. // - (Filter *) matchedFilterForMessage: (CWMessage *) theMessage type: (int) theType { NSAutoreleasePool *pool; CWMessage *aMessage; BOOL quickCheck; int i, c; if (!theMessage) { return nil; } quickCheck = NO; if (theType == TYPE_INCOMING_QUICK) { theType = TYPE_INCOMING; quickCheck = YES; } pool = [[NSAutoreleasePool alloc] init]; c = [_filters count]; for (i = 0; i < c; i++) { Filter *aFilter; aFilter = [_filters objectAtIndex: i]; if ( [aFilter isActive] && [aFilter type] == theType ) { // // FIXME: This can be CPU intensive. // if ([aFilter useExternalProgram] && quickCheck == NO) { aMessage = [self _messageFromExternalProgramUsingFilter: aFilter message: theMessage]; if (!aMessage) { continue; } } else { aMessage = theMessage; } // // If we've a filter that matches, we stop everything. We don't need // to continue searching in the other filters. // if ([self _matchCriteriasFromMessage: aMessage filter: aFilter]) { if (aMessage != theMessage) { RELEASE(aMessage); } RELEASE(pool); return aFilter; } if (aMessage != theMessage) { RELEASE(aMessage); } } // if ( [aFilter isActive] && [aFilter type] == theType ) } RELEASE(pool); return nil; } // // // - (Filter *) matchedFilterForMessageAsRawSource: (NSData *) theRawSource type: (int) theType { Filter *aFilter; NSRange aRange; aRange = [theRawSource rangeOfCString: "\n\n"]; aFilter = nil; if (aRange.length) { CWMessage *aMessage; aMessage = [[CWMessage alloc] initWithHeadersFromData: [theRawSource subdataToIndex: aRange.location + 1] ]; [aMessage setRawSource: theRawSource]; aFilter = [self matchedFilterForMessage: aMessage type: theType]; RELEASE(aMessage); } return aFilter; } // // // - (NSColor *) colorForMessage: (CWMessage *) theMessage { NSAutoreleasePool *pool; CWMessage *aMessage; int i, c; if (!theMessage) { return nil; } pool = [[NSAutoreleasePool alloc] init]; c = [_filters count]; for (i = 0; i < c; i++) { Filter *aFilter; aFilter = [_filters objectAtIndex: i]; if ([aFilter action] == SET_COLOR && [aFilter isActive]) { // // FIXME: Should we allow external programs for "coloring" filters? That // can be *very CPU intensive* // if ([aFilter useExternalProgram]) { aMessage = [self _messageFromExternalProgramUsingFilter: aFilter message: theMessage]; if (!aMessage) { continue; } } else { aMessage = theMessage; } // // If we've a filter that matches, we stop everything. We don't need // to continue searching in the other filters. // if ([self _matchCriteriasFromMessage: aMessage filter: aFilter]) { if (aMessage != theMessage) { RELEASE(aMessage); } RELEASE(pool); return [aFilter actionColor]; } if (aMessage != theMessage) { RELEASE(aMessage); } } // if ( [aFilter action] == SET_COLOR && [aFilter isActive]) } RELEASE(pool); return nil; } // // theKey corresponds to an account name. // // - (CWURLName *) matchedURLNameFromMessage: (CWMessage *) theMessage type: (int) theType key: (NSString *) theKey filter: (Filter *) theFilter { CWURLName *aURLName, *aDefaultURLName; NSString *aDefaultURLNameAsString; NSDictionary *allValues; if (!theFilter) { theFilter = [self matchedFilterForMessage: theMessage type: theType]; } allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: theKey] objectForKey: @"MAILBOXES"]; if (theType == TYPE_INCOMING) { aDefaultURLNameAsString = [allValues objectForKey: @"INBOXFOLDERNAME"]; aDefaultURLName = [[CWURLName alloc] initWithString: aDefaultURLNameAsString path: [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]]; } else { aDefaultURLNameAsString = [allValues objectForKey: @"SENTFOLDERNAME"]; // No Sent mailbox was specified. We ignore it. if (!aDefaultURLNameAsString) { return nil; } aDefaultURLName = [[CWURLName alloc] initWithString: aDefaultURLNameAsString path: [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]]; } AUTORELEASE(aDefaultURLName); // If we have found a filter that matches our message if (theFilter && [theFilter type] == theType) { // We verify if the operation is TRANSFER_TO_FOLDER and if folder DIFFERENT from our default folder if ([theFilter action] == TRANSFER_TO_FOLDER && ![[theFilter actionFolderName] isEqualToString: aDefaultURLNameAsString]) { aURLName = [[CWURLName alloc] initWithString: [theFilter actionFolderName] path: [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]]; AUTORELEASE(aURLName); } // We verify if the operation is DELETE. If so, we transfer the message to the trash folder. else if ([theFilter action] == DELETE) { #warning FIXME No Trash mailbox was specified aURLName = [[CWURLName alloc] initWithString: [allValues objectForKey: @"TRASHFOLDERNAME"] path: [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]]; AUTORELEASE(aURLName); } // We have an UNKNOWN action. We simply add the message to our Inbox (our Sent) folder. else { aURLName = aDefaultURLName; } } // We haven't found a filter, let's add it to our Inbox Folder else { aURLName = aDefaultURLName; } return aURLName; } // // // - (CWURLName *) matchedURLNameFromMessageAsRawSource: (NSData *) theRawSource type: (int) theType key: (NSString *) theKey filter: (Filter *) theFilter { CWURLName *aURLName; NSRange aRange; aRange = [theRawSource rangeOfCString: "\n\n"]; aURLName = nil; if (aRange.length) { CWMessage *aMessage; aMessage = [[CWMessage alloc] initWithHeadersFromData: [theRawSource subdataToIndex: aRange.location + 1] ]; [aMessage setRawSource: theRawSource]; aURLName = [self matchedURLNameFromMessage: aMessage type: theType key: theKey filter: theFilter]; RELEASE(aMessage); } else { NSDictionary *allValues; allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: theKey] objectForKey: @"MAILBOXES"]; if (theType == TYPE_INCOMING) { NSLog(@"FilterManager: Corrupted message received for filtering. Returning default Inbox."); aURLName = [[CWURLName alloc] initWithString: [allValues objectForKey: @"INBOXFOLDERNAME"] path: [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]]; } else { NSLog(@"FilterManager: Corrupted message received for filtering. Returning default Sent."); aURLName = [[CWURLName alloc] initWithString: [allValues objectForKey: @"SENTFOLDERNAME"] path: [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]]; } AUTORELEASE(aURLName); } return aURLName; } // // // - (void) updateFiltersFromOldPath: (NSString *) theOldPath toPath: (NSString *) thePath { Filter *aFilter; int i, c; c = [_filters count]; for (i = 0; i < c; i++) { aFilter = [_filters objectAtIndex: i]; if ([aFilter action] == TRANSFER_TO_FOLDER) { if ([[aFilter actionFolderName] isEqualToString: theOldPath]) { [aFilter setActionFolderName: thePath]; } } } [self synchronize]; } // // class methods // + (id) singleInstance { if (!singleInstance) { NS_DURING singleInstance = [NSUnarchiver unarchiveObjectWithFile: PathToFilters()]; NS_HANDLER NSLog(@"Caught exception while unarchiving the Filters. Ignoring."); singleInstance = nil; NS_ENDHANDLER if (singleInstance) { RETAIN(singleInstance); } else { singleInstance = [[FilterManager alloc] init]; [singleInstance synchronize]; } } return singleInstance; } @end // // private methods // @implementation FilterManager (Private) // // This method returns a message with a retain count of 1 to not overload // the main autorelease pool. // - (CWMessage *) _messageFromExternalProgramUsingFilter: (Filter *) theFilter message: (CWMessage *) theMessage { NSFileHandle *aFileHandle, *theInputFileHandle; NSTask *aTask; NSPipe *aPipe; NSMutableData *aMutableData; NSData *theRawSource; CWMessage *aMessage; NSString *aString, *aFilename; NSRange aRange; // We first write the raw source to a temporary file theRawSource = [theMessage rawSource]; if (!theRawSource) { NSDebugLog(@"Unable to obtain the raw source from ..."); return nil; } NSDebugLog(@"Using external program for processing mail."); aFilename = [NSString stringWithFormat:@"%@/%d_%@", GNUMailTemporaryDirectory(), [[NSProcessInfo processInfo] processIdentifier], NSUserName()]; if (![theRawSource writeToFile: aFilename atomically: YES]) { ADD_CONSOLE_MESSAGE(_(@"Unable to write the raw source of the message to %@. Aborting."), aFilename); return nil; } [[NSFileManager defaultManager] enforceMode: 0600 atPath: aFilename]; theInputFileHandle = [NSFileHandle fileHandleForReadingAtPath: aFilename]; aPipe = [NSPipe pipe]; aFileHandle = [aPipe fileHandleForReading]; aTask = [[NSTask alloc] init]; [aTask setStandardOutput: aPipe]; [aTask setStandardInput: theInputFileHandle]; // We build our right string aString = [[theFilter externalProgramName] stringByTrimmingWhiteSpaces]; // We verify if our program to lauch has any arguments aRange = [aString rangeOfString: @" "]; if (aRange.length) { [aTask setLaunchPath: [aString substringToIndex: aRange.location]]; [aTask setArguments: [[aString substringFromIndex: (aRange.location + 1)] componentsSeparatedByString: @" "]]; } else { [aTask setLaunchPath: aString]; } // We launch our task [aTask launch]; aMutableData = (NSMutableData *)[NSMutableData data]; while ([aTask isRunning]) { [aMutableData appendData: [aFileHandle availableData]]; } NSDebugLog(@"The external program terminated with the %d exit code.", [aTask terminationStatus]); if ([aTask terminationStatus] != 0) { return nil; } aMessage = [[CWMessage alloc] initWithData: aMutableData]; RELEASE(aTask); [theInputFileHandle closeFile]; [[NSFileManager defaultManager] removeFileAtPath: aFilename handler: nil]; NSDebugLog(@"Done using external program."); return aMessage; } // // // - (BOOL) _matchCriteriasFromMessage: (CWMessage *) theMessage filter: (Filter *) theFilter { FilterCriteria *aFilterCriteria; BOOL aBOOL; // // First criteria // aFilterCriteria = [[theFilter allCriterias] objectAtIndex: 0]; aBOOL = [self _matchStrings: [self _stringsFromMessage: theMessage criteria: aFilterCriteria] operation: [aFilterCriteria criteriaFindOperation] criteria: [aFilterCriteria criteriaString]]; // // Second criteria // aFilterCriteria = [[theFilter allCriterias] objectAtIndex: 1]; if ([aFilterCriteria criteriaSource] != NONE) { if ([aFilterCriteria criteriaCondition] == AND) { aBOOL = aBOOL && [self _matchStrings: [self _stringsFromMessage: theMessage criteria: aFilterCriteria] operation: [aFilterCriteria criteriaFindOperation] criteria: [aFilterCriteria criteriaString]]; } else { aBOOL = aBOOL || [self _matchStrings: [self _stringsFromMessage: theMessage criteria: aFilterCriteria] operation: [aFilterCriteria criteriaFindOperation] criteria: [aFilterCriteria criteriaString]]; } } // // Third and last criteria // aFilterCriteria = [[theFilter allCriterias] objectAtIndex: 2]; if ([aFilterCriteria criteriaSource] != NONE) { if ([aFilterCriteria criteriaCondition] == AND) { aBOOL = aBOOL && [self _matchStrings: [self _stringsFromMessage: theMessage criteria: aFilterCriteria] operation: [aFilterCriteria criteriaFindOperation] criteria: [aFilterCriteria criteriaString]]; } else { aBOOL = aBOOL || [self _matchStrings: [self _stringsFromMessage: theMessage criteria: aFilterCriteria] operation: [aFilterCriteria criteriaFindOperation] criteria: [aFilterCriteria criteriaString]]; } } return aBOOL; } // // // - (BOOL) _matchStrings: (NSArray *) theStrings operation: (int) theOperation criteria: (NSString *) theCriteria { // Variables used in this method NSArray *anArray; NSRange aRange; int i, c, len; // We must be sure to have a valid criteria. if (theOperation != IS_IN_ADDRESS_BOOK && theOperation != IS_IN_ADDRESS_BOOK_GROUP && (!theCriteria || [theCriteria length] == 0)) { return NO; } c = [theStrings count]; for (i = 0; i < c; i++) { NSString *theString; theString = [theStrings objectAtIndex: i]; len = [theString length]; if (len == 0) { continue; } switch (theOperation) { case CONTAINS: aRange = [theString rangeOfString: theCriteria options: NSCaseInsensitiveSearch]; if (aRange.length) { return YES; } break; case IS_EQUAL: if ([theString caseInsensitiveCompare: theCriteria] == NSOrderedSame) { return YES; } break; case HAS_PREFIX: if ([[theString lowercaseString] hasPrefix: [theCriteria lowercaseString]]) { return YES; } break; case HAS_SUFFIX: // // We trim the trailing > in case there is one since an user could // define a filter to match ".edu" but we receive "". // if ([theString characterAtIndex: (len-1)] == '>') { theString = [theString substringToIndex: (len-1)]; } if ([[theString lowercaseString] hasSuffix: [theCriteria lowercaseString]]) { return YES; } break; case MATCH_REGEXP: anArray = [CWRegEx matchString: theString withPattern : theCriteria isCaseSensitive: YES]; if ([anArray count] > 0) { return YES; } break; case IS_IN_ADDRESS_BOOK: anArray = [[AddressBookController singleInstance] addressesWithSubstring: theString]; if ([anArray count] > 0) { return YES; } break; case IS_IN_ADDRESS_BOOK_GROUP: anArray = [[AddressBookController singleInstance] addressesWithSubstring: theString inGroupWithId: theCriteria]; if ([anArray count] > 0) { return YES; } break; default: break; } } // for (...) return NO; } // // // - (NSArray *) _stringsFromMessage: (CWMessage *) theMessage criteria: (FilterCriteria *) theFilterCriteria { NSMutableArray *aMutableArray; NSArray *allRecipients; NSString *aString; int i, theSource; aMutableArray = [[NSMutableArray alloc] init]; theSource = [theFilterCriteria criteriaSource]; switch (theSource) { case TO: allRecipients = [theMessage recipients]; for (i = 0; i < [allRecipients count]; i++) { CWInternetAddress *anInternetAddress; anInternetAddress = [allRecipients objectAtIndex: i]; if ([anInternetAddress type] == TO) { aString = [anInternetAddress stringValue]; if (aString) { [aMutableArray addObject: aString]; } } } break; case CC: allRecipients = [theMessage recipients]; for (i = 0; i < [allRecipients count]; i++) { CWInternetAddress *anInternetAddress; anInternetAddress = [allRecipients objectAtIndex: i]; if ([anInternetAddress type] == CC) { aString = [anInternetAddress stringValue]; if (aString) { [aMutableArray addObject: aString]; } } } break; case TO_OR_CC: allRecipients = [theMessage recipients]; for (i = 0; i < [allRecipients count]; i++) { CWInternetAddress *anInternetAddress; anInternetAddress = [allRecipients objectAtIndex: i]; if ([anInternetAddress type] == TO || [anInternetAddress type] == CC) { aString = [anInternetAddress stringValue]; if (aString) { [aMutableArray addObject: aString]; } } } break; case SUBJECT: aString = [theMessage subject]; if (aString) { [aMutableArray addObject: aString]; } break; case FROM: aString = [[theMessage from] stringValue]; if (aString) { [aMutableArray addObject: aString]; } break; case EXPERT: if ([theFilterCriteria criteriaHeaders] && [[theFilterCriteria criteriaHeaders] count] > 0) { for (i = 0; i < [[theFilterCriteria criteriaHeaders] count]; i++) { aString = [theMessage headerValueForName: [[theFilterCriteria criteriaHeaders] objectAtIndex: i]]; if ( aString ) { [aMutableArray addObject: aString]; } } } else { // We do nothing.. so we won't have any matches. } break; // No criteria source, we just ignore it. case NONE: default: break; } return AUTORELEASE(aMutableArray); } @end GNUMail/Framework/GNUMail/FindWindowController.m0100644000014600001460000002417610557334502022266 0ustar monotonemonotone/* ** FindWindowController.m ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "FindWindowController.h" #ifndef MACOSX #include "FindWindow.h" #endif #include "GNUMail.h" #include "ConsoleWindowController.h" #include "Constants.h" #include "MailboxManagerController.h" #include "MailWindowController.h" #include "Task.h" #include "TaskManager.h" #include "Utilities.h" #include #include #include #include #include #include #include static FindWindowController *singleInstance = nil; // // FindWindowController Private interface // @interface FindWindowController (Private) - (void) _folderCloseCompleted: (NSNotification *) theNotification; - (void) _selectIndexesFromResults: (NSArray *) theResults controller: (MailWindowController *) theMailWindowController; - (void) _setState: (BOOL) theState; @end // // // @implementation FindWindowController - (id) initWithWindowNibName: (NSString *) windowNibName { #ifdef MACOSX self = [super initWithWindowNibName: windowNibName]; #else #ifdef __MINGW32__ FindWindowX *theWindow; theWindow = [[FindWindowX alloc] initWithContentRect: NSMakeRect(200,200,340,175) #else FindWindow *theWindow; theWindow = [[FindWindow alloc] initWithContentRect: NSMakeRect(200,200,340,175) #endif styleMask: NSTitledWindowMask|NSClosableWindowMask| NSMiniaturizableWindowMask|NSResizableWindowMask backing: NSBackingStoreBuffered defer: YES]; [super initWithWindow: theWindow]; [theWindow layoutWindow]; [theWindow setDelegate: self]; [theWindow setMinSize: [theWindow frame].size]; // We link our outlets findField = theWindow->findField; foundLabel = theWindow->foundLabel; ignoreCaseButton = theWindow->ignoreCaseButton; regularExpressionButton = theWindow->regularExpressionButton; matrix = theWindow->matrix; findAllButton = theWindow->findAllButton; nextButton = theWindow->nextButton; previousButton = theWindow->previousButton; RELEASE(theWindow); #endif [[self window] setTitle: _(@"Find")]; // We finally set our autosave window frame name and restore the one from the user's defaults. [[self window] setFrameAutosaveName: @"FindWindow"]; [[self window] setFrameUsingName: @"FindWindow"]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_folderCloseCompleted:) name: PantomimeFolderCloseCompleted object: nil]; return self; } // // // - (void) dealloc { [[NSNotificationCenter defaultCenter] removeObserver: self]; RELEASE(_indexes); RELEASE(_folder); [super dealloc]; } // // action methods // - (IBAction) findAll: (id) sender { NSString *aString; aString = [findField stringValue]; _location = 0; if ([GNUMail lastMailWindowOnTop] && ([[aString stringByTrimmingWhiteSpaces] length] > 0)) { MailWindowController *aMailWindowController; CWFolder *aFolder; int mask, options; aMailWindowController = (MailWindowController *)[[GNUMail lastMailWindowOnTop] delegate]; // First clear searchField before find [ aMailWindowController resetSearchField ]; aFolder = [aMailWindowController folder]; ADD_CONSOLE_MESSAGE(_(@"Searching for %@..."), aString); // // We get our mask // if ([[matrix cellAtRow: 0 column: 0] state] == NSOnState) { mask = PantomimeFrom; } else if ([[matrix cellAtRow: 1 column: 0] state] == NSOnState) { mask = PantomimeTo; } else if ([[matrix cellAtRow: 1 column: 1] state] == NSOnState) { mask = PantomimeContent; } else { mask = PantomimeSubject; } // // We get our options // options = 0; if ([ignoreCaseButton state] == NSOnState) { options = options|PantomimeCaseInsensitiveSearch; } if ([regularExpressionButton state] == NSOnState) { options = options|PantomimeRegularExpression; } [aFolder search: aString mask: mask options: options]; // // We must only start the animation for a IMAP folder // since for a local folder, we will receive the PantomimeFolderSearchCompleted // notification BEFORE starting the actual animation! // if ([aFolder isKindOfClass: [CWIMAPFolder class]]) { Task *aTask; aTask = [[Task alloc] init]; aTask->op = SEARCH_ASYNC; [aTask setKey: [Utilities accountNameForFolder: aFolder]]; aTask->immediate = YES; [[TaskManager singleInstance] addTask: aTask]; RELEASE(aTask); [foundLabel setStringValue: _(@"Searching...")]; [self _setState: NO]; } } else { NSBeep(); } } // // // - (IBAction) nextMessage: (id) sender { if ([GNUMail lastMailWindowOnTop]) { MailWindowController *aMailWindowController; id dataView; aMailWindowController = (MailWindowController *)[[GNUMail lastMailWindowOnTop] delegate]; dataView = [aMailWindowController dataView]; if ([_indexes count] < 2) { NSBeep(); return; } else { [dataView selectRow: [[_indexes objectAtIndex: _location] intValue] byExtendingSelection: NO]; [dataView scrollRowToVisible: [[_indexes objectAtIndex: _location] intValue]]; _location += 1; if (_location == [_indexes count]) { _location = 0; } [dataView setNeedsDisplay:YES]; } } } // // // - (IBAction) previousMessage: (id) sender { if ([GNUMail lastMailWindowOnTop]) { MailWindowController *aMailWindowController; id dataView; aMailWindowController = (MailWindowController *)[[GNUMail lastMailWindowOnTop] delegate]; dataView = [aMailWindowController dataView]; if ([_indexes count] < 2) { NSBeep(); return; } else { [dataView selectRow: [[_indexes objectAtIndex: _location] intValue] byExtendingSelection: NO]; [dataView scrollRowToVisible: [[_indexes objectAtIndex: _location] intValue]]; _location -= 1; if (_location < 0) { _location = [_indexes count]-1; } [dataView setNeedsDisplay:YES]; } } } // // delegate methods // - (void) windowDidLoad { _indexes = [[NSMutableArray alloc] init]; _location = 0; _folder = nil; } // // access / mutation // - (NSTextField *) findField { return findField; } - (void) setSearchResults: (NSArray *) theResults forFolder: (CWFolder *) theFolder { if (theResults && theFolder) { MailWindowController *aMailWindowController; ASSIGN(_folder, theFolder); aMailWindowController = [[Utilities windowForFolderName: [_folder name] store: [_folder store]] delegate]; if (!aMailWindowController) { DESTROY(_folder); return; } if ([[aMailWindowController folder] isKindOfClass: [CWIMAPFolder class]]) { [self _setState: YES]; } // We get all the indexes from our messages found if ([theResults count]) { id dataView; int previous_row_selected; dataView = [aMailWindowController dataView]; previous_row_selected = [dataView selectedRow]; [dataView deselectAll: nil]; [_indexes removeAllObjects]; // We add the index of our rows.. and we select the rows.. [[FindWindowController singleInstance] _selectIndexesFromResults: theResults controller: aMailWindowController]; // If we found only one result, we automatically scroll to that row if ([theResults count] == 1 && [_indexes count] > 0) { [dataView scrollRowToVisible: [[_indexes objectAtIndex: 0] intValue]]; } [dataView setNeedsDisplay: YES]; } else { NSBeep(); } [foundLabel setStringValue: [NSString stringWithFormat: @"%i found", [theResults count]]]; ADD_CONSOLE_MESSAGE(_(@"Done searching. %d results found."), [theResults count]); } else { [foundLabel setStringValue: _(@"Search failed.")]; [self _setState: YES]; } } // // class methods // + (id) singleInstance { if (!singleInstance) { singleInstance = [[FindWindowController alloc] initWithWindowNibName: @"FindWindow"]; } return singleInstance; } @end // // FindWindowController Private implementation // @implementation FindWindowController (Private) - (void) _folderCloseCompleted: (NSNotification *) theNotification { if ([[theNotification userInfo] objectForKey: @"Folder"] == _folder) { [foundLabel setStringValue: @""]; [_indexes removeAllObjects]; DESTROY(_folder); _location = 0; } } // // // - (void) _selectIndexesFromResults: (NSArray *) theResults controller: (MailWindowController *) theMailWindowController { NSArray *allMessages; int i, index, count; id tableView; tableView = [theMailWindowController dataView]; allMessages = [theMailWindowController allMessages]; count = [theResults count]; for (i = 0; i < count; i++) { index = [allMessages indexOfObject: [theResults objectAtIndex: i]]; if ( index != NSNotFound ) { [_indexes addObject: [NSNumber numberWithInt: index]]; [tableView selectRow: index byExtendingSelection: YES]; } } } // // // - (void) _setState: (BOOL) theState { [findAllButton setEnabled: theState]; [nextButton setEnabled: theState]; [previousButton setEnabled: theState]; } @end GNUMail/Framework/GNUMail/FindWindow.m0100644000014600001460000001273410432175455020221 0ustar monotonemonotone/* ** FindWindow.m ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "FindWindow.h" #include "Constants.h" #ifdef __MINGW32__ @implementation FindWindowX #else @implementation FindWindow #endif - (void) dealloc { RELEASE(findField); RELEASE(matrix); RELEASE(ignoreCaseButton); RELEASE(regularExpressionButton); RELEASE(findAllButton); RELEASE(previousButton); RELEASE(nextButton); [super dealloc]; } // // // - (void) layoutWindow { LabelWidget *findLabel; NSButtonCell *cell; NSBox *box; findLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(8,140,60,TextFieldHeight) label: _(@"Find:") alignment: NSRightTextAlignment]; [findLabel setAutoresizingMask: NSViewMinYMargin]; [[self contentView] addSubview: findLabel]; findField = [[NSTextField alloc] initWithFrame: NSMakeRect(75,140,260,TextFieldHeight)]; [findField setAutoresizingMask: NSViewWidthSizable|NSViewMinYMargin]; [findField setStringValue: @""]; [findField setTarget: [self windowController]]; [findField setAction: @selector(findAll:)]; [[self contentView] addSubview: findField]; box = [[NSBox alloc] initWithFrame: NSMakeRect(5,50,160,80)]; [box setAutoresizingMask: NSViewWidthSizable|NSViewMaxXMargin|NSViewHeightSizable]; [box setContentViewMargins: NSMakeSize(8,8)]; [box setTitle: _(@"Find Scope")]; [box setTitleFont: [NSFont boldSystemFontOfSize: 12]]; [box setTitlePosition: NSAtTop]; [box setBorderType: NSGrooveBorder]; [[self contentView] addSubview: box]; RELEASE(box); cell = [[NSButtonCell alloc] init]; AUTORELEASE(cell); [cell setButtonType: NSRadioButton]; [cell setBordered: NO]; [cell setImagePosition: NSImageLeft]; matrix = [[NSMatrix alloc] initWithFrame: NSZeroRect mode: NSRadioModeMatrix prototype: cell numberOfRows: 2 numberOfColumns: 2]; [matrix setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; [matrix setTarget: [self windowController]]; [matrix setIntercellSpacing: NSMakeSize (0, 10)]; [matrix setAutosizesCells: NO]; cell = [matrix cellAtRow: 0 column: 0]; [cell setTitle: _(@"From")]; [cell setTag: 0]; cell = [matrix cellAtRow: 1 column: 0]; [cell setTitle: _(@"To")]; [cell setTag: 1]; cell = [matrix cellAtRow: 0 column: 1]; [cell setTitle: _(@"Subject")]; [cell setTag: 0]; cell = [matrix cellAtRow: 1 column: 1]; [cell setTitle: _(@"Content")]; [cell setTag: 1]; [matrix sizeToFit]; [[box contentView] addSubview: matrix]; box = [[NSBox alloc] initWithFrame: NSMakeRect(175,50,160,80)]; [box setAutoresizingMask: NSViewWidthSizable|NSViewMinXMargin|NSViewHeightSizable]; [box setContentViewMargins: NSMakeSize(0,0)]; [box setTitle: _(@"Find Options")]; [box setTitleFont: [NSFont boldSystemFontOfSize: 12]]; [box setTitlePosition: NSAtTop]; [box setBorderType: NSGrooveBorder]; [[self contentView] addSubview: box]; RELEASE(box); ignoreCaseButton = [[NSButton alloc] initWithFrame: NSMakeRect(8,33,140,ButtonHeight)]; [ignoreCaseButton setTitle: _(@"Ignore Case")]; [ignoreCaseButton setButtonType: NSSwitchButton]; [ignoreCaseButton setBordered: NO]; [[box contentView] addSubview: ignoreCaseButton]; regularExpressionButton = [[NSButton alloc] initWithFrame: NSMakeRect(8,5,140,ButtonHeight)]; [regularExpressionButton setAutoresizingMask: NSViewMinYMargin]; [regularExpressionButton setTitle: _(@"Regular Expression")]; [regularExpressionButton setButtonType: NSSwitchButton]; [regularExpressionButton setBordered: NO]; [[box contentView] addSubview: regularExpressionButton]; findAllButton = [[NSButton alloc] initWithFrame: NSMakeRect(10,10,75,ButtonHeight)]; [findAllButton setStringValue: _(@"Find All")]; [findAllButton setTarget: [self windowController]]; [findAllButton setAction: @selector(findAll:) ]; [[self contentView] addSubview: findAllButton]; previousButton = [[NSButton alloc] initWithFrame: NSMakeRect(180,10,75,ButtonHeight)]; [previousButton setAutoresizingMask: NSViewMinXMargin]; [previousButton setStringValue: _(@"Previous")]; [previousButton setTarget: [self windowController]]; [previousButton setAction: @selector(previousMessage:)]; [[self contentView] addSubview: previousButton]; nextButton = [[NSButton alloc] initWithFrame: NSMakeRect(260,10,75,ButtonHeight)]; [nextButton setAutoresizingMask: NSViewMinXMargin]; [nextButton setStringValue: _(@"Next")]; [nextButton setTarget: [self windowController]]; [nextButton setAction: @selector(nextMessage:)]; [[self contentView] addSubview: nextButton]; foundLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(90,13,85,TextFieldHeight) label: @"" ]; [foundLabel setTextColor: [NSColor darkGrayColor]]; [[self contentView] addSubview: foundLabel]; } @end GNUMail/Framework/GNUMail/FolderNode.m0100644000014600001460000000650510424672357020175 0ustar monotonemonotone/* ** FolderNode.m ** ** Copyright (C) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "FolderNode.h" #include "Constants.h" @implementation FolderNode - (id) init { self = [super init]; [self setChildren: nil]; _parent = nil; _name = nil; _path = nil; _subscribed = NO; return self; } - (void) dealloc { RELEASE(_name); RELEASE(_path); RELEASE(_children); [super dealloc]; } // // NSCopying protocol // - (id) copyWithZone: (NSZone *) zone { return RETAIN(self); } // // access / mutation methods // - (NSString *) name { return _name; } - (void) setName: (NSString *) theName { DESTROY(_path); ASSIGN(_name, theName); } - (NSString *) path { return _path; } - (void) setPath: (NSString *) thePath { ASSIGN(_path, thePath); } - (FolderNode *) parent { return _parent; } - (void) setParent: (FolderNode *) theParent { _parent = theParent; } - (BOOL) subscribed { return _subscribed; } - (void) setSubscribed: (BOOL) theBOOL { _subscribed = theBOOL; } - (NSArray *) children { return _children; } - (void) setChildren: (NSArray *) theChildren { NSMutableArray *aMutableArray; aMutableArray = [[NSMutableArray alloc] init]; if (theChildren) { int i; [aMutableArray addObjectsFromArray: theChildren]; for (i = 0; i < [theChildren count]; i++) { [[theChildren objectAtIndex: i] setParent: self]; } } RELEASE(_children); _children = aMutableArray; } - (void) addChild: (FolderNode *) theChild { [_children addObject: theChild]; [_children sortUsingSelector: @selector(compare:)]; } - (void) removeChild: (FolderNode *) theChild { [_children removeObject: theChild]; } - (FolderNode *) childAtIndex: (int) theIndex { return [_children objectAtIndex: theIndex]; } - (FolderNode *) childWithName: (NSString *) theName { int i, count; count = [_children count]; for (i = 0; i < count; i++) { FolderNode *aFolderNode; aFolderNode = (FolderNode *)[_children objectAtIndex: i]; if ([theName isEqualToString: [aFolderNode name]]) { return aFolderNode; } } return nil; } - (int) childCount { return [_children count]; } // // Comparison // - (NSComparisonResult) compare: (FolderNode *) theFolderNode { return [_name compare: [theFolderNode name]]; } // // class methods // + (FolderNode *) folderNodeWithName: (NSString *) theName parent: (FolderNode *) theParent { FolderNode *aFolderNode; aFolderNode = [[FolderNode alloc] init]; [aFolderNode setName: theName]; [aFolderNode setParent: theParent]; return AUTORELEASE(aFolderNode); } @end GNUMail/Framework/GNUMail/FolderNodePopUpItem.m0100644000014600001460000000227210424672357021775 0ustar monotonemonotone/* ** FolderNodePopUpItem.m ** ** Copyright (c) 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "FolderNodePopUpItem.h" #include "FolderNode.h" #include "Constants.h" @implementation FolderNodePopUpItem - (void) dealloc { RELEASE(folderNode); [super dealloc]; } - (FolderNode *) folderNode { return folderNode; } - (void) setFolderNode: (FolderNode *) theFolderNode { RETAIN(theFolderNode); RELEASE(folderNode); folderNode = theFolderNode; } @end GNUMail/Framework/GNUMail/GetURLScriptCommand.m0100644000014600001460000000530310424672357021735 0ustar monotonemonotone/* ** GetURLScriptCommand.m ** ** Copyright (c) 2003 ** ** Author: Ujwal S. Sathyam ** ** Project: GNUMail ** ** Description: Implements Applescript support for GNUMail. ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "GetURLScriptCommand.h" #include "GNUMail.h" // // // @implementation GetURLScriptCommand - (id) scriptError: (int) errorNumber description: (NSString *) description { [self setScriptErrorNumber: errorNumber]; [self setScriptErrorString: description]; return nil; } - (id)performDefaultImplementation { NSString *command; NSString *parameter; command = [[self commandDescription] commandName]; parameter = [self directParameter]; if ([command isEqualToString: @"GetURL"] && [parameter length]) { NSString *anAddress; NSRange aRange; NSURL *aURL; NSString *absoluteString; aURL = [NSURL URLWithString: parameter]; if(aURL == nil) { NSLog(@"GetURLScriptCommand: received malformed URL '%@'", parameter); return (nil); } absoluteString = [aURL absoluteString]; // Search for "mailto" token aRange = [absoluteString rangeOfString: @"mailto:" options: NSCaseInsensitiveSearch]; if (aRange.length <= 0) { NSLog(@"URL '%@' is not a mailto URL", aURL); return nil; } absoluteString = [absoluteString substringFromIndex: (aRange.location + aRange.length)]; // Check if we have a parameter string aRange = [absoluteString rangeOfString: @"?" options: NSCaseInsensitiveSearch]; if(aRange.length > 0) { absoluteString = [absoluteString substringToIndex: aRange.location]; } anAddress = (NSString *) CFURLCreateStringByReplacingPercentEscapes(kCFAllocatorDefault, (CFStringRef) absoluteString, (CFStringRef) @""); // Open an mail composer window addressed to to "anAddress" if ([anAddress length] > 0) { GNUMail *gnumail; gnumail = [NSApp delegate]; [gnumail newMessageWithRecipient: anAddress]; } } return (nil); } @end GNUMail/Framework/GNUMail/GNUMail+Extensions.m0100644000014600001460000002145410601706270021530 0ustar monotonemonotone/* ** GNUMail+Extensions.m ** ** Copyright (c) 2002-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "Filter.h" #include "FilterManager.h" #include "Constants.h" #include "GNUMail+Extensions.h" #include "Utilities.h" #include #include @implementation GNUMail (Extensions) #define UPDATE_PATH(name) ({ \ aFolderName = [self updatePathForFolderName: [allValues objectForKey: name] \ current: theDestinationPath \ previous: theSourcePath]; \ if (aFolderName) \ { \ [allValues setObject: aFolderName forKey: name]; \ } \ }) // // // - (void) taskDidTerminate: (NSNotification *) theNotification { // We first unregister ourself for the notification [[NSNotificationCenter defaultCenter] removeObserver: self name: NSTaskDidTerminateNotification object: [theNotification object]]; // Remove the temporary file. [[NSFileManager defaultManager] removeFileAtPath: [[[theNotification object] arguments] lastObject] handler: nil]; // We release our task... AUTORELEASE([theNotification object]); } // // // - (void) moveLocalMailDirectoryFromPath: (NSString *) theSourcePath toPath: (NSString *) theDestinationPath { NSArray *foldersToOpen, *theFilters; FilterManager *aFilterManager; NSFileManager *aFileManager; NSAutoreleasePool *pool; NSString *aFolderName; BOOL aBOOL, isDir; pool = [[NSAutoreleasePool alloc] init]; aFileManager = [NSFileManager defaultManager]; if ([aFileManager fileExistsAtPath: theDestinationPath isDirectory: &isDir]) { // // The "directory" already exists but it is a file, not a directory. // if (!isDir) { NSRunCriticalAlertPanel(_(@"Fatal error!"), _(@"%@ exists but it is a file, not a directory.\nThe application will now terminate.\nRemove this file before trying again to start GNUMail."), @"OK", NULL, NULL, theDestinationPath); exit(1); } // // The directory exists, let's move the files there. // else { NSDirectoryEnumerator *aDirectoryEnumerator; NSString *aFile; NSDebugLog(_(@"The directory exists - we move the files.")); aDirectoryEnumerator = [aFileManager enumeratorAtPath: theSourcePath]; while ((aFile = [aDirectoryEnumerator nextObject])) { if (![aFileManager movePath: [NSString stringWithFormat: @"%@/%@", theSourcePath, aFile] toPath: [NSString stringWithFormat: @"%@/%@", theDestinationPath, aFile] handler: nil]) { NSRunCriticalAlertPanel(_(@"Fatal error!"), _(@"An error occurred while moving mailboxes to %@. Please move back manually\nthe files and directories to %@."), @"OK", NULL, NULL, theDestinationPath, theSourcePath); exit(1); } } // We remove the old directory. [aFileManager removeFileAtPath: theSourcePath handler: nil]; } } // // The new target directory doesn't yet exist. We can safely move our current directory // to the new one. // else { NSDebugLog(@"The directory doesn't exist - we move the directory."); aBOOL = [aFileManager movePath: theSourcePath toPath: theDestinationPath handler: nil]; if (!aBOOL) { NSRunCriticalAlertPanel(_(@"Fatal error!"), _(@"A fatal error occurred when moving the directory %@ to %@.\nThe application will now terminate."), @"OK", NULL, NULL, theSourcePath, theDestinationPath); exit(1); } } // // FOLDERS_TO_OPEN // foldersToOpen = [[NSUserDefaults standardUserDefaults] arrayForKey: @"FOLDERS_TO_OPEN"]; if ( foldersToOpen && [foldersToOpen count] > 0) { NSMutableArray *aMutableArray; int i; aMutableArray = [NSMutableArray array]; for (i = 0; i < [foldersToOpen count]; i++) { aFolderName = [self updatePathForFolderName: [foldersToOpen objectAtIndex: i] current: theDestinationPath previous: theSourcePath]; if ( aFolderName ) { [aMutableArray addObject: aFolderName]; } else { [aMutableArray addObject: [foldersToOpen objectAtIndex: i]]; } } [[NSUserDefaults standardUserDefaults] setObject: aMutableArray forKey: @"FOLDERS_TO_OPEN"]; } // // Filters -> actionFolderName // aFilterManager = [FilterManager singleInstance]; theFilters = [aFilterManager filters]; if ( [theFilters count] > 0 ) { Filter *aFilter; int i; for (i = 0; i < [theFilters count]; i++) { aFilter = [theFilters objectAtIndex: i]; aFolderName = [self updatePathForFolderName: [aFilter actionFolderName] current: theDestinationPath previous: theSourcePath]; if ( aFolderName ) { [aFilter setActionFolderName: aFolderName]; } } [aFilterManager synchronize]; } // // ACCOUNTS -> [all accounts] -> RECEIVE -> DRAFTSFOLDERNAME, INBOXFOLDERNAME, SENTFOLDERNAME, TRASHFOLDERNAME // if ( [[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] ) { NSMutableDictionary *allAccounts, *theAccount, *allValues; NSEnumerator *theEnumerator; NSString *aKey; allAccounts = [[NSMutableDictionary alloc] initWithDictionary: [[NSUserDefaults standardUserDefaults] dictionaryForKey: @"ACCOUNTS"]]; theEnumerator = [allAccounts keyEnumerator]; while ( (aKey = [theEnumerator nextObject]) ) { theAccount = [[NSMutableDictionary alloc] initWithDictionary: [allAccounts objectForKey: aKey]]; allValues = [[NSMutableDictionary alloc] initWithDictionary: [theAccount objectForKey: @"MAILBOXES"]]; UPDATE_PATH(@"DRAFTSFOLDERNAME"); UPDATE_PATH(@"INBOXFOLDERNAME"); UPDATE_PATH(@"SENTFOLDERNAME"); UPDATE_PATH(@"TRASHFOLDERNAME"); [theAccount setObject: allValues forKey: @"MAILBOXES"]; RELEASE(allValues); [allAccounts setObject: theAccount forKey: aKey]; RELEASE(theAccount); } [[NSUserDefaults standardUserDefaults] setObject: allAccounts forKey: @"ACCOUNTS"]; RELEASE(allAccounts); } // We set the path of our previous default's value and we synchronize our defaults. [[NSUserDefaults standardUserDefaults] setObject: theDestinationPath forKey: @"LOCALMAILDIR_PREVIOUS"]; [[NSUserDefaults standardUserDefaults] synchronize]; RELEASE(pool); } // // // - (void) removeTemporaryFiles { NSDirectoryEnumerator *theEnumerator; NSString *aPath; theEnumerator = [[NSFileManager defaultManager] enumeratorAtPath: GNUMailTemporaryDirectory()]; while ((aPath = [theEnumerator nextObject])) { [[NSFileManager defaultManager] removeFileAtPath: [NSString stringWithFormat: @"%@/%@", GNUMailTemporaryDirectory(), aPath] handler: nil]; } } // // From 1.1.2 -> 1.2.0 // - (void) update_112_to_120 { [[NSUserDefaults standardUserDefaults] removeObjectForKey: @"MAIL_WINDOW_TABLE_COLUMN_SIZES"]; [[NSUserDefaults standardUserDefaults] removeObjectForKey: @"TEXTSCROLLVIEW_HEIGHT"]; [[NSUserDefaults standardUserDefaults] removeObjectForKey: @"MAILWINDOW_REPEAT_SUBJECT"]; [[NSUserDefaults standardUserDefaults] removeObjectForKey: @"AUTOMATICALLY_EXPAND_THREADS"]; [[NSUserDefaults standardUserDefaults] removeObjectForKey: @"EnableContextMenus"]; #ifdef GNUSTEP if (![[NSUserDefaults standardUserDefaults] objectForKey: @"PreferredViewStyle"]) { [[NSUserDefaults standardUserDefaults] setInteger: GNUMailFloatingView forKey: @"PreferredViewStyle"]; } #endif } // // // - (NSString *) updatePathForFolderName: (NSString *) theFolderName current: (NSString *) theCurrentPath previous: (NSString *) thePreviousPath { CWURLName *aURLName; if (!theFolderName || ![theFolderName hasPrefix: [NSString stringWithFormat: @"local://%@", thePreviousPath]] ) { return nil; } aURLName = [[CWURLName alloc] initWithString: theFolderName path: thePreviousPath]; AUTORELEASE(aURLName); return [NSString stringWithFormat: @"local://%@/%@", theCurrentPath, [aURLName foldername]]; } @end #undef UPDATE_PATH GNUMail/Framework/GNUMail/GNUMail.m0100644000014600001460000031730310613064243017376 0ustar monotonemonotone/* ** GNUMail.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "GNUMail.h" #include "AboutPanelController.h" #include "AddressBookController.h" #include "ApplicationIconController.h" #include "ConsoleWindowController.h" #include "EditWindowController.h" #include "ExtendedMenuItem.h" #include "ExtendedWindow.h" #include "Filter.h" #include "FilterManager.h" #include "FindWindowController.h" #include "FolderNode.h" #include "GNUMail+Extensions.h" #include "GNUMailBundle.h" #include "Constants.h" #include "MailWindowController.h" #include "MailboxInspectorPanelController.h" #include "MailboxManagerCache.h" #include "MailboxManagerController.h" #include "MessageViewWindowController.h" #include "MimeTypeManager.h" #include "MimeType.h" #include "NSAttributedString+Extensions.h" #include "NSBundle+Extensions.h" #include "NSPasteboard+Extensions.h" #include "NSUserDefaults+Extensions.h" #include "PreferencesWindowController.h" #include "Task.h" #include "TaskManager.h" #include "Utilities.h" #include "MessageComposition.h" #include "STScriptingSupport.h" #include "WelcomePanel.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include // GNUMail's home page -- where to find more details/information #define APPLICATION_URL @"http://www.collaboration-world.com/" // GNUMail's download page -- where to download from #define DOWNLOAD_URL @"http://www.collaboration-world.com/cgi-bin/collaboration-world/project/release.cgi?pid=2" // GNUMail's Version Property Page #define PROPERTY_URL @"http://www.collaboration-world.com/versionlist.xml" #define TOGGLE_WINDOW(controller) \ if ([[[controller singleInstance] window] isVisible]) [[[controller singleInstance] window] orderOut: self]; \ else [[controller singleInstance] showWindow: self]; // Static variables static NSMutableArray *allEditWindows = nil; static NSMutableArray *allMailWindows = nil; static NSMutableArray *allBundles; static NSString *currentWorkingPath = nil; static id lastAddressTakerWindowOnTop = nil; static id lastMailWindowOnTop = nil; static id requestLastMailWindowOnTop = nil; static BOOL doneInit = NO; // // Private methods // @interface GNUMail (Private) - (BOOL) _checkForUpdate; - (BOOL) _checkDictionary: (NSDictionary *) theDictionary; - (void) _connectToIMAPServers; - (void) _loadBundles; - (void) _makeFilter: (int) theSource; - (void) _newVersionAvailable: (NSString *) theVersion; - (void) _removeAllItemsFromMenu: (NSMenu *) theMenu; #ifdef MACOSX - (void) _savePanelDidEnd: (NSSavePanel *) theSheet returnCode: (int) returnCode contextInfo: (void *) contextInfo; #endif - (void) _updateFilterMenuItems: (id) sender; - (void) _updateGetNewMailMenuItems: (id) sender; - (void) _updateTextEncodingsMenu: (id) sender; - (void) _updateVisibleColumns; @end // // // @implementation GNUMail - (id) init { self = [super init]; #ifdef MACOSX _messageCompositions = [[NSMutableArray alloc] init]; #endif return self; } // // // - (void) dealloc { #ifdef MACOSX RELEASE(dock); RELEASE(_messageCompositions); #endif [super dealloc]; } // // action methods // - (IBAction) addSenderToAddressBook: (id) sender { if ([GNUMail lastMailWindowOnTop]) { id aController; aController = [[GNUMail lastMailWindowOnTop] windowController]; if ([[aController dataView] numberOfSelectedRows] != 1) { NSBeep(); return; } [[AddressBookController singleInstance] addSenderToAddressBook: [aController selectedMessage]]; } } - (IBAction) applyManualFilter: (id) sender { if ([GNUMail lastMailWindowOnTop]) { MailWindowController *aMailWindowController; FilterManager *aFilterManager; CWFolder *aSourceFolder; NSArray *selectedMessages; int i, aTag, aType; aMailWindowController = (MailWindowController *)[[GNUMail lastMailWindowOnTop] delegate]; selectedMessages = [aMailWindowController selectedMessages]; if (!selectedMessages || [selectedMessages count] == 0) { NSBeep(); return; } aSourceFolder = [aMailWindowController folder]; aTag = [sender tag]; // If we are in the Sent, we consider ONLY outgoing filters. // Otherwise, we always consider ONLY incoming filters. if ([Utilities stringValueOfURLName: [Utilities stringValueOfURLNameFromFolder: aSourceFolder] isEqualTo: @"SENTFOLDERNAME"]) { aType = TYPE_OUTGOING; } else { aType = TYPE_INCOMING; } aFilterManager = [FilterManager singleInstance]; for (i = 0; i < [selectedMessages count]; i++) { CWMessage *aMessage; Filter *aFilter; aMessage = [selectedMessages objectAtIndex: i]; // If we have selected ALL our filters... if (aTag < 0) { aFilter = [aFilterManager matchedFilterForMessage: aMessage type: aType]; } else { aFilter = [aFilterManager filterAtIndex: aTag]; } // We verify if the filter matches the message if (aFilter && [aFilterManager matchExistsForFilter: aFilter message: aMessage] && ([aFilter action] == TRANSFER_TO_FOLDER || [aFilter action] == DELETE)) { CWFolder *aDestinationFolder; CWURLName *theURLName; if ([aFilter action] == DELETE) { NSString *aString; aString = [Utilities accountNameForMessage: aMessage]; theURLName = [[CWURLName alloc] initWithString: [[[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: aString] objectForKey: @"MAILBOXES"] objectForKey: @"TRASHFOLDERNAME"] path: [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]]; } else { theURLName = [[CWURLName alloc] initWithString: [aFilter actionFolderName] path: [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]]; } AUTORELEASE(theURLName); aDestinationFolder = [[MailboxManagerController singleInstance] folderForURLName: theURLName]; if (!aDestinationFolder) { NSRunAlertPanel(_(@"Error!"), _(@"An error occurred while trying to open the %@ mailbox. This mailbox was probably\ndeleted and a filter is trying to save mails in it. Check your filters."), _(@"OK"), NULL, NULL, [theURLName foldername]); return; } // // We verify that our target folder isn't the one that is currently open (and last on top) // If so, we do nothing. // if (aDestinationFolder == aSourceFolder) { return; } [aDestinationFolder setProperty: [NSDate date] forKey: FolderExpireDate]; [[MailboxManagerController singleInstance] transferMessages: [NSArray arrayWithObject: aMessage] fromStore: [aSourceFolder store] fromFolder: aSourceFolder toStore: [aDestinationFolder store] toFolder: aDestinationFolder operation: MOVE_MESSAGES]; } // if ( aFilter && [aFilterManager ...] ) } // for (...) } else { NSBeep(); } } #ifdef MACOSX // // // - (void) awakeFromNib { NSMenuItem *item; dock = [[NSMenu alloc] init]; [dock setAutoenablesItems: NO]; item = [[NSMenuItem alloc] initWithTitle: _(@"New Message") action: @selector(composeMessage:) keyEquivalent: @""]; [dock addItem: item]; RELEASE(item); } // // // - (NSMenu *) applicationDockMenu: (NSApplication *) sender { return dock; } // // // - (BOOL) applicationShouldHandleReopen: (NSApplication *) theApplication hasVisibleWindows: (BOOL) theBOOL { if (![[GNUMail allMailWindows] count]) { [self newViewerWindow: theApplication]; } return NO; } #endif // // // - (IBAction) changeTextEncoding: (id) sender { NSWindow *aWindow; aWindow = [NSApp keyWindow]; if (!aWindow) { NSBeep(); return; } else { id aWindowController; aWindowController = [aWindow windowController]; // // We are working with a MailWindowController / MessageViewWindowController // if ([aWindowController isKindOfClass: [MailWindowController class]] || [aWindowController isKindOfClass: [MessageViewWindowController class]]) { CWMessage *theMessage; if ([aWindowController isKindOfClass: [MailWindowController class]]) { theMessage = [aWindowController selectedMessage]; } else { theMessage = [(MessageViewWindowController *)aWindowController message]; } if (theMessage) { NSString *theCharset; NSData *aData; id aDataView; aDataView = [aWindowController dataView]; if ([sender tag] == -1) { theCharset = [theMessage charset]; } else { theCharset = [[[CWCharset allCharsets] allKeysForObject: [sender title]] objectAtIndex: 0]; } [theMessage setDefaultCharset: theCharset]; aData = [theMessage rawSource]; if (aData) { NSAutoreleasePool *pool; CWMessage *aMessage; pool = [[NSAutoreleasePool alloc] init]; aMessage = [[CWMessage alloc] initWithData: aData charset: theCharset]; // We show the new message [Utilities showMessage: aMessage target: [aWindowController textView] showAllHeaders: [aWindowController showAllHeaders]]; // We set the new headers of the message and we refresh the selected row in our data view [theMessage setHeaders: [aMessage allHeaders]]; [aDataView setNeedsDisplayInRect: [aDataView rectOfRow: [aDataView selectedRow]]]; RELEASE(aMessage); RELEASE(pool); } else { Task *aTask; [theMessage setProperty: [NSNumber numberWithBool: YES] forKey: MessageLoading]; [theMessage setProperty: [NSNumber numberWithBool: YES] forKey: MessageDestinationChangeEncoding]; aTask = [[Task alloc] init]; [aTask setKey: [Utilities accountNameForFolder: [theMessage folder]]]; aTask->op = LOAD_ASYNC; aTask->immediate = YES; aTask->total_size = (float)[theMessage size]/(float)1024; [aTask setMessage: theMessage]; [aTask addController: aWindowController]; [[TaskManager singleInstance] addTask: aTask]; RELEASE(aTask); } } else { NSBeep(); } } // // We are working with an EditWindowController // else if ([aWindowController isKindOfClass: [EditWindowController class]]) { [aWindowController setCharset: [sender title]]; } // // The rest, just beep! // else { NSBeep(); } } } // // Handles the 'check for update' request // - (IBAction) checkForUpdates: (id) sender { NSString *msg, *error; msg = nil; error = nil; NS_DURING { if (![self _checkForUpdate]) { msg = [NSString stringWithFormat: _(@"There is no new version of %@ available."), [[NSProcessInfo processInfo] processName]]; error = @""; } } NS_HANDLER { msg = _(@"Unable to check for new software."); error = [NSString stringWithFormat: _(@"Check failed due to the following reason:\n%@"), [localException reason]]; } NS_ENDHANDLER {} if (msg) { NSRunInformationalAlertPanel(msg, error, _(@"OK"), NULL, NULL); } return; } // // // - (IBAction) close: (id) sender { if ([NSApp keyWindow]) { [[NSApp keyWindow] performClose: sender]; } } // // // - (IBAction) compactMailbox: (id) sender { if ([GNUMail lastMailWindowOnTop]) { int choice; choice = NSAlertDefaultReturn; if (![[NSUserDefaults standardUserDefaults] objectForKey: @"PROMPT_BEFORE_COMPACT"] || [[NSUserDefaults standardUserDefaults] boolForKey: @"PROMPT_BEFORE_COMPACT"]) { choice = NSRunAlertPanel(_(@"Compact..."), _(@"Compacting a mailbox will permanently remove deleted messages.\nDo you want to continue?"), _(@"Compact"), // default _(@"Cancel"), // alternate NULL); } if (choice == NSAlertDefaultReturn) { CWFolder* aFolder; aFolder = [(MailWindowController *)[[GNUMail lastMailWindowOnTop] delegate] folder]; ADD_CONSOLE_MESSAGE(_(@"Compacting mailbox, please wait..."), [aFolder name]); [aFolder expunge]; if ([aFolder isKindOfClass: [CWIMAPFolder class]]) { Task *aTask; aTask = [[Task alloc] init]; aTask->op = EXPUNGE_ASYNC; [aTask setKey: [Utilities accountNameForFolder: aFolder]]; aTask->immediate = YES; [[TaskManager singleInstance] addTask: aTask]; RELEASE(aTask); } } } else { NSBeep(); } } // // This method is used to compose a new message, with an empty content. // - (IBAction) composeMessage: (id) sender { EditWindowController *editWindowController; CWMessage *aMessage; // We create an empty message aMessage = [[CWMessage alloc] init]; // We create our controller and we show the window editWindowController = [[EditWindowController alloc] initWithWindowNibName: @"EditWindow"]; if (editWindowController) { id aMailWindowController; [[editWindowController window] setTitle: _(@"New message...")]; [editWindowController setMessage: aMessage]; [editWindowController setShowCc: NO]; // We try to guess the best account to use aMailWindowController = [GNUMail lastMailWindowOnTop]; if (aMailWindowController) { [editWindowController setAccountName: [Utilities accountNameForFolder: [[aMailWindowController windowController] folder]]]; } else { [editWindowController setAccountName: nil]; } [editWindowController showWindow: self]; } RELEASE(aMessage); } // // // - (IBAction) copy: (id) sender { NSPasteboard *aPasteboard; aPasteboard = [NSPasteboard generalPasteboard]; if ([[[NSApp keyWindow] delegate] isKindOfClass: [MailWindowController class]] && [GNUMail lastMailWindowOnTop]) { MailWindowController *aMailWindowController; NSMutableArray *messagesToLoad; NSArray *allMessages; CWMessage *aMessage; Task *aTask; int count; aMailWindowController = (MailWindowController *)[[GNUMail lastMailWindowOnTop] delegate]; allMessages = [aMailWindowController selectedMessages]; count = [allMessages count]; aMessage = nil; if (count) { messagesToLoad = [NSMutableArray array]; aTask = [[Task alloc] init]; aTask->op = LOAD_ASYNC; aTask->immediate = YES; // First, we clear our existing property list. [aPasteboard setPropertyList: [NSArray array] forType: MessagePboardType]; while (count--) { aMessage = (CWMessage *)[allMessages objectAtIndex: count]; if ([aMessage rawSource]) { [aPasteboard addMessage: [allMessages objectAtIndex: count]]; } else { [aMessage setProperty: [NSNumber numberWithBool: YES] forKey: MessageLoading]; [aMessage setProperty: [NSNumber numberWithBool: YES] forKey: MessageDestinationPasteboard]; [messagesToLoad addObject: aMessage]; aTask->total_size += (float)[aMessage size]/(float)1024; } } if ([messagesToLoad count]) { [aTask setKey: [Utilities accountNameForFolder: [aMessage folder]]]; [aTask setMessage: messagesToLoad]; aTask->total_count = [messagesToLoad count]; [[TaskManager singleInstance] addTask: aTask]; } RELEASE(aTask); // If the sender is self, that means we performed a "cut" operation. // Let's mark the messages as deleted and refresh the associated view. if (sender == self) { CWFlags *theFlags; count = [allMessages count]; while (count--) { aMessage = [allMessages objectAtIndex: count]; theFlags = [[aMessage flags] copy]; // We set the flag PantomimeDeleted to the message [theFlags add: PantomimeDeleted]; [aMessage setFlags: theFlags]; RELEASE(theFlags); } [[aMailWindowController folder] updateCache]; [aMailWindowController tableViewShouldReloadData]; [aMailWindowController updateStatusLabel]; } } else { NSBeep(); } } else { NSBeep(); } } // // // // // // - (IBAction) customizeToolbar: (id) sender { NSWindow *aWindow; aWindow = [NSApp keyWindow]; if (aWindow && [aWindow toolbar]) { [[aWindow toolbar] runCustomizationPalette: sender]; } } // // // - (IBAction) cut: (id) sender { [self copy: self]; } // // This method is used to togle the flags of the selected message // from the last mail window on top to 'undelete' (or delete) if it was // set to 'deleted' before the call. // - (IBAction) deleteOrUndeleteMessage: (id) sender { if ( [GNUMail lastMailWindowOnTop] ) { MailWindowController *aMailWindowController; aMailWindowController = (MailWindowController *)[[GNUMail lastMailWindowOnTop] delegate]; // We delete (or undelete) our message [aMailWindowController deleteMessage: nil]; } else { NSBeep(); } } // // // - (IBAction) enterSelectionInFindPanel: (id) sender { if ([GNUMail lastMailWindowOnTop]) { MailWindowController *aMailWindowController; NSTextView *aTextView; aMailWindowController = (MailWindowController *)[[GNUMail lastMailWindowOnTop] delegate]; aTextView = [aMailWindowController textView]; [[[FindWindowController singleInstance] findField] setStringValue: [[aTextView string] substringWithRange: [aTextView selectedRange]]]; } else { NSBeep(); } } // // // - (IBAction) findNext: (id) sender { [[FindWindowController singleInstance] nextMessage: nil]; } // // // - (IBAction) findPrevious: (id) sender { [[FindWindowController singleInstance] previousMessage: nil]; } // // This method is used to forward the selected messsage from the last // mail window that was on top. // - (IBAction) forwardMessage: (id) sender { if ([GNUMail lastMailWindowOnTop]) { CWMessage *aMessage; int tag; aMessage = [[[GNUMail lastMailWindowOnTop] delegate] selectedMessage]; if (!aMessage) { NSBeep(); return; } tag = [sender tag]; if (tag == PantomimeAttachmentForwardMode) { [Utilities forwardMessage: aMessage mode: PantomimeAttachmentForwardMode]; } else { [Utilities forwardMessage: aMessage mode: PantomimeInlineForwardMode]; } } else { NSBeep(); } } // // This method is used to get the new messages if the LocalInboxWindow // is currently opened and visible. // - (IBAction) getNewMessages: (id) sender { id aController; aController = [GNUMail lastMailWindowOnTop]; if (aController) { aController = [[GNUMail lastMailWindowOnTop] windowController]; if ([aController isKindOfClass: [MessageViewWindowController class]]) { aController = [(MessageViewWindowController *)aController mailWindowController]; } } [[TaskManager singleInstance] checkForNewMail: sender controller: aController]; } // // // - (IBAction) importMailboxes: (id) sender { NSString *aString; NSBundle *aBundle; #ifdef MACOSX aString = [[[NSBundle mainBundle] builtInPlugInsPath] stringByAppendingPathComponent: @"Import.bundle"]; #else NSArray *allPaths; BOOL b; int i; allPaths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSLocalDomainMask| NSNetworkDomainMask| NSSystemDomainMask| NSUserDomainMask, YES); aString = nil; for (i = 0; i < [allPaths count]; i++) { aString = [NSString stringWithFormat: @"%@/GNUMail/Import.bundle", [allPaths objectAtIndex: i]]; if ([[NSFileManager defaultManager] fileExistsAtPath: aString isDirectory: &b] && b) { break; } } #endif aBundle = [NSBundle bundleWithPath: aString]; if (aBundle) { [[[aBundle principalClass] singleInstance] showWindow: self]; return; } // We were unable to load the Import bundle. NSBeep(); } // // // - (IBAction) makeFilterFromListId: (id) sender { [self _makeFilter: EXPERT]; } // // // - (IBAction) makeFilterFromSender: (id) sender { [self _makeFilter: FROM]; } // // // - (IBAction) makeFilterFromSubject: (id)sender { [self _makeFilter: SUBJECT]; } // // // - (IBAction) markMessageAsFlaggedOrUnflagged: (id) sender { if ([GNUMail lastMailWindowOnTop]) { MailWindowController *aMailWindowController; NSEnumerator *anEnumerator; CWMessage *aMessage; aMailWindowController = (MailWindowController *)[[GNUMail lastMailWindowOnTop] delegate]; // We mark our message as flagged (or not) anEnumerator = [[aMailWindowController selectedMessages] objectEnumerator]; while ((aMessage = [anEnumerator nextObject])) { // If we must mark all messages as flagged if ([markAsFlaggedOrUnflagged tag] == MARK_AS_FLAGGED) { if ( ![[aMessage flags] contain: PantomimeFlagged] ) { CWFlags *theFlags; theFlags = [[aMessage flags] copy]; [theFlags add: PantomimeFlagged]; [aMessage setFlags: theFlags]; RELEASE(theFlags); } } // Else, we must mark them all as unflagged else { if ([[aMessage flags] contain: PantomimeFlagged]) { CWFlags *theFlags; theFlags = [[aMessage flags] copy]; [theFlags remove: PantomimeFlagged]; [aMessage setFlags: theFlags]; RELEASE(theFlags); } } } // while (...) // We always refresh our dataView and our status label [[aMailWindowController dataView] setNeedsDisplay: YES]; [aMailWindowController updateStatusLabel]; } else { NSBeep(); } } // // // - (IBAction) markMessageAsReadOrUnread: (id) sender { if ( [GNUMail lastMailWindowOnTop] ) { MailWindowController *aMailWindowController; NSEnumerator *anEnumerator; CWMessage *aMessage; aMailWindowController = (MailWindowController *)[[GNUMail lastMailWindowOnTop] delegate]; // We mark our message as read (or not) anEnumerator = [[aMailWindowController selectedMessages] objectEnumerator]; while ((aMessage = [anEnumerator nextObject])) { // If we must mark all messages as read if ([markAsReadOrUnread tag] == MARK_AS_READ) { if (![[aMessage flags] contain: PantomimeSeen]) { CWFlags *theFlags; theFlags = [[aMessage flags] copy]; [theFlags add: PantomimeSeen]; [aMessage setFlags: theFlags]; RELEASE(theFlags); } } // Else, we must mark them all as unread else { if ([[aMessage flags] contain: PantomimeSeen]) { CWFlags *theFlags; theFlags = [[aMessage flags] copy]; [theFlags remove: PantomimeSeen]; [aMessage setFlags: theFlags]; RELEASE(theFlags); } } } // while (...) // We always refresh our dataView and our status label [[aMailWindowController dataView] setNeedsDisplay: YES]; [aMailWindowController updateStatusLabel]; } else { NSBeep(); } } // // // - (IBAction) nextUnreadMessage: (id) sender { if ( [GNUMail lastMailWindowOnTop] && [[[GNUMail lastMailWindowOnTop] delegate] isKindOfClass: [MailWindowController class]] ) { [[[GNUMail lastMailWindowOnTop] delegate] nextUnreadMessage: sender]; } else { NSBeep(); } } // // // - (IBAction) newViewerWindow: (id) sender { MailWindowController *aMailWindowController; aMailWindowController = [[MailWindowController alloc] initWithWindowNibName: @"MailWindow"]; [aMailWindowController setFolder: nil]; [[aMailWindowController window] orderFrontRegardless]; [[aMailWindowController window] makeKeyAndOrderFront: nil]; } // // // - (IBAction) paste: (id) sender { NSArray *types, *propertyList; NSPasteboard *pboard; NSString *aType; int i; // We verify every supported pasteboard type pboard = [NSPasteboard generalPasteboard]; types = [pboard types]; for (i = 0; i < [types count]; i++) { aType = (NSString*)[types objectAtIndex: i]; // // MessagePboardType // if ([MessagePboardType isEqualToString: aType]) { propertyList = [pboard propertyListForType: MessagePboardType]; if (propertyList) { MailWindowController *aMailWindowController; int count; aMailWindowController = nil; #ifndef MACOSX // // The front window is the Mailboxes window. Let's get the associated // MailWindow of the selected item (there must be one!). // if ([NSApp keyWindow] == [[MailboxManagerController singleInstance] window]) { MailboxManagerController *aMailboxManagerController; NSString *aFolderName; id aStore; id item; int row, level; aMailboxManagerController = [MailboxManagerController singleInstance]; row = [[aMailboxManagerController outlineView] selectedRow]; if (row < 0) { NSBeep(); return; } item = [[aMailboxManagerController outlineView] itemAtRow: row]; level = [[aMailboxManagerController outlineView] levelForItem: item]; // // We must verify that: // // a) we have at least one selected row // b) we haven't selected our root, or a store (Local or IMAP) // if ([[aMailboxManagerController outlineView] numberOfSelectedRows] != 1 || level < 2) { NSRunInformationalAlertPanel(_(@"Mailbox error!"), _(@"You must select a valid mailbox to open!"), _(@"OK"), NULL, NULL, NULL); return; } aStore = [aMailboxManagerController storeForFolderNode: item]; aFolderName = [Utilities pathOfFolderFromFolderNode: (FolderNode *)item separator: [aStore folderSeparator]]; aMailWindowController = [[Utilities windowForFolderName: aFolderName store: aStore] windowController]; } #endif if (([[[NSApp keyWindow] delegate] isKindOfClass: [MailWindowController class]] && [GNUMail lastMailWindowOnTop]) || aMailWindowController) { if (!aMailWindowController) { aMailWindowController = (MailWindowController *)[[GNUMail lastMailWindowOnTop] delegate]; } count = [propertyList count]; while (count--) { // We retrieve the message from the property list NSDictionary *aDictionary; CWFlags *theFlags; NSData *aData; aDictionary = (NSDictionary*)[propertyList objectAtIndex: count]; aData = [aDictionary objectForKey: @"Message"]; theFlags = (CWFlags*)[NSUnarchiver unarchiveObjectWithData: (NSData*)[aDictionary objectForKey: @"Flags"]]; if (aData && theFlags) { [[MailboxManagerController singleInstance] transferMessage: aData flags: theFlags folder: [aMailWindowController folder]]; } } if ([propertyList count] > 0) { [aMailWindowController tableViewShouldReloadData]; [aMailWindowController updateStatusLabel]; } } else { NSBeep(); } } } } } // // // - (IBAction) previousUnreadMessage: (id) sender { if ([GNUMail lastMailWindowOnTop] && [[[GNUMail lastMailWindowOnTop] delegate] isKindOfClass: [MailWindowController class]]) { [[[GNUMail lastMailWindowOnTop] delegate] previousUnreadMessage: sender]; } else { NSBeep(); } } // // This method prints the current selected message - ie., the one // shown in the MailWindow's (or MessageViewWindow) text view. // - (IBAction) printMessage: (id) sender { if ([GNUMail lastMailWindowOnTop]) { NSPrintInfo *aPrintInfo; id aWindowController; aWindowController = [[GNUMail lastMailWindowOnTop] delegate]; aPrintInfo = [NSPrintInfo sharedPrintInfo]; [aPrintInfo setHorizontalPagination: NSFitPagination]; [[NSPrintOperation printOperationWithView: [aWindowController textView] printInfo: aPrintInfo] runOperation]; } else { NSBeep(); } } // // // - (IBAction) redirectMessage: (id) sender { if ([GNUMail lastMailWindowOnTop]) { id aWindowController; CWMessage *theMessage; aWindowController = [[GNUMail lastMailWindowOnTop] delegate]; theMessage = [aWindowController selectedMessage]; if (theMessage) { EditWindowController *aController; aController = [[EditWindowController alloc] initWithWindowNibName: @"EditWindow"]; [theMessage setProperty: [NSNumber numberWithBool: YES] forKey: MessageRedirecting]; [aController setMode: GNUMailRedirectMessage]; [aController setMessage: theMessage]; [aController setShowCc: NO]; [aController setAccountName: nil]; [aController showWindow: self]; } else { NSBeep(); } } else { NSBeep(); } } // // This method is used to reply to the selected message. // - (IBAction) replyToMessage: (id) sender { if ([GNUMail lastMailWindowOnTop]) { [[[GNUMail lastMailWindowOnTop] delegate] replyToMessage: sender]; } else { NSBeep(); } } // // // - (IBAction) restoreDraft: (id) sender { CWMessage *aMessage; aMessage = [[MailboxManagerController singleInstance] messageFromDraftsFolder]; // We create our controller and we show the window if we have a valid message if (aMessage) { EditWindowController *aController; // Initialize the the message if it has not been already if (![aMessage isInitialized]) { [aMessage setInitialized: YES]; [aMessage setProperty: [NSNumber numberWithBool: YES] forKey: @"RestoringFromDrafts"]; } aController = [[EditWindowController alloc] initWithWindowNibName: @"EditWindow"]; [aController setMode: GNUMailRestoreFromDrafts]; [aController setMessageFromDraftsFolder: aMessage]; [aController updateWithMessage: aMessage]; [aController showWindow: self]; } else { NSBeep(); } } // // // - (IBAction) saveInDrafts: (id) sender { if ([GNUMail lastAddressTakerWindowOnTop]) { [[MailboxManagerController singleInstance] saveMessageInDraftsFolderForController: [GNUMail lastAddressTakerWindowOnTop]]; } else { NSBeep(); } } // // // - (IBAction) saveAttachment: (id) sender { if ([GNUMail lastMailWindowOnTop]) { NSTextAttachment *aTextAttachment; aTextAttachment = [sender textAttachment]; [Utilities clickedOnCell: [aTextAttachment attachmentCell] inRect: NSZeroRect atIndex: 0 sender: self]; } else { NSBeep(); } } // // // - (IBAction) saveAllAttachments: (id) sender { NSTextAttachment *aTextAttachment; NSFileWrapper *aFilewrapper; NSSavePanel *aSavePanel; BOOL useSameDir, ask; int i; aSavePanel = [NSSavePanel savePanel]; [aSavePanel setAccessoryView: nil]; [aSavePanel setRequiredFileType: @""]; useSameDir = NO; ask = YES; for (i = 2; i < [save numberOfItems]; i++ ) { aTextAttachment = [(ExtendedMenuItem *)[save itemAtIndex: i] textAttachment]; aFilewrapper = [aTextAttachment fileWrapper]; if (!useSameDir) { int aChoice; aChoice = [aSavePanel runModalForDirectory: [GNUMail currentWorkingPath] file: [aFilewrapper preferredFilename]]; // if successful, save file under designated name if ( aChoice == NSOKButton ) { if (![aFilewrapper writeToFile: [aSavePanel filename] atomically: YES updateFilenames: YES]) { NSBeep(); } else { [[NSFileManager defaultManager] enforceMode: 0600 atPath: [aSavePanel filename]]; } [GNUMail setCurrentWorkingPath: [[aSavePanel filename] stringByDeletingLastPathComponent]]; } } else { // We save the file in the same directory if (![aFilewrapper writeToFile: [[GNUMail currentWorkingPath] stringByAppendingPathComponent: [aFilewrapper preferredFilename]] atomically: YES updateFilenames: YES]) { NSBeep(); } else { [[NSFileManager defaultManager] enforceMode: 0600 atPath: [[GNUMail currentWorkingPath] stringByAppendingPathComponent: [aFilewrapper preferredFilename]]]; } } if ( ask ) { int use = NSRunAlertPanel(_(@"Information"), _(@"Use the same directory (%@) to save all other attachments? (override the files with the same name)."), _(@"Yes"), _(@"No"), NULL, [GNUMail currentWorkingPath]); if ( use == NSAlertDefaultReturn ) { useSameDir = YES; } else if ( use == NSAlertAlternateReturn ) { useSameDir = NO; } ask = NO; } } } // // This method is used to save only the textual content of a message // to the local file system. It skips attachments. // - (IBAction) saveTextFromMessage: (id) sender { if ([GNUMail lastMailWindowOnTop]) { NSSavePanel *aSavePanel; id aWindowController; CWMessage *aMessage; #ifdef MACOSX NSWindow *aWindow; #endif // We get a reference to our mail window controller aWindowController = [[GNUMail lastMailWindowOnTop] delegate]; aMessage = [aWindowController selectedMessage]; if (aMessage) { NSMutableAttributedString *aMutableAttributedString; NSMutableString *aMutableString; NSData *aData; int aChoice; unichar c; // // We don't use [[aWindowController textView] string] directly since the string might // have been modified by bundles (ie., the Emoticon bundle). // aMutableAttributedString = [[NSMutableAttributedString alloc] initWithAttributedString: [NSAttributedString attributedStringFromContentForPart: aMessage controller: aWindowController]]; [aMutableAttributedString quote]; [aMutableAttributedString format]; aMutableString = [NSMutableString stringWithString: [aMutableAttributedString string]]; RELEASE(aMutableAttributedString); c = NSAttachmentCharacter; // We replace all attachments with an asterisk [aMutableString replaceOccurrencesOfString: [NSString stringWithCharacters: &c length: 1] withString: @"*" options: 0 range: NSMakeRange(0, [aMutableString length])]; // We get our content of a message (just the text displayed in mail window) aData = [aMutableString dataUsingEncoding: NSUTF8StringEncoding allowLossyConversion: YES]; aSavePanel = [NSSavePanel savePanel]; [aSavePanel setAccessoryView: nil]; [aSavePanel setRequiredFileType: @""]; #ifdef MACOSX RETAIN(aData); if ([sender respondsToSelector:@selector(window)]) { aWindow = [sender window]; } else { aWindow = [GNUMail lastMailWindowOnTop]; } [aSavePanel beginSheetForDirectory: [GNUMail currentWorkingPath] file: [[aWindowController selectedMessage] subject] modalForWindow: aWindow modalDelegate: self didEndSelector: @selector(_savePanelDidEnd: returnCode: contextInfo:) contextInfo: aData]; #else aChoice = [aSavePanel runModalForDirectory: [GNUMail currentWorkingPath] file: [[aWindowController selectedMessage] subject]]; // if successful, save file under designated name if (aChoice == NSOKButton) { NSString *aFilename; aFilename = [aSavePanel filename]; if (![aData writeToFile: aFilename atomically: YES] ) { NSBeep(); } else { [[NSFileManager defaultManager] enforceMode: 0600 atPath: aFilename]; } [GNUMail setCurrentWorkingPath: [aFilename stringByDeletingLastPathComponent]]; } #endif } else { NSBeep(); } } else { NSBeep(); } } // // // - (IBAction) selectAllMessagesInThread: (id) sender { MailWindowController *aController; CWMessage *aMessage; aController = [[GNUMail lastMailWindowOnTop] windowController]; aMessage = [aController selectedMessage]; if (aMessage) { NSEnumerator *theEnumerator; CWContainer *aContainer; int index; // // Find the root container // aContainer = [aMessage propertyForKey: @"Container"]; // We check if we found a container if (!aContainer) { return; } while (aContainer->parent) aContainer = aContainer->parent; // We check for the associated message if (!aContainer->message) { return; } // // We now get all children of the root container. We need them // in order to select all messages // index = [[aController allMessages] indexOfObject: aContainer->message]; if (index >= 0) { [[aController dataView] selectRow: index byExtendingSelection: NO]; } theEnumerator = [aContainer childrenEnumerator]; while ((aContainer = [theEnumerator nextObject])) { index = [[aController allMessages] indexOfObject: aContainer->message]; if (index >= 0) { [[aController dataView] selectRow: index byExtendingSelection: YES]; } } } else { NSBeep(); } } // // // - (IBAction) showAboutPanel: (id) sender { TOGGLE_WINDOW(AboutPanelController); } // // // - (IBAction) sortByNumber: (id) sender { if ([GNUMail lastMailWindowOnTop] && [[[GNUMail lastMailWindowOnTop] delegate] isKindOfClass: [MailWindowController class]]) { MailWindowController *aMailWindowController; aMailWindowController = (MailWindowController *)[[GNUMail lastMailWindowOnTop] delegate]; [aMailWindowController tableView: [aMailWindowController dataView] didClickTableColumn: [[aMailWindowController dataView] tableColumnWithIdentifier: @"#"]]; } else { NSBeep(); } } // // // - (IBAction) sortByDate: (id) sender { if ( [GNUMail lastMailWindowOnTop] && [[[GNUMail lastMailWindowOnTop] delegate] isKindOfClass: [MailWindowController class]] ) { MailWindowController *aMailWindowController; aMailWindowController = (MailWindowController *)[[GNUMail lastMailWindowOnTop] delegate]; [aMailWindowController tableView: [aMailWindowController dataView] didClickTableColumn: [[aMailWindowController dataView] tableColumnWithIdentifier: @"Date"]]; } else { NSBeep(); } } // // // - (IBAction) sortByName: (id) sender { if ( [GNUMail lastMailWindowOnTop] && [[[GNUMail lastMailWindowOnTop] delegate] isKindOfClass: [MailWindowController class]] ) { MailWindowController *aMailWindowController; aMailWindowController = (MailWindowController *)[[GNUMail lastMailWindowOnTop] delegate]; [aMailWindowController tableView: [aMailWindowController dataView] didClickTableColumn: [[aMailWindowController dataView] tableColumnWithIdentifier: @"From"]]; } else { NSBeep(); } } // // // - (IBAction) sortBySubject: (id) sender { if ( [GNUMail lastMailWindowOnTop] && [[[GNUMail lastMailWindowOnTop] delegate] isKindOfClass: [MailWindowController class]] ) { MailWindowController *aMailWindowController; aMailWindowController = (MailWindowController *)[[GNUMail lastMailWindowOnTop] delegate]; [aMailWindowController tableView: [aMailWindowController dataView] didClickTableColumn: [[aMailWindowController dataView] tableColumnWithIdentifier: @"Subject"]]; } else { NSBeep(); } } // // // - (IBAction) sortBySize: (id) sender { if ( [GNUMail lastMailWindowOnTop] && [[[GNUMail lastMailWindowOnTop] delegate] isKindOfClass: [MailWindowController class]] ) { MailWindowController *aMailWindowController; aMailWindowController = (MailWindowController *)[[GNUMail lastMailWindowOnTop] delegate]; [aMailWindowController tableView: [aMailWindowController dataView] didClickTableColumn: [[aMailWindowController dataView] tableColumnWithIdentifier: @"Size"]]; } else { NSBeep(); } } // // This method is used to show the address book on the screen. // We use a singleton. // - (IBAction) showAddressBook: (id) sender { TOGGLE_WINDOW(AddressBookController); } // // This method is used to view or hide all headers in the // last mail window on top. // - (IBAction) showAllHeaders: (id) sender { if ([GNUMail lastMailWindowOnTop]) { id aWindowController; CWMessage *aMessage; BOOL aBOOL; int row; aWindowController = [[GNUMail lastMailWindowOnTop] delegate]; row = -1; if ([aWindowController isKindOfClass: [MailWindowController class]] && (row = [[aWindowController dataView] selectedRow]) && (row == -1 || [[aWindowController dataView] numberOfSelectedRows] > 1)) { NSBeep(); return; } if ([sender tag] == SHOW_ALL_HEADERS) { aBOOL = YES; [aWindowController setShowAllHeaders: aBOOL]; if ([sender isKindOfClass: [NSButton class]] || [sender isKindOfClass: [NSMenuItem class]]) { [sender setTitle: _(@"Filtered Headers")]; } else { [sender setLabel: _(@"Filtered Headers")]; } [sender setTag: HIDE_ALL_HEADERS]; } else { aBOOL = NO; [aWindowController setShowAllHeaders: aBOOL]; if ([sender isKindOfClass: [NSButton class]] || [sender isKindOfClass: [NSMenuItem class]]) { [sender setTitle: _(@"All Headers")]; } else { [sender setLabel: _(@"All Headers")]; } [sender setTag: SHOW_ALL_HEADERS]; } [menu sizeToFit]; if ([aWindowController isKindOfClass: [MailWindowController class]]) { aMessage = [aWindowController selectedMessage]; } else { aMessage = [(MessageViewWindowController *)aWindowController message]; } [Utilities showMessage: aMessage target: [aWindowController textView] showAllHeaders: aBOOL]; // // Whenever we click on this menu item, we reset the "Raw Source" / "Normal Display" // menu item to "Raw Source" since it doesn't really make senses to view filtered // headers on the raw source of a message! // [aWindowController setShowRawSource: NO]; } else { NSBeep(); } } // // // - (IBAction) showConsoleWindow: (id) sender { TOGGLE_WINDOW(ConsoleWindowController); } // // This method is used to show the find window on the screen. // We use a singleton. // - (IBAction) showFindWindow: (id) sender { TOGGLE_WINDOW(FindWindowController); } // // // - (IBAction) showMailboxInspectorPanel: (id) sender { TOGGLE_WINDOW(MailboxInspectorPanelController); } // // This method is used to show the mailbox manager window on the screen. // We use a singleton. // - (IBAction) showMailboxManager: (id) sender { if ([[NSUserDefaults standardUserDefaults] integerForKey: @"PreferredViewStyle" default: GNUMailDrawerView] == GNUMailDrawerView) { if ([GNUMail lastMailWindowOnTop] && [[[GNUMail lastMailWindowOnTop] delegate] isKindOfClass: [MailWindowController class]]) { [[[GNUMail lastMailWindowOnTop] delegate] openOrCloseDrawer: self]; } } else { TOGGLE_WINDOW(MailboxManagerController); } } // // // - (IBAction) showOrHideDeletedMessages: (id) sender { if ([GNUMail lastMailWindowOnTop]) { MailWindowController *aMailWindowController; aMailWindowController = (MailWindowController *)[[GNUMail lastMailWindowOnTop] delegate]; if ([[aMailWindowController folder] showDeleted]) { [[aMailWindowController folder] setShowDeleted: NO]; } else { [[aMailWindowController folder] setShowDeleted: YES]; } [aMailWindowController tableViewShouldReloadData]; [aMailWindowController updateStatusLabel]; } else { NSBeep(); } } // // // - (IBAction) showOrHideReadMessages: (id) sender { if ([GNUMail lastMailWindowOnTop]) { MailWindowController *aMailWindowController; aMailWindowController = (MailWindowController *)[[GNUMail lastMailWindowOnTop] delegate]; if ([[aMailWindowController folder] showRead]) { [[aMailWindowController folder] setShowRead: NO]; } else { [[aMailWindowController folder] setShowRead: YES]; } [aMailWindowController tableViewShouldReloadData]; [aMailWindowController updateStatusLabel]; } else { NSBeep(); } } // // // - (IBAction) showOrHideTableColumns: (id) sender { NSMutableArray *theColumns; NSMenuItem *theItem; int i, count; theColumns = [[NSMutableArray alloc] init]; if ([sender state] == NSOnState) { [sender setState: NSOffState]; } else { [sender setState: NSOnState]; } count = [columns numberOfItems]; for (i = 0; i < count; i++) { theItem = (NSMenuItem *)[columns itemAtIndex: i]; if ([theItem state] == NSOffState) { continue; } switch ([theItem tag]) { case GNUMailDateColumn: [theColumns addObject: @"Date"]; break; case GNUMailFlagsColumn: [theColumns addObject: @"Flagged"]; break; case GNUMailFromColumn: [theColumns addObject: @"From"]; break; case GNUMailNumberColumn: [theColumns addObject: @"Number"]; break; case GNUMailSizeColumn: [theColumns addObject: @"Size"]; break; case GNUMailStatusColumn: [theColumns addObject: @"Status"]; break; case GNUMailSubjectColumn: [theColumns addObject: @"Subject"]; break; } } [[NSUserDefaults standardUserDefaults] setObject: theColumns forKey: @"SHOWNTABLECOLUMNS"]; RELEASE(theColumns); [[NSNotificationCenter defaultCenter] postNotificationName: TableColumnsHaveChanged object: nil userInfo: nil]; } // // // - (IBAction) showOrHideToolbar: (id) sender { NSWindow *aWindow; aWindow = [NSApp keyWindow]; if (aWindow && [aWindow toolbar]) { [[aWindow toolbar] setVisible: ([[aWindow toolbar] isVisible] ? NO : YES)]; } } // // This method is used to show the preferences window on the screen. // The window is modal. // - (IBAction) showPreferencesWindow: (id) sender { [[PreferencesWindowController singleInstance] showWindow: self]; } // // This method is used to show the raw source of the selected message // from the last mail window on top. // - (IBAction) showRawSource: (id) sender { if ([GNUMail lastMailWindowOnTop]) { id aWindowController; CWMessage *aMessage; aWindowController = [[GNUMail lastMailWindowOnTop] delegate]; if (!aWindowController) { NSBeep(); return; } if ([aWindowController isKindOfClass: [MailWindowController class]]) { aMessage = [aWindowController selectedMessage]; } else { aMessage = [(MessageViewWindowController *)aWindowController message]; } if (aMessage) { if (![aWindowController showRawSource] ) { [aWindowController setShowRawSource: YES]; [showRawSource setTitle: _(@"Normal Display")]; if ([sender isKindOfClass: [NSButton class]] || [sender isKindOfClass: [NSMenuItem class]] ) { [sender setTitle: _(@"Normal Display")]; } else { [sender setLabel: _(@"Normal Display")]; } [aMessage setProperty: [NSNumber numberWithBool: YES] forKey: MessageViewing]; [Utilities showMessageRawSource: aMessage target: [aWindowController textView]]; } else { [aWindowController setShowRawSource: NO]; [showRawSource setTitle: _(@"Raw Source")]; if ([sender isKindOfClass: [NSButton class]] || [sender isKindOfClass: [NSMenuItem class]]) { [sender setTitle: _(@"Raw Source")]; } else { [sender setLabel: _(@"Raw Source")]; } [Utilities showMessage: aMessage target: [aWindowController textView] showAllHeaders: [aWindowController showAllHeaders]]; } } else { NSBeep(); } } else { NSBeep(); } } // // // - (IBAction) threadOrUnthreadMessages: (id) sender { if ([GNUMail lastMailWindowOnTop] && [[[GNUMail lastMailWindowOnTop] delegate] isKindOfClass: [MailWindowController class]]) { MailWindowController *aMailWindowController; aMailWindowController = [[GNUMail lastMailWindowOnTop] delegate]; if ([[aMailWindowController folder] allContainers]) { [[aMailWindowController folder] unthread]; } else { [[aMailWindowController folder] thread]; } [aMailWindowController tableViewShouldReloadData]; [[NSNotificationCenter defaultCenter] postNotificationName: MessageThreadingNotification object: [aMailWindowController folder]]; } else { NSBeep(); } } // // delegate methods // - (NSApplicationTerminateReply) applicationShouldTerminate: (NSApplication *) theSender { NSMutableArray *foldersToOpen; NSEnumerator *theEnumerator; id aStore, aWindow; int choice, i; if ([[[TaskManager singleInstance] allTasks] count] > 0) { choice = NSRunAlertPanel(_(@"Error!"), _(@"Not all tasks finished their execution. You must wait before quitting the application.\nOpen the Console (Windows -> Console) if you want to manage those tasks."), _(@"OK"), // default _(@"Quit Anyway"), // alternate NULL); if (choice == NSAlertDefaultReturn) { return NSTerminateCancel; } } // If the user has left any "edited" EditWindow:s open, we warn him/her about this if ([allEditWindows count] > 0) { for (i = 0; i < [allEditWindows count]; i++) { if ([[allEditWindows objectAtIndex: i] isDocumentEdited]) { choice = NSRunAlertPanel(_(@"Quit"), _(@"There are unsent Compose window."), _(@"Review Unsent"), // default _(@"Quit Anyway"), // alternate _(@"Cancel"), // other return NULL); // We want to review unsent Compose windows if (choice == NSAlertDefaultReturn) { [[allEditWindows objectAtIndex: i] makeKeyAndOrderFront: self]; return NSTerminateCancel; } // We want to quit else if (choice == NSAlertAlternateReturn) { break; } // We want to cancel the quit operation else { return NSTerminateCancel; } } } } // We first remove all observers [[NSNotificationCenter defaultCenter] removeObserver: self]; // We release our array containing all our EditWindow:s DESTROY(allEditWindows); // We closes all open MailWindow:s. Before doing so, we // save them in the FOLDERS_TO_OPEN default variable in order // to reopen them upon the application's startup. foldersToOpen = [[NSMutableArray alloc] init]; for (i = ([allMailWindows count]-1); i >= 0; i--) { aWindow = [allMailWindows objectAtIndex: i]; if (![[aWindow delegate] folder]) { [aWindow close]; continue; } if ([[[aWindow delegate] folder] isKindOfClass: [CWLocalFolder class]]) { [foldersToOpen addObject: [NSString stringWithFormat: @"local://%@/%@", [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"], [[[aWindow delegate] folder] name]]]; } else if ([[[aWindow delegate] folder] isKindOfClass: [CWIMAPFolder class]]) { [foldersToOpen addObject: [NSString stringWithFormat: @"imap://%@@%@/%@", [(CWIMAPStore *)[[[aWindow delegate] folder] store] username], [(CWIMAPStore *)[[[aWindow delegate] folder] store] name], [[[aWindow delegate] folder] name]]]; } [aWindow close]; } // We save our FOLDERS_TO_OPEN value in the user's defaults [[NSUserDefaults standardUserDefaults] setObject: foldersToOpen forKey: @"FOLDERS_TO_OPEN"]; [[NSUserDefaults standardUserDefaults] synchronize]; // We wait until all our windows are closed while ([allMailWindows count] > 0) { [[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode beforeDate: [NSDate distantFuture]]; } // We release our array containing all our MailWindow:s DESTROY(allMailWindows); // We close all remaining open Store:s theEnumerator = [[[MailboxManagerController singleInstance] allStores] objectEnumerator]; while ((aStore = [theEnumerator nextObject])) { NS_DURING [aStore close]; NS_HANDLER // Do nothing NS_ENDHANDLER } // We synchronize our MailboxManagerCache and we close all Stores [[(MailboxManagerController *)[MailboxManagerController singleInstance] cache] synchronize]; // Under GNUstep, we also close the window before releasing the singleton if ([[NSUserDefaults standardUserDefaults] integerForKey: @"PreferredViewStyle" default: GNUMailDrawerView] == GNUMailFloatingView) { [[[MailboxManagerController singleInstance] window] close]; } RELEASE([MailboxManagerController singleInstance]); // We close our Console [[[ConsoleWindowController singleInstance] window] close]; RELEASE([ConsoleWindowController singleInstance]); // We release our current working path TEST_RELEASE(currentWorkingPath); // We release our array containing all our bundles RELEASE(allBundles); // We release our array containing our password cache RELEASE([Utilities passwordCache]); // We release our MimeType, our Filters and our AddressBook RELEASE([MimeTypeManager singleInstance]); RELEASE([FilterManager singleInstance]); RELEASE([AddressBookController singleInstance]); // We stop our task manager [(TaskManager *)[TaskManager singleInstance] stop]; // We finally remove all temporary files and then, we are ready to really close the application. [self removeTemporaryFiles]; // We restore the application image under OS X since if we have drawn to it (by showing // the unread messages count), this image will stay put. #ifdef MACOSX [NSApp setApplicationIconImage: [NSImage imageNamed: @"NSApplicationIcon"]]; #endif return NSTerminateNow; } // // // - (void) applicationWillFinishLaunching: (NSNotification *) theNotification { #ifdef MACOSX unichar backspaceKey; // We begin by setting our NSApp's icon [ApplicationIconController singleInstance]; backspaceKey = NSBackspaceCharacter; [deleteOrUndelete setKeyEquivalent: [NSString stringWithCharacters: &backspaceKey length: 1]]; #else SEL action = NULL; unichar del, up, down; del = NSDeleteCharacter; // FIXME: We might want to display, instead: up = NSUpArrowFunctionKey; // 8593 (0x2191) U+2191 arrowup UPWARDS ARROW down = NSDownArrowFunctionKey; // 8595 (0x2193) U+2193 arrowup DOWNWARDS ARROW // We begin by setting our NSApp's icon [ApplicationIconController singleInstance]; // We continue by creating our NSMenu menu = [[NSMenu alloc] init]; [menu addItemWithTitle: _(@"Info") action: action keyEquivalent: @""]; [menu addItemWithTitle: _(@"Message") action: action keyEquivalent: @""]; [menu addItemWithTitle: _(@"Mailbox") action: action keyEquivalent: @""]; [menu addItemWithTitle: _(@"Edit") action: action keyEquivalent: @""]; [menu addItemWithTitle: _(@"Find") action: action keyEquivalent: @""]; [menu addItemWithTitle: _(@"View") action: action keyEquivalent: @""]; [menu addItemWithTitle: _(@"Windows") action: action keyEquivalent: @""]; // We verify if scrippting is supported by the application. if ( [NSApp isScriptingSupported] ) { [menu addItemWithTitle: _(@"Scripting") action: action keyEquivalent: @""]; } [menu addItemWithTitle: _(@"Services") action: action keyEquivalent: @""]; [menu addItemWithTitle: _(@"Hide") action: @selector (hide:) keyEquivalent: @"h"]; [menu addItemWithTitle: _(@"Quit") action: @selector(terminate:) keyEquivalent: @"q"]; // // Info menu / submenus // info = [[NSMenu alloc] init]; [menu setSubmenu: info forItem: [menu itemWithTitle: _(@"Info")]]; [info addItemWithTitle: _(@"About GNUMail...") action: @selector(showAboutPanel:) keyEquivalent: @""]; [info addItemWithTitle: _(@"Check for Updates...") action: @selector(checkForUpdates:) keyEquivalent: @""]; [info addItemWithTitle: _(@"Preferences...") action: @selector(showPreferencesWindow:) keyEquivalent: @","]; [info addItemWithTitle: _(@"Help...") action: action keyEquivalent: @"?"]; RELEASE(info); // // Our Message menu / submenus // message = [[NSMenu alloc] init]; [menu setSubmenu: message forItem: [menu itemWithTitle: _(@"Message")]]; [message addItemWithTitle: _(@"Compose") action: @selector(composeMessage:) keyEquivalent: @"n"]; // // Our reply submenu // [message addItemWithTitle: _(@"Reply") action: action keyEquivalent: @""]; reply = [[NSMenu alloc] init]; [message setSubmenu: reply forItem: [message itemWithTitle: _(@"Reply")]]; [reply addItemWithTitle: _(@"Normal") action: @selector(replyToMessage:) keyEquivalent: @"R"]; [[reply itemAtIndex: 0] setTag: PantomimeNormalReplyMode]; [reply addItemWithTitle: _(@"Simple") action: @selector(replyToMessage:) keyEquivalent: @""]; [[reply itemAtIndex: 1] setTag: PantomimeSimpleReplyMode]; [reply addItemWithTitle: _(@"All") action: @selector(replyToMessage:) keyEquivalent: @"E"]; [[reply itemAtIndex: 2] setTag: (PantomimeNormalReplyMode|PantomimeReplyAllMode)]; // // Our forward submenu // [message addItemWithTitle: _(@"Forward") action: action keyEquivalent: @""]; forward = [[NSMenu alloc] init]; [message setSubmenu: forward forItem: [message itemWithTitle: _(@"Forward")]]; [forward addItemWithTitle: _(@"Attachment") action: @selector(forwardMessage:) keyEquivalent: @""]; [[forward itemAtIndex: 0] setTag: PantomimeAttachmentForwardMode]; [forward addItemWithTitle: _(@"Inline") action: @selector(forwardMessage:) keyEquivalent: @"W"]; [[forward itemAtIndex: 1] setTag: PantomimeInlineForwardMode]; RELEASE(forward); [message addItemWithTitle: _(@"Redirect") action: @selector(redirectMessage:) keyEquivalent: @""]; [message addItemWithTitle: _(@"Make Filter from") action: action keyEquivalent: @""]; // // Submenu for creating filter rules from messages // messageFilter = [[NSMenu alloc] init]; [message setSubmenu: messageFilter forItem: [message itemWithTitle: _(@"Make Filter from")]]; [messageFilter addItemWithTitle: _(@"List-Id") action: @selector(makeFilterFromListId:) keyEquivalent: @""]; [messageFilter addItemWithTitle: _(@"Sender") action: @selector(makeFilterFromSender:) keyEquivalent: @""]; [messageFilter addItemWithTitle: _(@"Subject") action: @selector(makeFilterFromSubject:) keyEquivalent: @""]; RELEASE(messageFilter); deliver = [[NSMenuItem alloc] init]; [deliver setTitle: _(@"Deliver")]; [deliver setAction: @selector(sendMessage:)]; [deliver setKeyEquivalent: @"D"]; [message addItem: deliver]; RELEASE(deliver); markAsReadOrUnread = [[NSMenuItem alloc] init]; [markAsReadOrUnread setTitle: _(@"Mark as Read")]; [markAsReadOrUnread setAction: @selector(markMessageAsReadOrUnread:)]; [markAsReadOrUnread setKeyEquivalent: @"U"]; [message addItem: markAsReadOrUnread]; RELEASE(markAsReadOrUnread); markAsFlaggedOrUnflagged = [[NSMenuItem alloc] init]; [markAsFlaggedOrUnflagged setTitle: _(@"Mark as Flagged")]; [markAsFlaggedOrUnflagged setAction: @selector(markMessageAsFlaggedOrUnflagged:)]; [markAsFlaggedOrUnflagged setKeyEquivalent: @""]; [message addItem: markAsFlaggedOrUnflagged]; RELEASE(markAsFlaggedOrUnflagged); deleteOrUndelete = [[NSMenuItem alloc] init]; [deleteOrUndelete setTitle: _(@"Undelete")]; [deleteOrUndelete setAction: @selector(deleteOrUndeleteMessage:)]; [deleteOrUndelete setKeyEquivalent: [NSString stringWithCharacters: &del length: 1]]; [message addItem: deleteOrUndelete]; RELEASE(deleteOrUndelete); [message addItemWithTitle: _(@"Save") action: action keyEquivalent: @""]; save = [[NSMenu alloc] init]; [message setSubmenu: save forItem: [message itemWithTitle: _(@"Save")]]; [save addItemWithTitle: _(@"Text from Message") action: @selector(saveTextFromMessage:) keyEquivalent: @""]; RELEASE(save); [message addItemWithTitle: _(@"Drafts") action: action keyEquivalent: @""]; // // // drafts = [[NSMenu alloc] init]; saveInDrafts = [[NSMenuItem alloc] initWithTitle: _(@"Save in Drafts") action: @selector(saveInDrafts:) keyEquivalent: @"s"]; [drafts addItem: saveInDrafts]; RELEASE(saveInDrafts); [drafts addItemWithTitle: _(@"Restore Draft") action: @selector(restoreDraft:) keyEquivalent: @""]; [[message itemWithTitle: _(@"Drafts")] setSubmenu: drafts]; RELEASE(drafts); [message addItemWithTitle: _(@"Text Encodings") action: action keyEquivalent: @""]; textEncodings = [[NSMenu alloc] init]; [message setSubmenu: textEncodings forItem: [message itemWithTitle: _(@"Text Encodings")]]; RELEASE(textEncodings); [message addItemWithTitle: _(@"Add Sender to Address Book") action: @selector(addSenderToAddressBook:) keyEquivalent: @""]; [message addItemWithTitle: _(@"Apply Manual Filters") action: action keyEquivalent: @""]; filters = [[NSMenu alloc] init]; [[message itemWithTitle: _(@"Apply Manual Filters")] setSubmenu: filters]; RELEASE(filters); [message addItemWithTitle: _(@"Print...") action: @selector(printMessage:) keyEquivalent: @"p"]; RELEASE(message); // // Mailbox menu / submenus // mailbox = [[NSMenu alloc] init]; [menu setSubmenu: mailbox forItem: [menu itemWithTitle: _(@"Mailbox")]]; [mailbox addItemWithTitle: _(@"Mailboxes...") action: @selector(showMailboxManager:) keyEquivalent: @"M"]; incomingMailServers = [[NSMenu alloc] init]; [mailbox addItemWithTitle: _(@"Get New Mail") action: action keyEquivalent: @""]; [[mailbox itemAtIndex: 1] setSubmenu: incomingMailServers]; RELEASE(incomingMailServers); [mailbox addItemWithTitle: _(@"New Viewer Window") action: @selector(newViewerWindow:) keyEquivalent: @""]; [mailbox addItemWithTitle: _(@"Import Mailboxes...") action: @selector(importMailboxes:) keyEquivalent: @""]; [mailbox addItemWithTitle: _(@"Inspector...") action: @selector(showMailboxInspectorPanel:) keyEquivalent: @""]; [mailbox addItemWithTitle: _(@"Compact...") action: @selector(compactMailbox:) keyEquivalent: @"K"]; RELEASE(mailbox); // // Edit menu / submenus // edit = [[NSMenu alloc] init]; [menu setSubmenu: edit forItem: [menu itemWithTitle: _(@"Edit")]]; [edit addItemWithTitle: _(@"Cut") action: @selector(cut:) keyEquivalent: @"x"]; [edit addItemWithTitle: _(@"Copy") action: @selector(copy:) keyEquivalent: @"c"]; [edit addItemWithTitle: _(@"Paste") action: @selector(paste:) keyEquivalent: @"v"]; [edit addItemWithTitle: _(@"Paste As Quoted Text") action: @selector(pasteAsQuoted:) keyEquivalent: @"V"]; [edit addItemWithTitle: _(@"Undo") action: action keyEquivalent: @"z"]; [edit addItemWithTitle: _(@"Spelling...") action: @selector(checkSpelling:) keyEquivalent: @":"]; [edit addItemWithTitle: _(@"Check Spelling") action: @selector(showGuessPanel:) keyEquivalent: @";"]; [edit addItemWithTitle: _(@"Select All") action: @selector(selectAll:) keyEquivalent: @"a"]; selectAllMessagesInThread = [[NSMenuItem alloc] initWithTitle: _(@"Select All Messages in Thread") action: @selector(selectAllMessagesInThread:) keyEquivalent: @""]; [edit addItem: selectAllMessagesInThread]; RELEASE(selectAllMessagesInThread); RELEASE(edit); // // Find menu / submenus // find = [[NSMenu alloc] init]; [menu setSubmenu: find forItem: [menu itemWithTitle: _(@"Find")]]; [find addItemWithTitle: _(@"Find Messages...") action: @selector(showFindWindow:) keyEquivalent: @"F"]; [find addItemWithTitle: _(@"Find Text...") action: action keyEquivalent: @"f"]; [find addItemWithTitle: _(@"Find Next") action: @selector(findNext:) keyEquivalent: @"g"]; [find addItemWithTitle: _(@"Find Previous") action: @selector(findPrevious:) keyEquivalent: @"d"]; enterSelection = [[NSMenuItem alloc] initWithTitle: _(@"Enter Selection") action: action keyEquivalent: @"e"]; [find addItem: enterSelection]; RELEASE(enterSelection); RELEASE(find); // // Our View menu / submenus // view = [[NSMenu alloc] init]; [menu setSubmenu: view forItem: [menu itemWithTitle: _(@"View")]]; threadOrUnthreadMessages = [[NSMenuItem alloc] init]; [threadOrUnthreadMessages setTitle: _(@"Thread Messages")]; [threadOrUnthreadMessages setAction: @selector(threadOrUnthreadMessages:)]; [threadOrUnthreadMessages setKeyEquivalent: @""]; [threadOrUnthreadMessages setTag: THREAD_MESSAGES]; [view addItem: threadOrUnthreadMessages]; RELEASE(threadOrUnthreadMessages); [view addItemWithTitle: _(@"Columns") action: action keyEquivalent: @""]; columns = [[NSMenu alloc] init]; [[view itemAtIndex: 1] setSubmenu: columns]; [columns addItemWithTitle: _(@"Date") action: @selector(showOrHideTableColumns:) keyEquivalent: @""]; [columns addItemWithTitle: _(@"Flags") action: @selector(showOrHideTableColumns:) keyEquivalent: @""]; [columns addItemWithTitle: _(@"From") action: @selector(showOrHideTableColumns:) keyEquivalent: @""]; [columns addItemWithTitle: _(@"Number") action: @selector(showOrHideTableColumns:) keyEquivalent: @""]; [columns addItemWithTitle: _(@"Size") action: @selector(showOrHideTableColumns:) keyEquivalent: @""]; [columns addItemWithTitle: _(@"Status") action: @selector(showOrHideTableColumns:) keyEquivalent: @""]; [columns addItemWithTitle: _(@"Subject") action: @selector(showOrHideTableColumns:) keyEquivalent: @""]; [[columns itemAtIndex: 0] setTag: GNUMailDateColumn]; [[columns itemAtIndex: 1] setTag: GNUMailFlagsColumn]; [[columns itemAtIndex: 2] setTag: GNUMailFromColumn]; [[columns itemAtIndex: 3] setTag: GNUMailNumberColumn]; [[columns itemAtIndex: 4] setTag: GNUMailSizeColumn]; [[columns itemAtIndex: 5] setTag: GNUMailStatusColumn]; [[columns itemAtIndex: 6] setTag: GNUMailSubjectColumn]; RELEASE(columns); [view addItemWithTitle: _(@"Sorting") action: action keyEquivalent: @""]; sorting = [[NSMenu alloc] init]; [[view itemAtIndex: 2] setSubmenu: sorting]; [sorting addItemWithTitle: _(@"Sort by Date") action: @selector(sortByDate:) keyEquivalent: @""]; [sorting addItemWithTitle: _(@"Sort by Name") action: @selector(sortByName:) keyEquivalent: @"S"]; [sorting addItemWithTitle: _(@"Sort by Number") action: @selector(sortByNumber:) keyEquivalent: @""]; [sorting addItemWithTitle: _(@"Sort by Size") action: @selector(sortBySize:) keyEquivalent: @""]; [sorting addItemWithTitle: _(@"Sort by Subject") action: @selector(sortBySubject:) keyEquivalent: @""]; RELEASE(sorting); showOrHideDeleted = [[NSMenuItem alloc] init]; [showOrHideDeleted setTitle: _(@"Hide Deleted")]; [showOrHideDeleted setAction: @selector(showOrHideDeletedMessages:)]; [showOrHideDeleted setKeyEquivalent: @""]; [showOrHideDeleted setTag: HIDE_DELETED_MESSAGES]; [view addItem: showOrHideDeleted]; RELEASE(showOrHideDeleted); showOrHideRead = [[NSMenuItem alloc] init]; [showOrHideRead setTitle: _(@"Hide Read")]; [showOrHideRead setAction: @selector(showOrHideReadMessages:)]; [showOrHideRead setKeyEquivalent: @""]; [showOrHideRead setTag: HIDE_READ_MESSAGES]; [view addItem: showOrHideRead]; RELEASE(showOrHideRead); showAllHeaders = [[NSMenuItem alloc] init]; [showAllHeaders setTitle: _(@"All Headers")]; [showAllHeaders setAction: @selector(showAllHeaders:)]; [showAllHeaders setKeyEquivalent: @""]; [showAllHeaders setTag: SHOW_ALL_HEADERS]; [view addItem: showAllHeaders]; RELEASE(showAllHeaders); showRawSource = [[NSMenuItem alloc] init]; [showRawSource setTitle: _(@"Raw Source")]; [showRawSource setAction: @selector(showRawSource:)]; [showRawSource setKeyEquivalent: @""]; [view addItem: showRawSource]; RELEASE(showRawSource); [view addItemWithTitle: _(@"Previous Unread") action: @selector(previousUnreadMessage:) keyEquivalent: [NSString stringWithCharacters: &up length: 1]]; [[view itemWithTitle: _(@"Previous Unread")] setKeyEquivalentModifierMask: NSControlKeyMask]; [view addItemWithTitle: _(@"Next Unread") action: @selector(nextUnreadMessage:) keyEquivalent: [NSString stringWithCharacters: &down length: 1]]; [[view itemWithTitle: _(@"Next Unread")] setKeyEquivalentModifierMask: NSControlKeyMask]; showOrHideToolbar = [[NSMenuItem alloc] init]; [showOrHideToolbar setTitle: _(@"Hide Toolbar")]; [showOrHideToolbar setAction: @selector(showOrHideToolbar:)]; [showOrHideToolbar setKeyEquivalent: @""]; [view addItem: showOrHideToolbar]; RELEASE(showOrHideToolbar); customizeToolbar = [[NSMenuItem alloc] init]; [customizeToolbar setTitle: _(@"Customize Toolbar...")]; [customizeToolbar setAction: @selector(customizeToolbar:)]; [customizeToolbar setKeyEquivalent: @""]; [view addItem: customizeToolbar]; RELEASE(customizeToolbar); RELEASE(view); // // Windows menu // windows = [[NSMenu alloc] init]; [menu setSubmenu: windows forItem: [menu itemWithTitle: _(@"Windows")]]; [windows addItemWithTitle: _(@"Address Book") action: @selector(showAddressBook:) keyEquivalent: @"A"]; [windows addItemWithTitle: _(@"Console") action: @selector(showConsoleWindow:) keyEquivalent: @"C"]; [windows addItemWithTitle: _(@"Arrange") action: @selector(arrangeInFront:) keyEquivalent: @""]; [windows addItemWithTitle: _(@"Miniaturize") action: @selector(performMiniaturize:) keyEquivalent: @"m"]; [windows addItemWithTitle: _(@"Close") action: @selector(close:) keyEquivalent: @"w"]; RELEASE(windows); if ([NSApp isScriptingSupported]) { [menu setSubmenu: [NSApp scriptingMenu] forItem: [menu itemWithTitle: _(@"Scripting")]]; } // Our Services menu services = [[NSMenu alloc] init]; [menu setSubmenu: services forItem: [menu itemWithTitle: _(@"Services")]]; [NSApp setServicesMenu: services]; RELEASE(services); [NSApp setMainMenu: menu]; [NSApp setWindowsMenu: windows]; RELEASE(menu); #endif } // // // - (void) applicationDidFinishLaunching: (NSNotification *) theNotification { NSUserDefaults *aUserDefaults; NSString *pathToLocalMailDir; NSFileManager *aFileManager; CWLocalStore *aLocalStore; BOOL isDir, mustShowPreferencesWindow; aUserDefaults = [NSUserDefaults standardUserDefaults]; aFileManager = [NSFileManager defaultManager]; mustShowPreferencesWindow = NO; aLocalStore = nil; // // We check we if must update our view style // if ([aUserDefaults objectForKey: @"PreferredViewStyleAfterRestart"]) { [aUserDefaults setInteger: [aUserDefaults integerForKey: @"PreferredViewStyleAfterRestart"] forKey: @"PreferredViewStyle"]; [aUserDefaults removeObjectForKey: @"PreferredViewStyleAfterRestart"]; } // We now verify if the User's Library directory does exist (to store // the AddressBook, the MimeTypes, etc) and if not, we create it. if ([aFileManager fileExistsAtPath: (NSString *)GNUMailUserLibraryPath() isDirectory: &isDir]) { if (!isDir) { NSRunCriticalAlertPanel(_(@"Fatal error!"), _(@"%@ exists but it is a file not a directory.\nThe application will now terminate."), @"OK", NULL, NULL, GNUMailUserLibraryPath()); exit(1); } } else { if (![aFileManager createDirectoryAtPath: (NSString *)GNUMailUserLibraryPath() attributes: nil] ) { // Directory creation failed. We warn the user, then quit. NSRunCriticalAlertPanel(_(@"Fatal error!"), _(@"Could not create directory: %@\nThe application will now terminate."), @"OK", NULL, NULL, GNUMailUserLibraryPath()); exit(1); } } [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_updateGetNewMailMenuItems:) name: AccountsHaveChanged object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_updateFilterMenuItems:) name: FiltersHaveChanged object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(selectionInTextViewHasChanged:) name: NSTextViewDidChangeSelectionNotification object: nil]; // We initialize our mutable array containing all open EditWindow:s allEditWindows = [[NSMutableArray alloc] init]; // We initialize our mutable array containing all open MailWindow:s allMailWindows = [[NSMutableArray alloc] init]; // We initialize our mutable array containing all our bundles allBundles = [[NSMutableArray alloc] init]; // We set the current working path of GNUMail to the user's home directory [GNUMail setCurrentWorkingPath: NSHomeDirectory()]; // Setup our mailbox locations, if LOCALMAILDIR isn't defined, we define // it to ~/Mailboxes (if the mbox format is used, ~/Maildir otherwise) // under GNUstep and to ~/Library/GNUMail/Mailboxes under Mac OS X if (![[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]) { #ifdef MACOSX pathToLocalMailDir = [NSHomeDirectory() stringByAppendingPathComponent: @"Library/GNUMail/Mailboxes"]; #else pathToLocalMailDir = [NSHomeDirectory() stringByAppendingPathComponent: @"Mailboxes"]; #endif [[NSUserDefaults standardUserDefaults] setObject: pathToLocalMailDir forKey: @"LOCALMAILDIR"]; [[NSUserDefaults standardUserDefaults] setObject: pathToLocalMailDir forKey: @"LOCALMAILDIR_PREVIOUS"]; } else { NSString *aString; pathToLocalMailDir = [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]; // We remove the trailing slash, if any. if ([pathToLocalMailDir length] > 1 && [pathToLocalMailDir hasSuffix: @"/"]) { pathToLocalMailDir = [pathToLocalMailDir substringToIndex: ([pathToLocalMailDir length] - 1)]; [[NSUserDefaults standardUserDefaults] setObject: pathToLocalMailDir forKey: @"LOCALMAILDIR"]; } // If LOCALMAILDIR_PREVIOUS isn't set, we set it to LOCALMAILDIR if (![[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR_PREVIOUS"]) { [[NSUserDefaults standardUserDefaults] setObject: pathToLocalMailDir forKey: @"LOCALMAILDIR_PREVIOUS"]; } aString = [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR_PREVIOUS"]; #warning IF THE DESTINATION PATH ALREADY EXISTS, WARN AND QUIT THE APP if (![pathToLocalMailDir isEqualToString: aString]) { [self moveLocalMailDirectoryFromPath: aString toPath: pathToLocalMailDir]; } } // // We migrate our preferences (and other things) from previous GNUMail versions. // Currently, we can migrate from: 1.1.2 to 1.2.0 // [self update_112_to_120]; // // We verify if GNUMail has been configured, if not, we suggest the user to do so. // if (![[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"]) { NSMutableDictionary *allValues, *theAccount; WelcomePanel *aWelcomePanel; int type; aWelcomePanel = [[WelcomePanel alloc] init]; [aWelcomePanel layoutWindow]; if ([NSApp runModalForWindow: aWelcomePanel] == NSRunAbortedResponse) { [NSApp terminate: self]; } type = ([[aWelcomePanel matrix] selectedRow] ? PantomimeFormatMaildir : PantomimeFormatMbox); RELEASE(aWelcomePanel); // We create the mailboxes directory for GNUMail if (![[NSFileManager defaultManager] fileExistsAtPath: pathToLocalMailDir isDirectory: &isDir]) { [[NSFileManager defaultManager] createDirectoryAtPath: pathToLocalMailDir attributes: nil]; } else { // If it's a file if (!isDir) { NSRunAlertPanel(_(@"Error!"), _(@"%@ is a file and not a directory. Please remove that file before restarting GNUMail."), _(@"OK"), NULL, NULL, pathToLocalMailDir); [NSApp terminate: self]; } } // // We create the following Mailboxes automatically, only if we need to: // // - Inbox : for the newly received messages // - Sent : for the messages that have been sent // - Trash : for the messages we want to delete and transfer locally in IMAP // - Drafts : for un-sent messages // aLocalStore = [[CWLocalStore alloc] initWithPath: pathToLocalMailDir]; [aLocalStore createFolderWithName: @"Inbox" type: type contents: [NSData dataWithContentsOfFile: [NSString stringWithFormat: @"%@/Welcome", [[NSBundle mainBundle] resourcePath]]]]; [aLocalStore createFolderWithName: @"Sent" type: type contents: nil]; [aLocalStore createFolderWithName: @"Trash" type: type contents: nil]; [aLocalStore createFolderWithName: @"Drafts" type: type contents: nil]; if (type == PantomimeFormatMaildir) { [[NSUserDefaults standardUserDefaults] setInteger: 1 forKey: @"UseMaildirMailboxFormat"]; } // // We create a basic account with default preferences values just to get the user started. // theAccount = [[NSMutableDictionary alloc] init]; // // We set the default PERSONAL values. // allValues = [[NSMutableDictionary alloc] init]; [allValues setObject: _(@"Your name") forKey: @"NAME"]; [allValues setObject: _(@"Your E-Mail address") forKey: @"EMAILADDR"]; [theAccount setObject: allValues forKey: @"PERSONAL"]; RELEASE(allValues); // // MAILBOXES, we set the INBOX, SENT, .. for this account. // allValues = [[NSMutableDictionary alloc] init]; [allValues setObject: [NSString stringWithFormat: @"local://%@", [pathToLocalMailDir stringByAppendingPathComponent: @"Inbox"]] forKey: @"INBOXFOLDERNAME"]; [allValues setObject: [NSString stringWithFormat: @"local://%@", [pathToLocalMailDir stringByAppendingPathComponent: @"Sent"]] forKey: @"SENTFOLDERNAME"]; [allValues setObject: [NSString stringWithFormat: @"local://%@", [pathToLocalMailDir stringByAppendingPathComponent: @"Drafts"]] forKey: @"DRAFTSFOLDERNAME"]; [allValues setObject: [NSString stringWithFormat: @"local://%@", [pathToLocalMailDir stringByAppendingPathComponent: @"Trash"]] forKey: @"TRASHFOLDERNAME"]; [theAccount setObject: allValues forKey: @"MAILBOXES"]; RELEASE(allValues); // // SEND, we set the transport method to SMTP // allValues = [[NSMutableDictionary alloc] init]; [allValues setObject: [NSNumber numberWithInt: 2] forKey: @"TRANSPORT_METHOD"]; [allValues setObject: @"smtp.server.com" forKey: @"SMTP_HOST"]; [theAccount setObject: allValues forKey: @"SEND"]; RELEASE(allValues); // // We finally save the account's information // [[NSUserDefaults standardUserDefaults] setObject: [NSDictionary dictionaryWithObject: theAccount forKey: @"General"] forKey: @"ACCOUNTS"]; RELEASE(theAccount); // // We create the basic set of shown headers and other preference values. // [[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects: @"Date", @"From", @"To", @"Cc", @"Subject", nil] forKey: @"SHOWNHEADERS"]; [[NSUserDefaults standardUserDefaults] setBool: YES forKey: @"HIDE_DELETED_MESSAGES"]; [[NSUserDefaults standardUserDefaults] setBool: YES forKey: @"HIGHLIGHT_URL"]; // // We add our "Inbox" folder to the list of folders to open. // [[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObject: [NSString stringWithFormat: @"local://%@", [pathToLocalMailDir stringByAppendingPathComponent: @"Inbox"]]] forKey: @"FOLDERS_TO_OPEN"]; mustShowPreferencesWindow = YES; } // if ( ![[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] ) // // We initialize our store // if (!aLocalStore) { aLocalStore = [[CWLocalStore alloc] initWithPath: pathToLocalMailDir]; } if (!aLocalStore) { NSString *aString; #ifdef MACOSX aString = _(@"Could not open the Local Store.\nThat means GNUMail is not properly configured.\nTo fix this problem, do the following commands:\n\n%% mkdir ~/Library/GNUMail/Mailboxes\n%% touch ~/Library/GNUMail/Mailboxes/Inbox\n%% touch ~/Library/GNUMail/Mailboxes/Sent\n%% touch ~/Library/GNUMail/Mailboxes/Trash\n%% touch ~/Library/GNUMail/Mailboxes/Drafts\n\nand restart GNUMail after that! You can also remove the ~/Library/Preferences/com.collaboration-world.GNUMail.plist file instead of doing the commands mentioned above."); #else aString = _(@"Could not open the Local Store.\nThat means GNUMail is not properly configured.\nTo fix this problem, do the following commands:\n\n%% mkdir ~/Mailboxes\n%% touch ~/Mailboxes/Inbox\n%% touch ~/Mailboxes/Sent\n%% touch ~/Mailboxes/Trash\n%% touch ~/Mailboxes/Drafts\n\nand restart GNUMail after that!"); #endif NSRunCriticalAlertPanel(_(@"Fatal error!"), aString, @"OK", NULL, NULL); [NSApp terminate: self]; } [aLocalStore setDelegate: [TaskManager singleInstance]]; // We got a valid Local store, let's add it to our list of open Store:s in the MailboxManagerController [[MailboxManagerController singleInstance] setStore: aLocalStore name: @"GNUMAIL_LOCAL_STORE" username: NSUserName()]; [[MailboxManagerController singleInstance] reloadAllFolders]; // Now we set the target to our items for creating/deleting/renaming mailboxes #ifdef MACOSX [create setTarget: [MailboxManagerController singleInstance]]; [create setAction: @selector(create:)]; [delete setTarget: [MailboxManagerController singleInstance]]; [delete setAction: @selector(delete:)]; [rename setTarget: [MailboxManagerController singleInstance]]; [rename setAction: @selector(rename:)]; #endif // Sync with the user's defaults [[NSUserDefaults standardUserDefaults] synchronize]; // We create our console [ConsoleWindowController singleInstance]; // We load all our bundles [self _loadBundles]; // We start our task manager and our global timer [[TaskManager singleInstance] run]; // // We show of MailboxManager window, if we need to. // Under GNUstep, we MUST do this _before_ showing any MailWindow:s. // #ifndef MACOSX if ([[NSUserDefaults standardUserDefaults] boolForKey: @"OPEN_MAILBOXMANAGER_ON_STARTUP"]) { [self showMailboxManager: nil]; } #endif // We show the Console window, if we need to. if ([[NSUserDefaults standardUserDefaults] boolForKey: @"OPEN_CONSOLE_ON_STARTUP"]) { [self showConsoleWindow: nil]; } [Utilities restoreOpenFoldersForStore: aLocalStore]; [self _connectToIMAPServers]; // If we must show the Preferences window, we show it right now. That happens if for example, // we started GNUMail for the first time and the user has chosen to configure it. if (mustShowPreferencesWindow) { [self showPreferencesWindow: nil]; } // We register our service [NSApp setServicesProvider: self]; // We set up our initial list of incoming mail servers [self _updateGetNewMailMenuItems: nil]; // We set up our initial list of filters for the menu [self _updateFilterMenuItems: nil]; // We load all the items for the supported encodings (in Pantomime) in the encoding menu [self _updateTextEncodingsMenu: self]; [self _updateVisibleColumns]; [[MailboxManagerController singleInstance] restoreUnsentMessages]; // We finally check for new mails on startup, if we need to. #warning FIXME move once we are done initializing any specific IMAP store and do it right away for POP3 accounts [[TaskManager singleInstance] checkForNewMail: self controller: nil]; // We are done initing doneInit = YES; // If a window has requested to be on top, do it now. if (requestLastMailWindowOnTop != nil) { [requestLastMailWindowOnTop makeKeyAndOrderFront: self]; [GNUMail setLastMailWindowOnTop: requestLastMailWindowOnTop]; requestLastMailWindowOnTop = nil; } } // // methods invoked by notifications // - (void) selectionInTextViewHasChanged: (id) sender { if ([[sender object] selectedRange].length) { [enterSelection setAction: @selector(enterSelectionInFindPanel:)]; } else { [enterSelection setAction: NULL]; } } // // access / mutation methods // + (NSArray *) allBundles { return allBundles; } + (NSArray *) allMailWindows { return allMailWindows; } + (NSString *) currentWorkingPath { return currentWorkingPath; } + (void) setCurrentWorkingPath: (NSString *) thePath { ASSIGN(currentWorkingPath, thePath); } + (id) lastAddressTakerWindowOnTop { return lastAddressTakerWindowOnTop; } + (void) setLastAddressTakerWindowOnTop: (id) aWindow { lastAddressTakerWindowOnTop = aWindow; } + (id) lastMailWindowOnTop { return lastMailWindowOnTop; } // // // + (void) setLastMailWindowOnTop: (id) aWindow { lastMailWindowOnTop = aWindow; } // // // - (NSMenu *) saveMenu { return save; } // // other methods // - (void) addItemToMenuFromTextAttachment: (NSTextAttachment *) theTextAttachment { NSFileWrapper *aFileWrapper; ExtendedMenuItem *menuItem; aFileWrapper = [theTextAttachment fileWrapper]; menuItem = [[ExtendedMenuItem alloc] initWithTitle: [aFileWrapper preferredFilename] action: @selector(saveAttachment:) keyEquivalent: @""]; [menuItem setTextAttachment: theTextAttachment]; [save addItem: menuItem]; RELEASE(menuItem); } // // // + (void) addEditWindow: (id) theEditWindow { if (allEditWindows && theEditWindow ) { [allEditWindows addObject: theEditWindow]; } } // // // + (void) addMailWindow: (id) theMailWindow { if (theMailWindow) { [allMailWindows addObject: theMailWindow]; } } // // Used on OS X for AppleScript support. It is also used // in the newMessageWithRecipient: userData: error: method // defined in GNUMail+Services. // - (void) newMessageWithRecipient: (NSString *) aString { CWInternetAddress *anInternetAddress; EditWindowController *aController; CWMessage *aMessage; // We create a new message and we set the recipient aMessage = [[CWMessage alloc] init]; anInternetAddress = [[CWInternetAddress alloc] initWithString: aString]; [anInternetAddress setType: PantomimeToRecipient]; [aMessage addRecipient: anInternetAddress]; RELEASE(anInternetAddress); // We create our controller and we show the window aController = [[EditWindowController alloc] initWithWindowNibName: @"EditWindow"]; if (aController) { [[aController window] setTitle: _(@"New message...")]; [aController setMessage: aMessage]; [aController setShowCc: NO]; [aController setAccountName: nil]; // If we just got launched, as to to be put on top after we are done initing if (!doneInit) { requestLastMailWindowOnTop = [aController window]; } else { [[aController window] makeKeyAndOrderFront: self]; } } RELEASE(aMessage); } // // // + (void) removeEditWindow: (id) theEditWindow { if (allEditWindows && theEditWindow ) { [allEditWindows removeObject: theEditWindow]; } } // // // + (void) removeMailWindow: (id) theMailWindow { if (theMailWindow) { [allMailWindows removeObject: theMailWindow]; } } @end // // Scripting support; still experimental code. // #ifdef MACOSX @implementation GNUMail (KeyValueCoding) - (BOOL)application:(NSApplication *)sender delegateHandlesKey:(NSString *)key { return [key isEqualToString:@"messageCompositions"]; } // accessors for to-many relationships: -(NSMutableArray*)messageCompositions { return _messageCompositions; } -(void)setMessageCompositions: (NSMutableArray*)messageCompositions { [_messageCompositions setArray: messageCompositions]; } // // Accessors for to-many relationships (See NSScriptKeyValueCoding.h) // - (void) addInMessageCompositions: (MessageComposition *) object { [self insertInMessageCompositions: object atIndex: [_messageCompositions count]]; } - (void) insertInMessageCompositions: (MessageComposition *) object { [self insertInMessageCompositions: object atIndex: [_messageCompositions count]]; } - (void) insertInMessageCompositions: (MessageComposition *) object atIndex: (unsigned) index { [_messageCompositions insertObject: object atIndex: index]; } - (void) replaceInMessageCompositions: (MessageComposition *) object atIndex: (unsigned) index { [_messageCompositions replaceObjectAtIndex: index withObject: object]; } - (void) removeFromMessageCompositionsAtIndex: (unsigned) index { [_messageCompositions removeObjectAtIndex: index]; } - (id) valueInMessageCompositionsAtIndex: (unsigned) index { return ([_messageCompositions objectAtIndex: index]); } @end #endif // // Private methods // @implementation GNUMail (Private) // // Tries to load the property page. Returns NO in case of a failure // or if there's no update available. // - (BOOL) _checkForUpdate { BOOL checked; checked = NO; NS_DURING { NSString *aString; NSData *aData; NSURL *aURL; aURL = [NSURL URLWithString: PROPERTY_URL]; // Fetch the property list from PROPERTY_URL aData = [aURL resourceDataUsingCache: NO]; // Decode the property list aString = [[NSString alloc] initWithData: aData encoding: NSUTF8StringEncoding]; // Check the content checked = [self _checkDictionary: [aString propertyList]]; RELEASE(aString); } NS_HANDLER { // Something went wrong, eg. page unavailable [localException raise]; checked = NO; } NS_ENDHANDLER return checked; } // // Retrieves the current (running application) and the latest // (from the web) version numbers // - (BOOL) _checkDictionary: (NSDictionary *) theDictionary { NSString *latestVersion; int result; // // If dictionary is empty, raise an exception and return // if (!theDictionary) { [NSException raise: @"UpdateException" format: _(@"Unable to retrieve software information.")]; return NO; } // // Get the latest version number as posted on "the net" // latestVersion = [theDictionary objectForKey: [[NSProcessInfo processInfo] processName]]; // // Now compare them // result = CompareVersion(GNUMailVersion(), latestVersion); if (result == NSOrderedDescending || result == NSOrderedSame) { return NO; } // // Cool, a new version... // [self _newVersionAvailable: latestVersion]; return YES; } // // // - (void) _connectToIMAPServers { NSDictionary *allAccounts, *allValues; NSArray *allKeys; int i; allAccounts = [Utilities allEnabledAccounts]; allKeys = [allAccounts allKeys]; for (i = 0; i < [allKeys count]; i++) { allValues = [[allAccounts objectForKey: [allKeys objectAtIndex: i]] objectForKey: @"RECEIVE"]; if ([[allValues objectForKey: @"SERVERTYPE"] intValue] == IMAP) { CWURLName *theURLName; theURLName = [[CWURLName alloc] initWithString: [NSString stringWithFormat: @"imap://%@@%@/", [allValues objectForKey: @"USERNAME"], [allValues objectForKey: @"SERVERNAME"]]]; [[MailboxManagerController singleInstance] storeForURLName: theURLName]; RELEASE(theURLName); } } } // // Method used to load all bundles in all domains. // FIXME: Offer a way to the user to specify a list of bundles // that he/she DOES NOT want to load automatically. // - (void) _loadBundles { NSFileManager *aFileManager; NSMutableArray *allPaths; NSArray *allFiles; NSString *aPath; int i, j; aFileManager = [NSFileManager defaultManager]; allPaths = [[NSMutableArray alloc] initWithArray: NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSLocalDomainMask| NSNetworkDomainMask| NSSystemDomainMask| NSUserDomainMask, YES)]; for (i = 0; i < [allPaths count]; i++) { // We remove any potential duplicate paths in our allPaths array. [allPaths removeObject: [allPaths objectAtIndex: i] inRange: NSMakeRange(i+1, [allPaths count]-i-1)]; aPath = [NSString stringWithFormat: @"%@/GNUMail", [allPaths objectAtIndex: i]]; allFiles = [aFileManager directoryContentsAtPath: aPath]; for (j = 0; j < [allFiles count]; j++) { NSString *aString; aString = [allFiles objectAtIndex: j]; // If we found a bundle, let's load it! if ([[aString pathExtension] isEqualToString: @"bundle"]) { id aModule; NSBundle *aBundle; NSString *path; path = [NSString stringWithFormat: @"%@/%@", aPath, aString]; aBundle = [NSBundle bundleWithPath: path]; if (aBundle) { Class aClass; aClass = [aBundle principalClass]; // We ensure our bundle is really a GNUMail bundle. if (![aClass conformsToProtocol: @protocol(GNUMailBundle)]) { continue; } aModule = [aClass singleInstance]; if (aModule) { [aModule setOwner: self]; [allBundles addObject: aModule]; ADD_CONSOLE_MESSAGE(_(@"Loaded bundle at path %@"), path); } else { ADD_CONSOLE_MESSAGE((@"Failed to initialize bundle at path %@"), path); } } else { ADD_CONSOLE_MESSAGE(_(@"Error loading bundle at path %@"), path); } } } } RELEASE(allPaths); } // // // - (void) _makeFilter: (int) theSource { id aFilteringModule, aWindowController; FilterCriteria *aCriteria; CWMessage *theMessage; NSString *aString; Filter *aFilter; NSRange aRange; int index; aWindowController = [[GNUMail lastMailWindowOnTop] delegate]; theMessage = [aWindowController selectedMessage]; aCriteria = AUTORELEASE([[FilterCriteria alloc] init]); aFilter = AUTORELEASE([[Filter alloc] init]); #warning add support for merging one to three messages into one rule switch (theSource) { case EXPERT: aString = [[theMessage allHeaders] objectForKey: @"List-Id"]; if (!aString) { NSBeep(); return; } aRange = [aString rangeOfString: @"<" options: NSBackwardsSearch]; if (aRange.length) { aString = [aString substringWithRange: NSMakeRange(aRange.location+1,[aString length]-aRange.location-2)]; } else { NSBeep(); return; } [aCriteria setCriteriaString: aString]; [aCriteria setCriteriaSource: EXPERT]; [aCriteria setCriteriaHeaders: [NSArray arrayWithObject: @"List-Id"]]; [aFilter setDescription: [NSString stringWithFormat: _(@"%@ mailing list"), aString]]; break; case FROM: [aCriteria setCriteriaString: [[theMessage from] address]]; [aCriteria setCriteriaSource: FROM]; [aFilter setDescription: [[theMessage from] personal]]; break; case SUBJECT: default: [aCriteria setCriteriaString: [theMessage subject]]; [aCriteria setCriteriaSource: SUBJECT]; [aFilter setDescription: [theMessage subject]]; } [aCriteria setCriteriaCondition: AND]; [aFilter setCriterias: [NSArray arrayWithObjects: aCriteria, AUTORELEASE([[FilterCriteria alloc] init]), AUTORELEASE([[FilterCriteria alloc] init]), nil]]; [[FilterManager singleInstance] addFilter: aFilter]; aFilteringModule = [NSBundle instanceForBundleWithName: @"Filtering"]; index = [[[FilterManager singleInstance] filters] count]-1; if ([[aFilteringModule performSelector: @selector(editFilter:) withObject: [NSNumber numberWithInt: index]] intValue] == NSRunAbortedResponse) { [[FilterManager singleInstance] removeFilter: aFilter]; [aFilteringModule performSelector: @selector(updateView)]; } } // // Opens the 'new version available' dialog and offers to // download if possible (read: on Mac OS X) // - (void) _newVersionAvailable: (NSString *) theVersion { NSString *aURL; // The URL where to get it from NSString *firstButton; // Default (OK) button NSString *secondButton; // Alternate (Cancel) button NSString *aMessage; // The message we display to the user. int result; aMessage = [NSString stringWithFormat: _(@"The latest version of GNUMail is %@.\n"), theVersion]; // // GNUstep's NSWorkspae doesn't react to -openURL: // but MACOSX does... // #ifdef MACOSX aMessage = [aMessage stringByAppendingString: _(@"Would you like to download the new version now?")]; aURL = DOWNLOAD_URL; firstButton = _(@"Update now"); secondButton = _(@"Update later"); #else aMessage = [aMessage stringByAppendingFormat: _(@"Check < %@ > for more details."), APPLICATION_URL]; aURL = nil; firstButton = _(@"OK"); secondButton = NULL; #endif result = NSRunInformationalAlertPanel(_(@"A new version of GNUMail is now available."), aMessage, firstButton, secondButton, NULL); if (result == NSAlertDefaultReturn) { if (aURL) { [[NSWorkspace sharedWorkspace] openURL: [NSURL URLWithString: aURL]]; } } } // // // - (void) _removeAllItemsFromMenu: (NSMenu *) theMenu { int i; for (i = ([theMenu numberOfItems] - 1); i >= 0; i--) { [theMenu removeItemAtIndex: i]; } } // // // #ifdef MACOSX - (void) _savePanelDidEnd: (NSSavePanel *) theSheet returnCode: (int) returnCode contextInfo: (void *) contextInfo { NSString *aFilename; NSData *aData; aFilename = [theSheet filename]; aData = (NSData *)contextInfo; // if successful, save file under designated name if (returnCode == NSAlertDefaultReturn) { if (![aData writeToFile: aFilename atomically: YES]) { NSBeep(); } else { [[NSFileManager defaultManager] enforceMode: 0600 atPath: aFilename]; } [GNUMail setCurrentWorkingPath: [aFilename stringByDeletingLastPathComponent]]; } RELEASE(aData); } #endif // // // - (void) _updateFilterMenuItems: (id) sender { BOOL isDir; if ([[NSFileManager defaultManager] fileExistsAtPath: PathToFilters() isDirectory: &isDir] && !isDir) { FilterManager *aFilterManager; NSMenuItem *aMenuItem; int i; // We first remove all our items in the current menu [self _removeAllItemsFromMenu: filters]; aFilterManager = [FilterManager singleInstance]; // Our "All" menu item aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"All") action: @selector(applyManualFilter:) keyEquivalent: @""]; [aMenuItem setTag: -1]; [filters addItem: aMenuItem]; RELEASE(aMenuItem); for (i = 0; i < [[aFilterManager filters] count]; i++) { Filter *aFilter; aFilter = [[aFilterManager filters] objectAtIndex: i]; aMenuItem = [[NSMenuItem alloc] initWithTitle: [aFilter description] action: @selector(applyManualFilter:) keyEquivalent: @""]; [aMenuItem setTag: i]; [filters addItem: aMenuItem]; RELEASE(aMenuItem); } } } // // // - (void) _updateGetNewMailMenuItems: (id) sender { NSDictionary *allValues; NSMenuItem *aMenuItem; NSArray *allKeys; NSString *aKey; int i; // We first remove all our items in the current menu [self _removeAllItemsFromMenu: incomingMailServers]; // Our "All" menu item aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"All") action: @selector(getNewMessages:) keyEquivalent: @"N"]; [aMenuItem setTarget: self]; [aMenuItem setTag: -1]; [incomingMailServers addItem: aMenuItem]; RELEASE(aMenuItem); // We sort the array to be sure to keep the order. allKeys = [[[Utilities allEnabledAccounts] allKeys] sortedArrayUsingSelector: @selector(compare:)]; for (i = 0; i < [allKeys count]; i++) { aKey = [allKeys objectAtIndex: i]; allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: aKey] objectForKey: @"RECEIVE"]; // We only consider our POP3 and UNIX receiving accounts - both // being NOT set to never check mails if ((![allValues objectForKey: @"SERVERTYPE"] || [[allValues objectForKey: @"SERVERTYPE"] intValue] == POP3 || [[allValues objectForKey: @"SERVERTYPE"] intValue] == UNIX) && [[allValues objectForKey: @"RETRIEVEMETHOD"] intValue] != NEVER) { aMenuItem = [[NSMenuItem alloc] initWithTitle: aKey action: @selector(getNewMessages:) keyEquivalent: @""]; [aMenuItem setTarget: self]; [aMenuItem setTag: i]; [incomingMailServers addItem: aMenuItem]; RELEASE(aMenuItem); } } } // // // - (void) _updateTextEncodingsMenu: (id) sender { NSMutableArray *aMutableArray; NSMenuItem *item; int i; [self _removeAllItemsFromMenu: textEncodings]; item = [[NSMenuItem alloc] initWithTitle: _(@"Default") action: @selector(changeTextEncoding:) keyEquivalent: @""]; [item setTag: -1]; [textEncodings addItem: item]; RELEASE(item); aMutableArray = [[NSMutableArray alloc] init]; [aMutableArray addObjectsFromArray: [[CWCharset allCharsets] allValues]]; [aMutableArray sortUsingSelector: @selector(compare:)]; for (i = 0; i < [aMutableArray count]; i++) { item = [[NSMenuItem alloc] initWithTitle: [aMutableArray objectAtIndex: i] action: @selector(changeTextEncoding:) keyEquivalent: @""]; [item setTag: i]; [textEncodings addItem: item]; RELEASE(item); } RELEASE(aMutableArray); } // // // - (void) _updateVisibleColumns { NSArray *theColumns; int i; theColumns = [[NSUserDefaults standardUserDefaults] objectForKey: @"SHOWNTABLECOLUMNS"]; if (theColumns) { for (i = 0; i < [theColumns count]; i++) { NSString *column; column = [theColumns objectAtIndex: i]; if ([column isEqualToString: @"Date"]) { [[columns itemWithTag: GNUMailDateColumn] setState: NSOnState]; } else if ([column isEqualToString: @"Flagged"]) { [[columns itemWithTag: GNUMailFlagsColumn] setState: NSOnState]; } else if ([column isEqualToString: @"From"]) { [[columns itemWithTag: GNUMailFromColumn] setState: NSOnState]; } else if ([column isEqualToString: @"Number"] ) { [[columns itemWithTag: GNUMailNumberColumn] setState: NSOnState]; } else if ([column isEqualToString: @"Size"]) { [[columns itemWithTag: GNUMailSizeColumn] setState: NSOnState]; } else if ([column isEqualToString: @"Status"]) { [[columns itemWithTag: GNUMailStatusColumn] setState: NSOnState]; } else if ([column isEqualToString: @"Subject"]) { [[columns itemWithTag: GNUMailSubjectColumn] setState: NSOnState]; } } } else { for (i = 0; i < [columns numberOfItems]; i++) { [[columns itemAtIndex: i] setState: NSOnState]; } } } @end GNUMail/Framework/GNUMail/GNUMailBundle.h0100644000014600001460000001020310424675302020514 0ustar monotonemonotone/* ** GNUMailBundle.h ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_GNUMailBundle #define _GNUMail_H_GNUMailBundle #import enum ViewingViewType { ViewingViewTypeToolbar, ViewingViewTypeHeaderCell }; @class NSArray; @class NSString; @class NSTextView; @class CWMessage; @class CWMimeBodyPart; @class PreferencesModule; @protocol GNUMailBundle // // // - (id) initWithOwner: (id) theOwner; - (void) dealloc; + (id) singleInstance; // // access / mutation methods // - (NSString *) name; - (NSString *) description; - (NSString *) version; - (void) setOwner: (id) theOwner; // You must not retain the theOwner. // // UI elements // - (BOOL) hasPreferencesPanel; // YES/NO. If YES, preferencesModule must not return nil. - (PreferencesModule *) preferencesModule; // the panel in the pref panel and its controller - (BOOL) hasComposeViewAccessory; // If the bundle provide a compose/viewing accessory - (id) composeViewAccessory; // view, it MUST return yes to hasComposeViewAccessory - (void) composeViewAccessoryWillBeRemovedFromSuperview: (NSView *) theView; // or hasViewingViewAccessory. the composeViewAccessory - (BOOL) hasViewingViewAccessory; // and the viewingViewAccessory MUST return a different - (id) viewingViewAccessory; // instance on each call. setCurrentSuperview will - (enum ViewingViewType) viewingViewAccessoryType; - (void) viewingViewAccessoryWillBeRemovedFromSuperview: (id) theView; // be called each time one of the compose/viewing - (void) setCurrentSuperview: (NSView *) theView; // accessory view is 'the current one'. You must NOT // retain the superview. - (NSArray *) submenuForMenu: (NSMenu *) theMenu; // Called so that the bundle can return a list of its own // submenus for the predefined menus in GNUMail.app - (NSArray *) menuItemsForMenu: (NSMenu *) theMenu; // Called so that the bundle can return a list of menu items // for its own menus or the prefedefined // menus in GNUMail.app // // The following methods are called if they are implemented. They are used // by the bundle to be informed when Mail-related operations are // currently active. // - (CWMimeBodyPart *) bodyWillBeEncoded: (CWMimeBodyPart *) theBodyPart forMessage: (CWMessage *) theMessage; - (CWMimeBodyPart *) bodyWasEncoded: (CWMimeBodyPart *) theBodyPart forMessage: (CWMessage *) theMessage; - (CWMessage *) messageWasEncoded: (CWMessage *) theMessage; - (CWMimeBodyPart *) bodyWillBeDecoded: (CWMimeBodyPart *) theBodyPart forMessage: (CWMessage *) theMessage; - (CWMimeBodyPart *) bodyWasDecoded: (CWMimeBodyPart *) theBodyPart forMessage: (CWMessage *) theMessage; - (void) messageWillBeDisplayed: (CWMessage *) theMessage inView: (NSTextView *) theTextView; - (void) messageWasDisplayed: (CWMessage *) theMessage inView: (NSTextView *) theTextView; @end #endif // _GNUMail_H_GNUMailBundle GNUMail/Framework/GNUMail/GNUMail+Services.m0100644000014600001460000001421710573227223021157 0ustar monotonemonotone/* ** GNUMail+Services.m ** ** Copyright (c) 2004-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "GNUMail+Services.h" #include "Constants.h" #include "EditWindowController.h" #include "MimeType.h" #include "MimeTypeManager.h" #include #include #include #include // // // @implementation GNUMail (Services) - (void) newMessageWithAttachments: (NSPasteboard *) pboard userData: (NSString *) userData error: (NSString **) error { EditWindowController *editWindowController; NSAutoreleasePool *pool; CWMIMEMultipart *aMimeMultipart; CWPart *aPart; MimeType *aMimeType; CWMessage *aMessage; NSEnumerator *enumerator; NSFileManager *manager; NSString *aFile; NSArray *allFiles, *allTypes; BOOL isDir; pool = [[NSAutoreleasePool alloc] init]; manager = [NSFileManager defaultManager]; allTypes = [pboard types]; aMimeMultipart = nil; aMessage = nil; if ( ![allTypes containsObject: NSFilenamesPboardType] ) { *error = @"No filenames supplied on pasteboard"; RELEASE(pool); return; } allFiles = [pboard propertyListForType: NSFilenamesPboardType]; NSDebugLog(@"Attach %@", allFiles); if (allFiles == nil) { *error = @"No files supplied on pasteboard"; RELEASE(pool); return; } // We create a new message with our pasteboard content aMessage = [[CWMessage alloc] init]; aMimeMultipart = [[CWMIMEMultipart alloc] init]; enumerator = [allFiles objectEnumerator]; while ( (aFile = [enumerator nextObject]) ) { if ( ![manager fileExistsAtPath: aFile isDirectory: &isDir] ) { NSDebugLog(@"File '%@' does not exists (not adding as attachment)", aFile); continue; } if ( isDir ) { NSDebugLog(@"'%@' is a directory (not adding as attachment)", aFile); continue; } NSDebugLog(@"Adding '%@' as attachement", aFile); // We first decode our text/plain body aPart = [[CWPart alloc] init]; aMimeType = [[MimeTypeManager singleInstance] bestMimeTypeForFileExtension: [[aFile lastPathComponent] pathExtension]]; if ( aMimeType ) { [aPart setContentType: [aMimeType mimeType]]; } else { [aPart setContentType: @"application/octet-stream"]; } [aPart setContentTransferEncoding: PantomimeEncodingBase64]; [aPart setContentDisposition: PantomimeAttachmentDisposition]; [aPart setFilename: [aFile lastPathComponent]]; [aPart setContent: [NSData dataWithContentsOfFile: aFile]]; [aMimeMultipart addPart: aPart]; RELEASE(aPart); } [aMessage setContentTransferEncoding: PantomimeEncodingNone]; [aMessage setContentType: @"multipart/mixed"]; [aMessage setContent: aMimeMultipart]; // We generate a new boundary for our message [aMessage setBoundary: [CWMIMEUtility globallyUniqueBoundary]]; RELEASE(aMimeMultipart); // We create our controller and we show the window editWindowController = [[EditWindowController alloc] initWithWindowNibName: @"EditWindow"]; if (editWindowController) { [[editWindowController window] setTitle: _(@"New message...")]; [editWindowController setMessage: aMessage]; [editWindowController setShowCc: NO]; [editWindowController setAccountName: nil]; [[editWindowController window] orderFrontRegardless]; } RELEASE(aMessage); RELEASE(pool); } // // // - (void) newMessageWithContent: (NSPasteboard *) pboard userData: (NSString *) userData error: (NSString **) error { EditWindowController *editWindowController; NSString *aString; NSArray *allTypes; CWMessage *aMessage; allTypes = [pboard types]; if ( ![allTypes containsObject: NSStringPboardType] ) { *error = @"No string type supplied on pasteboard"; return; } aString = [pboard stringForType: NSStringPboardType]; if (aString == nil) { *error = @"No string value supplied on pasteboard"; return; } // We create a new message with our pasteboard content aMessage = [[CWMessage alloc] init]; [aMessage setCharset: @"utf-8"]; [aMessage setContent: [aString dataUsingEncoding: NSUTF8StringEncoding]]; // We create our controller and we show the window editWindowController = [[EditWindowController alloc] initWithWindowNibName: @"EditWindow"]; if ( editWindowController ) { [[editWindowController window] setTitle: _(@"New message...")]; [editWindowController setMessage: aMessage]; [editWindowController setShowCc: NO]; [editWindowController setAccountName: nil]; [[editWindowController window] orderFrontRegardless]; } RELEASE(aMessage); } // // // - (void) newMessageWithRecipient: (NSPasteboard *) pboard userData: (NSString *) userData error: (NSString **) error { NSString *aString; NSArray *allTypes; allTypes = [pboard types]; if (![allTypes containsObject: NSStringPboardType]) { *error = @"No string type supplied on pasteboard"; return; } aString = [pboard stringForType: NSStringPboardType]; if (aString == nil) { *error = @"No string value supplied on pasteboard"; return; } [self newMessageWithRecipient: aString]; } @end GNUMail/Framework/GNUMail/ImageTextCell.m0100644000014600001460000000464710606371542020642 0ustar monotonemonotone/* ** ImageTextCell.m ** ** Copyright (c) 2003-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ImageTextCell.h" #include "Constants.h" #include // // // @implementation ImageTextCell - (void) dealloc { DESTROY(_image); [super dealloc]; } - (id) copyWithZone: (NSZone *) theZone { ImageTextCell *aCell; aCell = [[ImageTextCell alloc] init]; [aCell setImage: _image]; return aCell; } // // // - (void) setDelta: (int) theDelta { _delta = theDelta; } // // // - (void) setImage: (NSImage *) theImage { if (theImage) { ASSIGN(_image, theImage); } else { DESTROY(_image); } } // // // - (void) drawWithFrame: (NSRect) theFrame inView: (NSView *) theView { if (_image) { NSRect aFrame; NSSize aSize; aSize = [_image size]; NSDivideRect(theFrame, &aFrame, &theFrame, 3+aSize.width, NSMinXEdge); if ([self drawsBackground]) { [[self backgroundColor] set]; NSRectFill(aFrame); } aFrame.size = aSize; if ([theView isFlipped]) { aFrame.origin.y += ceil((theFrame.size.height + aFrame.size.height) / 2); } else { aFrame.origin.y += ceil((theFrame.size.height - aFrame.size.height) / 2); } aFrame.origin.x += _delta; theFrame.origin.x += _delta; [_image compositeToPoint: aFrame.origin operation: NSCompositeSourceOver]; } [super drawWithFrame: theFrame inView: theView]; } // // // - (NSSize) cellSize { NSSize aSize; aSize = [super cellSize]; aSize.width += (_image ? [_image size].width : 0); return aSize; } // // // - (BOOL) isEditable { return YES; } // // // - (BOOL) isSelectable { return YES; } @end GNUMail/Framework/GNUMail/LabelWidget.m0100644000014600001460000000353710424672357020341 0ustar monotonemonotone/* ** LabelWidget.m ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Jonathan B. Leffert ** Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "LabelWidget.h" #include "Constants.h" @implementation LabelWidget - (id) initWithFrame: (NSRect) theFrame { self = [super initWithFrame: theFrame]; [self setEditable: NO]; [self setSelectable: NO]; [self setBezeled: NO]; [self setDrawsBackground: NO]; return self; } - (id) initWithFrame: (NSRect) theFrame label: (NSString *) theLabel { self = [self initWithFrame: theFrame]; if ( theLabel ) { [self setStringValue: theLabel]; } else { [self setStringValue: @""]; } return self; } + (id) labelWidgetWithFrame: (NSRect) theFrame label: (NSString *) theLabel { LabelWidget *lw = [[self alloc] initWithFrame: theFrame label: theLabel]; return AUTORELEASE(lw); } + (id) labelWidgetWithFrame: (NSRect) theFrame label: (NSString *) theLabel alignment: (int) theAlignment { LabelWidget *lw = [[self alloc] initWithFrame: theFrame label: theLabel]; [lw setAlignment: theAlignment]; return AUTORELEASE(lw); } @end GNUMail/Framework/GNUMail/MailboxInspectorPanelController.m0100644000014600001460000000724010601706270024444 0ustar monotonemonotone/* ** MailboxInspectorPanelController.m ** ** Copyright (c) 2004-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "MailboxInspectorPanelController.h" #ifndef MACOSX #include "MailboxInspectorPanel.h" #endif #include "ThreadArcsCell.h" #include static MailboxInspectorPanelController *singleInstance = nil; // // // @implementation MailboxInspectorPanelController - (id) initWithWindowNibName: (NSString *) windowNibName { #ifdef MACOSX self = [super initWithWindowNibName: windowNibName]; #else MailboxInspectorPanel *aPanel; aPanel = [[MailboxInspectorPanel alloc] initWithContentRect: NSMakeRect(200,200,250,500) styleMask: NSTitledWindowMask|NSClosableWindowMask| NSMiniaturizableWindowMask|NSResizableWindowMask backing: NSBackingStoreBuffered defer: YES]; [super initWithWindow: aPanel]; [aPanel layoutPanel]; [aPanel setDelegate: self]; [aPanel setMinSize: [aPanel frame].size]; // We link our outlets threadArcsView = aPanel->threadArcsView; textView = ((MailboxInspectorThreadArcsView *)threadArcsView)->textView; subject = (NSTextField *)((MailboxInspectorThreadArcsView *)threadArcsView)->subject; box = aPanel->box; RELEASE(aPanel); #endif _cell = [[ThreadArcsCell alloc] init]; [_cell setUsesInspector: YES]; [_cell setController: self]; // We set the window's title [[self window] setTitle: _(@"Mailbox Inspector")]; // We finally set our autosave window frame name and restore the one from the user's defaults. [[self window] setFrameAutosaveName: @"MailboxInspectorPanel"]; [[self window] setFrameUsingName: @"MailboxInspectorPanel"]; return self; } // // // - (void) dealloc { RELEASE(_message); RELEASE(_cell); [super dealloc]; } // // delete methods // - (IBAction) selectionHasChanged: (id) sender { [sender synchronizeTitleAndSelectedItem]; switch ([sender indexOfSelectedItem]) { case 3: [box setContentView: threadArcsView]; break; default: [box setContentView: AUTORELEASE([[NSView alloc] init])]; } } // // access / mutation methods // - (NSTextView *) textView { return textView; } // // // - (CWMessage *) selectedMessage { return _message; } - (void) setSelectedMessage: (CWMessage *) theMessage { NSTextAttachment *aTextAttachment; ASSIGN(_message, theMessage); // We refresh our "Thread Arcs" panel aTextAttachment = [[NSTextAttachment alloc] init]; [aTextAttachment setAttachmentCell: _cell]; [[textView textStorage] setAttributedString: [NSMutableAttributedString attributedStringWithAttachment: aTextAttachment]]; RELEASE(aTextAttachment); [subject setStringValue: ((theMessage && [theMessage subject]) ? (id)[theMessage subject] : (id)@"")]; } // // class methods // + (id) singleInstance { if (!singleInstance) { singleInstance = [[MailboxInspectorPanelController alloc] initWithWindowNibName: @"MailboxInspectorPanel"]; } return singleInstance; } @end GNUMail/Framework/GNUMail/MailboxInspectorPanel.m0100644000014600001460000000716510424672357022421 0ustar monotonemonotone/* ** MailboxInspectorPanel.m ** ** Copyright (c) 2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "MailboxInspectorPanel.h" #include "Constants.h" #include "LabelWidget.h" // // // @implementation MailboxInspectorPanel - (void) dealloc { RELEASE(threadArcsView); RELEASE(box); [super dealloc]; } // // // - (void) layoutPanel { NSPopUpButton *popup; popup = [[NSPopUpButton alloc] initWithFrame: NSMakeRect(10,470,230,25)]; [popup setTarget: [self windowController]]; [popup setAction: @selector(selectionHasChanged:)]; [popup setAutoenablesItems: NO]; [popup addItemWithTitle: _(@"General Information")]; [popup addItemWithTitle: _(@"Access Control List")]; [popup addItemWithTitle: _(@"Quota")]; [popup addItemWithTitle: _(@"Thread Arcs")]; [popup setAutoresizingMask: NSViewMinYMargin]; [[self contentView] addSubview: popup]; RELEASE(popup); box = [[NSBox alloc] initWithFrame: NSMakeRect(0,0,250,460)]; [box setTitlePosition: NSNoTitle]; [box setBorderType: NSGrooveBorder]; [box setAutoresizingMask: NSViewHeightSizable|NSViewWidthSizable]; [[self contentView] addSubview: box]; // We then init and layout our subviews threadArcsView = [[MailboxInspectorThreadArcsView alloc] init]; [threadArcsView layoutView]; } @end // // // @implementation MailboxInspectorThreadArcsView - (void) layoutView { NSScrollView *textScrollView; [self setFrame: NSMakeRect(0,0,250,460)]; [self setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; subject = [LabelWidget labelWidgetWithFrame: NSMakeRect(5,440,240,TextFieldHeight) label: _(@"< no selected message >") alignment: NSCenterTextAlignment]; [subject setAutoresizingMask: NSViewMinYMargin|NSViewWidthSizable]; [self addSubview: subject]; textScrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect(5,200,240,230)]; [textScrollView setBorderType: NSLineBorder]; [textScrollView setHasHorizontalScroller: NO]; [textScrollView setHasVerticalScroller: NO]; [textScrollView setAutoresizingMask: NSViewHeightSizable|NSViewWidthSizable]; textView = [[NSTextView alloc] initWithFrame: [[textScrollView contentView] frame]]; //[textView setTextContainerInset: NSMakeSize(5,5)]; [textView setBackgroundColor: [NSColor textBackgroundColor]]; [textView setRichText: YES]; [textView setUsesFontPanel: YES]; [textView setDelegate: self]; [textView setHorizontallyResizable: YES]; [textView setVerticallyResizable: YES]; [textView setMinSize: NSMakeSize(0, 0)]; [textView setMaxSize: NSMakeSize(1E7, 1E7)]; [textView setAutoresizingMask: NSViewHeightSizable|NSViewWidthSizable]; [[textView textContainer] setContainerSize: NSMakeSize([[textScrollView contentView] frame].size.width, 1E7)]; [[textView textContainer] setWidthTracksTextView: YES]; [textView setEditable: NO]; [textView setString: @""]; [textScrollView setDocumentView: textView]; [self addSubview: textScrollView]; } @end GNUMail/Framework/GNUMail/MailboxManagerCache.m0100644000014600001460000001262610432177361021761 0ustar monotonemonotone/* ** MailboxManagerCache.m ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "MailboxManagerCache.h" #include "Constants.h" #include "Utilities.h" NSString *PathToMailboxManagerCache() { return [NSString stringWithFormat: @"%@/%@", GNUMailUserLibraryPath(), @"MailboxManagerCache"]; } // // // @implementation MailboxManagerCache - (id) init { self = [super init]; [self setAllCacheObjects: [NSDictionary dictionary]]; return self; } // // // - (void) dealloc { RELEASE(_cache); [super dealloc]; } // // // - (BOOL) synchronize { return [NSArchiver archiveRootObject: self toFile: PathToMailboxManagerCache()]; } // // Access / mutation methods // - (NSDictionary *) allCacheObjects { return _cache; } - (void) setAllCacheObjects: (NSDictionary *) theObjects { RELEASE(_cache); _cache = [[NSMutableDictionary alloc] initWithCapacity: [theObjects count]]; [_cache addEntriesFromDictionary: theObjects]; } // // // - (void) allValuesForStoreName: (NSString *) theStoreName folderName: (NSString *) theFolderName username: (NSString *) theUsername nbOfMessages: (unsigned int *) theNbOfMessages nbOfUnreadMessages: (unsigned int *) theNbOfUnreadMessages { MailboxManagerCacheObject *aCacheObject; NSString *aString; int v1, v2; aString = [NSString stringWithFormat: @"%@ @ %@/%@", theUsername, theStoreName, theFolderName]; aCacheObject = [_cache objectForKey: aString]; if (!aCacheObject) { v1 = v2 = 0; } else { v1 = aCacheObject->nbOfMessages; v2 = aCacheObject->nbOfUnreadMessages; } if (theNbOfMessages != NULL) { *theNbOfMessages = v1; } if (theNbOfUnreadMessages != NULL) { *theNbOfUnreadMessages = v2; } } // // // - (void) setAllValuesForStoreName: (NSString *) theStoreName folderName: (NSString *) theFolderName username: (NSString *) theUsername nbOfMessages: (unsigned int) theNbOfMessages nbOfUnreadMessages: (unsigned int) theNbOfUnreadMessages { MailboxManagerCacheObject *aCacheObject; NSString *aString; aString = [NSString stringWithFormat: @"%@ @ %@/%@", theUsername, theStoreName, theFolderName]; aCacheObject = [_cache objectForKey: aString]; if (!aCacheObject) { aCacheObject = [[MailboxManagerCacheObject alloc] init]; [_cache setObject: aCacheObject forKey: aString]; RELEASE(aCacheObject); } aCacheObject->nbOfMessages = theNbOfMessages; aCacheObject->nbOfUnreadMessages = theNbOfUnreadMessages; } // // // - (void) removeAllValuesForStoreName: (NSString *) theStoreName folderName: (NSString *) theFolderName username: (NSString *) theUsername { [_cache removeObjectForKey: [NSString stringWithFormat: @"%@ @ %@/%@", theUsername, theStoreName, theFolderName]]; } // // NSCoding protocol // - (void) encodeWithCoder: (NSCoder *) theCoder { [theCoder encodeObject: _cache]; } - (id) initWithCoder: (NSCoder *) theCoder { self = [super init]; [self setAllCacheObjects: [theCoder decodeObject]]; return self; } // // class methods // + (id) cacheFromDisk { id o; NS_DURING { o = [NSUnarchiver unarchiveObjectWithFile: PathToMailboxManagerCache()]; if (!o) { NSDebugLog(@"Creating a new Mailbox Manager cache."); o = [[MailboxManagerCache alloc] init]; AUTORELEASE(o); [o synchronize]; } } NS_HANDLER { NSLog(@"Caught exception while unarchiving the MailboxManagerCache. Ignoring."); o = [[MailboxManagerCache alloc] init]; AUTORELEASE(o); [o synchronize]; } NS_ENDHANDLER return o; } @end // // Our cached object // @implementation MailboxManagerCacheObject - (void) encodeWithCoder: (NSCoder *) theCoder { [MailboxManagerCacheObject setVersion: 1]; [theCoder encodeValueOfObjCType: @encode(int) at: &nbOfMessages]; [theCoder encodeValueOfObjCType: @encode(int) at: &nbOfUnreadMessages]; } - (id) initWithCoder: (NSCoder *) theCoder { int version; self = [super init]; version = [theCoder versionForClassName: @"MailboxManagerCacheObject"]; if (version == 0) { int totalSize; [theCoder decodeValueOfObjCType: @encode(int) at: &nbOfMessages]; [theCoder decodeValueOfObjCType: @encode(int) at: &nbOfUnreadMessages]; [theCoder decodeValueOfObjCType: @encode(int) at: &totalSize]; } else { [theCoder decodeValueOfObjCType: @encode(int) at: &nbOfMessages]; [theCoder decodeValueOfObjCType: @encode(int) at: &nbOfUnreadMessages]; } return self; } @end GNUMail/Framework/GNUMail/MailboxManagerController.m0100644000014600001460000027024610613335063023101 0ustar monotonemonotone/* ** MailboxManagerController.m ** ** Copyright (C) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "MailboxManagerController.h" #include "ConsoleWindowController.h" #include "Constants.h" #include "EditWindowController.h" #include "ExtendedMenuItem.h" #include "ExtendedOutlineView.h" #include "Filter.h" #include "FilterManager.h" #include "GNUMail.h" #include "Task.h" #include "TaskManager.h" #ifndef MACOSX #include "ImageTextCell.h" #include "MailboxManager.h" #endif #include "FolderNode.h" #include "MailboxManagerCache.h" #include "MailWindowController.h" #include "MessageViewWindowController.h" #include "NewMailboxPanelController.h" #include "NSUserDefaults+Extensions.h" #include "Utilities.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define SET_DRAFTS 0 #define SET_SENT 1 #define SET_TRASH 2 #define TAKE_OFFLINE 0x100 #define UPDATE_PATH(name, theOldPath, thePath) ({ \ if ([[allValues objectForKey: name] isEqualToString: theOldPath]) \ { \ [allValues setObject: thePath forKey: name]; \ } \ }) static MailboxManagerController *singleInstance = nil; // // Private methods // @interface MailboxManagerController (Private) - (void) _accountsHaveChanged: (id) sender; - (BOOL) _deletingDefaultMailbox: (NSString **) theMailboxName usingURLNameAsString: (NSString *) theURLNameAsString; - (void) _folderCreateCompleted: (NSNotification *) theNotification; - (void) _folderCreateFailed: (NSNotification *) theNotification; - (void) _folderDeleteCompleted: (NSNotification *) theNotification; - (void) _folderDeleteFailed: (NSNotification *) theNotification; - (void) _folderRenameCompleted: (NSNotification *) theNotification; - (void) _folderRenameFailed: (NSNotification *) theNotification; - (void) _folderSubscribeCompleted: (NSNotification *) theNotification; - (void) _folderUnsubscribeCompleted: (NSNotification *) theNotification; - (BOOL) _initializeIMAPStoreWithAccountName: (NSString *) theAccountName; - (void) _nbOfMessages: (unsigned int *) theNbOfMessages nbOfUnreadMessages: (unsigned int *) theNbOfUnreadMessages forItem: (id) theItem; - (void) _openLocalFolderWithName: (NSString *) theFolderName sender: (id) theSender; - (void) _openIMAPFolderWithName: (NSString *) theFolderName store: (CWIMAPStore *) theStore sender: (id) theSender; - (void) _reloadFoldersAndExpandParentsFromNode: (FolderNode *) theNode selectNodeWithPath: (NSString *) thePath; - (NSString *) _stringValueOfURLNameFromItem: (id) theItem store: (CWStore **) theStore; - (void) _updateMailboxesFromOldPath: (NSString *) theOldPath toPath: (NSString *) thePath; - (void) _updateContextMenu; @end // // Here's how it does work: // // _allFolders (NSArray) -> localNodes (FolderNode * - name == _("Local")) // // -> IMAP FolderNode 1 (FoderNode * - name == "username @ imap.server1.com") // // -> IMAP FolderNode 2 (FoderNode * - name == "username @ imap.server2.com") // // -> ... // // @implementation MailboxManagerController #ifndef MACOSX - (id) initWithWindowNibName: (NSString *) windowNibName { NSToolbar *aToolbar; id aCell; MailboxManager *theWindow; if ([[NSUserDefaults standardUserDefaults] integerForKey: @"PreferredViewStyle" default: GNUMailDrawerView] == GNUMailDrawerView) { self = [super init]; [self windowDidLoad]; return self; } theWindow = [[MailboxManager alloc] initWithContentRect: NSMakeRect(200,200,220,300) styleMask: NSClosableWindowMask|NSTitledWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask backing: NSBackingStoreBuffered defer: YES]; self = [super initWithWindow: theWindow]; [theWindow layoutWindow]; [theWindow setDelegate: self]; // We link our outlets outlineView = theWindow->outlineView; scrollView = theWindow->scrollView; RELEASE(theWindow); // We set the title of our window (causing it to be loaded under OS X) [[self window] setTitle: _(@"Mailboxes")]; aToolbar = [[NSToolbar alloc] initWithIdentifier: @"MailboxManagerToolbar"]; [aToolbar setDelegate: self]; [aToolbar setAllowsUserCustomization: YES]; [aToolbar setAutosavesConfiguration: YES]; [[self window] setToolbar: aToolbar]; RELEASE(aToolbar); // We now set our data cell for the "Mailbox" column aCell = [[ImageTextCell alloc] init]; [[outlineView tableColumnWithIdentifier: @"Mailbox"] setDataCell: aCell]; AUTORELEASE(aCell); // We register the outline view for dragged types [outlineView registerForDraggedTypes: [NSArray arrayWithObject: MessagePboardType]]; // We set our autosave window frame name and restore the one from the user's defaults. [[self window] setFrameAutosaveName: @"MailboxManager"]; [[self window] setFrameUsingName: @"MailboxManager"]; // We set our autosave name for our outline view [outlineView setAutosaveName: @"MailboxManager"]; [outlineView setAutosaveTableColumns: YES]; // We set our outline view background color if ([[NSUserDefaults standardUserDefaults] colorForKey: @"MAILBOXMANAGER_OUTLINE_COLOR"]) { [outlineView setBackgroundColor: [[NSUserDefaults standardUserDefaults] colorForKey: @"MAILBOXMANAGER_OUTLINE_COLOR"]]; [scrollView setBackgroundColor: [[NSUserDefaults standardUserDefaults] colorForKey: @"MAILBOXMANAGER_OUTLINE_COLOR"]]; } return self; } #else - (id) init { self = [super init]; // We initialize some ivars [self windowDidLoad]; return self; } #endif // // // - (void) dealloc { [[NSNotificationCenter defaultCenter] removeObserver: self]; if ([[NSUserDefaults standardUserDefaults] integerForKey: @"PreferredViewStyle" default: GNUMailDrawerView] == GNUMailFloatingView) { [[self window] setDelegate: nil]; } RELEASE(menu); RELEASE(localNodes); RELEASE(_cache); RELEASE(_allFolders); RELEASE(allStores); RELEASE(_open_folder); RELEASE(_sort_right); RELEASE(_sort_down); RELEASE(_drafts); RELEASE(_inbox); RELEASE(_sent); RELEASE(_trash); [super dealloc]; } // // Datasource methods for the outline view // - (id) outlineView: (NSOutlineView *) outlineView child: (int) index ofItem: (id) item { if (!item || item == _allFolders) { return [_allFolders objectAtIndex: index]; } if ([item isKindOfClass: [FolderNode class]]) { return [(FolderNode *)item childAtIndex: index]; } return nil; } // // // - (BOOL) outlineView: (NSOutlineView *) outlineView isItemExpandable: (id) item { if (item == _allFolders || [_allFolders containsObject: item]) { return YES; } if ([item isKindOfClass: [FolderNode class]]) { if ([(FolderNode *)item childCount] > 0) { return YES; } else { return NO; } } return NO; } // // // - (int) outlineView: (NSOutlineView *) outlineView numberOfChildrenOfItem: (id) item { // The root. if (!item || item == _allFolders) { return [_allFolders count]; } // Children of our root, the Local folder and all the IMAP folders, subfolders, etc. if ([item isKindOfClass: [FolderNode class]]) { return [(FolderNode *)item childCount]; } return 0; } // // // - (id) outlineView: (NSOutlineView *) outlineView objectValueForTableColumn: (NSTableColumn *) tableColumn byItem: (id) item { if ([[[tableColumn headerCell] stringValue] isEqual: _(@"Mailbox")]) { if ([item isKindOfClass: [FolderNode class]]) { return [(FolderNode *)item name]; } } if ([item isKindOfClass: [FolderNode class]] && [item parent]) { BOOL b; b = [[Utilities completePathForFolderNode: item separator: '/'] hasPrefix: [NSString stringWithFormat: @"/%@", _(@"Local")]]; if ([item childCount] == 0 || !b) { unsigned int nbOfMessages, nbOfUnreadMessages; [self _nbOfMessages: &nbOfMessages nbOfUnreadMessages: &nbOfUnreadMessages forItem: item]; // If we have an IMAP folder AND the count is 0 AND it has children, do nothing. if (!b && nbOfMessages == 0 && [item childCount] > 0) return nil; if ([[[tableColumn headerCell] stringValue] isEqual: _(@"Messages")]) { if (nbOfUnreadMessages > 0) return [NSString stringWithFormat: @"(%d) %d", nbOfUnreadMessages, nbOfMessages]; return [NSString stringWithFormat: @"%d", nbOfMessages]; } } } return nil; } // // // - (void) outlineView: (NSOutlineView *) theOutlineView setObjectValue: (id) theObject forTableColumn: (NSTableColumn *) theTableColumn byItem: (id) theItem { NSString *aDefaultMailbox; id aStore; // If the previous name is the same as the new one, ignore it. if ([[(FolderNode *)theItem name] isEqualToString: theObject]) return; // // If we tried to rename a special mailbox, we warn for now. This is quite // useful in IMAP since whenever we rename INBOX, a new INBOX is created // automatically. So, if a user renames by mistake his INBOX, he will // have to move all mails back to his INBOX as he won't be able to rename // the mailbox back to "INBOX". // if ([self _deletingDefaultMailbox: &aDefaultMailbox usingURLNameAsString: [self _stringValueOfURLNameFromItem: theItem store: &aStore]]) { int choice; choice = NSRunAlertPanel(_(@"Warning!"), _(@"You are about to rename the %@ special mailbox to %@.\nDo you want to proceed?"), _(@"OK"), // default _(@"Cancel"), // alternate NULL, aDefaultMailbox, theObject); if (choice == NSAlertAlternateReturn) { return; } } { NSString *pathOfFolder; id aWindow; aStore = [self storeForFolderNode: theItem]; // // pathOfFolder will hold a value like: folderA // folderA/folderB // folderA/folderB/folderC // or: // folderA.folderB // folderA.folderB.folderC // pathOfFolder = [Utilities pathOfFolderFromFolderNode: theItem separator: [(id)aStore folderSeparator]]; [(id)aStore renameFolderWithName: [pathOfFolder stringByDeletingFirstPathSeparator: [(id)aStore folderSeparator]] toName: [[NSString stringWithFormat: @"%@%c%@", [pathOfFolder stringByDeletingLastPathComponentWithSeparator: [(id)aStore folderSeparator]], [(id)aStore folderSeparator], theObject] stringByDeletingFirstPathSeparator: [(id)aStore folderSeparator]]]; // We select the newly renamed node and update the outline view aWindow = [Utilities windowForFolderName: [[NSString stringWithFormat: @"%@%c%@", [pathOfFolder stringByDeletingLastPathComponentWithSeparator: [(id)aStore folderSeparator]], [(id)aStore folderSeparator], theObject] stringByDeletingFirstPathSeparator: [(id)aStore folderSeparator]] store: aStore]; if (aWindow) { [[aWindow windowController] windowDidBecomeKey: nil]; } } } // // Delegate method used to prevent the user from renaming // "invalid" mailboxes / folders. // - (BOOL) outlineView: (NSOutlineView *) theOutlineView shouldEditTableColumn: (NSTableColumn *) theTableColumn item: (id) theItem { int row, level; id item; row = [theOutlineView selectedRow]; if (row < 0) { return NO; } item = [theOutlineView itemAtRow: row]; level = [theOutlineView levelForItem: item]; if ([theOutlineView numberOfSelectedRows] != 1 || level < 1) { return NO; } return YES; } // // // - (void) outlineView: (NSOutlineView *) aOutlineView willDisplayCell: (id) aCell forTableColumn: (NSTableColumn *) aTableColumn item: (id) item { // We set our default node icon, if we need to. if ([[[aTableColumn headerCell] stringValue] isEqual: _(@"Mailbox")]) { int level; level = [aOutlineView levelForItem: item]; if (level > 0) { NSString *aString; id aStore; #ifdef GNUSTEP if ([(FolderNode *)item childCount] > 0) { [aCell setDelta: 0]; } else { [aCell setDelta: 19]; } #endif aString = [self _stringValueOfURLNameFromItem: item store: &aStore]; if ([Utilities stringValueOfURLName: aString isEqualTo: @"TRASHFOLDERNAME"]) { [aCell setImage: _trash]; } else if ([Utilities stringValueOfURLName: aString isEqualTo: @"SENTFOLDERNAME"]) { [aCell setImage: _sent]; } else if ([Utilities stringValueOfURLName: aString isEqualTo: @"DRAFTSFOLDERNAME"]) { [aCell setImage: _drafts]; } else if ([Utilities stringValueOfURLName: aString isEqualTo: @"INBOXFOLDERNAME"]) { [aCell setImage: _inbox]; } else { [aCell setImage: _open_folder]; } } else { [aCell setImage: nil]; } } // // // if ([item isKindOfClass: [FolderNode class]] && [item parent]) { unsigned int nbOfMessages, nbOfUnreadMessages; [self _nbOfMessages: &nbOfMessages nbOfUnreadMessages: &nbOfUnreadMessages forItem: item]; if (nbOfUnreadMessages > 0) { [aCell setFont: [NSFont boldSystemFontOfSize: _font_size]]; return; } } // We set our default font. [aCell setFont: [NSFont systemFontOfSize: _font_size]]; // We set the right text aligment if ([[[aTableColumn headerCell] stringValue] isEqual: _(@"Mailbox")]) { [aCell setAlignment: NSLeftTextAlignment]; } else { [aCell setAlignment: NSRightTextAlignment]; } } // // // - (void) outlineViewSelectionDidChange: (NSNotification *) theNotification { [self open: [theNotification object]]; } // // // - (NSMenu *) outlineView: (NSOutlineView *) aOutlineView contextMenuForItem: (id) item { id theItem, o; int i; o = [self storeForFolderNode: [outlineView itemAtRow: [aOutlineView selectedRow]]]; for (i = 0; i < [[menu itemArray] count]; i++) { theItem = [[menu itemArray] objectAtIndex: i]; [theItem setEnabled: [self validateMenuItem: theItem]]; if ([theItem tag] == TAKE_OFFLINE && [o isKindOfClass: [CWIMAPStore class]]) { if ([o isConnected]) { [theItem setTitle: _(@"Take Account Offline")]; } else { [theItem setTitle: _(@"Take Account Online")]; } } } [menu update]; return menu; } // // // - (BOOL) validateMenuItem: (NSMenuItem *) theItem { int row, level; BOOL aBOOL; row = [outlineView selectedRow]; level = [outlineView levelForItem: [outlineView itemAtRow: row]]; // // Validation for our "Take Account Offline" item // if ([theItem tag] == TAKE_OFFLINE) { return (level == 0 && [outlineView itemAtRow: row] != localNodes); } if ([[theItem title] isEqualToString: _(@"Delete...")] || [[theItem title] isEqualToString: _(@"Rename")]) { aBOOL = (row > 0 && [outlineView numberOfSelectedRows] == 1 && level >= 1); } else { aBOOL = (row >= 0 && [outlineView numberOfSelectedRows] == 1 && level >= 0); } return aBOOL; } // // Delegate methods // - (BOOL) outlineView: (NSOutlineView *) outlineView shouldExpandItem: (id) item { if (item == _allFolders || item == localNodes) { return YES; } if ([_allFolders containsObject: item]) { return [self _initializeIMAPStoreWithAccountName: [(FolderNode *)item name]]; } return YES; } // // NSOutlineViewDataSource Drag and drop // - (NSDragOperation) outlineView: (NSOutlineView*) theOutlineView validateDrop: (id ) info proposedItem: (id) item proposedChildIndex: (int) index { if (![item respondsToSelector: @selector(childCount)] || index < 0 || index >= [(FolderNode*)item childCount]) { return NSDragOperationNone; } // Let's get the right item.. item = [item childAtIndex: index]; if ([info draggingSourceOperationMask] & NSDragOperationGeneric) { [theOutlineView setDropItem: item dropChildIndex: NSOutlineViewDropOnItemIndex]; return NSDragOperationGeneric; } else if ([info draggingSourceOperationMask] & NSDragOperationCopy) { [theOutlineView setDropItem: item dropChildIndex: NSOutlineViewDropOnItemIndex]; return NSDragOperationCopy; } else { return NSDragOperationNone; } } // // NSOutlineViewDataSource Drag and drop // - (BOOL) outlineView: (NSOutlineView*) outlineView acceptDrop: (id ) info item: (id) item childIndex: (int) index { CWFolder *aSourceFolder, *aDestinationFolder; CWStore *aSourceStore, *aDestinationStore; MailWindowController *aMailWindowController; FolderNode *aFolderNode; NSString *aFolderName; NSArray *propertyList; NSMutableArray *allMessages; int i, count; if (!item || index != NSOutlineViewDropOnItemIndex) { NSBeep(); return NO; } aFolderNode = (FolderNode *)item; // We get our store and our folder name aDestinationStore = [self storeForFolderNode: aFolderNode]; aFolderName = [Utilities pathOfFolderFromFolderNode: aFolderNode separator: [(id)aDestinationStore folderSeparator]]; // We get the MailWindowController source aMailWindowController = (MailWindowController *)[[info draggingSource] delegate]; if (!aMailWindowController || ![aMailWindowController isKindOfClass: [MailWindowController class]] || !aFolderName || [aFolderName length] == 0) { NSBeep(); return NO; } // We verify if we aren't trying to transfer to the current mbox! aSourceFolder = [aMailWindowController folder]; aSourceStore = [aSourceFolder store]; if (aSourceStore == aDestinationStore && [[aSourceFolder name] isEqualToString: aFolderName]) { NSRunInformationalAlertPanel(_(@"Transfer error!"), _(@"You cannot transfer a message inside the same mailbox!"), _(@"OK"), NULL, NULL, NULL); return NO; } // We get a reference to our destination folder, w/o parsing it if it's not already open. // or w/o selecting it if it's an IMAP store. if ([(id)aDestinationStore isKindOfClass: [CWIMAPStore class]]) { aDestinationFolder = (CWFolder *)[(CWIMAPStore *)aDestinationStore folderForName: aFolderName select: NO]; } else { aDestinationFolder = (CWFolder *)[(CWLocalStore *)aDestinationStore folderForName: aFolderName]; if (![aDestinationFolder cacheManager]) { [aDestinationFolder setCacheManager: [[[CWLocalCacheManager alloc] initWithPath: [NSString stringWithFormat: @"%@.%@.cache", [[aDestinationFolder path] substringToIndex: ([[aDestinationFolder path] length] - [[[aDestinationFolder path] lastPathComponent] length])], [[aDestinationFolder path] lastPathComponent]] folder: aDestinationFolder] autorelease]]; [[aDestinationFolder cacheManager] initInRange: NSMakeRange(0, UINT_MAX)]; [(CWLocalFolder *)aDestinationFolder parse: NO]; } } if (!aDestinationFolder) { NSRunAlertPanel(_(@"Error!"), _(@"An error occurred while trying to open the \"%@\" mailbox.\nThe drag and drop operation has been cancelled."), _(@"OK"), NULL, NULL, aFolderName); return NO; } [aDestinationFolder setProperty: [NSDate date] forKey: FolderExpireDate]; // We retrieve property list of messages from paste board propertyList = [[info draggingPasteboard] propertyListForType: MessagePboardType]; if (!propertyList) { return NO; } allMessages = [[NSMutableArray alloc] init]; count = [propertyList count]; for (i = 0; i < count; i++) { [allMessages addObject: [aSourceFolder->allMessages objectAtIndex: [[(NSDictionary *)[propertyList objectAtIndex: i] objectForKey: MessageNumber] intValue]-1]]; } [self transferMessages: allMessages fromStore: aSourceStore fromFolder: aSourceFolder toStore: aDestinationStore toFolder: aDestinationFolder operation: (([info draggingSourceOperationMask]&NSDragOperationGeneric) == NSDragOperationGeneric ? MOVE_MESSAGES : COPY_MESSAGES)]; RELEASE(allMessages); return YES; } // // // #ifndef MACOSX - (void) outlineView: (NSOutlineView *) aOutlineView willDisplayOutlineCell: (id) aCell forTableColumn: (NSTableColumn *) aTbleColumn item: (id)item { if (![aOutlineView isExpandable: item]) { [aCell setImage: nil]; } else { if ([aOutlineView isItemExpanded: item]) { [aCell setImage: _sort_down]; } else { [aCell setImage: _sort_right]; } } } #endif // // // - (void) windowDidLoad { NSMenuItem *aMenuItem; NSMenu *aMenu; menu = [[NSMenu alloc] init]; [menu setAutoenablesItems: NO]; aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Create...") action: @selector(create:) keyEquivalent: @""]; [aMenuItem setTarget: self]; [menu addItem: aMenuItem]; RELEASE(aMenuItem); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Delete...") action: @selector(delete:) keyEquivalent: @""]; [aMenuItem setTarget: self]; [menu addItem: aMenuItem]; RELEASE(aMenuItem); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Rename") action: @selector(rename:) keyEquivalent: @""]; [aMenuItem setTarget: self]; [menu addItem: aMenuItem]; RELEASE(aMenuItem); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Take Account Offline") action: @selector(takeOffline:) keyEquivalent: @""]; [aMenuItem setTag: TAKE_OFFLINE]; [aMenuItem setTarget: self]; [menu addItem: aMenuItem]; RELEASE(aMenuItem); // // Our "Use..." menu with its three items // aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Use") action: NULL keyEquivalent: @""]; [menu addItem: aMenuItem]; aMenu = [[NSMenu alloc] init]; [aMenuItem setSubmenu: aMenu]; RELEASE(aMenuItem); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Small Icons") action: @selector(changeSize:) keyEquivalent: @""]; [aMenuItem setTag: GNUMailSmallIconSize]; [aMenuItem setTarget: self]; [aMenu addItem: aMenuItem]; RELEASE(aMenuItem); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Standard Icons") action: @selector(changeSize:) keyEquivalent: @""]; [aMenuItem setTag: GNUMailStandardIconSize]; [aMenuItem setTarget: self]; [aMenu addItem: aMenuItem]; RELEASE(aMenuItem); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Large Icons") action: @selector(changeSize:) keyEquivalent: @""]; [aMenuItem setTag: GNUMailLargeIconSize]; [aMenuItem setTarget: self]; [aMenu addItem: aMenuItem]; RELEASE(aMenuItem); RELEASE(aMenu); // // Our "Set Mailbox as..." menu with its items // aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Set Mailbox as") action: NULL keyEquivalent: @""]; [menu addItem: aMenuItem]; aMenu = [[NSMenu alloc] init]; [aMenuItem setSubmenu: aMenu]; RELEASE(aMenuItem); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Drafts for Account") action: NULL keyEquivalent: @""]; [aMenuItem setTag: SET_DRAFTS]; [aMenu addItem: aMenuItem]; RELEASE(aMenuItem); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Sent for Account") action: NULL keyEquivalent: @""]; [aMenuItem setTag: SET_SENT]; [aMenu addItem: aMenuItem]; RELEASE(aMenuItem); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Trash for Account") action: NULL keyEquivalent: @""]; [aMenuItem setTag: SET_TRASH]; [aMenu addItem: aMenuItem]; RELEASE(aMenuItem); RELEASE(aMenu); [self _updateContextMenu]; [self changeSize: nil]; ASSIGN(_cache, [MailboxManagerCache cacheFromDisk]); // We initialize our array containing all Stores and we load of folders _allFolders = [[NSMutableArray alloc] init]; // We initialize our dictionary containing all openend CWIMAPStores allStores = [[NSMutableDictionary alloc] init]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_accountsHaveChanged:) name: AccountsHaveChanged object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_folderCreateCompleted:) name: PantomimeFolderCreateCompleted object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_folderCreateFailed:) name: PantomimeFolderCreateFailed object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_folderDeleteCompleted:) name: PantomimeFolderDeleteCompleted object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_folderDeleteFailed:) name: PantomimeFolderDeleteFailed object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_folderRenameCompleted:) name: PantomimeFolderRenameCompleted object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_folderRenameFailed:) name: PantomimeFolderRenameFailed object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_folderSubscribeCompleted:) name: PantomimeFolderSubscribeCompleted object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_folderUnsubscribeCompleted:) name: PantomimeFolderUnsubscribeCompleted object: nil]; } // // action methods // - (IBAction) changeSize: (id) sender { int size, height; if (sender) { size = [sender tag]; } else { size = [[NSUserDefaults standardUserDefaults] integerForKey: @"IconSize" default: GNUMailStandardIconSize]; } ASSIGN(_sort_right, [NSImage imageNamed: @"sort_right"]); ASSIGN(_sort_down, [NSImage imageNamed: @"sort_down"]); switch (size) { case GNUMailSmallIconSize: ASSIGN(_drafts, [NSImage imageNamed: @"create_12"]); ASSIGN(_inbox, [NSImage imageNamed: @"retrieve_12"]); ASSIGN(_sent, [NSImage imageNamed: @"send_12"]); ASSIGN(_trash, [NSImage imageNamed: @"trash_12"]); ASSIGN(_open_folder, [NSImage imageNamed: @"folder_12"]); _font_size = 9; height = 12; break; case GNUMailLargeIconSize: ASSIGN(_drafts, [NSImage imageNamed: @"create_20"]); ASSIGN(_inbox, [NSImage imageNamed: @"retrieve_20"]); ASSIGN(_sent, [NSImage imageNamed: @"send_20"]); ASSIGN(_trash, [NSImage imageNamed: @"trash_20"]); ASSIGN(_open_folder, [NSImage imageNamed: @"folder_20"]); height = 20; #ifdef GNUSTEP _font_size = 14; #else _font_size = [NSFont systemFontSize]; #endif break; case GNUMailStandardIconSize: default: ASSIGN(_drafts, [NSImage imageNamed: @"create_16"]); ASSIGN(_inbox, [NSImage imageNamed: @"retrieve_16"]); ASSIGN(_sent, [NSImage imageNamed: @"send_16"]); ASSIGN(_trash, [NSImage imageNamed: @"trash_16"]); ASSIGN(_open_folder, [NSImage imageNamed: @"folder_16"]); height = 16; #ifdef GNUSTEP _font_size = [NSFont systemFontSize]; #else _font_size = [NSFont smallSystemFontSize]; #endif } [outlineView setRowHeight: height]; [outlineView setNeedsDisplay: YES]; [[NSUserDefaults standardUserDefaults] setInteger: size forKey: @"IconSize"]; } // // // - (IBAction) open: (id) sender { id item; int row, level; row = [outlineView selectedRow]; // If no row is selected and we had a last MailWindow on top, we set its folder to nil. // Otherwise, we just return. if (row < 0) { if ([GNUMail lastMailWindowOnTop]) { [[[[GNUMail lastMailWindowOnTop] windowController] folder] close]; if ([[[GNUMail lastMailWindowOnTop] windowController] isKindOfClass: [MailWindowController class]]) { [[[GNUMail lastMailWindowOnTop] windowController] setFolder: nil]; } else { [[[[GNUMail lastMailWindowOnTop] windowController] mailWindowController] setFolder: nil]; } } return; } item = [outlineView itemAtRow: row]; level = [outlineView levelForItem: item]; // // We must verify that: // // a) we have at least one selected row // b) we haven't selected our root, or a store (local or IMAP) // if ([outlineView numberOfSelectedRows] != 1) { NSRunInformationalAlertPanel(_(@"Mailbox error!"), _(@"You must select a valid mailbox to open!"), _(@"OK"), NULL, NULL, NULL); return; } else if (level < 1) { if (![outlineView isItemExpanded: item]) { [outlineView expandItem: item]; } return; } // We verify if it's a local folder if ([[Utilities completePathForFolderNode: item separator: '/'] hasPrefix: [NSString stringWithFormat: @"/%@", _(@"Local")]]) { NSString *aString; aString = [Utilities pathOfFolderFromFolderNode: (FolderNode *)item separator: '/']; [self _openLocalFolderWithName: aString sender: sender]; } // It's an IMAP folder... else { NSString *aServerName, *aUsername, *aString; CWIMAPStore *aStore; [Utilities storeKeyForFolderNode: item serverName: &aServerName username: &aUsername]; aStore = (CWIMAPStore *)[self storeForName: aServerName username: aUsername]; aString = [[Utilities pathOfFolderFromFolderNode: (FolderNode *)item separator: '/'] stringByReplacingOccurrencesOfCharacter: '/' withCharacter: [aStore folderSeparator]]; [self _openIMAPFolderWithName: aString store: aStore sender: sender]; } } // // // - (IBAction) create: (id) sender { NewMailboxPanelController *theController; id aStore, item; int row, level; row = [outlineView selectedRow]; if (row < 0 || row >= [outlineView numberOfRows]) { NSBeep(); return; } item = [outlineView itemAtRow: row]; level = [outlineView levelForItem: item]; if ([outlineView numberOfSelectedRows] != 1) { NSRunInformationalAlertPanel(_(@"Mailbox error!"), _(@"You must select a valid root where to create this new mailbox."), _(@"OK"), NULL, NULL, NULL); return; } // // We create our NewMailboxPanelController object. It'll be automatically deallocated when the // window will be closed. // theController = [[NewMailboxPanelController alloc] initWithWindowNibName: @"NewMailboxPanel"]; // // We get the right store and we disable our mailbox type popup button // if we are creating an IMAP mailbox. // aStore = [self storeForFolderNode: item]; if ([NSApp runModalForWindow: [theController window]] == NSRunStoppedResponse) { NSString *aString, *pathOfFolder; int type; pathOfFolder = [Utilities pathOfFolderFromFolderNode: item separator: [aStore folderSeparator]]; if (!pathOfFolder || [pathOfFolder length] == 0) { aString = [[[theController mailboxNameField] stringValue] stringByTrimmingWhiteSpaces]; } else { aString = [NSString stringWithFormat: @"%@%c%@", pathOfFolder, [aStore folderSeparator], [[[theController mailboxNameField] stringValue] stringByTrimmingWhiteSpaces]]; } if ([[NSUserDefaults standardUserDefaults] integerForKey: @"UseMaildirMailboxFormat" default: NSOffState] == NSOnState) { type = PantomimeFormatMaildir; } else { type = PantomimeFormatMbox; } // We can now proceed with the creation of our new folder [aStore createFolderWithName: aString type: type contents: nil]; } #ifndef MACOSX [[self window] makeKeyAndOrderFront: self]; #endif RELEASE(theController); } // // // - (IBAction) delete: (id) sender { NSString *aFolderName, *aString; id aStore, item; int choice, row, level; row = [outlineView selectedRow]; if (row < 0 || row >= [outlineView numberOfRows]) { NSBeep(); return; } item = [outlineView itemAtRow: row]; level = [outlineView levelForItem: item]; if ([outlineView numberOfSelectedRows] != 1 || level < 1) { NSRunInformationalAlertPanel(_(@"Mailbox error!"), _(@"Please select the mailbox you would like to delete."), _(@"OK"), NULL, NULL, NULL); return; } aString = [self _stringValueOfURLNameFromItem: item store: &aStore]; // We get our folder name, respecting the folder separator aFolderName = [Utilities pathOfFolderFromFolderNode: (FolderNode *)item separator: [(id)aStore folderSeparator]]; // We show our prompt panel choice = NSRunAlertPanel(_(@"Delete..."), _(@"Are you sure you want to delete the \"%@\" mailbox?"), _(@"Delete"), // default _(@"Cancel"), // alternate nil, aFolderName); if (choice == NSAlertDefaultReturn) { NSString *aDefaultMailbox; if ([self _deletingDefaultMailbox: &aDefaultMailbox usingURLNameAsString: aString]) { NSRunAlertPanel(_(@"Error while deleting!"), _(@"You can't delete your default %@ mailbox. Use the Mailboxes tab in the\nAccount Preferences panel to change it before trying again."), _(@"OK"), // default NULL, // alternate NULL, aDefaultMailbox); return; } if ([aStore folderForNameIsOpen: aFolderName]) { id aWindow; // Get the associated MailWindow. aWindow = [Utilities windowForFolderName: aFolderName store: aStore]; // We just close the mailbox and leave its MailWindow empty! [[[aWindow windowController] folder] close]; [[aWindow windowController] setFolder: nil]; } // We now delete the mailbox... [aStore deleteFolderWithName: aFolderName]; } } // // // - (IBAction) rename: (id) sender { int row; row = [outlineView selectedRow]; if (row <= 0 || row >= [outlineView numberOfRows]) { NSBeep(); return; } [outlineView editColumn: 0 row: row withEvent: nil select: YES]; } // // // - (IBAction) takeOffline: (id) sender { CWIMAPStore *aStore; aStore = [self storeForFolderNode: (FolderNode *)[outlineView itemAtRow: [outlineView selectedRow]]]; if (aStore) { [self setStore: nil name: [aStore name] username: [aStore username]]; [self closeWindowsForStore: aStore]; } else { [self open: sender]; } } // // // - (IBAction) setMailboxAs: (id) sender { NSMutableDictionary *theAccount, *allAccounts, *allValues; NSString *aString; CWStore *aStore; allAccounts = [[NSMutableDictionary alloc] initWithDictionary: [[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"]]; theAccount = [NSMutableDictionary dictionaryWithDictionary: [allAccounts objectForKey: [sender title]]]; allValues = [NSMutableDictionary dictionaryWithDictionary: [theAccount objectForKey: @"MAILBOXES"]]; aString = [self _stringValueOfURLNameFromItem: (FolderNode *)[outlineView itemAtRow: [outlineView selectedRow]] store: &aStore]; switch ([sender tag]) { case SET_DRAFTS: [allValues setObject: aString forKey: @"DRAFTSFOLDERNAME"]; break; case SET_SENT: [allValues setObject: aString forKey: @"SENTFOLDERNAME"]; break; case SET_TRASH: [allValues setObject: aString forKey: @"TRASHFOLDERNAME"]; break; } [theAccount setObject: allValues forKey: @"MAILBOXES"]; [allAccounts setObject: theAccount forKey: [sender title]]; [[NSUserDefaults standardUserDefaults] setObject: allAccounts forKey: @"ACCOUNTS"]; [[NSUserDefaults standardUserDefaults] synchronize]; [outlineView setNeedsDisplay: YES]; } // // access / mutation methods // - (NSOutlineView *) outlineView { return outlineView; } // // This method returns a pointer to an open store which has // theFolderNode as one of its children. // - (id) storeForFolderNode: (FolderNode *) theFolderNode { CWStore *aStore; if ([[Utilities completePathForFolderNode: theFolderNode separator: '/'] hasPrefix: [NSString stringWithFormat: @"/%@", _(@"Local")]]) { aStore = [self storeForName: @"GNUMAIL_LOCAL_STORE" username: NSUserName()]; } else { NSString *aServerName, *aUsername; [Utilities storeKeyForFolderNode: theFolderNode serverName: &aServerName username: &aUsername]; aStore = [self storeForName: aServerName username: aUsername]; } return aStore; } // // // - (id) storeForName: (NSString *) theName username: (NSString *) theUsername { return [allStores objectForKey: [NSString stringWithFormat: @"%@ @ %@", theUsername, theName]]; } // // // - (id) storeForURLName: (CWURLName *) theURLName { id aStore; if ([[theURLName protocol] caseInsensitiveCompare: @"LOCAL"] == NSOrderedSame ) { aStore = [self storeForName: @"GNUMAIL_LOCAL_STORE" username: NSUserName()]; } else { if ([self _initializeIMAPStoreWithAccountName: [Utilities accountNameForServerName: [theURLName host] username: [theURLName username]]]) { aStore = [self storeForName: [theURLName host] username: [theURLName username]]; } else { aStore = nil; } } return aStore; } // // // - (id) folderForURLName: (CWURLName *) theURLName { id aStore, aFolder; aStore = [self storeForURLName: theURLName]; if (!aStore) return nil; if ([aStore isKindOfClass: [CWIMAPStore class]]) { aFolder = [(CWIMAPStore *)aStore folderForName: [theURLName foldername] select: NO]; } else { aFolder = [(CWLocalStore *)aStore folderForName: [theURLName foldername]]; if (![aFolder cacheManager]) { [aFolder setCacheManager: [[[CWLocalCacheManager alloc] initWithPath: [NSString stringWithFormat: @"%@.%@.cache", [[aFolder path] substringToIndex: ([[aFolder path] length] - [[[aFolder path] lastPathComponent] length])], [[aFolder path] lastPathComponent]] folder: aFolder] autorelease]]; [[aFolder cacheManager] initInRange: NSMakeRange(0, UINT_MAX)]; [(CWLocalFolder *)aFolder parse: NO]; } } return aFolder; } // // // - (void) setStore: (id) theStore name: (NSString *) theName username: (NSString *) theUsername { NSString *aString; aString = [NSString stringWithFormat: @"%@ @ %@", theUsername, theName]; // We verify if we want to remove an opened store. if (!theStore && theName && theUsername) { FolderNode *aFolderNode; int row; // For an IMAP store, we remove all children of our root node aFolderNode = [self storeFolderNodeForName: [Utilities accountNameForServerName: theName username: theUsername]]; #ifndef MACOSX [aFolderNode setChildren: nil]; #endif [outlineView collapseItem: aFolderNode]; row = [outlineView rowForItem: aFolderNode]; if (row >= 0 && row < [outlineView numberOfRows]) { [outlineView selectRow: row byExtendingSelection: NO]; } [allStores removeObjectForKey: aString]; return; } // We always first "remove" the object in case we call this method // multiple times with the same object. RETAIN(theStore); [allStores removeObjectForKey: aString]; // We {re}add it to our dictionary. [allStores setObject: theStore forKey: aString]; RELEASE(theStore); } // // FIXME: support more than one MailWindow associated to the store // - (void) closeWindowsForStore: (id) theStore { NSWindow *aWindow; if ((aWindow = [Utilities windowForFolderName: nil store: theStore])) { [aWindow close]; } [allStores removeObjectForKey: [NSString stringWithFormat: @"%@ @ %@", [(CWIMAPStore *)theStore username], [(CWIMAPStore *)theStore name]]]; [theStore close]; } // // // - (MailboxManagerCache *) cache { return _cache; } // // // - (void) panic: (NSData *) theData folder: (NSString *) theFolder { CWLocalStore *aLocalStore; CWLocalFolder *aFolder; NSRunAlertPanel(_(@"Error!"), _(@"An error occurred while trying to open the \"%@\" mailbox. This mailbox was probably\ndeleted and a filter is trying to save mails in it. Check your filters and the special mailboxes for all accounts.\nThe message has been saved in the \"Panic\" local mailbox."), _(@"OK"), NULL, NULL, theFolder); aLocalStore = [self storeForName: @"GNUMAIL_LOCAL_STORE" username: NSUserName()]; if (![[NSFileManager defaultManager] fileExistsAtPath: [[aLocalStore path] stringByAppendingPathComponent: @"Panic"]]) { [aLocalStore createFolderWithName: @"Panic" type: PantomimeFormatMbox contents: nil]; } aFolder = [aLocalStore folderForName: @"Panic"]; if (![aFolder cacheManager]) { [aFolder setCacheManager: [[[CWLocalCacheManager alloc] initWithPath: [NSString stringWithFormat: @"%@.%@.cache", [[aFolder path] substringToIndex: ([[aFolder path] length] - [[[aFolder path] lastPathComponent] length])], [[aFolder path] lastPathComponent]] folder: aFolder] autorelease]]; [[aFolder cacheManager] initInRange: NSMakeRange(0, UINT_MAX)]; [aFolder parse: NO]; } [aFolder appendMessageFromRawSource: theData flags: nil]; } // // // - (void) deleteSentMessageWithID: (NSString *) theID { NSMutableDictionary *allMessages; NSString *aPath; aPath = [NSString stringWithFormat: @"%@/%@", GNUMailUserLibraryPath(), @"UnsentMessages"]; NS_DURING { allMessages = [NSUnarchiver unarchiveObjectWithFile: aPath]; if (allMessages) { [allMessages removeObjectForKey: theID]; [NSArchiver archiveRootObject: allMessages toFile: aPath]; } } NS_HANDLER { } NS_ENDHANDLER; } // // // - (void) restoreUnsentMessages { NSMutableDictionary *allMessages; NSString *aPath; aPath = [NSString stringWithFormat: @"%@/%@", GNUMailUserLibraryPath(), @"UnsentMessages"]; NS_DURING { allMessages = [NSUnarchiver unarchiveObjectWithFile: aPath]; if (allMessages && [allMessages count]) { int choice; choice = NSRunAlertPanel(_(@"Unsent messages..."), _(@"There are unsent messages, would you like to\nrestore them?"), _(@"Yes"), // default _(@"No"), // alternate NULL ); if (choice == NSAlertDefaultReturn) { EditWindowController *aController; NSEnumerator *theEnumerator; CWMessage *aMessage; NSData *aData; theEnumerator = [allMessages objectEnumerator]; while ((aData = [theEnumerator nextObject])) { aMessage = [[CWMessage alloc] initWithData: aData]; aController = [[EditWindowController alloc] initWithWindowNibName: @"EditWindow"]; [aController setMode: GNUMailRestoreFromDrafts]; [aController setMessageFromDraftsFolder: aMessage]; [aController updateWithMessage: aMessage]; [aController showWindow: self]; RELEASE(aMessage); } } [allMessages removeAllObjects]; [NSArchiver archiveRootObject: allMessages toFile: aPath]; } } NS_HANDLER { } NS_ENDHANDLER; } // // // - (void) saveUnsentMessage: (NSData *) theMessage withID: (NSString *) theID { NSMutableDictionary *allMessages; NSString *aPath; aPath = [NSString stringWithFormat: @"%@/%@", GNUMailUserLibraryPath(), @"UnsentMessages"]; NS_DURING { allMessages = [NSUnarchiver unarchiveObjectWithFile: aPath]; if (!allMessages) { allMessages = [NSMutableDictionary dictionary]; } [allMessages setObject: theMessage forKey: theID]; [NSArchiver archiveRootObject: allMessages toFile: aPath]; } NS_HANDLER { NSLog(@"An exception occurred while saving the unsent message to %@", aPath); } NS_ENDHANDLER; } // // This method appends a message to the folder specified in theURLName. // - (void) addMessage: (NSData *) theMessage toFolder: (CWURLName *) theURLName { NSString *aFolderName; CWFolder *aFolder; aFolder = [self folderForURLName: theURLName]; aFolderName = [theURLName foldername]; if (!aFolder) { [self panic: theMessage folder: aFolderName]; } [aFolder setProperty: [NSDate date] forKey: FolderExpireDate]; [self transferMessage: theMessage flags: nil folder: aFolder]; } // // // - (CWMessage *) messageFromDraftsFolder { id aMailWindowController; CWMessage *aMessage; aMailWindowController = [[GNUMail lastMailWindowOnTop] delegate]; // We first verify if current folder is a Drafts folder. if (aMailWindowController && [aMailWindowController isKindOfClass: [MailWindowController class]]) { if (![Utilities stringValueOfURLName: [Utilities stringValueOfURLNameFromFolder: [aMailWindowController folder]] isEqualTo: @"DRAFTSFOLDERNAME"]) { return nil; } } if ([[aMailWindowController folder] count] > 0 && [aMailWindowController selectedMessage]) { aMessage = [aMailWindowController selectedMessage]; } else { aMessage = nil; } return aMessage; } // // // - (NSDictionary *) allStores { return [NSDictionary dictionaryWithDictionary: allStores]; } // // This method is used under OS X since we must "swap" the current // outline view in the Mailbox Manager to match the one currently // on top in the NSDrawer. This is needed so -open: and other methods // can work properly with the "current" outline view. // - (void) setCurrentOutlineView: (id) theOutlineView { outlineView = theOutlineView; } // // // - (void) updateFolderInformation: (NSDictionary *) theInformation { CWFolderInformation *aFolderInformation; NSString *aFolderName; aFolderInformation = [theInformation objectForKey: @"FOLDER_INFORMATION"]; aFolderName = [[theInformation objectForKey: @"FOLDER_NAME"] stringByReplacingOccurrencesOfCharacter: [[theInformation objectForKey: @"FOLDER_SEPARATOR"] characterAtIndex: 0] withCharacter: '/']; [_cache setAllValuesForStoreName: [theInformation objectForKey: @"STORE_NAME"] folderName: aFolderName username: [theInformation objectForKey: @"USERNAME"] nbOfMessages: [aFolderInformation nbOfMessages] nbOfUnreadMessages: [aFolderInformation nbOfUnreadMessages]]; // // We now get the right outline view item to refresh. This is considerably faster // than calling -setNeedsDisplay: on the entire outline view (which will result // in a plethora of method calls to get the "right values"). // [self updateOutlineViewForFolder: aFolderName store: [theInformation objectForKey: @"STORE_NAME"] username: [theInformation objectForKey: @"USERNAME"] controller: nil]; } // // This method is used to refresh ONLY the item associated with the Store/Folder. // - (void) updateOutlineViewForFolder: (NSString *) theFolder store: (NSString *) theStore username: (NSString *) theUsername controller: (id) theController { if (theController) { [[theController folder] updateCache]; [theController tableViewShouldReloadData]; [theController updateStatusLabel]; } else { FolderNode *aFolderNode, *aRootNode; int row; if ([theStore isEqualToString: @"GNUMAIL_LOCAL_STORE"]) { aRootNode = localNodes; } else { aRootNode = [self storeFolderNodeForName: [Utilities accountNameForServerName: theStore username: theUsername]]; } aFolderNode = [Utilities folderNodeForPath: theFolder using: aRootNode separator: '/']; row = [outlineView rowForItem: aFolderNode]; if (row >= 0 && row < [outlineView numberOfRows]) { [outlineView setNeedsDisplayInRect: [outlineView rectOfRow: row]]; } } } // // class methods // + (id) singleInstance { if (!singleInstance) { #ifdef MACOSX singleInstance = [[MailboxManagerController alloc] init]; #else singleInstance = [[MailboxManagerController alloc] initWithWindowNibName: @"MailboxManager"]; #endif } return singleInstance; } // // Other methods // - (void) openFolderWithURLName: (CWURLName *) theURLName sender: (id) theSender { if ([[theURLName protocol] caseInsensitiveCompare: @"LOCAL"] == NSOrderedSame) { [self _openLocalFolderWithName: [theURLName foldername] sender: theSender]; } else if ([[theURLName protocol] caseInsensitiveCompare: @"IMAP"] == NSOrderedSame) { if ([self _initializeIMAPStoreWithAccountName: [Utilities accountNameForServerName: [theURLName host] username: [theURLName username]]]) { [self _openIMAPFolderWithName: [theURLName foldername] store: (CWIMAPStore *)[self storeForName: [theURLName host] username: [theURLName username]] sender: theSender]; } } } // // // - (void) reloadAllFolders { DESTROY(localNodes); // We remove all our elements [_allFolders removeAllObjects]; // We add our local folder, if we need to localNodes = [Utilities folderNodesFromFolders: [[self storeForName: @"GNUMAIL_LOCAL_STORE" username: NSUserName()] folderEnumerator] separator: '/']; [localNodes setName: _(@"Local")]; [localNodes setParent: nil]; if ([localNodes childCount] > 0) { [_allFolders addObject: localNodes]; } RETAIN(localNodes); // We verify if the ACCOUNTS preferences have been defined. if ([[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"]) { NSMutableDictionary *allAccounts; NSDictionary *allValues; NSEnumerator *allKeys; CWIMAPStore *aStore; NSString *aKey; allAccounts = [[NSMutableDictionary alloc] init]; [allAccounts addEntriesFromDictionary: [Utilities allEnabledAccounts]]; allKeys = [[[allAccounts allKeys] sortedArrayUsingSelector: @selector(compare:)] objectEnumerator]; // We build a correct subset of all our IMAP servers defined in all accounts while ((aKey = [allKeys nextObject])) { allValues = [[allAccounts objectForKey: aKey] objectForKey: @"RECEIVE"]; // We add it only if it's an IMAP server AND if we receive mails either // manually or automatically if ([[allValues objectForKey: @"SERVERTYPE"] intValue] == IMAP && [[allValues objectForKey: @"RETRIEVEMETHOD"] intValue] != NEVER) { NSString *aServerName, *aUsername; FolderNode *aFolderNode; aServerName = [allValues objectForKey: @"SERVERNAME"]; aUsername = [allValues objectForKey: @"USERNAME"]; aFolderNode = [FolderNode folderNodeWithName: [NSString stringWithFormat: @"%@", aKey] parent: nil]; [_allFolders addObject: aFolderNode]; // If our IMAP Store has been previously initialized, we re-initialize it in order to get // the most recent values for the {subscribed} folders if ((aStore = [self storeForName: aServerName username: aUsername])) { NSNumber *aNumber; aNumber = [allValues objectForKey: @"SHOW_WHICH_MAILBOXES"]; if (aNumber && [aNumber intValue] == IMAP_SHOW_SUBSCRIBED_ONLY) { [self reloadFoldersForStore: aStore folders: [aStore subscribedFolderEnumerator]]; } else { [self reloadFoldersForStore: aStore folders: [aStore folderEnumerator]]; } } } } RELEASE(allAccounts); } [outlineView abortEditing]; // We inform our outline view to reload its data. [outlineView reloadData]; // We always expand our root item [outlineView expandItem: _allFolders]; // We now select and expand the 'Local' folder if there's no IMAP folders defined if ([_allFolders count] == 1 && [_allFolders lastObject] == localNodes) { [outlineView expandItem: localNodes]; [outlineView selectRow: [outlineView rowForItem: localNodes] byExtendingSelection: NO]; } } // // // - (void) transferMessage: (NSData *) theMessage flags: (CWFlags *) theFlags folder: (CWFolder *) theFolder { CWFlags *flags; // // We transfer the message. If we are transferring to a Sent folder, mark it as read. // flags = theFlags; if ([Utilities stringValueOfURLName: [Utilities stringValueOfURLNameFromFolder: theFolder] isEqualTo: @"SENTFOLDERNAME"]) { flags = [[CWFlags alloc] initWithFlags: PantomimeSeen]; AUTORELEASE(flags); } // // For IMAP mailboxes, we show some kind of progress indicators // when performing lengthy operations. // if ([theFolder isKindOfClass: [CWIMAPFolder class]]) { Task *aTask; aTask = [[TaskManager singleInstance] taskForService: [theFolder store]]; if (aTask) { aTask->total_count++; aTask->total_size += (float)[theMessage length]/(float)1024; } else { aTask = [[Task alloc] init]; aTask->op = SAVE_ASYNC; [aTask setKey: [Utilities accountNameForFolder: theFolder]]; [aTask setMessage: theMessage]; aTask->total_size = (float)[theMessage length]/(float)1024; aTask->immediate = YES; aTask->service = [theFolder store]; [[TaskManager singleInstance] addTask: aTask]; RELEASE(aTask); } } [theFolder appendMessageFromRawSource: theMessage flags: flags]; } // // theOperation == COPY / MOVE // returns the numbers of transferred messages, -1 on error. // - (void) transferMessages: (NSArray *) theMessages fromStore: (id) theSourceStore fromFolder: (id) theSourceFolder toStore: (id) theDestinationStore toFolder: (id) theDestinationFolder operation: (int) theOperation { if (!theMessages || [theMessages count] == 0 || !theSourceFolder || !theDestinationFolder ) { NSBeep(); } // // If we are transferring messages from an IMAPFolder to an IMAPFolder on the SAME // IMAPStore, let's use Pantomime's IMAPFolder: -copyMessage: toFolder: method // since the operation is gonna be server-side - so MUCH FASTER. // if ([theSourceStore isKindOfClass: [CWIMAPStore class]] && theSourceStore == theDestinationStore) { [theSourceFolder copyMessages: theMessages toFolder: [[(CWIMAPFolder *)theDestinationFolder name] stringByReplacingOccurrencesOfCharacter: '/' withCharacter: [theDestinationStore folderSeparator]]]; // If we are moving the messages, mark them as deleted. if (theOperation == MOVE_MESSAGES) { CWMessage *aMessage; CWFlags *theFlags; int i, count; count = [theMessages count]; for (i = 0; i < count; i++) { aMessage = [theMessages objectAtIndex: i]; theFlags = [[aMessage flags] copy]; [theFlags add: PantomimeDeleted]; [aMessage setFlags: theFlags]; RELEASE(theFlags); } } } // // We are NOT doing an IMAP-to-IMAP (on the same IMAPStore) copy. // Let's grab the message's data and use it. If it's not available, // we load it asynchronously and create a corresponding task // in the TaskManager for showing progress of the operation. // else { NSMutableArray *messagesToLoad; NSAutoreleasePool *pool; CWMessage *aMessage; NSData *aData; Task *aTask; int i; messagesToLoad = [NSMutableArray array]; aTask = [[Task alloc] init]; aTask->op = LOAD_ASYNC; aTask->immediate = YES; aTask->service = [theSourceFolder store]; [aTask setKey: [Utilities accountNameForFolder: theSourceFolder]]; for (i = 0; i < [theMessages count]; i++) { pool = [[NSAutoreleasePool alloc] init]; aMessage = [theMessages objectAtIndex: i]; [aMessage setProperty: [NSNumber numberWithInt: theOperation] forKey: MessageOperation]; aData = [aMessage rawSource]; if (aData) { CWFlags *theFlags; // We get our flags but we remove the PantomimeDeleted flag from them theFlags = [[aMessage flags] copy]; [theFlags remove: PantomimeDeleted]; [[TaskManager singleInstance] setMessage: aMessage forHash: [aData hash]]; [self transferMessage: aData flags: AUTORELEASE([theFlags copy]) folder: theDestinationFolder]; RELEASE(theFlags); } else { // The raw source is NOT available right now. We write the properties // so we know we must transfer it once it's loaded. [aMessage setProperty: [NSNumber numberWithBool: YES] forKey: MessageLoading]; [aMessage setProperty: theDestinationStore forKey: MessageDestinationStore]; [aMessage setProperty: theDestinationFolder forKey: MessageDestinationFolder]; [messagesToLoad addObject: aMessage]; aTask->total_size += (float)[aMessage size]/(float)1024; } RELEASE(pool); } if ([messagesToLoad count]) { [aTask setMessage: messagesToLoad]; aTask->total_count = [messagesToLoad count]; [[TaskManager singleInstance] addTask: aTask]; } RELEASE(aTask); } } // // // - (void) reloadFoldersForStore: (id) theStore folders: (NSEnumerator *) theFolders { NSMutableDictionary *allAccounts, *allValues, *theAccount; FolderNode *aFolderNode, *nodes; NSString *theAccountName; NSArray *allFolders; aFolderNode = [self storeFolderNodeForName: [Utilities accountNameForServerName: [(CWService *)theStore name] username: [theStore username]]]; allFolders = [NSArray arrayWithArray: [theFolders allObjects]]; nodes = [Utilities folderNodesFromFolders: [allFolders objectEnumerator] separator: [theStore folderSeparator]]; RETAIN(nodes); [aFolderNode setChildren: [nodes children]]; RELEASE(nodes); #warning optimize by reloading only the item [outlineView reloadData]; [outlineView expandItem: aFolderNode]; // // We finally cache all/subscribed folders in the user's defaults for this account // theAccountName = [Utilities accountNameForServerName: [(CWIMAPStore *)theStore name] username: [theStore username]]; allAccounts = [[NSMutableDictionary alloc] initWithDictionary: [[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"]]; theAccount = [[NSMutableDictionary alloc] initWithDictionary: [allAccounts objectForKey: theAccountName]]; allValues = [[NSMutableDictionary alloc] initWithDictionary: [theAccount objectForKey: @"RECEIVE"]]; // // We write back the information // [allValues setObject: allFolders forKey: @"SUBSCRIBED_FOLDERS"]; [theAccount setObject: allValues forKey: @"RECEIVE"]; [allAccounts setObject: theAccount forKey: theAccountName]; [[NSUserDefaults standardUserDefaults] setObject: allAccounts forKey: @"ACCOUNTS"]; [[NSUserDefaults standardUserDefaults] synchronize]; RELEASE(allValues); RELEASE(theAccount); RELEASE(allAccounts); } // // // - (FolderNode *) storeFolderNodeForName: (NSString *) theName { int i, count; count = [_allFolders count]; for (i = 0; i < count; i++) { FolderNode *aFolderNode; aFolderNode = [_allFolders objectAtIndex: i]; if ([theName isEqualToString: [aFolderNode name]]) { return aFolderNode; } } return nil; } // // // - (void) saveMessageInDraftsFolderForController: (EditWindowController *) theEditWindowController { NSString *theAccountName, *aString; CWURLName *theURLName; // // We first update the current message content with the current // content of the view and we synchronize our popup button. // [theEditWindowController updateMessageContentFromTextView]; [[theEditWindowController accountPopUpButton] synchronizeTitleAndSelectedItem]; theAccountName = [(ExtendedMenuItem *)[[theEditWindowController accountPopUpButton] selectedItem] key]; // We get the value of the Drafts folder in the user defaults. If the Drafts folder isn't set // for this particular account, we are the user about this and return immediately. aString = [[[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: theAccountName] objectForKey: @"MAILBOXES"] objectForKey: @"DRAFTSFOLDERNAME"]; if (!aString) { NSRunAlertPanel(_(@"Error!"), _(@"The Drafts mailbox is not set for the %@ account.\nPlease set it from the mailboxes list using\nthe contextual menu."), _(@"OK"), NULL, NULL, theAccountName); return; } theURLName = [[CWURLName alloc] initWithString: aString path: [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]]; [self addMessage: [[theEditWindowController message] dataValue] toFolder: theURLName]; // If this message is already in the Drafts folder, set the "deleted" flag // of the original message. if ([theEditWindowController mode] == GNUMailRestoreFromDrafts) { CWFlags *theFlags; theFlags = [[[theEditWindowController message] flags] copy]; [theFlags add: PantomimeDeleted]; [[theEditWindowController message] setFlags: theFlags]; RELEASE(theFlags); [[NSNotificationCenter defaultCenter] postNotificationName: ReloadMessageList object: nil userInfo: nil]; } // We mark the window's document as non-edited [[theEditWindowController window] setDocumentEdited: NO]; RELEASE(theURLName); } @end // // Private methods // @implementation MailboxManagerController (Private) - (void) _accountsHaveChanged: (id) sender { NSEnumerator *theEnumerator; NSArray *allAccounts; id aStore; [self _updateContextMenu]; [self reloadAllFolders]; allAccounts = [[Utilities allEnabledAccounts] allKeys]; theEnumerator = [allStores objectEnumerator]; while ((aStore = [theEnumerator nextObject])) { if ([aStore isKindOfClass: [CWIMAPStore class]] && ![allAccounts containsObject: [Utilities accountNameForServerName: [(CWIMAPStore *)aStore name] username: [(CWIMAPStore *)aStore username]]]) { [self closeWindowsForStore: aStore]; } } } // // // - (BOOL) _deletingDefaultMailbox: (NSString **) theMailboxName usingURLNameAsString: (NSString *) theURLNameAsString { if ([Utilities stringValueOfURLName: theURLNameAsString isEqualTo: @"INBOXFOLDERNAME"]) { *theMailboxName = _(@"Inbox"); return YES; } else if ([Utilities stringValueOfURLName: theURLNameAsString isEqualTo: @"SENTFOLDERNAME"]) { *theMailboxName = _(@"Sent"); return YES; } else if ([Utilities stringValueOfURLName: theURLNameAsString isEqualTo: @"DRAFTSFOLDERNAME"]) { *theMailboxName = _(@"Drafts"); return YES; } else if ([Utilities stringValueOfURLName: theURLNameAsString isEqualTo: @"TRASHFOLDERNAME"]) { *theMailboxName = _(@"Trash"); return YES; } return NO; } // // // - (void) _folderCreateCompleted: (NSNotification *) theNotification { NSString *aString, *aStoreName, *aUsername; id o; // We get the account in order to verify if we must subscribe to the IMAP mailbox o = [theNotification object]; aStoreName = @"GNUMAIL_LOCAL_STORE"; aUsername = NSUserName(); if ([o isKindOfClass: [CWIMAPStore class]]) { aStoreName = [(CWIMAPStore *)o name]; aUsername = [o username]; aString = [Utilities accountNameForServerName: aStoreName username: aUsername]; if ([[[[[Utilities allEnabledAccounts] objectForKey: aString] objectForKey: @"RECEIVE"] objectForKey: @"SHOW_WHICH_MAILBOXES"] intValue] == IMAP_SHOW_SUBSCRIBED_ONLY) { [o subscribeToFolderWithName: [[theNotification userInfo] objectForKey: @"Name"]]; return; } } // We update the cache in case we imported messages when creating the mailbox. [_cache setAllValuesForStoreName: aStoreName folderName: [[theNotification userInfo] objectForKey: @"Name"] username: aUsername nbOfMessages: ([[theNotification userInfo] objectForKey: @"Count"] ? [[[theNotification userInfo] objectForKey: @"Count"] intValue] : 0) nbOfUnreadMessages: 0]; [self _folderSubscribeCompleted: theNotification]; } // // // - (void) _folderCreateFailed: (NSNotification *) theNotification { NSRunInformationalAlertPanel(_(@"Mailbox error!"), _(@"An error occurred while creating the %@ mailbox. This mailbox probably already exists\nor you don't have permission to create it."), _(@"OK"), NULL, NULL, [[theNotification userInfo] objectForKey: @"Name"]); } // // // - (void) _folderDeleteCompleted: (NSNotification *) theNotification { NSString *aStoreName, *aUsername; id aStore, item; aStoreName = @"GNUMAIL_LOCAL_STORE"; aUsername = NSUserName(); aStore = [theNotification object]; #warning FIXME get the right item in case the selection has changed item = [outlineView itemAtRow: [outlineView selectedRow]]; // Delete cache files, ONLY if this is an IMAP folder! if ([aStore isKindOfClass: [CWIMAPStore class]] ) { NSString *aKey, *cacheFilePath; FolderNode *node; int i; aStoreName = [(CWIMAPStore *)aStore name]; aUsername = [(CWIMAPStore *)aStore username]; aKey = [NSString stringWithFormat: @"%@ @ %@", aUsername, aStoreName]; cacheFilePath = [NSString stringWithFormat: @"%@/IMAPCache_%@_%@", GNUMailUserLibraryPath(), [Utilities flattenPathFromString: aKey separator: '/'], [Utilities flattenPathFromString: [Utilities pathOfFolderFromFolderNode: (FolderNode *)item separator: [(id)aStore folderSeparator]] separator: '/']]; // We remove the file NS_DURING [[NSFileManager defaultManager] removeFileAtPath: cacheFilePath handler: nil]; NS_HANDLER // Under GNUstep, if we pass something that can't be converted to a cString // to -removeFileAtPath, it throws an exception. NSDebugLog(@"Exception occurred while removing the cache file."); NS_ENDHANDLER; // We remove the cache file of the children of this folder, if any. for (i = 0; i < [(FolderNode *)item childCount]; i++) { node = [(FolderNode *)item childAtIndex: i]; cacheFilePath = [NSString stringWithFormat: @"%@/IMAPCache_%@_%@", GNUMailUserLibraryPath(), [Utilities flattenPathFromString: aKey separator: '/'], [Utilities flattenPathFromString: [Utilities pathOfFolderFromFolderNode: node separator: [(id)aStore folderSeparator]] separator: '/']]; NS_DURING [[NSFileManager defaultManager] removeFileAtPath: cacheFilePath handler: nil]; NS_HANDLER // Under GNUstep, if we pass something that can't be converted to a cString // to -removeFileAtPath, it throws an exception. NSDebugLog(@"Exception occurred while removing the cache file."); NS_ENDHANDLER; } // We get the account in order to verify if we must unsubscribe to the IMAP mailbox aKey = [Utilities accountNameForServerName: aStoreName username: aUsername]; if ([[[[[Utilities allEnabledAccounts] objectForKey: aKey] objectForKey: @"RECEIVE"] objectForKey: @"SHOW_WHICH_MAILBOXES"] intValue] == IMAP_SHOW_SUBSCRIBED_ONLY) { [aStore unsubscribeToFolderWithName: [[theNotification userInfo] objectForKey: @"Name"]]; return; } } // We delete our cache entries [_cache removeAllValuesForStoreName: aStoreName folderName: [Utilities pathOfFolderFromFolderNode: (FolderNode *)item separator: '/'] username: aUsername]; [self _reloadFoldersAndExpandParentsFromNode: [item parent] selectNodeWithPath: [Utilities completePathForFolderNode: [item parent] separator: '/']]; } // // // - (void) _folderDeleteFailed: (NSNotification *) theNotification { NSRunInformationalAlertPanel(_(@"Mailbox error!"), _(@"An error occurred while deleting the %@ mailbox. This mailbox is probably already deleted\nor the server does not support deleting open mailboxes."), _(@"OK"), NULL, NULL, [[theNotification userInfo] objectForKey: @"Name"]); } // // // - (void) _folderRenameCompleted: (NSNotification *) theNotification { NSString *aSourceURL, *aDestinationURL, *aString, *aName, *aNewName; id aWindow, aStore; aStore = [theNotification object]; aName = [[theNotification userInfo] objectForKey: @"Name"]; aNewName = [[theNotification userInfo] objectForKey: @"NewName"]; // We build our right URLs if ( [(id)aStore isKindOfClass: [CWLocalStore class]] ) { aSourceURL = [NSString stringWithFormat: @"local://%@/%@", [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"], aName]; aDestinationURL = [NSString stringWithFormat: @"local://%@/%@", [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"], aNewName]; } else { aSourceURL = [NSString stringWithFormat: @"imap://%@@%@/%@", [(CWIMAPStore *)aStore username], [(CWIMAPStore *)aStore name], aName]; aDestinationURL = [NSString stringWithFormat: @"imap://%@@%@/%@", [(CWIMAPStore *)aStore username], [(CWIMAPStore *)aStore name], aNewName]; } // We update our filters. [[FilterManager singleInstance] updateFiltersFromOldPath: aSourceURL toPath: aDestinationURL]; // We update our "MAILBOXES" for all accounts [self _updateMailboxesFromOldPath: aSourceURL toPath: aDestinationURL]; // // Then, we must verify if we must rename our IMAP cache file. // if ([(id)aStore isKindOfClass: [CWIMAPStore class]]) { NSString *aKey, *aSourcePath, *aDestinationPath; // FIXME - buggy? IMAPStore must be updated to update the pathToCache ivar in IMAPCacheManager // for an open IMAPFolder. aKey = [NSString stringWithFormat: @"%@ @ %@", [(CWIMAPStore *)aStore username], [(CWIMAPStore *)aStore name]]; aSourcePath = [NSString stringWithFormat: @"%@/IMAPCache_%@_%@", GNUMailUserLibraryPath(), [Utilities flattenPathFromString: aKey separator: '/'], [Utilities flattenPathFromString: aName separator: [(id)aStore folderSeparator]] ]; aDestinationPath = [NSString stringWithFormat: @"%@/IMAPCache_%@_%@", GNUMailUserLibraryPath(), [Utilities flattenPathFromString: aKey separator: '/'], [Utilities flattenPathFromString: aNewName separator: [(id)aStore folderSeparator]] ]; [[NSFileManager defaultManager] movePath: aSourcePath toPath: aDestinationPath handler: nil]; } // Success! Let's refresh our MM. The _reloadFoldersAndExpandParentsFromNode:: // method expects to have the store name before the node's path. if ( [(id)aStore isKindOfClass: [CWLocalStore class]] ) { aString = [NSString stringWithFormat: @"/%@/%@", _(@"Local"), aNewName]; } else { aString = [NSString stringWithFormat: @"/%@/%@", [Utilities accountNameForServerName: [(CWIMAPStore *)aStore name] username: [(CWIMAPStore *)aStore username]], aNewName]; } [self _reloadFoldersAndExpandParentsFromNode: [[outlineView itemAtRow: [outlineView selectedRow]] parent] selectNodeWithPath: aString]; // We also refresh our window's title aWindow = [Utilities windowForFolderName: aNewName store: aStore]; if (aWindow) { [[aWindow windowController] updateWindowTitle]; } } // // // - (void) _folderRenameFailed: (NSNotification *) theNotification { NSRunInformationalAlertPanel(_(@"Mailbox error!"), _(@"An error occurred while renaming the %@ mailbox to %@. This mailbox probably already exists\nor you don't have permission to rename it."), _(@"OK"), NULL, NULL, [[theNotification userInfo] objectForKey: @"Name"], [[theNotification userInfo] objectForKey: @"NewName"]); } // // // - (void) _folderSubscribeCompleted: (NSNotification *) theNotification { NSString *aString; id item; int row; #warning FIXME get the right item in case the selection has changed row = [outlineView selectedRow]; if (row < 0) return; item = [outlineView itemAtRow: row]; aString = [NSString stringWithFormat: @"%@/%@", [Utilities completePathForFolderNode: item separator: '/'], [[theNotification userInfo] objectForKey: @"Name"]]; [self _reloadFoldersAndExpandParentsFromNode: item selectNodeWithPath: aString]; } // // // - (void) _folderUnsubscribeCompleted: (NSNotification *) theNotification { NSString *aString; id item; int row; #warning FIXME get the right item in case the selection has changed row = [outlineView selectedRow]; if (row < 0) return; item = [outlineView itemAtRow: row]; aString = [NSString stringWithFormat: @"%@/%@", [Utilities completePathForFolderNode: item separator: '/'], [[theNotification userInfo] objectForKey: @"Name"]]; [self _reloadFoldersAndExpandParentsFromNode: item selectNodeWithPath: aString]; } // // // - (BOOL) _initializeIMAPStoreWithAccountName: (NSString *) theAccountName { NSString *aServerName, *aUsername; NSDictionary *allValues; CWIMAPStore *aStore; NSNumber *portValue; Task *aTask; // We begin by searching in our ACCOUNTS values for the right account. // Now, let's get all the receive values allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: theAccountName] objectForKey: @"RECEIVE"]; portValue = [allValues objectForKey: @"PORT"]; // We use the default IMAP port if it's not defined. if (!portValue) { portValue = [NSNumber numberWithInt: 143]; } // We get our username aUsername = [allValues objectForKey: @"USERNAME"]; // We get our servername aServerName = [allValues objectForKey: @"SERVERNAME"]; // We first verify if we haven't already cached our store. If so, // we simply return since the Store has already been initialized. if ([self storeForName: aServerName username: aUsername]) { return YES; } aStore = [[CWIMAPStore alloc] initWithName: aServerName port: [portValue intValue]]; [aStore addRunLoopMode: NSEventTrackingRunLoopMode]; [aStore addRunLoopMode: NSModalPanelRunLoopMode]; [aStore setUsername: [allValues objectForKey: @"USERNAME"]]; [aStore setDelegate: [TaskManager singleInstance]]; [self setStore: aStore name: aServerName username: aUsername]; aTask = [[Task alloc] init]; aTask->op = CONNECT_ASYNC; [aTask setKey: theAccountName]; aTask->immediate = YES; aTask->service = aStore; [[TaskManager singleInstance] addTask: aTask]; RELEASE(aTask); [aStore connectInBackgroundAndNotify]; if ([[NSUserDefaults standardUserDefaults] integerForKey: @"PreferredViewStyle" default: GNUMailDrawerView] == GNUMailFloatingView && [[self window] isVisible]) { [[self window] makeKeyAndOrderFront: self]; } return YES; } // // // - (void) _nbOfMessages: (unsigned int *) theNbOfMessages nbOfUnreadMessages: (unsigned int *) theNbOfUnreadMessages forItem: (id) theItem { NSString *aString, *aStoreName, *aFolderName, *aUsername; aString = [Utilities completePathForFolderNode: theItem separator: '/']; if ([aString hasPrefix: [NSString stringWithFormat: @"/%@", _(@"Local")]]) { aStoreName = @"GNUMAIL_LOCAL_STORE"; aFolderName = [Utilities pathOfFolderFromFolderNode: (FolderNode *)theItem separator: '/']; aUsername = NSUserName(); } else { [Utilities storeKeyForFolderNode: theItem serverName: &aStoreName username: &aUsername]; aFolderName = [Utilities pathOfFolderFromFolderNode: (FolderNode *)theItem separator: '/']; } [_cache allValuesForStoreName: aStoreName folderName: aFolderName username: aUsername nbOfMessages: theNbOfMessages nbOfUnreadMessages: theNbOfUnreadMessages]; } // // Called when the user presses Tab in the mailbox window // - (void) _switchWindows:(id)sender { [[GNUMail lastMailWindowOnTop] makeKeyAndOrderFront:self]; } // // // - (void) _openLocalFolderWithName: (NSString *) theFolderName sender: (id) theSender { MailWindowController *aMailWindowController; CWLocalStore *localStore; CWLocalFolder *aFolder; BOOL reusingLastMailWindowOnTop, aMask; // We get out local store and our folder. localStore = [self storeForName: @"GNUMAIL_LOCAL_STORE" username: NSUserName()]; aFolder = nil; // We first verify if the folder is still valid. For example, it could have been // deleted (the file) manually while GNUMail was running. if (![[NSFileManager defaultManager] fileExistsAtPath: [[localStore path] stringByAppendingPathComponent: theFolderName]]) { NSRunInformationalAlertPanel(_(@"Mailbox error!"), _(@"The local mailbox %@ does not exist!"), _(@"OK"), NULL, NULL, theFolderName); return; } // We now verify if it's not a directory (a folder holding folders) if (([localStore folderTypeForFolderName: theFolderName] & PantomimeHoldsFolders) == PantomimeHoldsFolders) { #warning remove that code or fix it #if 0 FolderNode *item; int i; item = [outlineView itemAtRow: [outlineView selectedRow]]; aFolder = AUTORELEASE([[CWVirtualFolder alloc] initWithName: theFolderName]); // We add all direct sub-mailboxes for (i = 0; i < [item childCount]; i++) { id o; o = [localStore folderForName: [Utilities pathOfFolderFromFolderNode: [item childAtIndex: i] separator: '/']]; [o parse: NO]; [aFolder addFolder: o]; } #else NSBeep(); return; #endif } // If the folder is already open, we "focus" that window if ([localStore folderForNameIsOpen: theFolderName]) { NSWindow *aWindow; aWindow = (NSWindow *)[Utilities windowForFolderName: theFolderName store: (id)localStore]; if (aWindow) { [aWindow orderFrontRegardless]; return; } } // We must open (or get an open folder) the folder. if (!aFolder) { aFolder = [localStore folderForName: theFolderName]; } if (!aFolder) { NSRunAlertPanel(_(@"Error!"), _(@"Unable to open local mailbox %@."), _(@"OK"), NULL, NULL, theFolderName); return; } #ifdef MACOSX aMask = ([[NSApp currentEvent] modifierFlags] & NSAlternateKeyMask) == NSAlternateKeyMask; #else aMask = ([[NSApp currentEvent] modifierFlags] & NSControlKeyMask) == NSControlKeyMask; #endif // If we reuse our window controller... if ([theSender isKindOfClass: [NSMenuItem class]] || [GNUMail lastMailWindowOnTop] == nil || theSender == [NSApp delegate] || aMask) { aMailWindowController = [[MailWindowController alloc] initWithWindowNibName: @"MailWindow"]; reusingLastMailWindowOnTop = NO; } else { aMailWindowController = [[GNUMail lastMailWindowOnTop] windowController]; reusingLastMailWindowOnTop = YES; // We must NOT assume that we got a MailWindowController if ([aMailWindowController isKindOfClass: [MessageViewWindowController class]]) { aMailWindowController = [(MessageViewWindowController *)aMailWindowController mailWindowController]; } // We close the previous folder. [[aMailWindowController folder] close]; } // We set the new folder [aMailWindowController setFolder: aFolder]; // We don't try to parse a VirtualFolder if ([aFolder isKindOfClass: [CWLocalFolder class]] && ![aFolder cacheManager]) { [aFolder setCacheManager: [[[CWLocalCacheManager alloc] initWithPath: [NSString stringWithFormat: @"%@.%@.cache", [[aFolder path] substringToIndex: ([[aFolder path] length] - [[[aFolder path] lastPathComponent] length])], [[aFolder path] lastPathComponent]] folder: aFolder] autorelease]]; [[aFolder cacheManager] initInRange: NSMakeRange(0, UINT_MAX)]; [aFolder parse: NO]; } // We we are reusing our window controller, we must always reload the table view if (reusingLastMailWindowOnTop && [GNUMail lastMailWindowOnTop]) { [aMailWindowController tableViewShouldReloadData]; } // And we show the window.. [[aMailWindowController window] orderFrontRegardless]; [[aMailWindowController window] makeKeyAndOrderFront: nil]; ADD_CONSOLE_MESSAGE(_(@"Local folder %@ opened."), theFolderName); // We must restore the image here... it's important if we switch from // an IMAP mailbox (over SSL) to a local mailbox (to hide the secure icon) [[ConsoleWindowController singleInstance] restoreImage]; // If the "Local" node was collapsed in our MailboxManager, we now expend it if (![outlineView isItemExpanded: [self storeFolderNodeForName: _(@"Local")]]) { [outlineView expandItem: [self storeFolderNodeForName: _(@"Local")]]; } } // // // - (void) _openIMAPFolderWithName: (NSString *) theFolderName store: (CWIMAPStore *) theStore sender: (id) theSender { MailWindowController *aMailWindowController; CWIMAPCacheManager *anIMAPCacheManager; CWIMAPFolder *aFolder; NSString *aKey; Task *aTask; BOOL reusingLastMailWindowOnTop, aMask; #ifdef MACOSX aMask = ([[NSApp currentEvent] modifierFlags] & NSAlternateKeyMask) == NSAlternateKeyMask; #else aMask = ([[NSApp currentEvent] modifierFlags] & NSControlKeyMask) == NSControlKeyMask; #endif // Using IMAP, we currently only allow the user to have one folder open // at the time on the same CWIMAPStore. if ([[[theStore openFoldersEnumerator] allObjects] count] > 0) { id aWindow; // We search for one open window (so folder) on the IMAP store aWindow = [Utilities windowForFolderName: nil store: (id)theStore]; // If the folder that the window is 'using' is the same as the one we are trying to open, // we simply make this window the key one and order it front. There's no need to try // to reopen that folder! if ( [[[[aWindow windowController] folder] name] isEqualToString: theFolderName] ) { [aWindow makeKeyAndOrderFront: self]; return; } // If we are trying to open a new MailWindow using the menu item or if we are reusing // a MailWindow but the current on top isn't a window 'using' our IMAP store... if ([theSender isKindOfClass: [NSMenuItem class]] || aMask || ([[GNUMail allMailWindows] count] > 1 && [GNUMail lastMailWindowOnTop] != aWindow)) { NSRunInformationalAlertPanel(_(@"Mailbox error!"), _(@"A mailbox (%@) is already open. Please close it first."), _(@"OK"), NULL, NULL, [(CWIMAPFolder *)[[theStore openFoldersEnumerator] nextObject] name]); return; } } // // We verify if we must reuse or not our window controller. The first if () is to // verify if we must NOT reuse it. // if ([theSender isKindOfClass: [NSMenuItem class]] || [GNUMail lastMailWindowOnTop] == nil || theSender == [NSApp delegate] || aMask) { aMailWindowController = [[MailWindowController alloc] initWithWindowNibName: @"MailWindow"]; reusingLastMailWindowOnTop = NO; } else { aMailWindowController = [[GNUMail lastMailWindowOnTop] windowController]; reusingLastMailWindowOnTop = YES; // We must NOT assume that we got a MailWindowController if ([aMailWindowController isKindOfClass: [MessageViewWindowController class]]) { aMailWindowController = [(MessageViewWindowController *)aMailWindowController mailWindowController]; } // We close the previous folder. No need to handle the IMAP timeout // as it's handled in IMAPFolder: -close. [[aMailWindowController folder] close]; } // We send our message to the console saying we are about to open the IMAP folder ADD_CONSOLE_MESSAGE(_(@"Opening IMAP folder %@ on %@..."), theFolderName, [theStore name]); // // We obtain our folder from the IMAP store. // aFolder = (CWIMAPFolder *)[theStore folderForName: theFolderName mode: PantomimeReadWriteMode prefetch: NO]; // We verify if the folder can be open. It could have been a \NoSelect folder. if (!aFolder) { NSRunInformationalAlertPanel(_(@"Mailbox error!"), _(@"You must select a valid mailbox to open!"), _(@"OK"), NULL, NULL, NULL); return; } // // We verify if we haven't got a non-selectable folder. // #warning what happens it we are DnD to this folder? #if 0 if (![aFolder selected]) { [aFolder close]; aFolder = (CWIMAPFolder *)[theStore folderForName: theFolderName mode: PantomimeReadWriteMode prefetch: NO]; } #endif // We get our cache manager for this server / folder aKey = [NSString stringWithFormat: @"%@ @ %@", [theStore username], [theStore name]]; anIMAPCacheManager = [[CWIMAPCacheManager alloc] initWithPath: [NSString stringWithFormat: @"%@/IMAPCache_%@_%@", GNUMailUserLibraryPath(), [Utilities flattenPathFromString: aKey separator: '/'], [Utilities flattenPathFromString: theFolderName separator: [theStore folderSeparator]]] folder: aFolder]; AUTORELEASE(anIMAPCacheManager); // We set the cache manager and we prefetch our messages [aFolder setCacheManager: anIMAPCacheManager]; [[aFolder cacheManager] initInRange: NSMakeRange(0, UINT_MAX)]; // We set the folder [aMailWindowController setFolder: aFolder]; aTask = [[Task alloc] init]; aTask->op = OPEN_ASYNC; [aTask setKey: [Utilities accountNameForFolder: aFolder]]; aTask->immediate = YES; aTask->service = [aFolder store]; [[TaskManager singleInstance] addTask: aTask]; RELEASE(aTask); #if 1 #warning do not clear the view but handle when the user click on a message of a closed folder // We are reusing our window controller, we must always reload the table view if ( reusingLastMailWindowOnTop && [GNUMail lastMailWindowOnTop] ) { [aMailWindowController tableViewShouldReloadData]; } #endif [[aMailWindowController window] orderFrontRegardless]; [[aMailWindowController window] makeKeyAndOrderFront: nil]; ADD_CONSOLE_MESSAGE(_(@"IMAP folder %@ on %@ opened."), theFolderName, [theStore name]); // If the "IMAP" node was collapsed in our MailboxManager, we now expand it if (![outlineView isItemExpanded: [self storeFolderNodeForName: [Utilities accountNameForServerName: [theStore name] username: [theStore username]]]]) { [outlineView expandItem: [self storeFolderNodeForName: [Utilities accountNameForServerName: [theStore name] username: [theStore username]]] ]; } } // // // - (void) _reloadFoldersAndExpandParentsFromNode: (FolderNode *) theNode selectNodeWithPath: (NSString *) thePath { NSString *aString, *aServerName, *aUsername; NSMutableArray *nodesToExpand; id aParent, aRootNode; int i, aRow; aString = [Utilities storeKeyForFolderNode: theNode serverName: &aServerName username: &aUsername]; // We must refresh our outline view by reload its content [self reloadAllFolders]; // We first get our root node if ([thePath hasPrefix: [NSString stringWithFormat: @"/%@", _(@"Local")]]) { aRootNode = localNodes; } else { aRootNode = [self storeFolderNodeForName: [Utilities accountNameForServerName: aServerName username: aUsername]]; } // We get our new node in our tree and also our new row index aParent = [Utilities folderNodeForPath: [thePath stringByDeletingLastPathComponent] using: aRootNode separator: '/']; nodesToExpand = [[NSMutableArray alloc] init]; // We expand all our parent, to make the row visible. while (aParent) { [nodesToExpand addObject: aParent]; aParent = [aParent parent]; } // We must expand our nodes starting from the root to the children and not // the other way around. Otherwise, the NSOutlineView just borks. for (i = ([nodesToExpand count] - 1); i >= 0; i--) { [outlineView expandItem: [nodesToExpand objectAtIndex: i]]; } RELEASE(nodesToExpand); // We now get our new node node (renamed or created). Since it's now shown on the screen, // we can now obtain the row for it and select it. aParent = [Utilities folderNodeForPath: thePath using: aRootNode separator: '/']; aRow = [outlineView rowForItem: aParent]; if (aRow >= 0 && aRow < [outlineView numberOfRows]) { [outlineView selectRow: aRow byExtendingSelection: NO]; [outlineView scrollRowToVisible: aRow]; } } // // // - (NSString *) _stringValueOfURLNameFromItem: (id) theItem store: (CWStore **) theStore { NSMutableString *aMutableString; NSString *aString; aMutableString = [[NSMutableString alloc] init]; // We verify if it's a local folder if ([[Utilities completePathForFolderNode: theItem separator: '/'] hasPrefix: [NSString stringWithFormat: @"/%@", _(@"Local")]]) { [aMutableString appendFormat: @"local://%@", [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]]; *theStore = [self storeForName: @"GNUMAIL_LOCAL_STORE" username: NSUserName()]; } else { NSString *aServerName, *aUsername; [Utilities storeKeyForFolderNode: theItem serverName: &aServerName username: &aUsername]; *theStore = [self storeForName: aServerName username: aUsername]; [aMutableString appendFormat: @"imap://%@@%@", aUsername, aServerName]; } // We get our folder name, respecting the folder separator aString = [Utilities pathOfFolderFromFolderNode: (FolderNode *)theItem separator: [(id)*theStore folderSeparator]]; [aMutableString appendFormat: @"/%@", aString]; return AUTORELEASE(aMutableString); } // // // - (void) _updateMailboxesFromOldPath: (NSString *) theOldPath toPath: (NSString *) thePath { NSMutableDictionary *allAccounts, *theAccount, *allValues; NSEnumerator *theEnumerator; NSString *aKey; allAccounts = [[NSMutableDictionary alloc] initWithDictionary: [[NSUserDefaults standardUserDefaults] dictionaryForKey: @"ACCOUNTS"]]; theEnumerator = [allAccounts keyEnumerator]; while ((aKey = [theEnumerator nextObject])) { theAccount = [[NSMutableDictionary alloc] initWithDictionary: [allAccounts objectForKey: aKey]]; allValues = [[NSMutableDictionary alloc] initWithDictionary: [theAccount objectForKey: @"MAILBOXES"]]; UPDATE_PATH(@"DRAFTSFOLDERNAME", theOldPath, thePath); UPDATE_PATH(@"INBOXFOLDERNAME", theOldPath, thePath); UPDATE_PATH(@"SENTFOLDERNAME", theOldPath, thePath); UPDATE_PATH(@"TRASHFOLDERNAME", theOldPath, thePath); [theAccount setObject: allValues forKey: @"MAILBOXES"]; RELEASE(allValues); [allAccounts setObject: theAccount forKey: aKey]; RELEASE(theAccount); } [[NSUserDefaults standardUserDefaults] setObject: allAccounts forKey: @"ACCOUNTS"]; RELEASE(allAccounts); } // // // - (void) _updateContextMenu { NSMenu *aMenu, *aSubmenu; NSMenuItem *aMenuItem; NSArray *allKeys; int i, j; allKeys = [[Utilities allEnabledAccounts] allKeys]; aMenu = [[[menu itemArray] lastObject] submenu]; for (i = 0; i < 3; i++) { aMenuItem = (NSMenuItem *)[aMenu itemAtIndex: i]; aSubmenu = [[NSMenu alloc] init]; [aSubmenu setAutoenablesItems: NO]; for (j = 0; j < [allKeys count]; j++) { [aSubmenu addItemWithTitle: [allKeys objectAtIndex: j] action: @selector(setMailboxAs:) keyEquivalent: @""]; [[[aSubmenu itemArray] lastObject] setTarget: self]; [[[aSubmenu itemArray] lastObject] setTag: i]; } [aMenuItem setSubmenu: aSubmenu]; RELEASE(aSubmenu); } } @end GNUMail/Framework/GNUMail/MailboxManager.m0100644000014600001460000000555710606371542021042 0ustar monotonemonotone/* ** MailboxManager.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "MailboxManager.h" #include "GNUMail.h" #include "Constants.h" #include "LabelWidget.h" #include "ExtendedOutlineView.h" // // // @implementation MailboxManager - (void) dealloc { RELEASE(mailboxColumn); RELEASE(messagesColumn); RELEASE(outlineView); RELEASE(scrollView); [super dealloc]; } // // // - (void) layoutWindow { mailboxColumn = [[NSTableColumn alloc] initWithIdentifier: @"Mailbox"]; [mailboxColumn setEditable: YES]; [[mailboxColumn headerCell] setStringValue: _(@"Mailbox")]; [mailboxColumn setMinWidth: 125]; messagesColumn = [[NSTableColumn alloc] initWithIdentifier: @"Messages"]; [messagesColumn setEditable: NO]; [[messagesColumn headerCell] setStringValue: _(@"Messages")]; [messagesColumn setMinWidth: 75]; outlineView = [[ExtendedOutlineView alloc] initWithFrame: NSMakeRect (0, 0, 220, 300)]; [outlineView addTableColumn: mailboxColumn]; [outlineView addTableColumn: messagesColumn]; [outlineView setOutlineTableColumn: mailboxColumn]; [outlineView setDrawsGrid: NO]; [outlineView setIndentationPerLevel: 10]; [outlineView setAutoresizesOutlineColumn: YES]; [outlineView setIndentationMarkerFollowsCell: YES]; [outlineView setAllowsColumnSelection: NO]; [outlineView setAllowsColumnReordering: NO]; [outlineView setAllowsEmptySelection: YES]; [outlineView setAllowsMultipleSelection: YES]; [outlineView setAutoresizesAllColumnsToFit: YES]; [outlineView sizeLastColumnToFit]; [outlineView setIndentationPerLevel: 5]; [outlineView setDataSource: [self windowController]]; [outlineView setDelegate: [self windowController]]; scrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect (0, 0, 220, 300)]; [scrollView setDocumentView: outlineView]; [scrollView setHasHorizontalScroller: NO]; [scrollView setHasVerticalScroller: YES]; [scrollView setBorderType: NSBezelBorder]; [scrollView setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; [[self contentView] addSubview: scrollView]; [self setInitialFirstResponder:outlineView]; [self setMinSize: NSMakeSize(220,300)]; } @end GNUMail/Framework/GNUMail/MailboxManagerToolbar.m0100644000014600001460000000634410424672357022366 0ustar monotonemonotone/* ** MailboxManagerToolbar.m ** ** Copyright (c) 2002-2004 ** ** Author: Francis Lachapelle ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "MailboxManagerToolbar.h" #include "Constants.h" #include "ExtendedOutlineView.h" @implementation MailboxManagerController (MailboxManagerToolbar) // // NSToolbar delegate methods // - (NSToolbarItem *) toolbar: (NSToolbar *) toolbar itemForItemIdentifier: (NSString *) itemIdentifier willBeInsertedIntoToolbar: (BOOL) flag { NSToolbarItem *item; item = [[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; if ([itemIdentifier isEqualToString: @"delete"]) { [item setLabel: _(@"Delete")]; [item setPaletteLabel: _(@"Delete Mailbox")]; [item setImage: [NSImage imageNamed: @"delete_32.tiff"]]; [item setTarget: self]; [item setAction: @selector(delete:)]; } else if ([itemIdentifier isEqualToString: @"create"]) { [item setLabel: _(@"Create")]; [item setPaletteLabel: _(@"Create Mailbox")]; [item setImage: [NSImage imageNamed: @"mailbox_add_32.tiff"]]; [item setTarget: self]; [item setAction: @selector(create:)]; } else if ([itemIdentifier isEqualToString: @"rename"]) { [item setLabel: _(@"Rename")]; [item setPaletteLabel: _(@"Rename Mailbox")]; [item setImage: [NSImage imageNamed: @"mailbox_rename_32.tiff"]]; [item setTarget: self]; [item setAction: @selector(rename:)]; } return AUTORELEASE(item); } - (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar *) theToolbar { return [NSArray arrayWithObjects: NSToolbarSeparatorItemIdentifier, NSToolbarSpaceItemIdentifier, NSToolbarFlexibleSpaceItemIdentifier, NSToolbarCustomizeToolbarItemIdentifier, @"delete", @"create", @"rename", nil]; } - (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar *) theToolbar { return [NSArray arrayWithObjects: @"delete", @"create", @"rename", nil]; } // // NSToolbarItemValidation protocol // - (BOOL) validateToolbarItem: (NSToolbarItem *) theItem { int row, level, nb; id item; nb = [outlineView numberOfRows]; row = [outlineView selectedRow]; if (row < 0 || row >= nb) return NO; item = [outlineView itemAtRow: row]; level = [outlineView levelForItem: item]; if ([theItem action] == @selector(delete:) || [theItem action] == @selector(rename:)) { return (row > 0 && level > 0); } else if ([theItem action] == @selector(create:)) { return (row >= 0 && level >= 0); } return YES; } @end GNUMail/Framework/GNUMail/MailHeaderCell.m0100644000014600001460000001217110570772216020740 0ustar monotonemonotone/* ** MailHeaderCell.m ** ** Copyright (c) 2002-2007 ** ** Author: Nicolas Roard ** Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "MailHeaderCell.h" #include "GNUMail.h" #include "Constants.h" #include "MailWindowController.h" #include "NSBezierPath+Extensions.h" #include "NSUserDefaults+Extensions.h" #include // // // @implementation MailHeaderCell - (id) init { self = [super init]; [self setColor: nil]; _width = 0; _allViews = [[NSMutableArray alloc] init]; return self; } // // // - (void) dealloc { RELEASE(_originalAttributedString); RELEASE(_allViews); RELEASE(_color); [super dealloc]; } // // // - (float) height { float h; #ifdef MACOSX h = [[self attributedStringValue] size].height+5; #else h = [[self attributedStringValue] size].height+20; #endif // // We want the MailHeaderCell to be at least as high // as the ThreadArcsCell, which needs a minimum height. // if ([[_controller folder] allContainers]) { if (h < THREAD_ARCS_CELL_MIN_HEIGHT) h = THREAD_ARCS_CELL_MIN_HEIGHT; } return h; } // // // - (float) width { return _width; } // // // - (void) setWidth: (float) theWidth { _width = theWidth; } // // // - (void) setColor: (NSColor *) theColor { if (theColor) { ASSIGN(_color, theColor); } else { RELEASE(_color); _color = [[NSUserDefaults standardUserDefaults] colorForKey: @"MAILHEADERCELL_COLOR"]; if (!_color) { _color = [NSColor colorWithCalibratedWhite: 0.9 alpha: 1.0]; } RETAIN(_color); } } // // // - (NSSize) cellSize { return NSMakeSize(_width, [self height]); } // // other methods // - (void) addView: (id) theView { if (theView) { [_allViews addObject: theView]; } } // // // - (BOOL) containsView: (id) theView { return [_allViews containsObject: theView]; } // // // - (void) resize: (id) sender { NSRect aRect; aRect = [[_controller textView] frame]; //if (!NSEqualSizes(aRect.size, NSMakeSize(width, aRect.size.height))) { if ([[_controller folder] allContainers]) { _width = aRect.size.width-THREAD_ARCS_CELL_WIDTH-10; } else { _width = aRect.size.width; } //[super setAttributedStringValue: [self _fold]]; } } // // // - (void) setAttributedStringValue: (NSAttributedString *) theAttributedString { ASSIGN(_originalAttributedString, theAttributedString); [super setAttributedStringValue: theAttributedString]; } // // No need to retain here. // - (void) setController: (id) theController { _controller = theController; } // // // - (void) drawWithFrame: (NSRect) theFrame inView: (NSView *) theView { NSBezierPath *aRoundRect; NSView *aView; NSSize aSize; float current_x, current_y, delta; int i; if (![theView window]) { return; } // We fill our cell #ifdef MACOSX theFrame.origin.y += 4; #endif theFrame.size.width -= 10; [_color set]; aRoundRect = [NSBezierPath bezierPath]; [aRoundRect appendBezierPathWithRoundedRectangle: theFrame withRadius: 8.0]; [aRoundRect fill]; current_x = theFrame.origin.x + theFrame.size.width; delta = 0; for (i = 0; i < [_allViews count]; i++) { aView = [_allViews objectAtIndex: i]; // If our bundle doesn't provide an image, we draw it's view if (![aView respondsToSelector: @selector(image)]) { if (NSEqualRects([aView frame], NSZeroRect)) { continue; } aSize = [aView frame].size; current_x = current_x - aSize.width - 10; current_y = theFrame.origin.y + aSize.height + (theFrame.size.height - aSize.height)/2; delta += aSize.width; [aView drawRect: NSMakeRect(current_x, current_y, aSize.width, aSize.height)]; } else { NSImage *aImage; aImage = [(id)aView image]; if (!aImage) { continue; } aSize = [aImage size]; current_x = current_x - aSize.width - 10; current_y = theFrame.origin.y + aSize.height + (theFrame.size.height - aSize.height)/2; delta += aSize.width; [aImage compositeToPoint: NSMakePoint(current_x, current_y) operation: NSCompositeSourceAtop]; } } // We adjust our frame and we draw our attributed string theFrame.origin.x += 8; theFrame.size.width -= (16+delta); theFrame.origin.y += 10; theFrame.size.height -= 20; [[self attributedStringValue] drawInRect: theFrame]; } @end GNUMail/Framework/GNUMail/MailWindowController.m0100644000014600001460000024645210606371542022273 0ustar monotonemonotone/* ** MailWindowController.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "MailWindowController.h" #include "AddressBookController.h" #include "ApplicationIconController.h" #include "ConsoleWindowController.h" #include "Constants.h" #include "EditWindowController.h" #include "ExtendedCell.h" #include "ExtendedOutlineView.h" #include "ExtendedTableView.h" #include "ExtendedWindow.h" #include "GNUMail.h" #include "GNUMailBundle.h" #include "LabelWidget.h" #ifndef MACOSX #include "MailWindow.h" #endif #include "Filter.h" #include "FilterManager.h" #include "FolderNode.h" #include "FolderNodePopUpItem.h" #include "ImageTextCell.h" #include "MailboxManagerCache.h" #include "MailboxManagerController.h" #include "MailboxInspectorPanelController.h" #include "MailHeaderCell.h" #include "ThreadArcsCell.h" #include "MessageViewWindowController.h" #include "MimeType.h" #include "MimeTypeManager.h" #include "NSFont+Extensions.h" #include "NSUserDefaults+Extensions.h" #include "Task.h" #include "TaskManager.h" #include "Utilities.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define UPDATE_STATUS_LABEL(format, args...) \ [label setStringValue: [NSString stringWithFormat: format, ##args]]; \ [label setNeedsDisplay: YES]; // // Private interface for MailWindowController // @interface MailWindowController (Private) - (void) _closeAllMessageViewWindows; - (void) _filtersHaveChanged: (NSNotification *) theNotification; - (void) _fontValuesHaveChanged; - (void) _loadAccessoryViews; - (BOOL) _moveMessageToTrash: (CWMessage *) theMessage; - (void) _reloadMessageList: (NSNotification *) theNotification; - (void) _reloadTableColumns: (id) sender; - (void) _restoreSortingOrder; - (void) _restoreSplitViewSize; - (void) _setIndicatorImageForTableColumn: (NSTableColumn *) aTableColumn; - (void) _showMessage: (id) sender; - (void) _zeroIndexOffset; - (BOOL) _isMessageMatching: (NSString *) match index: (int) index; @end // // // @implementation MailWindowController - (id) initWithWindowNibName: (NSString *) windowNibName { NSToolbar *aToolbar; int scrollerSize; _allVisibleMessages = [[NSMutableArray alloc] init]; _noResetSearchField = NO; allowedToolbarItemIdentifiers = [[NSMutableArray alloc] initWithObjects: NSToolbarSeparatorItemIdentifier, NSToolbarSpaceItemIdentifier, NSToolbarFlexibleSpaceItemIdentifier, NSToolbarCustomizeToolbarItemIdentifier, @"delete", @"retrieve", @"mailbox", @"compose", @"reply", @"forward", @"addresses", @"find", @"fastfind", @"navigation", nil]; additionalToolbarItems = [[NSMutableDictionary alloc] init]; #ifdef MACOSX self = [super initWithWindowNibName: windowNibName]; #else { MailWindow *aMailWindow; aMailWindow = [[MailWindow alloc] initWithContentRect: NSMakeRect(150,100,612,595) styleMask: NSClosableWindowMask|NSTitledWindowMask| NSMiniaturizableWindowMask|NSResizableWindowMask backing: NSBackingStoreRetained defer: NO]; self = [super initWithWindow: aMailWindow]; [aMailWindow layoutWindow]; [aMailWindow setDelegate: self]; // We link our outlets tableScrollView = aMailWindow->tableScrollView; textScrollView = aMailWindow->textScrollView; splitView = aMailWindow->splitView; textView = aMailWindow->textView; icon = aMailWindow->icon; label = (NSTextField *)aMailWindow->label; RELEASE(aMailWindow); } #endif // We set our window title [[self window] setTitle: @""]; // We initialize our toolbar aToolbar = [[NSToolbar alloc] initWithIdentifier: @"MailWindowToolbar"]; [aToolbar setDelegate: self]; [aToolbar setAllowsUserCustomization: YES]; [aToolbar setAutosavesConfiguration: YES]; [[self window] setToolbar: aToolbar]; RELEASE(aToolbar); // // We create all table columns // flaggedColumn = [[NSTableColumn alloc] initWithIdentifier: @"Flagged"]; [flaggedColumn setEditable: YES]; [flaggedColumn setResizable: NO]; [[flaggedColumn headerCell] setImage: [NSImage imageNamed: @"flagged-flag.tiff"]]; [flaggedColumn setMinWidth: 17]; [flaggedColumn setMaxWidth: 17]; statusColumn = [[NSTableColumn alloc] initWithIdentifier: @"Status"]; [statusColumn setEditable: NO]; [statusColumn setResizable: YES]; [[statusColumn headerCell] setImage: [NSImage imageNamed: @"recent-flag.tiff"]]; [statusColumn setMinWidth: 17]; [statusColumn setMaxWidth: 17]; idColumn = [[NSTableColumn alloc] initWithIdentifier: @"#"]; [idColumn setEditable: NO]; [idColumn setResizable: YES]; [[idColumn headerCell] setStringValue: @"#"]; [idColumn setMinWidth: 40]; [idColumn setMaxWidth: 40]; dateColumn = [[NSTableColumn alloc] initWithIdentifier: @"Date"]; [dateColumn setEditable: NO]; [dateColumn setResizable: YES]; [[dateColumn headerCell] setStringValue: _(@"Date")]; [dateColumn setMinWidth: 85]; [[dateColumn headerCell] setAlignment: NSLeftTextAlignment]; fromColumn = [[NSTableColumn alloc] initWithIdentifier: @"From"]; [fromColumn setEditable: NO]; [fromColumn setResizable: YES]; [[fromColumn headerCell] setStringValue: _(@"From")]; #ifdef MACOSX [fromColumn setMinWidth: 120]; [fromColumn setWidth: 120]; #else [fromColumn setMinWidth: 155]; #endif [[fromColumn headerCell] setAlignment: NSLeftTextAlignment]; [[fromColumn dataCell] setWraps: NO]; subjectColumn = [[NSTableColumn alloc] initWithIdentifier: @"Subject"]; [subjectColumn setEditable: NO]; [subjectColumn setResizable: YES]; [[subjectColumn headerCell] setStringValue: _(@"Subject")]; [subjectColumn setMinWidth: 195]; #ifdef MACOSX [subjectColumn setWidth: 260]; #endif [subjectColumn setWidth: 195]; [[subjectColumn headerCell] setAlignment: NSLeftTextAlignment]; [[subjectColumn dataCell] setWraps: NO]; sizeColumn = [[NSTableColumn alloc] initWithIdentifier: @"Size"]; [sizeColumn setEditable: NO]; [sizeColumn setResizable: YES]; [[sizeColumn headerCell] setStringValue: _(@"Size")]; [sizeColumn setMinWidth: 50]; [sizeColumn setMaxWidth: 70]; [[sizeColumn headerCell] setAlignment: NSRightTextAlignment]; // We create our mail header cell mailHeaderCell = [[MailHeaderCell alloc] init]; [mailHeaderCell setController: self]; // We create our thread arcs cell threadArcsCell = [[ThreadArcsCell alloc] init]; [threadArcsCell setController: self]; // We set our custom cell [flaggedColumn setDataCell: AUTORELEASE([[ExtendedCell alloc] init])]; [statusColumn setDataCell: AUTORELEASE([[ExtendedCell alloc] init])]; // We set our data view type [self setDataViewType: 0]; // We load our accessory views [self _loadAccessoryViews]; // We restore our split view knob position [self _restoreSplitViewSize]; // We restore our sorting order [self _restoreSortingOrder]; #ifdef MACOSX // We register the window for dragged types. This is required to show // our drawer when we are dragging near the window's borders. [[self window] registerForDraggedTypes: [NSArray arrayWithObject: MessagePboardType]]; #endif // We set our autosave window frame name and restore the one from the user's defaults. [[self window] setFrameAutosaveName: @"MailWindow"]; [[self window] setFrameUsingName: @"MailWindow"]; // We tile our windows if ([GNUMail lastMailWindowOnTop] && [[[GNUMail lastMailWindowOnTop] delegate] isKindOfClass: [self class]]) { NSRect aRect; aRect = [[GNUMail lastMailWindowOnTop] frame]; aRect.origin.x += 15; aRect.origin.y -= 10; [[self window] setFrame: aRect display: NO]; } // Set the sizes for the scroll bars scrollerSize = ([[NSUserDefaults standardUserDefaults] integerForKey: @"SCROLLER_SIZE" default: NSOffState] == NSOffState ? NSRegularControlSize : NSSmallControlSize); [[tableScrollView verticalScroller] setControlSize: scrollerSize]; [[tableScrollView horizontalScroller] setControlSize: scrollerSize]; [[textScrollView verticalScroller] setControlSize: scrollerSize]; [[textScrollView horizontalScroller] setControlSize: scrollerSize]; // Set our textview to non-editable [textView setEditable: NO]; // Set ourselves up as the delegate [textView setDelegate: self]; return self; } // // // - (void) dealloc { NSDebugLog(@"MailWindowController: -dealloc"); [[NSNotificationCenter defaultCenter] removeObserver: mailHeaderCell name: @"NSViewFrameDidChangeNotification" object: textView]; [[NSNotificationCenter defaultCenter] removeObserver: self]; // We relaser our header cell and our array holding all MessageViewWindow:s RELEASE(mailHeaderCell); RELEASE(threadArcsCell); RELEASE(allMessageViewWindowControllers); // We release our NSDrawer's extended outline view if ([[NSUserDefaults standardUserDefaults] integerForKey: @"PreferredViewStyle" default: GNUMailDrawerView] == GNUMailDrawerView) { RELEASE(outlineView); } RELEASE(_allVisibleMessages); // We release our context menu RELEASE(menu); // We cleanup the ivars used for our dataView's data source TEST_RELEASE(_allMessages); // We release our table columns RELEASE(flaggedColumn); RELEASE(statusColumn); RELEASE(idColumn); RELEASE(dateColumn); RELEASE(fromColumn); RELEASE(subjectColumn); RELEASE(sizeColumn); RELEASE(allowedToolbarItemIdentifiers); RELEASE(additionalToolbarItems); RELEASE(searchField); // We finally release our folder and all the FolderNode:s RELEASE(_folder); RELEASE(allNodes); [super dealloc]; } // // action methods // - (IBAction) clickedOnDataView: (id) sender { CWMessage *aMessage; CWFlags *theFlags; int row, column; column = [dataView clickedColumn]; if (column != [[dataView tableColumns] indexOfObject: flaggedColumn]) { return; } row = [dataView clickedRow]; aMessage = [_allVisibleMessages objectAtIndex: row]; theFlags = [[aMessage flags] copy]; if (![theFlags contain: PantomimeFlagged]) { [theFlags add: PantomimeFlagged]; } else { [theFlags remove: PantomimeFlagged]; } [aMessage setFlags: theFlags]; [dataView setNeedsDisplayInRect: [dataView rectOfRow: row]]; RELEASE(theFlags); } // // // - (IBAction) doubleClickedOnDataView: (id) sender { // We ignore a double-click on a table column if ((sender != self) && [dataView clickedRow] < 0) { return; } // If we are in the Draft folder, we re-opened the selected mail for editing if ([Utilities stringValueOfURLName: [Utilities stringValueOfURLNameFromFolder: _folder] isEqualTo: @"DRAFTSFOLDERNAME"]) { [[NSApp delegate] restoreDraft: nil]; } // Or, we just 'reply' to the mail or open it in a separate window. else { if ([[NSUserDefaults standardUserDefaults] integerForKey: @"DOUBLECLICKACTION" default: ACTION_VIEW_MESSAGE] == ACTION_VIEW_MESSAGE) { [self viewMessageInWindow: nil]; [self updateStatusLabel]; } else if ([[NSUserDefaults standardUserDefaults] integerForKey: @"DOUBLECLICKACTION"] == ACTION_REPLY_TO_MESSAGE) { [self replyToMessage: sender]; } } } // // // - (IBAction) deleteMessage: (id) sender { // If we have no element (or no selection), we return! if ([_folder count] == 0 || [dataView numberOfSelectedRows] == 0) { NSBeep(); return; } else { NSArray *selectedRows; CWMessage *theMessage; CWFlags *theFlags; NSNumber *aRow; int i, last_row, first_row; BOOL firstFlagOfList; selectedRows = [[dataView selectedRowEnumerator] allObjects]; _noResetSearchField = YES; firstFlagOfList = NO; first_row = -1; last_row = 0; for (i = 0; i < [selectedRows count]; i++) { aRow = [selectedRows objectAtIndex: i]; if (first_row < 0) { first_row = [aRow intValue]; } theMessage = [_allVisibleMessages objectAtIndex: [aRow intValue]]; // We set the flag Deleted (or not) to the message theFlags = AUTORELEASE([[theMessage flags] copy]); if (i == 0) { // This is the first message of the list we want to {un}delete // We must save the flag. if ([theFlags contain: PantomimeDeleted] && ![sender isKindOfClass: [ExtendedWindow class]]) { [theFlags remove: PantomimeDeleted]; firstFlagOfList = NO; } else { [theFlags add: PantomimeDeleted]; firstFlagOfList = YES; } } else { if (!firstFlagOfList && [theFlags contain: PantomimeDeleted] && ![sender isKindOfClass: [ExtendedWindow class]]) { [theFlags remove: PantomimeDeleted]; } else if (firstFlagOfList && (![theFlags contain: PantomimeDeleted])) { [theFlags add: PantomimeDeleted]; } } last_row = [aRow intValue]; // If we are {un}deleting more than one message, // lets optimize things (mosly for IMAP) if ([selectedRows count] > 1) { [_folder setFlags: theFlags messages: [self selectedMessages]]; last_row = [[selectedRows lastObject] intValue]; i = [selectedRows count]; break; } // // If we are using IMAP and hiding messages marked as "deleted", let's now move them at least // to the Trash folder. // if (![_folder showDeleted]) { if (![self _moveMessageToTrash: theMessage]) return; } // We finally set our new flags [theMessage setFlags: theFlags]; } // We always refresh our dataView after a delete operation _noResetSearchField = YES; [self _reloadMessageList: nil]; // We now select the row right after the message(s) beeing deleted // If we're in reverse order, we select the previous row, otherwise, the next one. if (sender == delete || sender == self || [sender isKindOfClass: [ExtendedWindow class]]) { int count, row_to_select; count = [dataView numberOfRows]; row_to_select = last_row; if (count > 0) { if ([dataView isReverseOrder]) { row_to_select--; if ([_folder showDeleted]) { row_to_select = --first_row; } } else { // If we show the mails marked as DELETE, we jump to the next mail. // Otherwise, we just try to show the same index again. if ([_folder showDeleted]) { row_to_select = ++last_row; } if (i > 1) { row_to_select = (last_row - i); } } // We ensure ourself row_to_select is inbounds. if (row_to_select >= count) { row_to_select = (count - 1); } else if (row_to_select < 0) { row_to_select = 0; } [dataView selectRow: row_to_select byExtendingSelection: NO]; [dataView scrollRowToVisible: row_to_select]; } } // We update the status label [self updateStatusLabel]; } } // // // - (IBAction) nextInThread: (id) sender { if ([_folder allContainers]) { CWContainer *aContainer; CWMessage *aMessage; int row; aMessage = [self selectedMessage]; // If no message is selected... if (!aMessage) { return; } aContainer = [aMessage propertyForKey: @"Container"]; aContainer = [[aContainer childrenEnumerator] nextObject]; // If we have reached the first message... if (!aContainer) { return; } row = [_allVisibleMessages indexOfObject: aContainer->message]; [dataView selectRow: row byExtendingSelection: NO]; [dataView scrollRowToVisible: row]; } } // // This method selects the message after the current // selected message and displays it. // - (IBAction) nextMessage: (id) sender { int row; row = [dataView selectedRow]; if (row == -1 || row >= ([dataView numberOfRows] - 1) ) { NSBeep(); } else { [dataView selectRow: (row+1) byExtendingSelection: NO]; [dataView scrollRowToVisible: (row+1)]; } } // // // - (IBAction) nextUnreadMessage: (id) sender { int count, row, i; row = [dataView selectedRow]; if (row == -1) { NSBeep(); } else { count = [_allVisibleMessages count]; for (i = row; i < count; i++) { if (![[[_allVisibleMessages objectAtIndex: i] flags] contain: PantomimeSeen]) { [dataView selectRow: i byExtendingSelection: NO]; [dataView scrollRowToVisible: i]; return; } } // We haven't found an unread message, simply call -nextMessage [self nextMessage: sender]; } } // // // - (IBAction) firstMessage: (id) sender { if ([dataView numberOfRows] > 0) { [dataView selectRow: 0 byExtendingSelection: NO]; [dataView scrollRowToVisible: 0]; } else { NSBeep(); } } // // // - (IBAction) lastMessage: (id) sender { if ([dataView numberOfRows] > 0) { [dataView selectRow: ([dataView numberOfRows] - 1) byExtendingSelection: NO]; [dataView scrollRowToVisible: ([dataView numberOfRows] - 1)]; } else { NSBeep(); } } // // // - (IBAction) pageDownMessage: (id) sender { NSRect aRect; double origin; aRect = [textScrollView documentVisibleRect]; origin = aRect.origin.y; aRect.origin.y += aRect.size.height - [textScrollView verticalPageScroll]; [textView scrollRectToVisible: aRect]; aRect = [textScrollView documentVisibleRect]; // If we haven't scrolled at all (since the origins are equal), show the next message if (aRect.origin.y == origin) { [self nextMessage: nil]; } } // // // - (IBAction) pageUpMessage: (id) sender { NSRect aRect; double origin; aRect = [textScrollView documentVisibleRect]; origin = aRect.origin.y; aRect.origin.y -= aRect.size.height - [textScrollView verticalPageScroll]; [textView scrollRectToVisible: aRect]; aRect = [textScrollView documentVisibleRect]; // If we haven't scrolled at all (since the origins are equal), show the previous message if (aRect.origin.y == origin) { [self previousMessage: nil]; } } // // // - (IBAction) previousInThread: (id) sender { if ([_folder allContainers]) { CWContainer *aContainer; CWMessage *aMessage; int row; aMessage = [self selectedMessage]; // If no message is selected... if (!aMessage) { return; } aContainer = [aMessage propertyForKey: @"Container"]; aContainer = aContainer->parent; // If we have reached the first message... if (!aContainer) { return; } row = [_allVisibleMessages indexOfObject: aContainer->message]; [dataView selectRow: row byExtendingSelection: NO]; [dataView scrollRowToVisible: row]; } } // // This method selects the message before the current // selected message and displays it. // - (IBAction) previousMessage: (id) sender { int row; row = [dataView selectedRow]; if (row > 0) { [dataView selectRow: (row-1) byExtendingSelection: NO]; [dataView scrollRowToVisible: (row-1)]; } else { NSBeep(); } } // // // - (IBAction) previousUnreadMessage: (id) sender { int row, i; row = [dataView selectedRow]; if (row == -1) { NSBeep(); } else { for (i = row; i >= 0; i--) { if (![[[_allVisibleMessages objectAtIndex: i] flags] contain: PantomimeSeen]) { [dataView selectRow: i byExtendingSelection: NO]; [dataView scrollRowToVisible: i]; return; } } // We haven't found an unread message, simply call -previousMessage [self previousMessage: sender]; } } // // If the sender is the application's delegate, we reply to all // recipients. It's only invoked that way from GNUMail: -replyAllMessage. // - (IBAction) replyToMessage: (id) sender { if ([dataView selectedRow] < 0) { NSBeep(); return; } [Utilities replyToMessage: [self selectedMessage] folder: _folder mode: [sender tag]]; } // // This opens a new window and displays the message in it. // - (IBAction) viewMessageInWindow: (id) sender { MessageViewWindowController *aViewWindowController; CWMessage *aMessage; if ([dataView selectedRow] < 0) { NSBeep(); return; } // We obtain the selected entry in the table for the display informations aMessage = [self selectedMessage]; // We create our window controller aViewWindowController = [[MessageViewWindowController alloc] initWithWindowNibName: @"MessageViewWindow"]; // set our message and folder [aViewWindowController setMessage: aMessage]; [aViewWindowController setFolder: _folder]; [aViewWindowController setMailWindowController: self]; // show the window and the message [aViewWindowController showWindow: self]; [allMessageViewWindowControllers addObject: aViewWindowController]; [Utilities showMessage: aMessage target: [aViewWindowController textView] showAllHeaders: [self showAllHeaders]]; // On MacOS X, if the mail window is not active, double-clicking on an unselected message // causes the message not to draw itself in the new window that pops up. // Let's force it to draw itself. #ifdef MACOSX [[aViewWindowController textView] setNeedsDisplay: YES]; #endif } // // This method returns the folder associated to this MailWindow. // - (CWFolder *) folder { return _folder; } // // This method sets the folder associated to this MailWindow. // // NOTE: This method DOES NOT close the folder. It'll release it // but the folder SHOULD BE CLOSED FIRST. // - (void) setFolder: (CWFolder *) theFolder { ASSIGN(_folder, theFolder); [dataView deselectAll: self]; // We close all MessageViewWindows [self _closeAllMessageViewWindows]; [self updateWindowTitle]; // We now set the window title if (!_folder) { UPDATE_STATUS_LABEL(_(@"No mailbox selected")); [self tableViewShouldReloadData]; return; } UPDATE_STATUS_LABEL(_(@"Opening the mailbox...")); if ([_folder isKindOfClass: [CWVirtualFolder class]]) { [(CWVirtualFolder *)_folder setDelegate: self]; } // We verify if we need to rename our From column to "To" in case we are in the Sent // or Drafts folder. if ([Utilities stringValueOfURLName: [Utilities stringValueOfURLNameFromFolder: _folder] isEqualTo: @"DRAFTSFOLDERNAME"] || [Utilities stringValueOfURLName: [Utilities stringValueOfURLNameFromFolder: _folder] isEqualTo: @"SENTFOLDERNAME"]) { [[fromColumn headerCell] setStringValue: _(@"To")]; draftsOrSentFolder = YES; } else { [[fromColumn headerCell] setStringValue: _(@"From")]; draftsOrSentFolder = NO; } } // // NSTableView delegate/datasource methods // - (int) numberOfRowsInTableView: (NSTableView *)aTableView { return [_allVisibleMessages count]; } // // // - (id) tableView: (NSTableView *) aTableView objectValueForTableColumn: (NSTableColumn *) aTableColumn row: (int) rowIndex { CWMessage *aMessage; aMessage = [_allVisibleMessages objectAtIndex: rowIndex]; if (aTableColumn == idColumn) { return [NSString stringWithFormat: @"%d", [aMessage messageNumber]]; } else if (aTableColumn == dateColumn) { NSCalendarDate *date; date = [aMessage receivedDate]; if (!date) { return nil; } else { NSUserDefaults *aUserDefaults; NSString *aString; int day, today; aUserDefaults = [NSUserDefaults standardUserDefaults]; [date setTimeZone: [NSTimeZone localTimeZone]]; day = [date dayOfCommonEra]; today = [[NSCalendarDate calendarDate] dayOfCommonEra]; if ( day == today ) { aString = [aUserDefaults objectForKey: NSTimeFormatString]; } else if ( day == today-1 ) { aString = [NSString stringWithFormat: @"%@ %@", [[aUserDefaults objectForKey: NSPriorDayDesignations] objectAtIndex: 0], [aUserDefaults objectForKey: NSTimeFormatString]]; } else { aString = [aUserDefaults objectForKey: NSShortDateFormatString]; } if (!aString) { aString = @"%b %d %Y"; } return [date descriptionWithCalendarFormat: aString timeZone: [date timeZone] locale: nil]; } } else if (aTableColumn == fromColumn) { CWInternetAddress *aInternetAddress; NSUserDefaults *aUserDefaults; aUserDefaults = [NSUserDefaults standardUserDefaults]; // If we are in Sent or Drafts, we show the first To recipient if (draftsOrSentFolder) { if ([aMessage recipientsCount] > 0) { aInternetAddress = [[aMessage recipients] objectAtIndex: 0]; } else { return nil; } } else { aInternetAddress = [aMessage from]; } if (!aInternetAddress) { return nil; } else if ([aInternetAddress personal] == nil || [[aInternetAddress personal] length] == 0) { return [aInternetAddress address]; } else { return [aInternetAddress personal]; } } else if (aTableColumn == subjectColumn) { return [aMessage subject]; } else if (aTableColumn == sizeColumn) { return [NSString stringWithFormat: @"%.1fKB ", ((float)[aMessage size]/(float)1024)]; } return nil; } // // // - (void) tableView: (NSTableView *) theTableView willDisplayCell: (id) theCell forTableColumn: (NSTableColumn *) theTableColumn row: (int) rowIndex { CWMessage *aMessage; CWFlags *theFlags; aMessage = [_allVisibleMessages objectAtIndex: rowIndex]; // We get the message's flags theFlags = [aMessage flags]; // We verify for a coloring filter. We also don't draw the background color if // the row is selected in the dataView. if ([dataView selectedRow] != rowIndex) { NSColor *aColor; aColor = [[FilterManager singleInstance] colorForMessage: aMessage]; // We if have a special color coming from our filter, we set it for this cell if (aColor) { [theCell setDrawsBackground: YES]; [theCell setBackgroundColor: aColor]; } else { [theCell setDrawsBackground: NO]; } } else { [theCell setDrawsBackground: NO]; } // If it's a new message, we set the cell's text to bold if ([theFlags contain: PantomimeSeen]) { [theCell setFont: [NSFont seenMessageFont]]; } else { [theCell setFont: [NSFont recentMessageFont]]; } // If it's a deleted message, we set the cell's text to italic if ([theFlags contain: PantomimeDeleted]) { [theCell setTextColor: [NSColor darkGrayColor]]; [theCell setFont: [NSFont deletedMessageFont]]; } else { [theCell setTextColor: [NSColor blackColor]]; } // We set the right aligment for our last (ie., Size) column. if (theTableColumn == sizeColumn) { [theCell setAlignment: NSRightTextAlignment]; } else { [theCell setAlignment: NSLeftTextAlignment]; } // We set the image of our status cell if (theTableColumn == flaggedColumn) { if ([theFlags contain: PantomimeFlagged]) { [(ExtendedCell *)[theTableColumn dataCell] setFlags: PantomimeFlagged|PantomimeSeen]; } else { [(ExtendedCell *)[theTableColumn dataCell] setFlags: PantomimeSeen]; } } else if (theTableColumn == statusColumn) { [(ExtendedCell *)[theTableColumn dataCell] setFlags: (theFlags->flags&(theFlags->flags^PantomimeFlagged))]; } } // // // - (void) tableViewSelectionDidChange: (NSNotification *) aNotification { if ([dataView isReloading]) { return; } showAllHeaders = showRawSource = NO; // If we have more than one selected rows or no selection at all, // we clear up the text view. if ([dataView numberOfSelectedRows] > 1 || [dataView selectedRow] < 0) { [textView setString: @""]; // We redisplay our dataview since "selectAll" doesn't do it for us. [dataView setNeedsDisplay: YES]; } else { NSRect r1, r2; // We zero all our index's offset [self _zeroIndexOffset]; // We show our message! [self _showMessage: self]; // // We now autoscroll intelligently our dataView. // r1 = [dataView rectOfRow: [dataView selectedRow]]; r2 = [dataView convertRect: r1 toView: tableScrollView]; if (r2.origin.y < (2*[dataView rowHeight])) { r1.origin.y -= (2*[tableScrollView verticalPageScroll]); [dataView scrollRectToVisible: r1]; } else if (r2.origin.y > [tableScrollView contentSize].height) { r1.origin.y += (2*[tableScrollView verticalPageScroll]); [dataView scrollRectToVisible: r1]; } } [self updateStatusLabel]; [[MailboxInspectorPanelController singleInstance] setSelectedMessage: [self selectedMessage]]; } // // // - (void) tableView: (NSTableView *) aTableView didClickTableColumn: (NSTableColumn *) aTableColumn { NSString *newOrder; newOrder = [aTableColumn identifier]; if (![newOrder isEqualToString: @"#"] && ![newOrder isEqualToString: @"Date"] && ![newOrder isEqualToString: @"From"] && ![newOrder isEqualToString: @"Subject"] && ![newOrder isEqualToString: @"Size"]) { return; } [aTableView setHighlightedTableColumn: aTableColumn]; [dataView setPreviousSortOrder: [dataView currentSortOrder]]; if ([[dataView currentSortOrder] isEqualToString: newOrder]) { [dataView setReverseOrder: ![dataView isReverseOrder]]; } else { [dataView setCurrentSortOrder: newOrder]; [dataView setReverseOrder: NO]; } [self _setIndicatorImageForTableColumn: aTableColumn]; [[NSUserDefaults standardUserDefaults] setObject: [dataView currentSortOrder] forKey: @"SORTINGORDER"]; [[NSUserDefaults standardUserDefaults] setInteger: [dataView isReverseOrder] forKey: @"SORTINGSTATE"]; _noResetSearchField = YES; [self tableViewShouldReloadData]; } // // // - (void) tableViewShouldReloadData { NSArray *previousArray; SEL sortingSel; previousArray = [[NSArray alloc] initWithArray: _allVisibleMessages]; sortingSel = NULL; if ([dataView currentSortOrder] == nil) { [dataView setPreviousSortOrder: @"#"]; [dataView setCurrentSortOrder: @"#"]; } // // Sort by #. // if ([[dataView currentSortOrder] isEqualToString: @"#"]) { if ([dataView isReverseOrder]) { sortingSel = @selector(reverseCompareAccordingToNumber:); } else { sortingSel = @selector(compareAccordingToNumber:); } } // // Sort by Date. // else if ([[dataView currentSortOrder] isEqualToString: @"Date"]) { if ([dataView isReverseOrder]) { sortingSel = @selector(reverseCompareAccordingToDate:); } else { sortingSel = @selector(compareAccordingToDate:); } } // // Sort by From. // else if ([[dataView currentSortOrder] isEqualToString: @"From"]) { if ([dataView isReverseOrder]) { sortingSel = @selector(reverseCompareAccordingToSender:); } else { sortingSel = @selector(compareAccordingToSender:); } } // // Sort by Subject. // else if ([[dataView currentSortOrder] isEqualToString: @"Subject"]) { if ([dataView isReverseOrder]) { sortingSel = @selector(reverseCompareAccordingToSubject:); } else { sortingSel = @selector(compareAccordingToSubject:); } } // // Sort by Size. // else if ([[dataView currentSortOrder] isEqualToString: @"Size"]) { if ([dataView isReverseOrder]) { sortingSel = @selector(reverseCompareAccordingToSize:); } else { sortingSel = @selector(compareAccordingToSize:); } } RELEASE(_allMessages); _allMessages = RETAIN([[_folder allMessages] sortedArrayUsingSelector: sortingSel]); // // We now select all the messages that were previously selected // in the previous order. // if (previousArray && _folder) { NSMutableArray *sm; NSArray *sc; id aMessage; int i, index, selectedRow, count, newCount; BOOL newSelection; NSRange range; sc = [[dataView selectedRowEnumerator] allObjects]; selectedRow = [dataView selectedRow]; count = [sc count]; newCount = [_allVisibleMessages count]; range = NSMakeRange(0, newCount); newSelection = NO; sm = [[NSMutableArray alloc] initWithCapacity: newCount]; // We get all the previous selected messages (Message objects) for (i = 0; i < count; i++) { [sm addObject: [previousArray objectAtIndex: [[sc objectAtIndex: i] intValue]]]; } [sm sortUsingSelector: sortingSel]; [dataView setReloading: YES]; [dataView deselectAll: self]; [dataView reloadData]; for (i = 0; i < count; i++) { aMessage = [sm objectAtIndex: i]; index = [_allVisibleMessages indexOfObject: aMessage inRange: range]; if (index != NSNotFound) { [dataView selectRow: index byExtendingSelection: YES]; range = NSMakeRange(index+1, newCount-index-1); } else { newSelection = YES; } } RELEASE(sm); if (selectedRow != -1) { aMessage = [previousArray objectAtIndex: selectedRow]; index = [_allVisibleMessages indexOfObject: aMessage]; if (index != NSNotFound) { [dataView selectRow: index byExtendingSelection: YES]; } } [dataView setReloading: NO]; // If the selection has changed over the previous reload if (newSelection) { [self tableViewSelectionDidChange: nil]; } // We scroll back to a selected row if ([dataView selectedRow] != -1) { [dataView scrollRowToVisible: [dataView selectedRow]]; } } TEST_RELEASE(previousArray); [dataView setPreviousSortOrder: [dataView currentSortOrder]]; if (![[searchField stringValue] length]) { _noResetSearchField = NO; } if (!_noResetSearchField) { [self resetSearchField]; } if (_noResetSearchField) { [self doFind: searchField]; _noResetSearchField = NO; } // We verify if we have at least one selected row, in case we don't, we just clear our textView if ([dataView numberOfSelectedRows] != 1) { [textView setString: @""]; } } // // // - (NSMenu *) dataView: (id) aDataView contextMenuForRow: (int) theRow { return menu; } // // // - (void) textView: (NSTextView *) aTextView clickedOnCell: (id ) attachmentCell inRect: (NSRect) cellFrame atIndex: (unsigned) charIndex { [Utilities clickedOnCell: attachmentCell inRect: cellFrame atIndex: charIndex sender: self]; } // // // - (BOOL) textView: (NSTextView *) textView clickedOnLink: (id) link atIndex: (unsigned) charIndex { return [[NSWorkspace sharedWorkspace] openURL: link]; } // // NSTableDataSource Drag and drop // - (BOOL) tableView: (NSTableView *) aTableView writeRows: (NSArray *) rows toPasteboard: (NSPasteboard *) pboard { NSMutableArray *propertyList; int i, count; propertyList = [[NSMutableArray alloc] initWithCapacity: [rows count]]; count = [rows count]; for (i = 0; i < count; i++) { NSMutableDictionary *aDictionary; CWMessage *aMessage; aDictionary = [[NSMutableDictionary alloc] initWithCapacity: 3]; aMessage = [_allVisibleMessages objectAtIndex: [[rows objectAtIndex: i] intValue]]; // // We now set all the properties we must keep in the pasteboard in order // to have all the information we need in order to fully transfer the // message to the target mailbox. Among the properties, we have: // // MessageFlags - The flags of the message // MessageData - Its raw data // MessageNumber - The index of the message in the source folder. We MUST get // this index by using our folder's allMessages ivar since if // we hide deleted messages, the MSN will change. // [aDictionary setObject: [NSArchiver archivedDataWithRootObject: [aMessage flags]] forKey: MessageFlags]; [aDictionary setObject: [NSData dataWithData: [aMessage rawSource]] forKey: MessageData]; [aDictionary setObject: [NSNumber numberWithInt: [_folder->allMessages indexOfObject: aMessage]+1] forKey: MessageNumber]; [propertyList addObject: aDictionary]; RELEASE(aDictionary); } // Set property list of paste board [pboard declareTypes: [NSArray arrayWithObject: MessagePboardType] owner: self]; [pboard setPropertyList: propertyList forType: MessagePboardType]; RELEASE(propertyList); return YES; } // // NSTableDataSource Drag and drop // - (NSDragOperation) tableView: (NSTableView *) aTableView validateDrop: (id ) info proposedRow: (int) row proposedDropOperation: (NSTableViewDropOperation) operation { if ([info draggingSource] == dataView) { // We don't allow drag'n'drop to the same dataView return NSDragOperationNone; } if ([info draggingSourceOperationMask] & NSDragOperationGeneric) { return NSDragOperationGeneric; } else if ([info draggingSourceOperationMask] & NSDragOperationCopy) { return NSDragOperationCopy; } else { return NSDragOperationNone; } } // // NSTableDataSource Drag and drop // - (BOOL) tableView: (NSTableView *) aTableView acceptDrop: (id ) info row: (int) row dropOperation: (NSTableViewDropOperation) operation { NSMutableArray *allMessages; CWFolder *aSourceFolder; NSArray *propertyList; int i, count; if ([info draggingSource] == dataView) { // We don't allow drag'n'drop to the same dataView return NO; } // We retrieve property list of messages from paste board propertyList = [[info draggingPasteboard] propertyListForType: MessagePboardType]; if (!propertyList) { return NO; } aSourceFolder = [(MailWindowController *)[[info draggingSource] delegate] folder]; allMessages = [[NSMutableArray alloc] init]; count = [propertyList count]; for (i = 0; i < count; i++) { [allMessages addObject: [aSourceFolder->allMessages objectAtIndex: [[(NSDictionary *)[propertyList objectAtIndex: i] objectForKey: MessageNumber] intValue]-1]]; } [[MailboxManagerController singleInstance] transferMessages: allMessages fromStore: [aSourceFolder store] fromFolder: aSourceFolder toStore: [_folder store] toFolder: _folder operation: (([info draggingSourceOperationMask]&NSDragOperationGeneric) == NSDragOperationGeneric ? MOVE_MESSAGES : COPY_MESSAGES)]; RELEASE(allMessages); return YES; } // // When the user types in the mailbox window, we move to a message that // matches (in some way) the typing. This is a really wimpy // search that's really easy to use. See 'type-ahead' on google. // // A message matches a string if the string is contained in the 'From' string or the // 'Subject' string. // - (void) tableView: (NSTableView *) theTableView didReceiveTyping: (NSString *) theString { NSString *cellStringVal; NSArray *columns; int row, col, numRows, numCols, initialRow, boundaryRow, rowIncrement; if ( [[theString stringByTrimmingWhiteSpaces] length] == 0 ) { return; } // the columns we'll search columns = [NSArray arrayWithObjects:fromColumn, subjectColumn, nil]; numRows = [self numberOfRowsInTableView: theTableView]; numCols = [columns count]; // figure out which way we're going to iterate through the rows // if the messages are sorted chronologically, go from newest to oldest // otherwise go from top to bottom (of the window) if ([[dataView currentSortOrder] isEqualToString: @"Date"] && ![dataView isReverseOrder]) { initialRow = numRows - 1; boundaryRow = -1; rowIncrement = -1; } else { initialRow = 0; boundaryRow = numRows; rowIncrement = 1; } for (row = initialRow; row != boundaryRow; row = row + rowIncrement) { for (col = 0; col < numCols; col++) { cellStringVal = [self tableView: theTableView objectValueForTableColumn: [columns objectAtIndex: col] row: row]; if ( cellStringVal && ([cellStringVal rangeOfString: theString options: NSCaseInsensitiveSearch].location != NSNotFound) ) { [theTableView selectRow: row byExtendingSelection: NO]; [theTableView scrollRowToVisible: row]; return; } } } } // // MailWindowController delegate methods // - (void) windowWillClose: (NSNotification *) theNotification { NSMutableArray *visibleTableColumns; NSMutableDictionary *columnWidth; NSString *theIdentifier; int i, count; // // We save the table columns order and width. // // Ideally, this should be handled by the NSTableView's autosave feature. // But it seems to be messing with the dynamic addition and removal of columns. // visibleTableColumns = [[NSMutableArray alloc] init]; columnWidth = [[NSMutableDictionary alloc] init]; count = [[dataView tableColumns] count]; for (i = 0; i < count; i++) { theIdentifier = [[[dataView tableColumns] objectAtIndex: i] identifier]; theIdentifier = ([theIdentifier isEqualToString: @"#"] ? (id)@"Number" : (id)theIdentifier); [columnWidth setObject: [NSNumber numberWithFloat: [[[dataView tableColumns] objectAtIndex: i] width]] forKey: theIdentifier]; [visibleTableColumns addObject: theIdentifier]; } [[NSUserDefaults standardUserDefaults] setObject: visibleTableColumns forKey: @"SHOWNTABLECOLUMNS"]; [[NSUserDefaults standardUserDefaults] setObject: columnWidth forKey: @"MailWindowColumnWidth"]; RELEASE(visibleTableColumns); RELEASE(columnWidth); // We save the frames of our split view subviews [[NSUserDefaults standardUserDefaults] setObject: NSStringFromRect([tableScrollView frame]) forKey: @"NSTableView Frame MailWindow"]; [[NSUserDefaults standardUserDefaults] setObject: NSStringFromRect([textScrollView frame]) forKey: @"NSTextView Frame MailWindow"]; // We close all MessageViewWindows. [self _closeAllMessageViewWindows]; // We update our last mail window on top if it was the current selected one // OR if we decided to re-use the MailWindow - we must set it to nil if ( [GNUMail lastMailWindowOnTop] == [self window] || ([[NSUserDefaults standardUserDefaults] objectForKey: @"REUSE_MAILWINDOW"] && [[[NSUserDefaults standardUserDefaults] objectForKey: @"REUSE_MAILWINDOW"] intValue] == NSOnState) ) { [GNUMail setLastMailWindowOnTop: nil]; } // We update our current super view for bundles (we set it to nil) and we // inform our bundles that the viewing view will be removed from the super view count = [[GNUMail allBundles] count]; for (i = 0; i < count; i++) { id aBundle; aBundle = [[GNUMail allBundles] objectAtIndex: i]; if ( [aBundle hasViewingViewAccessory] ) { [aBundle setCurrentSuperview: nil]; if ( [aBundle viewingViewAccessoryType] == ViewingViewTypeHeaderCell ) { [aBundle viewingViewAccessoryWillBeRemovedFromSuperview: mailHeaderCell]; } else { [aBundle viewingViewAccessoryWillBeRemovedFromSuperview: [[self window] contentView]]; } } } #warning FIXME also do that where we close a mailbox (like in MailboxManagerController) if ([[NSUserDefaults standardUserDefaults] integerForKey: @"COMPACT_MAILBOX_ON_CLOSE"]) { // This allows us to automatically purge messages marked as \Deleted when // closing the mailbox. if ([_folder isKindOfClass: [CWIMAPFolder class]]) { [_folder setShowDeleted: NO]; } else { [_folder expunge]; } [self updateStatusLabel]; } // We definitively close our folder. [_folder close]; // We add a message to our Console if ([_folder isKindOfClass: [CWLocalFolder class]]) { ADD_CONSOLE_MESSAGE(_(@"Closed local folder %@."), [_folder name]); } else { ADD_CONSOLE_MESSAGE(_(@"Closed IMAP folder %@ on %@."), [_folder name], [(CWIMAPStore *)[_folder store] name]); } // We clear our 'Save' menu count = [[(GNUMail *)[NSApp delegate] saveMenu] numberOfItems]; while (count > 1) { count--; [[(GNUMail *)[NSApp delegate] saveMenu] removeItemAtIndex: count]; } // We remove our window from our list of opened windows [GNUMail removeMailWindow: [self window]]; if ([[NSUserDefaults standardUserDefaults] integerForKey: @"PreferredViewStyle" default: GNUMailDrawerView] == GNUMailDrawerView) { // We finally unset the mailbox manager's current outline view [[MailboxManagerController singleInstance] setCurrentOutlineView: nil]; [[NSUserDefaults standardUserDefaults] setInteger: [drawer edge] forKey: @"DrawerPosition"]; } else { // If we closed the last MailWindow, we deselect all items in // the Mailboxes window. We only do that under GNUstep. if ([[GNUMail allMailWindows] count] == 0) { [[[MailboxManagerController singleInstance] outlineView] deselectAll: self]; [[[MailboxManagerController singleInstance] outlineView] setNeedsDisplay: YES]; } } AUTORELEASE(self); } // // // - (void) windowDidLoad { NSMenuItem *aMenuItem; NSMenu *aMenu; if ([[NSUserDefaults standardUserDefaults] integerForKey: @"PreferredViewStyle" default: GNUMailDrawerView] == GNUMailDrawerView) { // // We set up our NSDrawer's contentView. // NSTableColumn *mailboxColumn, *messagesColumn; NSScrollView *scrollView; id aCell; NSSize drawerSize; #ifdef GNUSTEP drawer = [[NSDrawer alloc] initWithContentSize: NSMakeSize(300,350) preferredEdge: NSMinXEdge]; [drawer setParentWindow: [self window]]; #endif mailboxColumn = [[NSTableColumn alloc] initWithIdentifier: @"Mailbox"]; [mailboxColumn setEditable: YES]; // FIXME - This is pissing me off on Cocoa. [mailboxColumn setMaxWidth: 150]; [[mailboxColumn headerCell] setStringValue: _(@"Mailbox")]; aCell = [[ImageTextCell alloc] init]; [aCell setWraps: NO]; [mailboxColumn setDataCell: aCell]; AUTORELEASE(aCell); messagesColumn = [[NSTableColumn alloc] initWithIdentifier: @"Messages"]; [messagesColumn setEditable: NO]; // FIXME - This is pissing me off on Cocoa. [messagesColumn setMaxWidth: 100]; [[messagesColumn headerCell] setStringValue: _(@"Messages")]; outlineView = [[ExtendedOutlineView alloc] initWithFrame: NSZeroRect]; [outlineView addTableColumn: mailboxColumn]; [outlineView addTableColumn: messagesColumn]; [outlineView setOutlineTableColumn: mailboxColumn]; [outlineView setDrawsGrid: NO]; [outlineView setIndentationPerLevel: 10]; [outlineView setAutoresizesOutlineColumn: YES]; [outlineView setIndentationMarkerFollowsCell: YES]; [outlineView setAllowsColumnSelection: NO]; [outlineView setAllowsColumnReordering: NO]; [outlineView setAllowsEmptySelection: YES]; [outlineView setAllowsMultipleSelection: YES]; [outlineView setAutoresizesAllColumnsToFit: YES]; [outlineView sizeLastColumnToFit]; #ifdef GNUSTEP [outlineView setIndentationPerLevel: 5]; #endif [outlineView setDataSource: [MailboxManagerController singleInstance]]; [outlineView setDelegate: [MailboxManagerController singleInstance]]; [outlineView setTarget: [MailboxManagerController singleInstance]]; // We register the outline view for dragged types [outlineView registerForDraggedTypes: [NSArray arrayWithObject: MessagePboardType]]; // We set our autosave name for our outline view [outlineView setAutosaveName: @"MailboxManager"]; [outlineView setAutosaveTableColumns: YES]; scrollView = [[NSScrollView alloc] initWithFrame: NSZeroRect]; [scrollView setDocumentView: outlineView]; [scrollView setHasHorizontalScroller: NO]; [scrollView setHasVerticalScroller: YES]; [scrollView setBorderType: NSBezelBorder]; [scrollView setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; [[scrollView verticalScroller] setControlSize: ([[NSUserDefaults standardUserDefaults] integerForKey: @"SCROLLER_SIZE" default: NSOffState] == NSOffState ? NSRegularControlSize : NSSmallControlSize)]; [drawer setContentView: scrollView]; drawerSize = [drawer contentSize]; drawerSize.width = 275; [drawer setContentSize: drawerSize]; RELEASE(scrollView); RELEASE(mailboxColumn); RELEASE(messagesColumn); // // We set up our various toolbar items // [icon setTarget: [NSApp delegate]]; [icon setAction: @selector(showConsoleWindow:)]; [mailboxes setTarget: [NSApp delegate]]; [mailboxes setAction: @selector(showMailboxManager:)]; [addresses setTarget: [NSApp delegate]]; [addresses setAction: @selector(showAddressBook:)]; [find setTarget: [NSApp delegate]]; [find setAction: @selector(showFindWindow:)]; [dataView setDoubleAction: @selector(doubleClickedOnDataView:)]; } // We set up our context menu menu = [[NSMenu alloc] init]; [menu setAutoenablesItems: NO]; aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Add Sender to Address Book") action: @selector(addSenderToAddressBook:) keyEquivalent: @""]; [aMenuItem setTarget: [NSApp delegate]]; [menu addItem: aMenuItem]; RELEASE(aMenuItem); aMenu = [[NSMenu alloc] init]; aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"List-Id") action: @selector(makeFilterFromListId:) keyEquivalent: @""]; [aMenuItem setTarget: [NSApp delegate]]; [aMenu addItem: aMenuItem]; RELEASE(aMenuItem); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Sender") action: @selector(makeFilterFromSender:) keyEquivalent: @""]; [aMenuItem setTarget: [NSApp delegate]]; [aMenu addItem: aMenuItem]; RELEASE(aMenuItem); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Subject") action: @selector(makeFilterFromSubject:) keyEquivalent: @""]; [aMenuItem setTarget: [NSApp delegate]]; [aMenu addItem: aMenuItem]; RELEASE(aMenuItem); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Make Filter from") action: NULL keyEquivalent: @""]; [menu addItem: aMenuItem]; [menu setSubmenu: aMenu forItem: aMenuItem]; RELEASE(aMenuItem); RELEASE(aMenu); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Reply") action: @selector(replyToMessage:) keyEquivalent: @""]; [aMenuItem setTarget: self]; [aMenuItem setTag: PantomimeNormalReplyMode]; [menu addItem: aMenuItem]; RELEASE(aMenuItem); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Reply Simple") action: @selector(replyToMessage:) keyEquivalent: @""]; [aMenuItem setTarget: self]; [aMenuItem setTag: PantomimeSimpleReplyMode]; [menu addItem: aMenuItem]; RELEASE(aMenuItem); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Reply All") action: @selector(replyToMessage:) keyEquivalent: @""]; [aMenuItem setTarget: self]; [aMenuItem setTag: (PantomimeNormalReplyMode|PantomimeReplyAllMode)]; [menu addItem: aMenuItem]; RELEASE(aMenuItem); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Forward") action: @selector(forwardMessage:) keyEquivalent: @""]; [aMenuItem setTag: PantomimeAttachmentForwardMode]; [aMenuItem setTarget: [NSApp delegate]]; [menu addItem: aMenuItem]; RELEASE(aMenuItem); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Redirect") action: @selector(redirectMessage:) keyEquivalent: @""]; [aMenuItem setTarget: [NSApp delegate]]; [menu addItem: aMenuItem]; RELEASE(aMenuItem); // // Now let's add our Copy To / Move To menus and their respective items. // // // FIXME: Update in the future with notifications. // allNodes = RETAIN([Utilities initializeFolderNodesUsingAccounts: [Utilities allEnabledAccounts]]); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Copy To") action: NULL keyEquivalent: @""]; [aMenuItem setTarget: self]; [menu addItem: aMenuItem]; aMenu = [[NSMenu alloc] init]; [Utilities addItemsToMenu: aMenu tag: COPY_MESSAGES action: @selector(copyOrMoveMessages:) folderNodes: allNodes]; [menu setSubmenu: aMenu forItem: aMenuItem]; RELEASE(aMenuItem); RELEASE(aMenu); aMenuItem = [[NSMenuItem alloc] initWithTitle: _(@"Move To") action: NULL keyEquivalent: @""]; [aMenuItem setTarget: self]; [menu addItem: aMenuItem]; aMenu = [[NSMenu alloc] init]; [Utilities addItemsToMenu: aMenu tag: MOVE_MESSAGES action: @selector(copyOrMoveMessages:) folderNodes: allNodes]; [menu setSubmenu: aMenu forItem: aMenuItem]; RELEASE(aMenuItem); RELEASE(aMenu); // // We finally add our observers // [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_filtersHaveChanged:) name: FiltersHaveChanged object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_fontValuesHaveChanged) name: FontValuesHaveChanged object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_showMessage:) name: MessageThreadingNotification object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_reloadMessageList:) name: ReloadMessageList object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_reloadTableColumns:) name: TableColumnsHaveChanged object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_messageChanged:) name: PantomimeMessageChanged object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_messageExpunged:) name: PantomimeMessageExpunged object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_messageStoreCompleted:) name: PantomimeMessageStoreCompleted object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_showMessage:) name: NSSplitViewDidResizeSubviewsNotification object: splitView]; // We initialize some values [self setShowAllHeaders: NO]; [GNUMail setLastMailWindowOnTop: [self window]]; // We add our window from our list of opened windows [GNUMail addMailWindow: [self window]]; if ([[NSUserDefaults standardUserDefaults] integerForKey: @"PreferredViewStyle" default: GNUMailDrawerView] == GNUMailDrawerView) { // We show our MailboxManager window, if we need to. // Under OS X, we MUST do this _after_ showing any MailWindow:s // since we are using a drawer attached to the window. if ([[NSUserDefaults standardUserDefaults] boolForKey: @"OPEN_MAILBOXMANAGER_ON_STARTUP"]) { [[NSApp delegate] showMailboxManager: nil]; } } // We initialize some ivars allMessageViewWindowControllers = [[NSMutableArray alloc] init]; } // // // - (void) windowDidBecomeKey: (NSNotification *) aNotification { int i; // We set the last window on top [GNUMail setLastMailWindowOnTop: [self window]]; // We set the current superview of our bundle having providing // a viewing accessory view. for (i = 0; i < [[GNUMail allBundles] count]; i++) { id aBundle; aBundle = [[GNUMail allBundles] objectAtIndex: i]; if ([aBundle hasViewingViewAccessory]) { [aBundle setCurrentSuperview: [[self window] contentView]]; } } if ([[NSUserDefaults standardUserDefaults] integerForKey: @"PreferredViewStyle" default: GNUMailDrawerView] == GNUMailDrawerView) { // We set the current outline view for our mailbox manager [[MailboxManagerController singleInstance] setCurrentOutlineView: outlineView]; } // We finally select the "current" mailbox in the Mailboxes window / drawer if (_folder) { id aNode; int row; aNode = nil; // FIXME - VirtualFolder will eventually be supported on IMAP mailboxes. if ([_folder isKindOfClass: [CWLocalFolder class]]) { aNode = [[MailboxManagerController singleInstance] storeFolderNodeForName: _(@"Local")]; } else if ([_folder isKindOfClass: [CWIMAPFolder class]]) { // We find the root node aNode = [[MailboxManagerController singleInstance] storeFolderNodeForName: [Utilities accountNameForServerName: [(CWIMAPStore *)[_folder store] name] username: [(CWIMAPStore *)[_folder store] username]]]; } // We find the node we want to select if (aNode) { aNode = [Utilities folderNodeForPath: [_folder name] using: aNode separator: [(id)[_folder store] folderSeparator]]; row = [[[MailboxManagerController singleInstance] outlineView] rowForItem: aNode]; if (row >= 0 && row < [[[MailboxManagerController singleInstance] outlineView] numberOfRows]) { [[[MailboxManagerController singleInstance] outlineView] selectRow: row byExtendingSelection: NO]; } } } [[self window] makeFirstResponder: dataView]; } // // // - (void) windowDidResize: (NSNotification *) theNotification { if (!showRawSource) { [self _showMessage: nil]; } } // // // - (CWMessage *) selectedMessage { int index; index = [dataView selectedRow]; if (index < 0 || index >= [_allVisibleMessages count]) { return nil; } return [_allVisibleMessages objectAtIndex: index]; } // // // - (NSArray *) selectedMessages { if ([dataView numberOfSelectedRows] == 0) { NSBeep(); } else { NSMutableArray *aMutableArray; NSEnumerator *anEnumerator; CWMessage *aMessage; NSNumber *aRow; aMutableArray = [[NSMutableArray alloc] initWithCapacity: [dataView numberOfSelectedRows]]; anEnumerator = [dataView selectedRowEnumerator]; while ((aRow = [anEnumerator nextObject])) { aMessage = [_allVisibleMessages objectAtIndex: [aRow intValue]]; // We guard ourself against broken threads if (aMessage) { [aMutableArray addObject: aMessage]; } } return AUTORELEASE(aMutableArray); } return nil; } // // // - (id) dataView { return dataView; } // // // - (void) setDataViewType: (int) theType { id aDataView; NSRect aRect; aRect = [tableScrollView frame]; // We set the data source / delegate / target of our previous // view to nil - just to be safe. aDataView = [tableScrollView documentView]; if (aDataView) { [aDataView setDataSource: nil]; [aDataView setDelegate: nil]; [aDataView setTarget: nil]; } // // NSTableView // dataView = [[ExtendedTableView alloc] initWithFrame: aRect]; [dataView addTableColumn: flaggedColumn]; [dataView addTableColumn: statusColumn]; [dataView addTableColumn: idColumn]; [dataView addTableColumn: dateColumn]; [dataView addTableColumn: fromColumn]; [dataView addTableColumn: subjectColumn]; [dataView addTableColumn: sizeColumn]; // General methods that apply to both of them [dataView setDrawsGrid: NO]; [dataView setAllowsColumnSelection: NO]; [dataView setAllowsColumnReordering: YES]; [dataView setAllowsColumnResizing: YES]; [dataView setAllowsEmptySelection: YES]; [dataView setAllowsMultipleSelection: YES]; [dataView setIntercellSpacing: NSZeroSize]; [dataView setAutoresizesAllColumnsToFit: YES]; [dataView sizeLastColumnToFit]; [dataView setDataSource: self]; [dataView setDelegate: self]; [dataView setTarget: self]; [(NSTableView *)dataView setAction: @selector(clickedOnDataView:)]; [dataView setDoubleAction: @selector(doubleClickedOnDataView:)]; // We add it to our document view and we can now safely release it // since the scrollview will retain it. [tableScrollView setDocumentView: dataView]; // We register the table view for dragged types [dataView registerForDraggedTypes: [NSArray arrayWithObject: MessagePboardType]]; // We set any vertical mouse motion has being dragging [dataView setVerticalMotionCanBeginDrag: NO]; [dataView setRowHeight: [[NSFont seenMessageFont] defaultLineHeightForFont]]; // We load the right set of columns [self _reloadTableColumns: self]; // We set our table view background color if ( [[NSUserDefaults standardUserDefaults] colorForKey: @"MAILWINDOW_TABLE_COLOR"] ) { [dataView setBackgroundColor: [[NSUserDefaults standardUserDefaults] colorForKey: @"MAILWINDOW_TABLE_COLOR"]]; [tableScrollView setBackgroundColor: [[NSUserDefaults standardUserDefaults] colorForKey: @"MAILWINDOW_TABLE_COLOR"]]; } RELEASE(dataView); } // // // - (NSTextView *) textView { return textView; } // // // - (MailHeaderCell *) mailHeaderCell { return mailHeaderCell; } // // // - (ThreadArcsCell *) threadArcsCell { return threadArcsCell; } // // // - (NSMutableArray *) allMessageViewWindowControllers { return allMessageViewWindowControllers; } // // // - (NSArray *) allMessages { return _allVisibleMessages; } // // // - (BOOL) showAllHeaders { if ([[NSUserDefaults standardUserDefaults] objectForKey: @"SHOWALLHEADERS"]) { return ([[[NSUserDefaults standardUserDefaults] objectForKey: @"SHOWALLHEADERS"] intValue] == NSOnState ? YES : showAllHeaders); } return showAllHeaders; } // // // - (void) setShowAllHeaders: (BOOL) aBOOL { showAllHeaders = aBOOL; } - (BOOL) showRawSource { return showRawSource; } - (void) setShowRawSource: (BOOL) aBool { showRawSource = aBool; } // // // - (IBAction) getNewMessages: (id) sender { [[TaskManager singleInstance] checkForNewMail: sender controller: self]; } // // This method is used to either copy or move selected messages // - (IBAction) copyOrMoveMessages: (id) sender { id aDestinationFolder; NSArray *theMessages; CWURLName *theURLName; theMessages = [self selectedMessages]; if (!theMessages) { return; } theURLName = [[CWURLName alloc] initWithString: [Utilities stringValueOfURLNameFromFolderNode: [sender folderNode] serverName: nil username: nil] path: [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]]; aDestinationFolder = [[MailboxManagerController singleInstance] folderForURLName: theURLName]; [[MailboxManagerController singleInstance] transferMessages: theMessages fromStore: [_folder store] fromFolder: _folder toStore: [aDestinationFolder store] toFolder: aDestinationFolder operation: [sender tag]]; RELEASE(theURLName); } // // // - (IBAction) openOrCloseDrawer: (id) sender { if ([drawer state] == NSDrawerOpenState) { [drawer close]; } else { if ([[NSUserDefaults standardUserDefaults] objectForKey: @"DrawerPosition"]) { [drawer openOnEdge: [[NSUserDefaults standardUserDefaults] integerForKey: @"DrawerPosition"]]; } else { [drawer open]; } } [[NSUserDefaults standardUserDefaults] removeObjectForKey: @"DrawerPosition"]; } // // // - (void) updateDataView { if ([_folder count] > 0) { // We reload the data our of dataView (since it now has some) [self tableViewShouldReloadData]; if ([dataView selectedRow] == -1) { int i, count; count = [dataView numberOfRows]; // We search for the first message without the PantomimeSeen flag and we select it for (i = 0; i < count; i++) { CWMessage *aMessage; aMessage = [_allVisibleMessages objectAtIndex: i]; if (![[aMessage flags] contain: PantomimeSeen]) { break; } } if (i == count) { if ([dataView isReverseOrder]) { i = 0; } else { i--; } } // We scroll to and select our found row [dataView scrollRowToVisible: i]; if (![[NSUserDefaults standardUserDefaults] boolForKey: @"DoNoSelectFirstUnread"]) { [dataView selectRow: i byExtendingSelection: NO]; } } } else { [self tableViewShouldReloadData]; } [[dataView headerView] setNeedsDisplay: YES]; // We always update our status label, if we have or not messages in our folder [self updateStatusLabel]; } // // // - (void) updateStatusLabel { NSString *aStoreName, *aUsername, *aFolderName; NSEnumerator *enumerator; CWMessage *aMessage; CWFlags *theFlags; Task *aTask; id anObject; int totalSize, unreadCount, unreadSize, selectedSize, deletedCount, deletedSize; int i, count, aSize, numberOfSelectedRows; unsigned char aSeparator; if ([_folder isKindOfClass: [CWIMAPFolder class]] && (aTask = [[TaskManager singleInstance] taskForService: [_folder store]]) && aTask->op == OPEN_ASYNC) { return; } totalSize = unreadCount = unreadSize = deletedCount = deletedSize = 0; count = [_folder count]; for (i = 0; i < count; i++) { aMessage = [[_folder allMessages] objectAtIndex: i]; theFlags = [aMessage flags]; aSize = [aMessage size]; totalSize += aSize; if (![theFlags contain: PantomimeSeen]) { unreadCount++; unreadSize += aSize; } if ([theFlags contain: PantomimeDeleted]) { deletedCount++; deletedSize += aSize; } } numberOfSelectedRows = [dataView numberOfSelectedRows]; selectedSize = 0; if (numberOfSelectedRows > 0) { enumerator = [dataView selectedRowEnumerator]; while ((anObject = [enumerator nextObject])) { aMessage = [_allVisibleMessages objectAtIndex: [anObject intValue]]; // We guard ourself against broken message threads if (aMessage) { selectedSize += [aMessage size]; } } } UPDATE_STATUS_LABEL(_(@"%d messages (%dKB) - %d unread (%dKB) - %d selected (%0.1fKB) - %d deleted (%0.1fKB)"), count, (totalSize/1024), unreadCount, (unreadSize/1024), numberOfSelectedRows, ((float)selectedSize/(float)1024), deletedCount, ((float)deletedSize/(float)1024)); [[ApplicationIconController singleInstance] update]; // We update our cache if ([(id)[_folder store] isKindOfClass: [CWLocalStore class]]) { aStoreName = @"GNUMAIL_LOCAL_STORE"; aUsername = NSUserName(); aSeparator = '/'; } else { aStoreName = [(CWIMAPStore *)[_folder store] name]; aUsername = [(CWIMAPStore *)[_folder store] username]; aSeparator = [(CWIMAPStore *)[_folder store] folderSeparator]; } aFolderName = [[_folder name] stringByReplacingOccurrencesOfCharacter: aSeparator withCharacter: '/']; [[(MailboxManagerController *)[MailboxManagerController singleInstance] cache] setAllValuesForStoreName: aStoreName folderName: aFolderName username: aUsername nbOfMessages: count nbOfUnreadMessages: unreadCount]; [[MailboxManagerController singleInstance] updateOutlineViewForFolder: aFolderName store: aStoreName username: aUsername controller: nil]; } // // // - (void) updateWindowTitle { // We now set the window title if (!_folder) { [[self window] setTitle: _(@"No mailbox selected")]; } else if ([_folder isKindOfClass: [CWLocalFolder class]]) { [[self window] setTitle: [NSString stringWithFormat: _(@"Local - %@"), [_folder name]] ]; } else if ([_folder isKindOfClass: [CWIMAPFolder class]]) { [[self window] setTitle: [NSString stringWithFormat: _(@"IMAP on %@ - %@"), [(CWIMAPStore *)[_folder store] name], [_folder name]] ]; } else { [[self window] setTitle: [NSString stringWithFormat: _(@"Virtual Folder - %@"), [_folder name]]]; } } // // // - (IBAction) doFind: (id) sender { CWMessage *old_selected, *msg; BOOL display_current_selected; int sel_index, i; sel_index = [dataView selectedRow]; display_current_selected = NO; old_selected = nil; if (sel_index >= 0 && sel_index < [_allVisibleMessages count]) { old_selected = [_allVisibleMessages objectAtIndex: sel_index]; RETAIN(old_selected); } [dataView deselectAll: self]; [_allVisibleMessages removeAllObjects]; if ([[searchField stringValue] length]) { for (i = 0; i < [_allMessages count]; i++) { if ([self _isMessageMatching: [searchField stringValue] index: i]) { msg = [_allMessages objectAtIndex: i]; if ([old_selected isEqual: msg]) { display_current_selected = YES; sel_index = [_allVisibleMessages count]; } [_allVisibleMessages addObject: msg]; } } } else { [_allVisibleMessages addObjectsFromArray: _allMessages]; if (sel_index >= 0) { for (sel_index = 0; sel_index < [_allVisibleMessages count]; sel_index++) { if ([_allVisibleMessages objectAtIndex: sel_index] == old_selected) break; } display_current_selected = YES; } } RELEASE(old_selected); [dataView reloadData]; if (sel_index >= [_allVisibleMessages count]) { sel_index = [_allVisibleMessages count]-1; } if (sel_index >= 0 && display_current_selected) { [dataView selectRow: sel_index byExtendingSelection: NO]; } } // // // - (void) resetSearchField { [searchField setStringValue: @""]; [self doFind: searchField]; } @end // // Private interface for MailWindowContrller // @implementation MailWindowController (Private) - (void) _closeAllMessageViewWindows { int i; // No need to actually remove the object from the array since that will // already be done in MessageViewWindowController: -windowWillClose. for (i = ([allMessageViewWindowControllers count] - 1); i >= 0; i--) { [[allMessageViewWindowControllers objectAtIndex: i] close]; } } // // // - (void) _filtersHaveChanged: (NSNotification *) theNotification { [dataView setNeedsDisplay: YES]; } // // // - (void) _fontValuesHaveChanged { [dataView setRowHeight: [[NSFont seenMessageFont] defaultLineHeightForFont]]; [self _showMessage: self]; } // // // - (void) _loadAccessoryViews { int i, index; index = 0; for (i = 0; i < [[GNUMail allBundles] count]; i++) { id aBundle; aBundle = [[GNUMail allBundles] objectAtIndex: i]; if ([aBundle hasViewingViewAccessory]) { id aView; aView = [aBundle viewingViewAccessory]; if ([aBundle viewingViewAccessoryType] == ViewingViewTypeHeaderCell) { NSDebugLog(@"Adding ViewingViewTypeHeaderCell type of Bundle..."); [mailHeaderCell addView: aView]; } else { NSToolbarItem *aToolbarItem; NSToolbar *aToolbar; aToolbarItem = [[NSToolbarItem alloc] initWithItemIdentifier: [aBundle name]]; [allowedToolbarItemIdentifiers addObject: [aBundle name]]; [additionalToolbarItems setObject: aToolbarItem forKey: [aBundle name]]; [aToolbarItem setView: aView]; [aToolbarItem setLabel: [aBundle name]]; // name [aToolbarItem setPaletteLabel: [aBundle description]]; // description [aToolbarItem setMinSize: [aView frame].size]; [aToolbarItem setMaxSize: [aView frame].size]; RELEASE(aToolbarItem); aToolbar = [[self window] toolbar]; [aToolbar insertItemWithItemIdentifier: [aBundle name] atIndex: [[aToolbar visibleItems] count]]; } } // We also set the current superview [aBundle setCurrentSuperview: [[self window] contentView]]; } } // // // - (BOOL) _moveMessageToTrash: (CWMessage *) theMessage { NSString *aString; aString = nil; if ([_folder isKindOfClass: [CWIMAPFolder class]]) { aString = [[[[Utilities allEnabledAccounts] objectForKey: [Utilities accountNameForFolder: _folder]] objectForKey: @"MAILBOXES"] objectForKey: @"TRASHFOLDERNAME"]; } else { NSEnumerator *theEnumerator; NSString *s; theEnumerator = [[[MailboxManagerController singleInstance] storeForName: @"GNUMAIL_LOCAL_STORE" username: NSUserName()] folderEnumerator]; while ((aString = [theEnumerator nextObject])) { s = [NSString stringWithFormat: @"local://%@/%@", [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"], aString]; if ([Utilities stringValueOfURLName: s isEqualTo: @"TRASHFOLDERNAME"]) { aString = s; break; } } } if (!aString) { int choice; choice = NSRunAlertPanel(_(@"Warning!"), _(@"You don't have a trash mail folder set up to save copies of deleted mails.\nTo set up the trash mail folder, bring up the contextual menu on the mailbox list\nfor the folder you want to use as a trash mail folder and choose\n\"Set Mailbox as > Trash for Account > ..."), _(@"Delete Anyway"), _(@"Cancel"), NULL); if (choice == NSAlertAlternateReturn) { return NO; } } else if (![Utilities stringValueOfURLName: [Utilities stringValueOfURLNameFromFolder: _folder] isEqualTo: @"TRASHFOLDERNAME"]) { CWURLName *theURLName; id aFolder; theURLName = AUTORELEASE([[CWURLName alloc] initWithString: aString path: [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]]); aFolder = [[MailboxManagerController singleInstance] folderForURLName: theURLName]; [[MailboxManagerController singleInstance] transferMessages: [NSArray arrayWithObject: theMessage] fromStore: [_folder store] fromFolder: _folder toStore: [aFolder store] toFolder: aFolder operation: MOVE_MESSAGES]; } return YES; } // // // #warning update only the relevant row -(void) _messageChanged: (id) sender { [self tableViewShouldReloadData]; [self updateStatusLabel]; } // // // - (void) _messageExpunged: (id) sender { [self tableViewShouldReloadData]; [self updateStatusLabel]; } // // // - (void) _messageStoreCompleted: (NSNotification *) theNotification { NSArray *theMessages; CWMessage *aMessage; int i, count, row; theMessages = [[theNotification userInfo] objectForKey: @"Messages"]; count = [theMessages count]; for (i = 0; i < count; i++) { aMessage = [theMessages objectAtIndex: i]; if ([aMessage folder] != _folder) { return; } row = [_allVisibleMessages indexOfObject: aMessage]; if (row >= 0 && row < [dataView numberOfRows]) { [dataView setNeedsDisplayInRect: [dataView rectOfRow: row]]; } } } // // reload the message list // - (void) _reloadMessageList: (NSNotification *) theNotification { if ([_folder showDeleted]) { NSDebugLog(@"Showing deleted messages..."); [dataView setNeedsDisplay: YES]; } else { NSDebugLog(@"NOT Showing deleted messages..."); [_folder updateCache]; [self tableViewShouldReloadData]; } } // // // - (void) _reloadTableColumns: (id) sender { NSArray *visibleTableColumns, *selectedRows; NSDictionary *columnWidth; int i; visibleTableColumns = [[NSUserDefaults standardUserDefaults] objectForKey: @"SHOWNTABLECOLUMNS"]; // If the value doesn't exist in the user's defaults, we show all table columns. if (!visibleTableColumns) { return; } // We backup our selected rows selectedRows = [[[self dataView] selectedRowEnumerator] allObjects]; RETAIN(selectedRows); [[self dataView] removeTableColumn: flaggedColumn]; [[self dataView] removeTableColumn: statusColumn]; [[self dataView] removeTableColumn: idColumn]; [[self dataView] removeTableColumn: dateColumn]; [[self dataView] removeTableColumn: fromColumn]; [[self dataView] removeTableColumn: subjectColumn]; [[self dataView] removeTableColumn: sizeColumn]; columnWidth = [[NSUserDefaults standardUserDefaults] objectForKey: @"MailWindowColumnWidth"]; for (i = 0; i < [visibleTableColumns count]; i++) { NSString *identifier; id aColumn; identifier = [visibleTableColumns objectAtIndex: i]; aColumn = nil; if ([identifier isEqualToString: @"Flagged"]) { aColumn = flaggedColumn; } else if ([identifier isEqualToString: @"Status"]) { aColumn = statusColumn; } else if ([identifier isEqualToString: @"Number"]) { aColumn = idColumn; } else if ([identifier isEqualToString: @"Date"]) { aColumn = dateColumn; } else if ([identifier isEqualToString: @"From"]) { aColumn = fromColumn; } else if ([identifier isEqualToString: @"Subject"]) { aColumn = subjectColumn; } else if ([identifier isEqualToString: @"Size"]) { aColumn = sizeColumn; } // // We restore the size. // // Ideally, setting column size should be handled by the NSTableView's autosave feature. // But it seems to be messing with the dynamic addition and removal of columns. // if (aColumn) { if (columnWidth && [columnWidth objectForKey: identifier]) { [aColumn setWidth: [(NSNumber *)[columnWidth objectForKey: identifier] floatValue]]; } [[self dataView] addTableColumn: aColumn]; } } // We restore the list of selected rows for (i = 0; i < [selectedRows count]; i++) { [[self dataView] selectRow: [[selectedRows objectAtIndex: i] intValue] byExtendingSelection: YES]; // If we had at least one row selected, we scroll to it if ( i == ([selectedRows count]-1) ) { [[self dataView] scrollRowToVisible: [[selectedRows objectAtIndex: i] intValue]]; } } RELEASE(selectedRows); } // // // - (void) _restoreSortingOrder { // We get our default sorting order if ([[NSUserDefaults standardUserDefaults] objectForKey: @"SORTINGORDER"]) { NSString *aString; aString = [[NSUserDefaults standardUserDefaults] stringForKey: @"SORTINGORDER"]; // FIXME: Eventually remove that if (). It was renamed in 1.1.0pre1. if (aString && [aString isEqualToString: @"Id"]) { aString = @"#"; } [dataView setCurrentSortOrder: aString]; [dataView setReverseOrder: [[NSUserDefaults standardUserDefaults] integerForKey: @"SORTINGSTATE"]]; if ([[dataView currentSortOrder] isEqualToString: @"Date"]) { [[self dataView] setHighlightedTableColumn: dateColumn]; } else if ([[dataView currentSortOrder] isEqualToString: @"From"]) { [[self dataView] setHighlightedTableColumn: fromColumn]; } else if ([[dataView currentSortOrder] isEqualToString: @"Subject"]) { [[self dataView] setHighlightedTableColumn: subjectColumn]; } else if ([[dataView currentSortOrder] isEqualToString: @"Size"]) { [[self dataView] setHighlightedTableColumn: sizeColumn]; } else { [[self dataView] setHighlightedTableColumn: idColumn]; } } else { [[self dataView] setHighlightedTableColumn: idColumn]; } [self _setIndicatorImageForTableColumn: [[self dataView] highlightedTableColumn]]; } // // // - (void) _restoreSplitViewSize { if ([[NSUserDefaults standardUserDefaults] objectForKey: @"NSTableView Frame MailWindow"] && [[NSUserDefaults standardUserDefaults] objectForKey: @"NSTextView Frame MailWindow"]) { [tableScrollView setFrame: NSRectFromString([[NSUserDefaults standardUserDefaults] objectForKey: @"NSTableView Frame MailWindow"])]; [textScrollView setFrame: NSRectFromString([[NSUserDefaults standardUserDefaults] objectForKey: @"NSTextView Frame MailWindow"])]; [splitView adjustSubviews]; [splitView setNeedsDisplay: YES]; } } // // // - (void) _setIndicatorImageForTableColumn: (NSTableColumn *) aTableColumn { NSArray *tableColumns; int i; tableColumns = [dataView tableColumns]; for (i = 0; i < [tableColumns count]; i++) { [dataView setIndicatorImage: nil inTableColumn: [tableColumns objectAtIndex: i]]; } if ([dataView isReverseOrder]) { #ifdef MACOSX [dataView setIndicatorImage: [NSImage imageNamed: @"NSAscendingSortIndicator"] inTableColumn: aTableColumn]; #else [dataView setIndicatorImage: [NSImage imageNamed: @"sort_up.tiff"] inTableColumn: aTableColumn]; #endif } else { #ifdef MACOSX [dataView setIndicatorImage: [NSImage imageNamed: @"NSDescendingSortIndicator"] inTableColumn: aTableColumn]; #else [dataView setIndicatorImage: [NSImage imageNamed: @"sort_down.tiff"] inTableColumn: aTableColumn]; #endif } } // // // - (void) _showMessage: (id) sender { // Don't render the message if user won't be able to see it. // Under GNUstep, the value never gets below 3, that's why // we picked the value 4. if ([textScrollView frame].size.height < 4) { return; } [Utilities showMessage: [self selectedMessage] target: [self textView] showAllHeaders: [self showAllHeaders]]; } // // // - (void) _zeroIndexOffset { int i; for (i = 0; i < [[self allMessageViewWindowControllers] count]; i++) { [[allMessageViewWindowControllers objectAtIndex: i] setIndexOffset: 0]; } } // // // - (BOOL) _isMessageMatching: (NSString *) match index: (int) index { CWInternetAddress *aInternetAddress; NSMutableArray *allAddresses; CWMessage *aMessage; int i; allAddresses = AUTORELEASE([[NSMutableArray alloc] init]); aMessage = [_allMessages objectAtIndex: index]; if (draftsOrSentFolder) { [allAddresses addObjectsFromArray: [aMessage recipients]]; } else { [allAddresses addObject: [aMessage from]]; } for (i = 0; i < [allAddresses count]; i++) { aInternetAddress = [allAddresses objectAtIndex: i]; if ([[aInternetAddress personal] length] && [[aInternetAddress personal] rangeOfString: match options: NSCaseInsensitiveSearch].location != NSNotFound) { return YES; } if ([[aInternetAddress address] length] && [[aInternetAddress address] rangeOfString: match options: NSCaseInsensitiveSearch].location != NSNotFound) { return YES; } } if ([[aMessage subject] length] && [[aMessage subject] rangeOfString: match options: NSCaseInsensitiveSearch].location != NSNotFound) { return YES; } return NO; } @end GNUMail/Framework/GNUMail/MailWindow.m0100644000014600001460000000727510506157373020230 0ustar monotonemonotone/* ** MailWindow.m ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "MailWindow.h" #include "ExtendedTextView.h" #include "Constants.h" #include "LabelWidget.h" // // // @implementation MailWindow - (void) dealloc { RELEASE(label); RELEASE(splitView); RELEASE(tableScrollView); RELEASE(textView); RELEASE(textScrollView); RELEASE(icon); [super dealloc]; } // // // - (void) layoutWindow { NSRect mRect; mRect = NSMakeRect(0,0,562,230); // We first add our 'icon' image icon = [[NSButton alloc] initWithFrame: NSMakeRect(4,578,16,16)]; [icon setImagePosition: NSImageOnly]; [icon setImage: nil]; [icon setBordered: NO]; [icon setTarget: [NSApp delegate]]; [icon setAction: @selector(showConsoleWindow:)]; [icon setAutoresizingMask: NSViewMinYMargin]; [[self contentView] addSubview: icon]; label = [LabelWidget labelWidgetWithFrame: NSMakeRect(24,575,500,20) label: @""]; RETAIN(label); [label setFont: [NSFont systemFontOfSize: 10]]; [label setTextColor: [NSColor darkGrayColor]]; [label setAutoresizingMask: NSViewMinYMargin]; [[self contentView] addSubview: label]; // We create our split view splitView = [[NSSplitView alloc] initWithFrame: NSMakeRect(5,5,602,570)]; [splitView setVertical: NO]; [splitView setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; // // We create our table scroll view and our textview object. // tableScrollView = [[NSScrollView alloc] initWithFrame: mRect]; [tableScrollView setBorderType: NSBezelBorder]; [tableScrollView setHasHorizontalScroller: NO]; [tableScrollView setHasVerticalScroller: YES]; [tableScrollView setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; textScrollView = [[NSScrollView alloc] initWithFrame: mRect]; [textScrollView setBorderType: NSBezelBorder]; [textScrollView setHasHorizontalScroller: NO]; [textScrollView setHasVerticalScroller: YES]; mRect = [[textScrollView contentView] frame]; textView = [[ExtendedTextView alloc] init]; [textView setFrame: mRect]; [textView setTextContainerInset: NSMakeSize(5,5)]; [textView setBackgroundColor: [NSColor textBackgroundColor]]; [textView setRichText: YES]; [textView setUsesFontPanel: YES]; [textView setDelegate: [self windowController]]; [textView setHorizontallyResizable: NO]; [textView setVerticallyResizable: YES]; [textView setMinSize: NSMakeSize (0, 0)]; [textView setMaxSize: NSMakeSize (1E7, 1E7)]; [textView setAutoresizingMask: NSViewHeightSizable|NSViewWidthSizable]; [[textView textContainer] setContainerSize: NSMakeSize (mRect.size.width, 1E7)]; [[textView textContainer] setWidthTracksTextView: YES]; [textView setEditable: NO]; [textView setString: @""]; [textScrollView setDocumentView: textView]; [splitView addSubview: tableScrollView]; [splitView addSubview: textScrollView]; [splitView adjustSubviews]; [[self contentView] addSubview: splitView]; [self setMinSize: NSMakeSize(612,595)]; } @end GNUMail/Framework/GNUMail/MailWindowToolbar.m0100644000014600001460000001656110601706270021541 0ustar monotonemonotone/* ** MailWindowToolbar.m ** ** Copyright (c) 2002-2007 ** ** Author: Francis Lachapelle ** Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "MailWindowToolbar.h" #include "Constants.h" #include "NavigationToolbarItem.h" #include "NSUserDefaults+Extensions.h" #include #include @implementation MailWindowController (MailWindowToolbar) // // NSToolbar delegate methods // - (void) toolbarDidRemoveItem: (NSNotification *) theNotification { if ([[theNotification userInfo] objectForKey: @"item"] == delete) { DESTROY(delete); } else if ([[theNotification userInfo] objectForKey: @"item"] == get) { DESTROY(get); } } // // // - (void) toolbarWillAddItem: (NSNotification *) theNotification { id item; item = [[theNotification userInfo] objectForKey: @"item"]; if ([[item itemIdentifier] isEqualToString: @"delete"]) { delete = (id)item; RETAIN(delete); } else if ([[item itemIdentifier] isEqualToString: @"retrieve"]) { get = (id)item; RETAIN(get); } } // // // - (NSToolbarItem *) toolbar: (NSToolbar *) toolbar itemForItemIdentifier: (NSString *) itemIdentifier willBeInsertedIntoToolbar: (BOOL) flag { id item; if ([itemIdentifier isEqualToString: @"delete"]) { item = [[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; [item setLabel: _(@"Delete")]; [item setPaletteLabel: _(@"Delete Message")]; [item setImage: [NSImage imageNamed: @"delete_32.tiff"]]; [item setTarget: self]; [item setAction: @selector(deleteMessage:)]; delete = (id)item; } else if ([itemIdentifier isEqualToString: @"retrieve"]) { item = [[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; [item setLabel: _(@"Get")]; [item setPaletteLabel: _(@"Get New Messages")]; [item setImage: [NSImage imageNamed: @"retrieve_32.tiff"]]; [item setTarget: self]; [item setAction: @selector(getNewMessages:)]; get = (id)item; } else if ([itemIdentifier isEqualToString: @"mailbox"]) { item = [[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; [item setLabel: _(@"Mailboxes")]; [item setPaletteLabel: _(@"Show Mailboxes")]; [item setImage: [NSImage imageNamed: @"mailboxes_32.tiff"]]; if ([[NSUserDefaults standardUserDefaults] integerForKey: @"PreferredViewStyle" default: GNUMailDrawerView] == GNUMailDrawerView) { [item setTarget: self]; [item setAction: @selector(openOrCloseDrawer:)]; } else { [item setTarget: [NSApp delegate]]; [item setAction: @selector(showMailboxManager:)]; } } else if ([itemIdentifier isEqualToString: @"compose"]) { item = [[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; [item setLabel: _(@"Compose")]; [item setPaletteLabel: _(@"Compose New Message")]; [item setImage: [NSImage imageNamed: @"create_32.tiff"]]; [item setTarget: [NSApp delegate]]; [item setAction: @selector(composeMessage:)]; } else if ([itemIdentifier isEqualToString: @"reply"]) { item = [[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; [item setLabel: _(@"Reply")]; [item setPaletteLabel: _(@"Reply To Message")]; [item setImage: [NSImage imageNamed: @"reply_32.tiff"]]; [item setTarget: self]; [item setTag: PantomimeNormalReplyMode]; [item setAction: @selector(replyToMessage:)]; } else if ([itemIdentifier isEqualToString: @"forward"]) { item = [[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; [item setLabel: _(@"Forward")]; [item setPaletteLabel: _(@"Forward Message")]; [item setImage: [NSImage imageNamed: @"forward_32.tiff"]]; [item setTarget: [NSApp delegate]]; [item setTag: PantomimeInlineForwardMode]; [item setAction: @selector(forwardMessage:)]; } else if ([itemIdentifier isEqualToString: @"addresses"]) { item = [[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; [item setLabel: _(@"Addresses")]; [item setPaletteLabel: _(@"Addresses")]; [item setImage: [NSImage imageNamed: @"addresses_32.tiff"]]; [item setTarget: [NSApp delegate]]; [item setAction: @selector(showAddressBook:)]; } else if ([itemIdentifier isEqualToString: @"find"]) { item = [[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; [item setLabel: _(@"Find")]; [item setPaletteLabel: _(@"Find Messages")]; [item setImage: [NSImage imageNamed: @"find_32.tiff"]]; [item setTarget: [NSApp delegate]]; [item setAction: @selector(showFindWindow:)]; } else if([itemIdentifier isEqualToString: @"fastfind"]) { item = [[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; #ifdef MACOSX searchField = [[NSSearchField alloc] initWithFrame: NSMakeRect(0, 0, 70, 22)]; #else searchField = [[NSSearchField alloc] initWithFrame: NSMakeRect(0, 0, 140, TextFieldHeight)]; #endif [searchField setTarget: self]; [searchField setAction: @selector(doFind:)]; [item setLabel: _(@"Find in header")]; [item setPaletteLabel: _(@"Find in header")]; [item setView: searchField]; [item setMinSize:NSMakeSize(50, NSHeight([searchField frame]))]; [item setMaxSize:NSMakeSize(200, NSHeight([searchField frame]))]; [item setAction: @selector(doFind:)]; } else if ([itemIdentifier isEqualToString: @"navigation"]) { NSRect aRect; item = [[NavigationToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; [item setLabel: @""]; [item setPaletteLabel: _(@"Navigation")]; aRect = [[item view] frame]; [item setMinSize: aRect.size]; [item setMaxSize: aRect.size]; [item setDelegate: self]; } else { // We return the toolbar item from a bundle.. return [additionalToolbarItems objectForKey: itemIdentifier]; } return AUTORELEASE(item); } - (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar*) toolbar { return allowedToolbarItemIdentifiers; } - (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar*) toolbar { return [NSArray arrayWithObjects: @"delete", @"retrieve", @"mailbox", @"compose", @"reply", @"forward", @"addresses", @"find", NSToolbarFlexibleSpaceItemIdentifier, @"fastfind", nil]; } // // NSToolbarItemValidation protocol // - (BOOL) validateToolbarItem: (NSToolbarItem *) theItem { if ([[self folder] mode] == PantomimeReadOnlyMode && [[theItem itemIdentifier] isEqualToString: @"delete"]) { return NO; } return YES; } @end GNUMail/Framework/GNUMail/MessageComposition.m0100644000014600001460000004257210424672357021770 0ustar monotonemonotone/* ** MessageComposition.m ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ujwal S. Sathyam ** ** Description: Scriptable class that works with an EditWindowController ** and a Message. ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "MessageComposition.h" #include "Constants.h" #include "GNUMail.h" #include "EditWindowController.h" #include "ExtendedTextView.h" #include "Utilities.h" #include #include #include NSString *NSOperationNotSupportedForKeyException = @"NSOperationNotSupportedForKeyException"; // // // @implementation MessageComposition - (id) init { self = [super init]; if (self != nil) { _recipients = [[NSMutableArray allocWithZone:[self zone]] init]; _attachments = [[NSMutableArray allocWithZone:[self zone]] init]; } // NSLog(@"Initialized message 0x%x", self); return self; } // // // - (void) dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; [_author release]; [_content release]; [_subject release]; [_recipients release]; [_attachments release]; [_account release]; [super dealloc]; } // // // - (NSArray *) recipientsWithClass: (Class) theClass { NSArray *recipients = [self recipients]; NSMutableArray *result = [NSMutableArray array]; unsigned i, c = [recipients count]; id curRecipient; for (i=0; i ** Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "MessageViewWindowController.h" #include "GNUMail.h" #include "GNUMailBundle.h" #include "Constants.h" #include "ExtendedCell.h" #include "MailHeaderCell.h" #include "MailWindowController.h" #include "MimeType.h" #include "MimeTypeManager.h" #include "ThreadArcsCell.h" #include "Utilities.h" #ifndef MACOSX #include "MessageViewWindow.h" #endif #include #include #include #include #include #include #include #include #include #include // // // @implementation MessageViewWindowController - (id) initWithWindowNibName: (NSString *) theWindowNibName { NSToolbar *aToolbar; #ifdef MACOSX self = [super initWithWindowNibName: theWindowNibName]; #else MessageViewWindow *aMessageViewWindow; aMessageViewWindow = [[MessageViewWindow alloc] initWithContentRect: NSMakeRect(150,100,720,600) styleMask: NSClosableWindowMask|NSTitledWindowMask| NSMiniaturizableWindowMask|NSResizableWindowMask backing: NSBackingStoreRetained defer: NO]; self = [super initWithWindow: aMessageViewWindow]; [aMessageViewWindow layoutWindow]; [aMessageViewWindow setDelegate: self]; textView = aMessageViewWindow->textView; RELEASE(aMessageViewWindow); #endif [[self window] setTitle: @""]; aToolbar = [[NSToolbar alloc] initWithIdentifier: @"MessageViewWindowToolbar"]; [aToolbar setDelegate: self]; [aToolbar setAllowsUserCustomization: YES]; [aToolbar setAutosavesConfiguration: YES]; [[self window] setToolbar: aToolbar]; RELEASE(aToolbar); [[self window] setFrameAutosaveName: @"MessageViewWindow"]; [[self window] setFrameUsingName: @"MessageViewWindow"]; // We tile our windows if ([GNUMail lastMailWindowOnTop] && [[[GNUMail lastMailWindowOnTop] delegate] isKindOfClass: [self class]]) { NSRect aRect; aRect = [[GNUMail lastMailWindowOnTop] frame]; aRect.origin.x += 15; aRect.origin.y -= 10; [[self window] setFrame: aRect display: NO]; } // We create our mail header cell mailHeaderCell = [[MailHeaderCell alloc] init]; [mailHeaderCell setController: self]; // We create our thread arcs cell threadArcsCell = [[ThreadArcsCell alloc] init]; [threadArcsCell setController: self]; // We load our accessory views [self _loadAccessoryViews]; // Set out textview to non-editable [textView setEditable: NO]; // Set ourselves up as the delegate [textView setDelegate: self]; return self; } // // // - (void) dealloc { NSDebugLog(@"MessageViewWindowController: dealloc called for message window: %@", [message subject]); [[NSNotificationCenter defaultCenter] removeObserver: mailHeaderCell name: @"NSViewFrameDidChangeNotification" object: textView]; [[NSNotificationCenter defaultCenter] removeObserver: self]; RELEASE(mailHeaderCell); RELEASE(threadArcsCell); RELEASE(message); [super dealloc]; } // // action methods // - (IBAction) deleteMessage: (id) sender { CWFlags *theFlags; int aRow; theFlags = [[[self message] flags] copy]; [theFlags add: PantomimeDeleted]; [[self message] setFlags: theFlags]; RELEASE(theFlags); aRow = [[mailWindowController allMessages] indexOfObject: [self message]]; [[mailWindowController dataView] setNeedsDisplayInRect: [[mailWindowController dataView] rectOfRow: aRow]]; // FIXME: Review all the code when "hiding" deleted messages. // If we are hiding deleted message, we must reload our table data //if ( ![[self folder] showDeleted] ) // { // [[self folder] updateCache]; // [mailWindowController dataViewShouldReloadData]; // } [self nextMessage: self]; } // // Invoke the message Utility class method to reply to this message. // - (IBAction) replyToMessage: (id) sender { [Utilities replyToMessage: [self message] folder: [self folder] mode: [sender tag]]; } // // // - (IBAction) previousMessage: (id) sender { CWMessage *aMessage; int row; indexOffset--; row = [[mailWindowController dataView] selectedRow] + indexOffset; NSDebugLog(@"row = %d, offset = %d", [[mailWindowController dataView] selectedRow], indexOffset); if (row < 0) { NSBeep(); indexOffset++; return; } aMessage = [[mailWindowController allMessages] objectAtIndex: row]; if (aMessage) { [self setMessage: aMessage]; [Utilities showMessage: [self message] target: [self textView] showAllHeaders: [self showAllHeaders]]; [self windowDidBecomeKey: nil]; } } // // // - (IBAction) nextMessage: (id) sender { CWMessage *aMessage; int row; indexOffset++; row = [[mailWindowController dataView] selectedRow] + indexOffset; NSDebugLog(@"row = %d, offset = %d", [[mailWindowController dataView] selectedRow], indexOffset); if (row == -1 || row > ([[mailWindowController dataView] numberOfRows] - 1)) { // We do NOT beep if sender == self // This happens if we clicked on the Delete button and our current // index in the dataView is the last one. if ( sender != self ) { NSBeep(); } indexOffset--; return; } aMessage = [[mailWindowController allMessages] objectAtIndex: row]; if (aMessage) { [self setMessage: aMessage]; [Utilities showMessage: [self message] target: [self textView] showAllHeaders: [self showAllHeaders]]; [self windowDidBecomeKey: nil]; } } // // // - (IBAction) firstMessage: (id) sender { if ( [[mailWindowController dataView] numberOfRows] > 0 ) { CWMessage *aMessage; aMessage = [[mailWindowController allMessages] objectAtIndex: 0]; if (aMessage) { [self setMessage: aMessage]; [Utilities showMessage: [self message] target: [self textView] showAllHeaders: [self showAllHeaders]]; [self windowDidBecomeKey: nil]; } } else { NSBeep(); } } // // // - (IBAction) lastMessage: (id) sender { int row; row = [[mailWindowController dataView] numberOfRows] - 1; if ( row >= 0 ) { CWMessage *aMessage; aMessage = [[mailWindowController allMessages] objectAtIndex: row]; if (aMessage) { [self setMessage: aMessage]; [Utilities showMessage: [self message] target: [self textView] showAllHeaders: [self showAllHeaders]]; [self windowDidBecomeKey: nil]; } } else { NSBeep(); } } // // // - (IBAction) showOrHideAllHeaders: (id) sender { [(GNUMail *)[NSApp delegate] showAllHeaders: sender]; } // // // - (IBAction) pageDownMessage: (id) sender { NSScrollView *textScrollView; NSRect aRect; double origin; textScrollView = [textView enclosingScrollView]; aRect = [textScrollView documentVisibleRect]; origin = aRect.origin.y; aRect.origin.y += aRect.size.height - [textScrollView verticalPageScroll]; [textView scrollRectToVisible: aRect]; aRect = [textScrollView documentVisibleRect]; if (aRect.origin.y == origin) { [self nextMessage: nil]; } } // // // - (IBAction) pageUpMessage: (id) sender { NSScrollView *textScrollView; NSRect aRect; double origin; textScrollView = [textView enclosingScrollView]; aRect = [textScrollView documentVisibleRect]; origin = aRect.origin.y; aRect.origin.y -= aRect.size.height - [textScrollView verticalPageScroll]; [textView scrollRectToVisible: aRect]; aRect = [textScrollView documentVisibleRect]; if (aRect.origin.y == origin) { [self previousMessage: nil]; } } // // accessor/mutator methods // - (NSTextView *) textView { return textView; } // // // - (CWMessage *) message { return message; } // // This is the same as the above method. It exists just so that it matches the one in // MailWindowController. // - (CWMessage *) selectedMessage { return message; } // // Needed by ThreadArcsCell. // - (NSArray *) allMessages { return [mailWindowController allMessages]; } // // // - (void) setMessage: (CWMessage *) aMessage { if (aMessage) { ASSIGN(message, aMessage); if ([message subject]) { [[self window] setTitle: [message subject]]; } } } // // // - (CWFolder *) folder { return folder; } // // // - (void) setFolder: (CWFolder *) aFolder { folder = aFolder; } // // // - (MailWindowController *) mailWindowController { return mailWindowController; } // // // - (void) setMailWindowController: (MailWindowController *) aMailWindowController { if (aMailWindowController) { mailWindowController = aMailWindowController; } } // // // - (BOOL) showAllHeaders { if ([[NSUserDefaults standardUserDefaults] objectForKey: @"SHOWALLHEADERS"]) { return ([[[NSUserDefaults standardUserDefaults] objectForKey: @"SHOWALLHEADERS"] intValue] == NSOnState ? YES : showAllHeaders); } return showAllHeaders; } // // // - (void) setShowAllHeaders: (BOOL) aBool { showAllHeaders = aBool; } // // // - (BOOL) showRawSource { return showRawSource; } // // // - (void) setShowRawSource: (BOOL) aBool { showRawSource = aBool; } // // // - (MailHeaderCell *) mailHeaderCell { return mailHeaderCell; } // // // - (ThreadArcsCell *) threadArcsCell { return threadArcsCell; } // // // - (int) indexOffset { return indexOffset; } // // // - (void) setIndexOffset: (int) theIndexOffset { indexOffset = theIndexOffset; } // // delegate methods // - (void) windowDidLoad { #ifdef MACOSX [[self window] setFrameAutosaveName: @"MessageViewWindow"]; [[self window] setFrameUsingName: @"MessageViewWindow"]; #endif // We set the last window on top [GNUMail setLastMailWindowOnTop: [self window]]; } // // // - (void) windowDidBecomeKey: (NSNotification *) aNotification { int count; // We clear our 'Save' menu count = [[(GNUMail *)[NSApp delegate] saveMenu] numberOfItems]; while (count > 1) { count--; [[(GNUMail *)[NSApp delegate] saveMenu] removeItemAtIndex: count]; } [GNUMail setLastMailWindowOnTop: [self window]]; } // // // - (void) windowDidResize: (NSNotification *) theNotification { if (!showRawSource) { [Utilities showMessage: [self message] target: [self textView] showAllHeaders: [self showAllHeaders]]; } } // // // - (void) windowWillClose: (NSNotification *) theNotification { // We update our last mail window on top if ([GNUMail lastMailWindowOnTop] == [self window]) { [GNUMail setLastMailWindowOnTop: nil]; } // We remove our window controller from the list of opened window controllers // of the "parent" MailWindowController object. [[[self mailWindowController] allMessageViewWindowControllers] removeObject: self]; AUTORELEASE(self); } // // // - (void) textView: (NSTextView *) aTextView clickedOnCell: (id ) attachmentCell inRect: (NSRect) cellFrame atIndex: (unsigned) charIndex { [Utilities clickedOnCell: attachmentCell inRect: cellFrame atIndex: charIndex sender: self]; } // // // - (BOOL) textView: (NSTextView *) textView clickedOnLink: (id) link atIndex: (unsigned) charIndex { NSDebugLog(@"Opening %@...", [link description]); return [[NSWorkspace sharedWorkspace] openURL: link]; } // // // - (void) updateDataView { [mailWindowController updateDataView]; } // // // - (id) dataView { return [mailWindowController dataView]; } @end // // Private interface // @implementation MessageViewWindowController (Private) - (void) _loadAccessoryViews { int i, index; index = 0; for (i = 0; i < [[GNUMail allBundles] count]; i++) { id aBundle; aBundle = [[GNUMail allBundles] objectAtIndex: i]; if ([aBundle hasViewingViewAccessory]) { id aView; aView = [aBundle viewingViewAccessory]; if ([aBundle viewingViewAccessoryType] == ViewingViewTypeHeaderCell) { NSDebugLog(@"Adding ViewingViewTypeHeaderCell type of Bundle..."); [mailHeaderCell addView: aView]; } } // We also set the current superview [aBundle setCurrentSuperview: [[self window] contentView]]; } } @end GNUMail/Framework/GNUMail/MessageViewWindow.m0100644000014600001460000000450210424672357021556 0ustar monotonemonotone/* ** MessageViewWindow.m ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "MessageViewWindow.h" #include "ExtendedTextView.h" #include "Constants.h" // // // @implementation MessageViewWindow - (void) dealloc { RELEASE(textScrollView); RELEASE(textView); [super dealloc]; } // // // - (void) layoutWindow { NSRect aRect; textScrollView = [[NSScrollView alloc] initWithFrame: NSMakeRect(5,5,710,580)]; [textScrollView setBorderType: NSBezelBorder]; [textScrollView setHasHorizontalScroller: NO]; [textScrollView setHasVerticalScroller: YES]; [textScrollView setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; aRect = [[textScrollView contentView] frame]; textView = [[ExtendedTextView alloc] init]; [textView setFrame: aRect]; [textView setTextContainerInset: NSMakeSize(5,5)]; [textView setBackgroundColor: [NSColor textBackgroundColor]]; [textView setRichText: YES]; [textView setUsesFontPanel: YES]; [textView setDelegate: [self windowController]]; [textView setHorizontallyResizable: NO]; [textView setVerticallyResizable: YES]; [textView setMinSize: NSMakeSize (0, 0)]; [textView setMaxSize: NSMakeSize (1E7, 1E7)]; [textView setAutoresizingMask: NSViewHeightSizable|NSViewWidthSizable]; [[textView textContainer] setContainerSize: NSMakeSize(aRect.size.width, 1E7)]; [[textView textContainer] setWidthTracksTextView: YES]; [textView setEditable: NO]; [textView setString: @""]; [textScrollView setDocumentView: textView]; [[self contentView] addSubview: textScrollView]; [self setMinSize: NSMakeSize(400,450)]; } @end GNUMail/Framework/GNUMail/MessageViewWindowToolbar.m0100644000014600001460000001204710524045777023105 0ustar monotonemonotone/* ** MessageViewWindowToolbar.m ** ** Copyright (c) 2002-2006 ** ** Author: Francis Lachapelle ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "MessageViewWindowToolbar.h" #include "Constants.h" #include "NavigationToolbarItem.h" #include @implementation MessageViewWindowController (MessageViewWindowToolbar) // // NSToolbar delegate methods // - (NSToolbarItem *) toolbar: (NSToolbar *) toolbar itemForItemIdentifier: (NSString *) itemIdentifier willBeInsertedIntoToolbar: (BOOL) flag { id item; item = nil; if ([itemIdentifier isEqualToString: @"delete"]) { item = [[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; [item setLabel: _(@"Delete")]; [item setPaletteLabel: _(@"Delete Message")]; [item setImage: [NSImage imageNamed: @"delete_32.tiff"]]; [item setTarget: self]; [item setAction: @selector(deleteMessage:)]; } else if ([itemIdentifier isEqualToString: @"reply"]) { item = [[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; [item setLabel: _(@"Reply")]; [item setPaletteLabel: _(@"Reply To Message")]; [item setImage: [NSImage imageNamed: @"reply_32.tiff"]]; [item setTarget: self]; [item setTag: PantomimeNormalReplyMode]; [item setAction: @selector(replyToMessage:)]; } else if ([itemIdentifier isEqualToString: @"forward"]) { item = [[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; [item setLabel: _(@"Forward")]; [item setPaletteLabel: _(@"Forward Message")]; [item setImage: [NSImage imageNamed: @"forward_32.tiff"]]; [item setTarget: [NSApp delegate]]; [item setTag: PantomimeInlineForwardMode]; [item setAction: @selector(forwardMessage:)]; } else if ([itemIdentifier isEqualToString: @"show_all_headers"]) { item = [[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; [item setLabel: _(@"Show All Headers")]; [item setPaletteLabel: _(@"Show All Message Headers")]; [item setImage: [NSImage imageNamed: @"show_all_headers_32.tiff"]]; [item setTag: SHOW_ALL_HEADERS]; [item setTarget: self]; [item setAction: @selector(showOrHideAllHeaders:)]; } else if ([itemIdentifier isEqualToString: @"raw"]) { item = [[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; [item setLabel: _(@"Raw Source")]; [item setPaletteLabel: _(@"Show Raw Source")]; [item setImage: [NSImage imageNamed: @"raw_32.tiff"]]; [item setTarget: [NSApp delegate]]; [item setAction: @selector(showRawSource:)]; } #ifdef GNUSTEP else if ([itemIdentifier isEqualToString: @"print"]) { item = [[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; [item setLabel: _(@"Print")]; [item setPaletteLabel: _(@"Print Message")]; [item setImage: [NSImage imageNamed: @"print_32.tiff"]]; [item setTarget: [NSApp delegate]]; [item setAction: @selector(printMessage:)]; } #endif else if ([itemIdentifier isEqualToString: @"navigation"]) { NSRect aRect; item = [[NavigationToolbarItem alloc] initWithItemIdentifier: itemIdentifier]; [item setLabel: @""]; [item setPaletteLabel: _(@"Navigation")]; aRect = [[item view] frame]; [item setMinSize: aRect.size]; [item setMaxSize: aRect.size]; [item setDelegate: self]; } return [item autorelease]; } - (NSArray *) toolbarAllowedItemIdentifiers: (NSToolbar*) toolbar { return [NSArray arrayWithObjects: NSToolbarSeparatorItemIdentifier, NSToolbarSpaceItemIdentifier, NSToolbarFlexibleSpaceItemIdentifier, NSToolbarCustomizeToolbarItemIdentifier, #ifdef MACOSX NSToolbarPrintItemIdentifier, #endif @"delete", @"reply", @"forward", @"show_all_headers", @"raw", #ifdef GNUSTEP @"print", #endif @"navigation", nil]; } - (NSArray *) toolbarDefaultItemIdentifiers: (NSToolbar*) toolbar { return [NSArray arrayWithObjects: @"delete", @"reply", @"forward", @"show_all_headers", @"raw", #ifdef MACOSX NSToolbarPrintItemIdentifier, #else @"print", #endif NSToolbarFlexibleSpaceItemIdentifier, @"navigation", nil]; } // // NSToolbarItemValidation protocol // - (BOOL) validateToolbarItem: (NSToolbarItem *) theItem { return YES; } @end GNUMail/Framework/GNUMail/MimeType.m0100644000014600001460000001037210556071303017670 0ustar monotonemonotone/* ** MimeType.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "MimeType.h" #include "Constants.h" static int currentMimeTypeVersion = 1; @implementation MimeType - (id) init { self = [super init]; [MimeType setVersion: currentMimeTypeVersion]; return self; } // // // - (void) dealloc { RELEASE(mimeType); RELEASE(fileExtensions); RELEASE(description); RELEASE(dataHandlerCommand); RELEASE(icon); [super dealloc]; } // // // - (void) encodeWithCoder: (NSCoder *) theCoder { [MimeType setVersion: currentMimeTypeVersion]; [theCoder encodeObject: [self mimeType] ]; [theCoder encodeObject: [self stringValueOfFileExtensions] ]; [theCoder encodeObject: [self description] ]; [theCoder encodeObject: [NSNumber numberWithInt: [self view]] ]; [theCoder encodeObject: [NSNumber numberWithInt: [self action]] ]; [theCoder encodeObject: [self dataHandlerCommand] ]; [theCoder encodeObject: [self icon] ]; } // // // - (id) initWithCoder: (NSCoder *) theCoder { int version, value; self = [super init]; version = [theCoder versionForClassName: NSStringFromClass([self class])]; NSDebugLog(@"MimeType's Version number = %d", version); [self setMimeType: [theCoder decodeObject] ]; [self setFileExtensions: [theCoder decodeObject] ]; [self setDescription: [theCoder decodeObject] ]; [self setView: [[theCoder decodeObject] intValue] ]; value = [[theCoder decodeObject] intValue]; if ( version == 0 && value == 1 ) { value = 2; } [self setAction: value]; [self setDataHandlerCommand: [theCoder decodeObject] ]; // Read and discard the 'Needs terminal' value. if ( version == 0 ) { [theCoder decodeObject]; } [self setIcon: [theCoder decodeObject] ]; return self; } // // access/mutation methods // - (NSString *) mimeType { return mimeType; } - (void) setMimeType: (NSString *) theMimeType { RETAIN(theMimeType); RELEASE(mimeType); mimeType = theMimeType; } // // // - (NSString *) primaryType { NSRange aRange; aRange = [mimeType rangeOfString: @"/"]; return [mimeType substringToIndex: aRange.location]; } - (void) setPrimaryType: (NSString *) thePrimaryType { } // // // - (NSString *) subType { NSRange aRange; aRange = [mimeType rangeOfString: @"/"]; return [mimeType substringFromIndex: (aRange.location+1)]; } - (void) setSubType: (NSString *) theSubType { } // // // - (NSEnumerator *) fileExtensions { return [[fileExtensions componentsSeparatedByString: @","] objectEnumerator]; } // // // - (NSString *) stringValueOfFileExtensions { return fileExtensions; } // // // - (void) setFileExtensions: (NSString *) theFileExtensions { RETAIN(theFileExtensions); RELEASE(fileExtensions); fileExtensions = theFileExtensions; } - (int) view { return view; } - (void) setView: (int) theView { view = theView; } - (int) action { return action; } - (void) setAction: (int) theAction { action = theAction; } - (NSString *) dataHandlerCommand { return dataHandlerCommand; } - (void) setDataHandlerCommand: (NSString *) theDataHandlerCommand { RETAIN(theDataHandlerCommand); RELEASE(dataHandlerCommand); dataHandlerCommand = theDataHandlerCommand; } - (NSImage *) icon { return icon; } - (void) setIcon: (NSImage *) theIcon { RETAIN(theIcon); RELEASE(icon); icon = theIcon; } - (NSString *) description { return description; } - (void) setDescription: (NSString *) theDescription { RETAIN(theDescription); RELEASE(description); description = theDescription; } @end GNUMail/Framework/GNUMail/MimeTypeManager.m0100644000014600001460000002404610556071303021166 0ustar monotonemonotone/* ** MimeTypeManager.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "MimeTypeManager.h" #include "Constants.h" #include "MimeType.h" #include "Utilities.h" #include static MimeTypeManager *singleInstance = nil; NSString *PathToMimeTypes() { return [NSString stringWithFormat: @"%@/%@", GNUMailUserLibraryPath(), @"Mime-Types"]; } // // // @implementation MimeTypeManager - (id) init { self = [super init]; [self setMimeTypes: [NSArray array]]; return self; } // // // - (void) dealloc { NSDebugLog(@"MimeTypeManager: -dealloc"); TEST_RELEASE(standardMimeTypes); RELEASE(mimeTypes); [super dealloc]; } // // // - (BOOL) synchronize { return [NSArchiver archiveRootObject: self toFile: PathToMimeTypes()]; } // // NSCoding protocol // - (void) encodeWithCoder: (NSCoder *) theCoder { [theCoder encodeObject: [self mimeTypes]]; } // // // - (id) initWithCoder: (NSCoder *) theCoder { self = [super init]; [self setMimeTypes: [theCoder decodeObject]]; return self; } // // access/mutation methods // - (MimeType *) mimeTypeAtIndex: (int) theIndex { return [mimeTypes objectAtIndex: theIndex]; } // // // - (void) addMimeType: (MimeType *) theMimeType { [mimeTypes addObject: theMimeType]; } // // // - (void) removeMimeType: (MimeType *) theMimeType; { [mimeTypes removeObject: theMimeType]; } // // // - (NSArray *) mimeTypes { return mimeTypes; } // // // - (void) setMimeTypes: (NSArray *) theMimeTypes { if ( theMimeTypes ) { NSMutableArray *newMimeTypes; newMimeTypes = [[NSMutableArray alloc] initWithArray: theMimeTypes]; RELEASE(mimeTypes); mimeTypes = newMimeTypes; } else { RELEASE(mimeTypes); mimeTypes = nil; } } // // // - (MimeType *) bestMimeTypeForFileExtension: (NSString *) theFileExtension { MimeType *aMimeType; if (!theFileExtension || [[theFileExtension stringByTrimmingWhiteSpaces] length] == 0) { return nil; } if (!standardMimeTypes ) { standardMimeTypes = [[NSMutableDictionary alloc] init]; } if ([standardMimeTypes count] == 0) { [self _loadStandardMimeTypes]; } // We first search from the MIME types specified by the user // If we haven't found it, we try to guess the best one we could use aMimeType = [self mimeTypeForFileExtension: theFileExtension]; if (!aMimeType) { NSString *aString; aMimeType = [[MimeType alloc] init]; aString = [standardMimeTypes objectForKey: [theFileExtension lowercaseString]]; if (aString) { [aMimeType setMimeType: aString]; } else { [aMimeType setMimeType: @"application/octet-stream"]; } return aMimeType; } return aMimeType; } // // // - (MimeType *) mimeTypeForFileExtension: (NSString *) theFileExtension { NSEnumerator *anEnumerator; MimeType *aMimeType; NSString *aString; int i; if (!theFileExtension || [[theFileExtension stringByTrimmingWhiteSpaces] length] == 0) { return nil; } if (theFileExtension && [theFileExtension length] > 0) { for (i = 0; i < [[self mimeTypes] count]; i++) { aMimeType = [[self mimeTypes] objectAtIndex: i]; anEnumerator = [aMimeType fileExtensions]; while ((aString = [anEnumerator nextObject])) { if ([[aString stringByTrimmingWhiteSpaces] caseInsensitiveCompare: theFileExtension] == NSOrderedSame) { return aMimeType; } } } } return nil; } // // // - (MimeType *) mimeTypeFromString: (NSString *) theString { MimeType *aMimeType; int i; if (theString && [theString length] > 0) { for (i = 0; i < [[self mimeTypes] count]; i++) { aMimeType = [[self mimeTypes] objectAtIndex: i]; if ([[aMimeType mimeType] caseInsensitiveCompare: theString] == NSOrderedSame) { return aMimeType; } } } return nil; } // // // - (NSImage *) bestIconForMimeType: (MimeType *) theMimeType pathExtension: (NSString *) thePathExtension { NSImage *anImage; if ( theMimeType && [theMimeType icon] ) { anImage = [theMimeType icon]; } else { #ifdef MACOSX anImage = [[NSWorkspace sharedWorkspace] iconForFileType: thePathExtension]; #else anImage = [NSImage imageNamed: @"common_Unknown.tiff"]; #endif } return anImage; } // // class methods // + (id) singleInstance { if ( singleInstance == nil ) { NS_DURING singleInstance = [NSUnarchiver unarchiveObjectWithFile: PathToMimeTypes()]; NS_HANDLER NSLog(@"Caught exception while unarchiving the Mime-Types. Ignoring."); singleInstance = nil; NS_ENDHANDLER if ( singleInstance ) { RETAIN(singleInstance); } else { singleInstance = [[MimeTypeManager alloc] init]; [singleInstance synchronize]; } } return singleInstance; } @end // // Private methods // @implementation MimeTypeManager (Private) - (void) _loadStandardMimeTypes { // // We first try to load a set of system-defined MIME types defined in /etc/mime.types. // if ( [[NSFileManager defaultManager] fileExistsAtPath: @"/etc/mime.types"] ) { NSString *contentOfFile; contentOfFile = [NSString stringWithContentsOfFile: @"/etc/mime.types"]; // We got a valid file.. let's process it! if ( contentOfFile ) { NSArray *allLines; int i; allLines = [contentOfFile componentsSeparatedByString: @"\n"]; for (i = 0; i < [allLines count]; i++) { NSString *aMimeType, *aLine; NSRange aRange; aLine = [allLines objectAtIndex: i]; if ([aLine hasPrefix: @"#"]) { continue; } // We get the MIME type aRange = [aLine rangeOfCharacterFromSet: [NSCharacterSet whitespaceCharacterSet]]; // If some file extensions were specified, we process this type. Otherwise, we simply // ignore it. if (aRange.length) { aMimeType = [aLine substringToIndex: aRange.location]; // We get all file extensions. aRange = [aLine rangeOfCharacterFromSet: [[NSCharacterSet whitespaceCharacterSet] invertedSet] options: 0 range: NSMakeRange(aRange.location, [aLine length] - aRange.location)]; if ( aRange.length ) { NSArray *allElements; int j; allElements = [[aLine substringFromIndex: aRange.location] componentsSeparatedByString: @" "]; // We add in our dictionary the -> for (j = 0; j < [allElements count]; j++) { [standardMimeTypes setObject: aMimeType forKey: [[allElements objectAtIndex: j] lowercaseString]]; } } } } } } // // We now set a list of default MIME types // [standardMimeTypes setObject: @"application/mspowerpoint" forKey: @"ppt"]; [standardMimeTypes setObject: @"application/msword" forKey: @"doc"]; [standardMimeTypes setObject: @"application/pdf" forKey: @"pdf"]; [standardMimeTypes setObject: @"application/postscript" forKey: @"ai"]; [standardMimeTypes setObject: @"application/postscript" forKey: @"eps"]; [standardMimeTypes setObject: @"application/postscript" forKey: @"ps"]; [standardMimeTypes setObject: @"application/x-csh" forKey: @"csh"]; [standardMimeTypes setObject: @"application/x-gzip" forKey: @"gz"]; [standardMimeTypes setObject: @"application/x-tar" forKey: @"tar"]; [standardMimeTypes setObject: @"application/zip" forKey: @"zip"]; [standardMimeTypes setObject: @"audio/midi" forKey: @"mid"]; [standardMimeTypes setObject: @"audio/midi" forKey: @"midi"]; [standardMimeTypes setObject: @"audio/mpeg" forKey: @"mp2"]; [standardMimeTypes setObject: @"audio/mpeg" forKey: @"mp3"]; [standardMimeTypes setObject: @"audio/mpeg" forKey: @"mpga"]; [standardMimeTypes setObject: @"audio/x-wav" forKey: @"wav"]; [standardMimeTypes setObject: @"image/gif" forKey: @"gif"]; [standardMimeTypes setObject: @"image/jpeg" forKey: @"jpe"]; [standardMimeTypes setObject: @"image/jpeg" forKey: @"jpeg"]; [standardMimeTypes setObject: @"image/jpeg" forKey: @"jpg"]; [standardMimeTypes setObject: @"image/png" forKey: @"png"]; [standardMimeTypes setObject: @"image/pnm" forKey: @"pnm"]; [standardMimeTypes setObject: @"image/tiff" forKey: @"tif"]; [standardMimeTypes setObject: @"image/tiff" forKey: @"tiff"]; [standardMimeTypes setObject: @"text/html" forKey: @"htm"]; [standardMimeTypes setObject: @"text/html" forKey: @"html"]; [standardMimeTypes setObject: @"text/plain" forKey: @"c"]; [standardMimeTypes setObject: @"text/plain" forKey: @"cc"]; [standardMimeTypes setObject: @"text/plain" forKey: @"h"]; [standardMimeTypes setObject: @"text/plain" forKey: @"m"]; [standardMimeTypes setObject: @"text/plain" forKey: @"txt"]; [standardMimeTypes setObject: @"text/rtf" forKey: @"rtf"]; [standardMimeTypes setObject: @"text/x-patch" forKey: @"patch"]; [standardMimeTypes setObject: @"text/xml" forKey: @"xml"]; [standardMimeTypes setObject: @"video/mpeg" forKey: @"mpe"]; [standardMimeTypes setObject: @"video/mpeg" forKey: @"mpeg"]; [standardMimeTypes setObject: @"video/mpeg" forKey: @"mpg"]; [standardMimeTypes setObject: @"video/quicktime" forKey: @"mov"]; [standardMimeTypes setObject: @"video/quicktime" forKey: @"qt"]; [standardMimeTypes setObject: @"video/x-msvideo" forKey: @"avi"]; } @end GNUMail/Framework/GNUMail/NavigationToolbarItem.m0100644000014600001460000000543410424672357022415 0ustar monotonemonotone/* ** NavigationToolbarItem.m ** ** Copyright (c) 2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "NavigationToolbarItem.h" #include "Constants.h" #include "MailWindowController.h" #include "MessageViewWindowController.h" // // // @interface NavigationView: NSView { @public NSButton *up, *down; } @end @implementation NavigationView - (id) init { self = [super init]; [self setFrame: NSMakeRect(0,0,15,32)]; up = [[NSButton alloc] initWithFrame: NSMakeRect(0,17,15,15)]; [up setImagePosition: NSImageOnly]; [up setBordered: NO]; [up setImage: [NSImage imageNamed: @"up_15.tiff"]]; [self addSubview: up]; RELEASE(up); down = [[NSButton alloc] initWithFrame: NSMakeRect(0,0,15,15)]; [down setImagePosition: NSImageOnly]; [down setBordered: NO]; [down setImage: [NSImage imageNamed: @"down_15.tiff"]]; [self addSubview: down]; RELEASE(down); return self; } @end // // // @implementation NavigationToolbarItem: NSToolbarItem - (id) initWithItemIdentifier: (id) theIdentifier { self = [super initWithItemIdentifier: theIdentifier]; [self setView: AUTORELEASE([[NavigationView alloc] init])]; return self; } - (void) setDelegate: (id) theDelegate { _delegate = theDelegate; [((NavigationView *)[self view])->up setTarget: theDelegate]; [((NavigationView *)[self view])->up setAction: @selector(previousMessage:)]; [((NavigationView *)[self view])->down setTarget: theDelegate]; [((NavigationView *)[self view])->down setAction: @selector(nextMessage:)]; } - (void) validate { id aController; int index; if ([_delegate isKindOfClass: [MessageViewWindowController class]]) { aController = [(MessageViewWindowController *)_delegate mailWindowController]; #warning FIXME fix when MessageViewWindowController gets rewritten index = 1; } else { aController = _delegate; index = [[aController dataView] selectedRow]; } [((NavigationView *)[self view])->up setEnabled: (index > 0)]; [((NavigationView *)[self view])->down setEnabled: (index < ([[aController dataView] numberOfRows]-1))]; } @end GNUMail/Framework/GNUMail/NewMailboxPanelController.m0100644000014600001460000000424710424672357023246 0ustar monotonemonotone/* ** NewMailboxPanelController.m ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "NewMailboxPanelController.h" #include "Constants.h" #ifndef MACOSX #include "NewMailboxPanel.h" #endif #include "Utilities.h" // // // @implementation NewMailboxPanelController - (id) initWithWindowNibName: (NSString *) windowNibName { #ifdef MACOSX self = [super initWithWindowNibName: windowNibName]; #else NewMailboxPanel *aNewMailboxPanel; aNewMailboxPanel = [[NewMailboxPanel alloc] initWithContentRect: NSMakeRect(200,200,345,150) styleMask: NSTitledWindowMask|NSMiniaturizableWindowMask backing: NSBackingStoreBuffered defer: YES]; self = [super initWithWindow: aNewMailboxPanel]; [aNewMailboxPanel layoutPanel]; [aNewMailboxPanel setDelegate: self]; // We link our outlets mailboxNameField = aNewMailboxPanel->mailboxNameField; RELEASE(aNewMailboxPanel); #endif // We set our window title [[self window] setTitle: _(@"New Mailbox")]; return self; } // // action methods // - (IBAction) okClicked: (id) sender { [NSApp stopModal]; [self close]; } // // // - (IBAction) cancelClicked: (id) sender { [NSApp stopModalWithCode: NSRunAbortedResponse]; [self close]; } // // delegate methods // - (void) windowWillClose: (NSNotification *) theNotification { // We do nothing } // // access methods // - (NSTextField *) mailboxNameField { return mailboxNameField; } @end GNUMail/Framework/GNUMail/NewMailboxPanel.m0100644000014600001460000000625510424672357021203 0ustar monotonemonotone/* ** NewMailboxPanel.m ** ** Copyright (c) 2001-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "NewMailboxPanel.h" #include "Constants.h" #include "LabelWidget.h" @implementation NewMailboxPanel - (void) dealloc { NSDebugLog(@"NewMailboxPanel: -dealloc"); RELEASE(mailboxNameLabel); RELEASE(mailboxNameField); [super dealloc]; } // // // - (void) layoutPanel { NSButton *okButton, *cancelButton; NSImageView *icon; icon = [[NSImageView alloc] initWithFrame: NSMakeRect(10,90,48,48)]; [icon setImageAlignment: NSImageAlignCenter]; [icon setImage: [NSImage imageNamed: @"GNUMail.tiff"]]; [icon setImageFrameStyle: NSImageFrameNone]; [icon setEditable: NO]; [[self contentView] addSubview: icon]; RELEASE(icon); mailboxNameLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(65,90,280,TextFieldHeight) label: _(@"Please enter the name of the new Mailbox:")]; [[self contentView] addSubview: mailboxNameLabel]; RETAIN(mailboxNameLabel); mailboxNameField = [[NSTextField alloc] initWithFrame: NSMakeRect(20,50,305,TextFieldHeight)]; [mailboxNameField setSelectable: YES]; [mailboxNameField setTarget: [self windowController]]; [mailboxNameField setAction: @selector(okClicked:)]; [[self contentView] addSubview: mailboxNameField]; cancelButton = [[NSButton alloc] initWithFrame: NSMakeRect(165,10,75,ButtonHeight)]; [cancelButton setButtonType: NSMomentaryPushButton]; [cancelButton setKeyEquivalent: @"\e"]; [cancelButton setTitle: _(@"Cancel")]; [cancelButton setTarget: [self windowController]]; [cancelButton setAction: @selector(cancelClicked:)]; [[self contentView] addSubview: cancelButton]; RELEASE(cancelButton); okButton = [[NSButton alloc] initWithFrame: NSMakeRect(250,10,75,ButtonHeight)]; [okButton setButtonType: NSMomentaryPushButton]; [okButton setKeyEquivalent: @"\r"]; [okButton setImagePosition: NSImageRight]; [okButton setImage: [NSImage imageNamed: @"common_ret"]]; [okButton setAlternateImage: [NSImage imageNamed: @"common_retH"]]; [okButton setTitle: _(@"OK")]; [okButton setTarget: [self windowController]]; [okButton setAction: @selector(okClicked:)]; [[self contentView] addSubview: okButton]; RELEASE(okButton); // We set the initial responder and the next key views [self setInitialFirstResponder: mailboxNameField]; [mailboxNameField setNextKeyView: cancelButton]; [cancelButton setNextKeyView: okButton]; [okButton setNextKeyView: mailboxNameField]; } @end GNUMail/Framework/GNUMail/NSAttributedString+Extensions.m0100644000014600001460000010370010613064243024026 0ustar monotonemonotone/* ** NSAttributedString+Extensions.m ** ** Copyright (c) 2004-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "NSAttributedString+Extensions.h" #include "Constants.h" #include "ExtendedTextAttachmentCell.h" #include "FilterManager.h" #include "GNUMail.h" #include "MailHeaderCell.h" #include "MailWindowController.h" #include "MimeType.h" #include "MimeTypeManager.h" #include "NSAttributedString+TextEnriched.h" #include "NSColor+Extensions.h" #include "NSFont+Extensions.h" #include "NSUserDefaults+Extensions.h" #include "Task.h" #include "TaskManager.h" #include "ThreadArcsCell.h" #include "Utilities.h" #include #include #include #include #include #include #include #include #define APPEND_HEADER(name, value) ({ \ [maStr appendAttributedString: [NSAttributedString attributedStringWithString: [NSString stringWithFormat: @"%@: ", _(name)] \ attributes: headerNameAttribute] ]; \ [maStr appendAttributedString: [NSAttributedString attributedStringWithString: value \ attributes: headerValueAttribute] ]; \ [maStr appendAttributedString: [NSAttributedString attributedStringWithString: @"\n" \ attributes: nil] ]; \ }) // // // static inline int levelFromString(NSString *theString, int start, int end) { int i, level; unichar c; for (i = start,level = 0; i < end; i++) { c = [theString characterAtIndex: i]; if (c == '>') { level++; } else if (c > 32) { break; } } return level; } // // // @implementation NSAttributedString (GNUMailAttributedStringExtensions) + (NSAttributedString *) attributedStringFromAttachmentPart: (CWPart *) thePart { NSMutableAttributedString *maStr; NSTextAttachment *aTextAttachment; ExtendedTextAttachmentCell *cell; NSFileWrapper *aFileWrapper; MimeType *aMimeType; NSImage *anImage; NSData *aData; int len; maStr = [[NSMutableAttributedString alloc] init]; aData = ([[thePart content] isKindOfClass: [CWMessage class]] ? (id)[(CWMessage *)[thePart content] rawSource] : (id)[thePart content]); aFileWrapper = [[NSFileWrapper alloc] initRegularFileWithContents: aData]; //NSLog(@"Content-Type = |%@|", [thePart contentType]); // NSLog(@"data from attachmnet part = |%@|", [aData asciiString]); if (![thePart filename]) { if ([[thePart content] isKindOfClass: [CWMessage class]]) { [aFileWrapper setPreferredFilename: @"message/rfc822"]; len = [thePart size]; } else { [aFileWrapper setPreferredFilename: @"unknown"]; len = [aData length]; } } else { [aFileWrapper setPreferredFilename: [thePart filename]]; len = [aData length]; } aMimeType = [[MimeTypeManager singleInstance] mimeTypeForFileExtension: [[aFileWrapper preferredFilename] pathExtension]]; anImage = [[MimeTypeManager singleInstance] bestIconForMimeType: aMimeType pathExtension: [[aFileWrapper preferredFilename] pathExtension]]; // If the image has been loaded sucessfully, it become our icon for our filewrapper if (anImage) { [aFileWrapper setIcon: anImage]; } aTextAttachment = [[NSTextAttachment alloc] initWithFileWrapper: aFileWrapper]; // We add this attachment to our 'Save Attachment' menu [(GNUMail *)[NSApp delegate] addItemToMenuFromTextAttachment: aTextAttachment]; cell = [[ExtendedTextAttachmentCell alloc] initWithFilename: [aFileWrapper preferredFilename] size: len]; [cell setPart: thePart]; [aTextAttachment setAttachmentCell: cell]; // Cocoa bug #ifdef MACOSX [cell setAttachment: aTextAttachment]; [cell setImage: [aFileWrapper icon]]; #endif RELEASE(cell); RELEASE(aFileWrapper); // We separate the text attachment from any other line previously shown [maStr appendAttributedString: [NSAttributedString attributedStringWithString: @"\n" attributes: nil]]; [maStr appendAttributedString: [NSAttributedString attributedStringWithAttachment: aTextAttachment]]; [maStr appendAttributedString: [NSAttributedString attributedStringWithString: @"\n" attributes: nil]]; RELEASE(aTextAttachment); return maStr; } // // This method returns a NSAttributedString object that has been built // from the content of the message. // + (NSAttributedString *) attributedStringFromContentForPart: (CWPart *) thePart controller: (id) theController { NSMutableAttributedString *maStr; NSMutableDictionary *tAttr; tAttr = [[NSMutableDictionary alloc] init]; [tAttr setObject: [NSFont messageFont] forKey: NSFontAttributeName]; maStr = [[NSMutableAttributedString alloc] init]; if ([[thePart content] isKindOfClass: [CWMIMEMultipart class]]) { // We first verify if our multipart object is a multipart alternative. // If yes, we represent the best representation of the part. if ([thePart isMIMEType: @"multipart" subType: @"alternative"]) { // We append our \n to separate our body part from the headers [maStr appendAttributedString: [NSAttributedString attributedStringWithString: @"\n" attributes: nil]]; // We then append the best representation from this multipart/alternative object [maStr appendAttributedString: [NSAttributedString attributedStringFromMultipartAlternative: (CWMIMEMultipart *)[thePart content] controller: theController]]; } // Then we verify if our multipart object is a multipart appledouble. else if ([thePart isMIMEType: @"multipart" subType: @"appledouble"]) { // We append our \n to separate our body part from the headers [maStr appendAttributedString: [NSAttributedString attributedStringWithString: @"\n" attributes: nil]]; // We then append the best representation from this multipart/appledouble object [maStr appendAttributedString: [NSAttributedString attributedStringFromMultipartAppleDouble: (CWMIMEMultipart *)[thePart content] controller: theController]]; } // We have a multipart/mixed or multipart/related (or an other, unknown multipart/* object) else { CWMIMEMultipart *aMimeMultipart; CWPart *aPart; int i; aMimeMultipart = (CWMIMEMultipart *)[thePart content]; for (i = 0; i < [aMimeMultipart count]; i++) { // We get our part aPart = [aMimeMultipart partAtIndex: i]; // We recursively call our method to show all parts [maStr appendAttributedString: [self attributedStringFromContentForPart: aPart controller: theController]]; } } } // We have a message with Content-Type: application/* OR audio/* OR image/* OR video/* // We can also have a text/* part that was base64 encoded, but, we skip it. It'll be // treated as a NSString object. (See below). else if ([[thePart content] isKindOfClass: [NSData class]]) { NSTextAttachment *aTextAttachment; ExtendedTextAttachmentCell *cell; NSFileWrapper *aFileWrapper; MimeType *aMimeType; NSImage *anImage; NSRect rectOfTextView; NSSize imageSize; if ([thePart contentDisposition] == PantomimeAttachmentDisposition) { [maStr appendAttributedString: [NSAttributedString attributedStringFromAttachmentPart: thePart]]; } else { // // We try to display text/* and image/* parts. If we get anything else, // we just display it as an attachment. // // RFC2046 - Section 5.2 says: // // // Default RFC 822 messages without a MIME Content-Type header are taken // by this protocol to be plain text in the US-ASCII character set, // which can be explicitly specified as: // // Content-type: text/plain; charset=us-ascii // if ([thePart isMIMEType: @"text" subType: @"*"] || ![thePart contentType]) { [maStr appendAttributedString: [NSAttributedString attributedStringFromTextPart: thePart]]; } else if ([thePart isMIMEType: @"image" subType: @"*"]) { aFileWrapper = [[NSFileWrapper alloc] initRegularFileWithContents: (NSData *)[thePart content]]; if (![thePart filename]) { [aFileWrapper setPreferredFilename: @"unknown"]; } else { [aFileWrapper setPreferredFilename: [thePart filename]]; } // We get the righ Mime-Type object for this part aMimeType = [[MimeTypeManager singleInstance] mimeTypeForFileExtension: [[aFileWrapper preferredFilename] pathExtension]]; if (aMimeType && [aMimeType view] == DISPLAY_AS_ICON) { anImage = [[MimeTypeManager singleInstance] bestIconForMimeType: aMimeType pathExtension: [[aFileWrapper preferredFilename] pathExtension]]; } else { anImage = [[NSImage alloc] initWithData: (NSData *)[thePart content]]; AUTORELEASE(anImage); } // If the image has been loaded sucessfully, it become ours icon for our filewrapper if (anImage) { [aFileWrapper setIcon: anImage]; } // We now rescale the attachment if it doesn't fit in the text view. That could happen // very often for images. rectOfTextView = [[[[GNUMail lastMailWindowOnTop] windowController] textView] frame]; imageSize = [[aFileWrapper icon] size]; if (imageSize.width > rectOfTextView.size.width) { double delta = 1.0 / (imageSize.width / (rectOfTextView.size.width-10)); [[aFileWrapper icon] setScalesWhenResized: YES]; [[aFileWrapper icon] setSize: NSMakeSize((imageSize.width*delta), imageSize.height*delta)]; } // We now create our text attachment with our file wrapper aTextAttachment = [[NSTextAttachment alloc] initWithFileWrapper: aFileWrapper]; // We add this attachment to our 'Save Attachment' menu [(GNUMail *)[NSApp delegate] addItemToMenuFromTextAttachment: aTextAttachment]; cell = [[ExtendedTextAttachmentCell alloc] initWithFilename: [aFileWrapper preferredFilename] size: [(NSData *)[thePart content] length] ]; [cell setPart: thePart]; [aTextAttachment setAttachmentCell: cell]; // Cocoa bug #ifdef MACOSX [cell setAttachment: aTextAttachment]; [cell setImage: [aFileWrapper icon]]; #endif RELEASE(cell); RELEASE(aFileWrapper); // We separate the text attachment from any other line previously shown [maStr appendAttributedString: [NSAttributedString attributedStringWithString: @"\n" attributes: nil] ]; [maStr appendAttributedString: [NSAttributedString attributedStringWithAttachment: aTextAttachment]]; RELEASE(aTextAttachment); } else { [maStr appendAttributedString: [NSAttributedString attributedStringFromAttachmentPart: thePart]]; } } } // // We have a message/rfc822 as the Content-Type. // else if ([[thePart content] isKindOfClass: [CWMessage class]]) { CWMessage *aMessage; aMessage = (CWMessage *)[thePart content]; // We must represent this message/rfc822 part as an attachment if ([thePart contentDisposition] == PantomimeAttachmentDisposition) { [maStr appendAttributedString: [NSAttributedString attributedStringFromAttachmentPart: thePart]]; } else { [maStr appendAttributedString: [self attributedStringFromHeadersForMessage: aMessage showAllHeaders: NO useMailHeaderCell: NO] ]; [maStr appendAttributedString: [self attributedStringFromContentForPart: aMessage controller: theController]]; } } // // We have something that we probably can't display. // Let's inform the user about this situation. // else if ([thePart isKindOfClass: [CWMessage class]] && ![thePart content]) { CWMessage *aMessage; Task *aTask; [maStr appendAttributedString: [NSAttributedString attributedStringWithString: _(@"Loading message...") attributes: nil]]; aMessage = (CWMessage *)thePart; [aMessage setProperty: [NSNumber numberWithBool: YES] forKey: MessagePreloading]; aTask = [[TaskManager singleInstance] taskForService: [[aMessage folder] store] message: aMessage]; if (!aTask) { aTask = [[Task alloc] init]; [aTask setKey: [Utilities accountNameForFolder: [aMessage folder]]]; aTask->op = LOAD_ASYNC; aTask->immediate = YES; aTask->total_size = (float)[aMessage size]/(float)1024; [aTask setMessage: aMessage]; aTask->service = [[aMessage folder] store]; [[TaskManager singleInstance] addTask: aTask]; RELEASE(aTask); } [aTask addController: theController]; } RELEASE(tAttr); return AUTORELEASE(maStr); } // // This method returns a NSAttributedString object that has been built // from the headers of the message. // + (NSAttributedString *) attributedStringFromHeadersForMessage: (CWMessage *) theMessage showAllHeaders: (BOOL) showAllHeaders useMailHeaderCell: (BOOL) useMailHeaderCell { NSMutableDictionary *headerNameAttribute, *headerValueAttribute; NSMutableAttributedString *maStr; NSMutableAttributedString *aMutableAttributedString; NSDictionary *allHeaders; NSArray *headersToShow; int i, count; maStr = [[NSMutableAttributedString alloc] init]; // Attributes for our header names headerNameAttribute = [[NSMutableDictionary alloc] init]; [headerNameAttribute setObject: [NSFont headerNameFont] forKey: NSFontAttributeName]; // Attributes for our header values headerValueAttribute = [[NSMutableDictionary alloc] init]; [headerValueAttribute setObject: [NSFont headerValueFont] forKey: NSFontAttributeName]; // We get all the message's headers allHeaders = [theMessage allHeaders]; // We verify which headers of the message we show show. if (showAllHeaders) { headersToShow = [allHeaders allKeys]; } else { headersToShow = [[NSUserDefaults standardUserDefaults] objectForKey: @"SHOWNHEADERS"]; } count = [headersToShow count]; for (i = 0; i < count; i++) { NSString *anHeader = [headersToShow objectAtIndex: i]; if ([anHeader caseInsensitiveCompare: @"Date"] == NSOrderedSame && [theMessage receivedDate]) { if ([theMessage receivedDate]) { APPEND_HEADER(@"Date", [[theMessage receivedDate] description]); } } else if ([anHeader caseInsensitiveCompare: @"From"] == NSOrderedSame && [theMessage from]) { APPEND_HEADER(@"From", [[theMessage from] stringValue]); } else if ([anHeader caseInsensitiveCompare: @"Bcc"] == NSOrderedSame) { NSString *bccStr = [NSString stringFromRecipients: [theMessage recipients] type: PantomimeBccRecipient]; if ([bccStr length] > 0) { APPEND_HEADER(@"Bcc", [bccStr substringToIndex: ([bccStr length]-2)]); } } else if ([anHeader caseInsensitiveCompare: @"Cc"] == NSOrderedSame) { NSString *ccStr= [NSString stringFromRecipients: [theMessage recipients] type: PantomimeCcRecipient]; if ([ccStr length] > 0) { APPEND_HEADER(@"Cc", [ccStr substringToIndex: ([ccStr length]-2)]); } } else if ([anHeader caseInsensitiveCompare: @"Reply-To"] == NSOrderedSame && [theMessage replyTo]) { NSString *replyToStr; replyToStr = [NSString stringFromRecipients: [theMessage replyTo] type: 0]; APPEND_HEADER(@"Reply-To", [replyToStr substringToIndex: ([replyToStr length]-2)]); } else if ([anHeader caseInsensitiveCompare: @"To"] == NSOrderedSame) { NSString *toStr = [NSString stringFromRecipients: [theMessage recipients] type: PantomimeToRecipient]; if ([toStr length] > 0) { APPEND_HEADER(@"To", [toStr substringToIndex: ([toStr length]-2)]); } } else if ([anHeader caseInsensitiveCompare: @"Content-Type"] == NSOrderedSame) { NSString *aString; if ([theMessage charset]) { aString = [NSString stringWithFormat: @"%@; charset=%@", [theMessage contentType], [theMessage charset]]; } else { aString = [theMessage contentType]; } APPEND_HEADER(@"Content-Type", aString); } else { NSArray *allKeys = [allHeaders allKeys]; NSString *valueString; int j, c; id o; c = [allKeys count]; valueString = nil; for (j = 0; j < c; j++) { if ([[[allKeys objectAtIndex: j] uppercaseString] isEqualToString: [anHeader uppercaseString]]) { o = [allHeaders objectForKey: [allKeys objectAtIndex: j]]; if ([o isKindOfClass: [CWInternetAddress class]]) { valueString = [o stringValue]; } else { if ([[allKeys objectAtIndex: j] isEqualToString: @"Content-Transfer-Encoding"]) { valueString = [NSString stringValueOfTransferEncoding: [o intValue]]; } else if ([[allKeys objectAtIndex: j] isEqualToString: @"Content-Disposition"]) { if ([o intValue] == PantomimeAttachmentDisposition) { valueString = @"attachment"; } else { valueString = @"inline"; } } else { valueString = (NSString *)o; } } break; } } if (valueString) { APPEND_HEADER(anHeader, valueString); } } } // for (..) if (useMailHeaderCell) { NSTextAttachment *aTextAttachment; MailHeaderCell *theMailHeaderCell; theMailHeaderCell = [[[GNUMail lastMailWindowOnTop] windowController] mailHeaderCell]; [theMailHeaderCell setColor: [[FilterManager singleInstance] colorForMessage: theMessage]]; [theMailHeaderCell setAttributedStringValue: maStr]; [theMailHeaderCell resize: nil]; // We now "embed" the header cell into a NSTextAttachment object // so we can add it to our mutable attributed string. aTextAttachment = [[NSTextAttachment alloc] init]; [aTextAttachment setAttachmentCell: theMailHeaderCell]; aMutableAttributedString = [[NSMutableAttributedString alloc] init]; [aMutableAttributedString appendAttributedString: [NSMutableAttributedString attributedStringWithAttachment: aTextAttachment]]; RELEASE(aTextAttachment); // // If we are using message thread, we show our visualization cell. // if ([[theMessage folder] allContainers]) { ThreadArcsCell *theThreadArcsCell; theThreadArcsCell = [[[GNUMail lastMailWindowOnTop] windowController] threadArcsCell]; aTextAttachment = [[NSTextAttachment alloc] init]; [aTextAttachment setAttachmentCell: theThreadArcsCell]; [aMutableAttributedString appendAttributedString: [NSMutableAttributedString attributedStringWithAttachment: aTextAttachment]]; RELEASE(aTextAttachment); #ifndef MACOSX [aMutableAttributedString appendAttributedString: [NSAttributedString attributedStringWithString: @"\n" attributes: nil]]; #endif } #ifdef MACOSX [aMutableAttributedString appendAttributedString: [NSAttributedString attributedStringWithString: @"\n\n" attributes: nil]]; #else [aMutableAttributedString appendAttributedString: [NSAttributedString attributedStringWithString: @"\n" attributes: nil]]; #endif } else { aMutableAttributedString = [[NSMutableAttributedString alloc] init]; [aMutableAttributedString appendAttributedString: maStr]; [aMutableAttributedString appendAttributedString: [NSAttributedString attributedStringWithString: @"\n" attributes: nil] ]; } RELEASE(maStr); RELEASE(headerNameAttribute); RELEASE(headerValueAttribute); return AUTORELEASE(aMutableAttributedString); } // // // + (NSAttributedString *) attributedStringFromMultipartAlternative: (CWMIMEMultipart *) theMimeMultipart controller: (id) theController { NSString *aSubtype; int i, index; if ([[NSUserDefaults standardUserDefaults] integerForKey: @"DEFAULT_MULTIPART_ALTERNATIVE_TYPE"] == TYPE_HTML) { aSubtype = @"html"; } else { aSubtype = @"plain"; } index = -1; // We search for our preferred part (text/html or text/plain) depending on aSubtype for (i = 0; i < [theMimeMultipart count]; i++) { if ([[theMimeMultipart partAtIndex: i] isMIMEType: @"text" subType: aSubtype]) { index = i; break; } } // If we have found our preferred part, we use that one if (index >= 0) { return [self attributedStringFromTextPart: [theMimeMultipart partAtIndex: index]]; } // We haven't, we show the first one. We don't assume that we got a text // part here. We could get any kind of parts. else { if ([theMimeMultipart count] > 0) { return [self attributedStringFromContentForPart:[theMimeMultipart partAtIndex: 0] controller: theController]; } } return [self attributedStringFromTextPart: nil]; } // // // + (NSAttributedString *) attributedStringFromMultipartAppleDouble: (CWMIMEMultipart *) theMimeMultipart controller: (id) theController { NSMutableAttributedString *aMutableAttributedString; NSMutableDictionary *attributes; CWPart *aPart; int i; // We create a set of attributes (base font, color red) attributes = [[NSMutableDictionary alloc] init]; [attributes setObject: [NSColor redColor] forKey: NSForegroundColorAttributeName]; aMutableAttributedString = [[NSMutableAttributedString alloc] init]; for (i = 0; i < [theMimeMultipart count]; i++) { aPart = [theMimeMultipart partAtIndex: i]; if ([aPart isMIMEType: @"application" subType: @"applefile"]) { [aMutableAttributedString appendAttributedString: [self attributedStringWithString: _(@"(Decoded Apple file follows...)") attributes: attributes]]; } else { // We first add a \n between our applefile description and the 'representation' of the attachment [aMutableAttributedString appendAttributedString: [self attributedStringWithString: @"\n" attributes: nil]]; // We add the representation of our attachment [aMutableAttributedString appendAttributedString: [self attributedStringFromContentForPart: aPart controller: theController]]; } } // We add a \n to separate everything. [aMutableAttributedString appendAttributedString: [NSAttributedString attributedStringWithString: @"\n" attributes: nil]]; RELEASE(attributes); return AUTORELEASE(aMutableAttributedString); } // // // + (NSAttributedString *) attributedStringFromTextPart: (CWPart *) thePart { NSMutableDictionary *textMessageAttributes; NSAttributedString *aAttributedString; NSData *aCharset, *aData; NSString *aString; aAttributedString = nil; if (!thePart || ![thePart content]) { goto done; } // Initializations of the local vars textMessageAttributes = [[NSMutableDictionary alloc] init]; aData = (NSData *)[thePart content]; //NSLog(@"data = |%@| |%@|", [aData asciiString], [thePart charset]); // Some lame MUA sends text part in 8bit without specifying a charset! if (([[thePart charset] isEqualToString: @"us-ascii"] || ![thePart charset]) && [thePart contentTransferEncoding] == PantomimeEncoding8bit) { aCharset = [@"iso-8859-1" dataUsingEncoding: NSASCIIStringEncoding]; } else { aCharset = [[thePart charset] dataUsingEncoding: NSASCIIStringEncoding]; } // If our data is under the format=flowed standard, we unwrap it. if ([thePart format] == PantomimeFormatFlowed) { aData = [aData unwrapWithLimit: 80]; } aString = [NSString stringWithData: aData charset: aCharset]; //if (!aString) NSLog(@"FIRST PASSED FAILED"); // Some lame MUAs will generate 8-bit content w/o specifying a charset. We // try with latin1 and then UTF-8. // WE FORCE if (!aString) { aString = [NSString stringWithData: aData charset: [@"iso-8859-1" dataUsingEncoding: NSASCIIStringEncoding]]; if (!aString) { aString = [NSString stringWithData: aData charset: [@"utf-8" dataUsingEncoding: NSASCIIStringEncoding]]; } } //NSLog(@"aString = |%@|", aString); [textMessageAttributes setObject: [NSFont messageFont] forKey: NSFontAttributeName]; // // text/html // if ([thePart isMIMEType: @"text" subType: @"html"]) { NSData *aData; #ifdef MACOSX aData = [aString dataUsingEncoding: [NSString encodingForPart: thePart]]; aAttributedString = [[NSAttributedString alloc] initWithHTML: aData documentAttributes: nil]; AUTORELEASE(aAttributedString); #else aData = [CWMIMEUtility plainTextContentFromPart: thePart]; //NSLog(@"Data after stripping |%@|", [aData asciiString]); aString = [NSString stringWithData: aData charset: aCharset]; // WE FORCE if (!aString) { aString = [NSString stringWithData: aData charset: [@"iso-8859-1" dataUsingEncoding: NSASCIIStringEncoding]]; if (!aString) { aString = [NSString stringWithData: aData charset: [@"utf-8" dataUsingEncoding: NSASCIIStringEncoding]]; } } //NSLog(@"String from HTML |%@|", aString); aAttributedString = [NSAttributedString attributedStringWithString: aString attributes: textMessageAttributes]; #endif } // // text/enriched // else if ([thePart isMIMEType: @"text" subType: @"enriched"]) { aAttributedString = [NSAttributedString attributedStringFromTextEnrichedString: aString]; } // // text/rtf // else if ([thePart isMIMEType: @"text" subType: @"rtf"]) { aAttributedString = [[NSAttributedString alloc] initWithRTF: aData documentAttributes: NULL]; AUTORELEASE(aAttributedString); } // // We surely got a text/plain part // else { NSMutableDictionary *plainTextMessageAttributes; if ([[NSUserDefaults standardUserDefaults] objectForKey: @"USE_FIXED_FONT_FOR_TEXT_PLAIN_MESSAGES"] && [[NSUserDefaults standardUserDefaults] integerForKey: @"USE_FIXED_FONT_FOR_TEXT_PLAIN_MESSAGES"] == NSOnState) { plainTextMessageAttributes = [[NSMutableDictionary alloc] init]; AUTORELEASE(plainTextMessageAttributes); [plainTextMessageAttributes setObject: [NSFont plainTextMessageFont] forKey: NSFontAttributeName]; } else { plainTextMessageAttributes = textMessageAttributes; } aAttributedString = [NSAttributedString attributedStringWithString: aString attributes: plainTextMessageAttributes]; } RELEASE(textMessageAttributes); done: // We haven't found a text/plain part. Report this as a bug in GNUMail for not supporting // the other kind of parts. if (!aAttributedString) { //NSLog(@"data = |%@| |%@| %d", [[thePart content] asciiString], [thePart charset], [[thePart content] length]); aAttributedString = [NSAttributedString attributedStringWithString: _(@"No text part found. Please report this bug since GNUMail doesn't support this kind of part.") attributes: nil]; } return aAttributedString; } // // // + (NSAttributedString *) attributedStringWithString: (NSString *) theString attributes: (NSDictionary *) theAttributes { if (!theAttributes) { NSMutableDictionary *aMutableAttributedString; NSMutableDictionary *attributes; attributes = [[NSMutableDictionary alloc] init]; [attributes setObject: [NSFont systemFontOfSize: 0] forKey: NSFontAttributeName]; aMutableAttributedString = [[self alloc] initWithString: theString attributes: attributes]; RELEASE(attributes); return AUTORELEASE(aMutableAttributedString); } return AUTORELEASE([[NSAttributedString alloc] initWithString: theString attributes: theAttributes]); } // // // #warning implement and use in the cell drawing code for the message headers - (NSSize) sizeInRect: (NSRect) theRect { if ([self size].width < theRect.size.width) { return [self size]; } return NSZeroSize; } @end // // // @implementation NSMutableAttributedString (GNUMailMutableAttributedStringExtensions) - (void) format { NSString *aString, *aFilename; NSMutableArray *allRanges; NSRange aRange, maxRange; int c, i, len, index, offset; id attachment, cell; allRanges = [[NSMutableArray alloc] init]; len = [self length]; index = 0; maxRange = NSMakeRange(0, len); while (index < len) { attachment = [self attribute: NSAttachmentAttributeName atIndex: index longestEffectiveRange: &aRange inRange: maxRange]; if (attachment) { cell = [attachment attachmentCell]; if ([cell respondsToSelector: @selector(part)]) { [allRanges addObject: [NSArray arrayWithObjects: attachment, [NSValue valueWithRange: aRange], nil]]; } } index = NSMaxRange(aRange); maxRange = NSMakeRange(index, len-index); } aString = [self string]; c = [allRanges count]; offset = 0; for (i = c-1; i >= 0; i--) { attachment = [[allRanges objectAtIndex: i] objectAtIndex: 0]; cell = [attachment attachmentCell]; aFilename = ([[cell part] filename] ? (id)[[cell part] filename] : (id)@"unknown"); aRange = [aString rangeOfString: [NSString stringWithFormat: @"<<%@>>", aFilename] options: NSBackwardsSearch]; if (aRange.location == NSNotFound) { aRange = [aString rangeOfString: [NSString stringWithFormat: @"<%@>", aFilename] options: NSBackwardsSearch]; } if (aRange.length) { NSRange r; r = [[[allRanges objectAtIndex: i] lastObject] rangeValue]; r.location = r.location - offset; [self deleteCharactersInRange: r]; [self replaceCharactersInRange: aRange withAttributedString: [NSAttributedString attributedStringWithAttachment: attachment]]; offset = offset + aRange.length - 1; } } RELEASE(allRanges); } // // // - (void) highlightAndActivateURL { NSRange searchRange, foundRange; NSString *aString, *aPrefix; NSEnumerator *theEnumerator; NSArray *allPrefixes; int len; char c; allPrefixes = [NSArray arrayWithObjects: @"www.", @"http://", @"https://", @"ftp://", @"file://", nil]; theEnumerator = [allPrefixes objectEnumerator]; aString = [self string]; len = [aString length]; while ((aPrefix = (NSString *)[theEnumerator nextObject])) { searchRange = NSMakeRange(0, len); do { foundRange = [aString rangeOfString: aPrefix options: 0 range: searchRange]; // If we found an URL... if (foundRange.length > 0) { NSDictionary *linkAttributes; NSURL *anURL; int end; // Restrict the searchRange so that it won't find the same string again searchRange.location = end = NSMaxRange(foundRange); searchRange.length = len - searchRange.location; // We assume the URL ends with whitespace while ((end < len) && ((c = [aString characterAtIndex: end]) != '\n' && c != ' ' && c != '\t')) { end++; } // Set foundRange's length to the length of the URL foundRange.length = end - foundRange.location; // If our URL is ended with a ".", "!", "," ">", or ")", trim it c = [aString characterAtIndex: (end - 1)]; if (c == '.' || c == '!' || c == ',' || c == '?' || c == '>' || c == ')') { foundRange.length--; } // We create our URL object from our substring // if we found just "www", we prepend "http://" if ([aPrefix caseInsensitiveCompare: @"www."] == NSOrderedSame) { anURL = [NSURL URLWithString: [NSString stringWithFormat: @"http://%@", [aString substringWithRange: foundRange]]]; } else { anURL = [NSURL URLWithString: [aString substringWithRange: foundRange]]; } // Make the link attributes linkAttributes = [NSDictionary dictionaryWithObjectsAndKeys: anURL, NSLinkAttributeName, [NSNumber numberWithInt: NSSingleUnderlineStyle], NSUnderlineStyleAttributeName, [NSColor blueColor], NSForegroundColorAttributeName, NULL]; // Finally, apply those attributes to the URL in the text [self addAttributes: linkAttributes range: foundRange]; } } while (foundRange.length != 0); } } // // // - (void) quote { if ([[NSUserDefaults standardUserDefaults] integerForKey: @"COLOR_QUOTED_TEXT" default: NSOnState] == NSOffState) { return; } else { NSDictionary *attributes; NSString *aString; int i, j, len, level; aString = [self string]; len = [aString length]; i = j = level = 0; for (; i < len; i++) { if ([aString characterAtIndex: i] == '\n') { if (i > j) { level = levelFromString(aString, j, i); if (level) { attributes = [NSDictionary dictionaryWithObjectsAndKeys: [NSColor colorForLevel: level], NSForegroundColorAttributeName, nil]; [self addAttributes: attributes range: NSMakeRange(j,i-j)]; } } j = i+1; } } if (i > j) { level = levelFromString(aString, j, i); if (level) { attributes = [NSDictionary dictionaryWithObjectsAndKeys: [NSColor colorForLevel: level], NSForegroundColorAttributeName, nil]; [self addAttributes: attributes range: NSMakeRange(j,i-j)]; } } } } @end GNUMail/Framework/GNUMail/NSAttributedString+TextEnriched.m0100644000014600001460000002010610424672357024266 0ustar monotonemonotone/* ** NSAttributedString+TextEnriched.m ** ** Copyright (c) 2001-2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "NSAttributedString+TextEnriched.h" #include "Constants.h" // Parameter Command #define PARAM @"" #define PARAM_END @"" // Font-Alteration Commands #define BIGGER @"" #define BIGGER_END @"" #define BOLD @"" #define BOLD_END @"" #define COLOR @"" #define COLOR_END @"" #define FIXED @"" #define FIXED_END @"" #define FONTFAMILY @"" #define FONTFAMILY_END @"" #define ITALIC @"" #define ITALIC_END @"" #define SMALLER @"" #define SMALLER_END @"" #define UNDERLINE @"" #define UNDERLINE_END @"" // Fill / Justification / Indentation Commands #define CENTER @"
" #define CENTER_END @"
" #define FLUSHLEFT @"" #define FLUSHLEFT_END @"" #define FLUSHRIGHT @"" #define FLUSHRIGHT_END @"" #define IN @"" #define IN_END @"" #define LEFT @"" #define LEFT_END @"" #define NOFILL @"" #define NOFILL_END @"" #define OUT @"" #define OUT_END @"" #define PARAINDENT @"" #define PARAINDENT_END @"" #define RIGHT @"" #define RIGHT_END @"" // Markup Commands #define EXCERPT @"" #define EXCERPT_END @"" #define LANG @"" #define LANG_END @"" // // // @implementation NSAttributedString (TextEnriched) + (NSAttributedString *) attributedStringFromTextEnrichedString: (NSString *) theString { NSMutableAttributedString *aMutableAttributedString; NSMutableDictionary *standardAttributes; NSAutoreleasePool *pool; NSFontManager *aFontManager; NSScanner *aScanner; // We alloc our local autorelease pool pool = [[NSAutoreleasePool alloc] init]; // We get our shared font manager aFontManager = [NSFontManager sharedFontManager]; // We initialize our set of standard font attributes standardAttributes = [[NSMutableDictionary alloc] init]; [standardAttributes setObject: [NSFont systemFontOfSize: 0] forKey: NSFontAttributeName]; // We initialize our mutable attributed string - the result of the conversion // from our text/enriched string. aMutableAttributedString = [[NSMutableAttributedString alloc] initWithString: theString attributes: standardAttributes]; // We initialize our scanner aScanner = [[NSScanner alloc] initWithString: theString]; [aScanner setCaseSensitive: NO]; // We match BOLD / BOLD_END [aScanner setScanLocation: 0]; [self _alterAttributedString: aMutableAttributedString withScanner: aScanner fontManager: aFontManager startCmd: BOLD endCmd: BOLD_END trait: NSBoldFontMask]; // We match ITALIC / ITALIC_END [aScanner setScanLocation: 0]; [self _alterAttributedString: aMutableAttributedString withScanner: aScanner fontManager: aFontManager startCmd: ITALIC endCmd: ITALIC_END trait: NSItalicFontMask]; // We now remove all 'commands' from our attributedString [self _removeCommandsFromAttributedString: aMutableAttributedString]; // We finally unfold our attributed string [self _unfoldAttributedString: aMutableAttributedString]; // We release our local objects RELEASE(standardAttributes); RELEASE(aScanner); // We release our local pool RELEASE(pool); return AUTORELEASE(aMutableAttributedString); } // // FIXME: Should be optimized. // + (void) _alterAttributedString: (NSMutableAttributedString *) theMutableAttributedString withScanner: (NSScanner *) theScanner fontManager: (NSFontManager *) theFontManager startCmd: (NSString *) theStartCmd endCmd: (NSString *) theEndCmd trait: (int) theTrait { while ( ![theScanner isAtEnd] ) { if ( [theScanner scanString: theStartCmd intoString: NULL] ) { int start, end; start = [theScanner scanLocation]; if ( [theScanner scanUpToString: theEndCmd intoString: NULL] ) { NSMutableDictionary *attributes; end = [theScanner scanLocation] + [theEndCmd length]; attributes = [NSMutableDictionary dictionaryWithDictionary: [theMutableAttributedString attributesAtIndex: start effectiveRange: NULL] ]; [attributes setObject: [theFontManager convertFont: [attributes objectForKey: NSFontAttributeName] toHaveTrait: theTrait] forKey: NSFontAttributeName]; [theMutableAttributedString addAttributes: attributes range: NSMakeRange(start, end - start)]; } } else { [theScanner setScanLocation: [theScanner scanLocation] + 1]; } } } // // This method is used to remove all commands from out mutable attributed string. // + (void) _removeCommandsFromAttributedString: (NSMutableAttributedString *) theMutableAttributedString { NSArray *allCommands; int i; allCommands = [NSArray arrayWithObjects: PARAM, BIGGER, BIGGER_END, BOLD, BOLD_END, COLOR, COLOR_END, FIXED, FIXED_END, FONTFAMILY, FONTFAMILY_END, ITALIC, ITALIC_END, SMALLER, SMALLER_END, UNDERLINE, UNDERLINE_END, CENTER, CENTER_END, FLUSHLEFT, FLUSHLEFT_END, FLUSHRIGHT, FLUSHRIGHT_END, IN, IN_END, LEFT, LEFT_END, NOFILL, NOFILL_END, OUT, OUT_END, PARAINDENT, PARAINDENT_END, RIGHT, RIGHT_END, EXCERPT, EXCERPT_END, LANG, LANG_END, nil]; for (i = 0; i < [allCommands count]; i++) { NSString *aCommand, *aString; NSRange aRange; aCommand = [allCommands objectAtIndex: i]; aString = [theMutableAttributedString string]; aRange = [aString rangeOfString: aCommand]; while (aRange.location != NSNotFound) { // If we are decoding a , let's strip everything inside it. if ( [aCommand isEqualToString: PARAM] ) { aRange.length = NSMaxRange([aString rangeOfString: PARAM_END]) - aRange.location; } [theMutableAttributedString deleteCharactersInRange: aRange]; aString = [theMutableAttributedString string]; aRange = [aString rangeOfString: aCommand]; } } } // // This method is used to unfold the attributed string. // // From the RFC1896: // "... // isolated CRLF pairs are translated // into a single SPACE character. Sequences of N consecutive CRLF pairs, // however, are translated into N-1 actual line breaks. // ..." // + (void) _unfoldAttributedString: (NSMutableAttributedString *) theMutableAttributedString { NSString *aString; int i, length; aString = [theMutableAttributedString string]; length = [aString length]; for (i = 0; i < length; i++) { unichar c1, c2; c1 = [aString characterAtIndex: i]; if ( (i+1) < [aString length] ) { c2 = [aString characterAtIndex: (i+1)]; } else { c2 = ' '; } if (c1 == '\n' && c2 == '\n') { [theMutableAttributedString replaceCharactersInRange: NSMakeRange(i, 2) withString: @"\n"]; } else if (c1 == '\n') { [theMutableAttributedString replaceCharactersInRange: NSMakeRange(i, 1) withString: @" "]; } aString = [theMutableAttributedString string]; length = [aString length]; } } @end GNUMail/Framework/GNUMail/NSBezierPath+Extensions.m0100644000014600001460000000352310424672357022602 0ustar monotonemonotone/* ** NSBezierPath+Extensions.m ** ** Copyright (c) 2002-2005 ** ** Author: Francis Lachapelle ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "NSBezierPath+Extensions.h" // // Simple category of NSBezierPath to easily draw a rectangle with // custom rounded corners. // @implementation NSBezierPath (GNUMailBezierPathExtensions) - (void) appendBezierPathWithRoundedRectangle: (NSRect) theRect withRadius: (float) theRadius { NSPoint topMid = NSMakePoint(NSMidX(theRect), NSMaxY(theRect)); NSPoint topLeft = NSMakePoint(NSMinX(theRect), NSMaxY(theRect)); NSPoint topRight = NSMakePoint(NSMaxX(theRect), NSMaxY(theRect)); NSPoint bottomRight = NSMakePoint(NSMaxX(theRect), NSMinY(theRect)); [self moveToPoint: topMid]; [self appendBezierPathWithArcFromPoint: topLeft toPoint: theRect.origin radius: theRadius]; [self appendBezierPathWithArcFromPoint: theRect.origin toPoint: bottomRight radius: theRadius]; [self appendBezierPathWithArcFromPoint: bottomRight toPoint: topRight radius: theRadius]; [self appendBezierPathWithArcFromPoint: topRight toPoint: topLeft radius: theRadius]; [self closePath]; } @end GNUMail/Framework/GNUMail/NSBundle+Extensions.m0100644000014600001460000000440110613064243021737 0ustar monotonemonotone/* ** NSBundle+Extensions.m ** ** Copyright (c) 2005-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "NSBundle+Extensions.h" #include "Constants.h" #include "ConsoleWindowController.h" #include "PreferencesModule.h" @implementation NSBundle (GNUMailBundleExtensions) // // Can be: $GNUSTEP_INSTALATION_DIR/{Local,Network,System}/Apps/GNUMail.app/Resources or // or: ANY_OTHER_DIRECTORY/GNUMail/GNUMail.app/Resources // + (id) instanceForBundleWithName: (NSString *) theName { NSString *aString; NSBundle *aBundle; Class aClass; #ifdef MACOSX aString = [[[NSBundle mainBundle] builtInPlugInsPath] stringByAppendingPathComponent: [theName stringByAppendingPathExtension: @"prefs"]]; #else NSArray *allPaths; BOOL b; int i; allPaths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSLocalDomainMask| NSNetworkDomainMask| NSSystemDomainMask| NSUserDomainMask, YES); aString = nil; for (i = 0; i < [allPaths count]; i++) { aString = [NSString stringWithFormat: @"%@/GNUMail/%@.prefs", [allPaths objectAtIndex: i], theName]; if ([[NSFileManager defaultManager] fileExistsAtPath: aString isDirectory: &b] && b) { break; } } #endif ADD_CONSOLE_MESSAGE(_(@"Loading preferences bundle at path %@."), aString); aBundle = [NSBundle bundleWithPath: aString]; aClass = [aBundle principalClass]; if ([aClass conformsToProtocol: @protocol(PreferencesModule)]) { return [aClass singleInstance]; } return nil; } @end GNUMail/Framework/GNUMail/NSColor+Extensions.m0100644000014600001460000000461610424672357021627 0ustar monotonemonotone/* ** NSColor+Extensions.m ** ** Copyright (c) 2004-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "NSColor+Extensions.h" #include "Constants.h" #include "NSUserDefaults+Extensions.h" static NSMutableArray *quoteLevelColors = nil; #define MAX_LEVEL 4 // // // @implementation NSColor (GNUMailColorExtensions) + (NSColor *) colorForLevel: (int) theLevel { if (!quoteLevelColors) { quoteLevelColors = [[NSMutableArray alloc] initWithCapacity: MAX_LEVEL]; } if ([quoteLevelColors count] == 0) { NSUserDefaults *aUserDefaults; NSColor *aColor; aUserDefaults = [NSUserDefaults standardUserDefaults]; // We look at the user preferences to get the colors... aColor = [aUserDefaults colorForKey: @"QUOTE_COLOR_LEVEL_1"]; if ( aColor ) { [quoteLevelColors addObject: aColor]; } else { [quoteLevelColors addObject: [NSColor blueColor]]; } aColor = [aUserDefaults colorForKey: @"QUOTE_COLOR_LEVEL_2"]; if ( aColor ) { [quoteLevelColors addObject: aColor]; } else { [quoteLevelColors addObject: [NSColor redColor]]; } aColor = [aUserDefaults colorForKey: @"QUOTE_COLOR_LEVEL_3"]; if ( aColor ) { [quoteLevelColors addObject: aColor]; } else { [quoteLevelColors addObject: [NSColor greenColor]]; } aColor = [aUserDefaults colorForKey: @"QUOTE_COLOR_LEVEL_4"]; if ( aColor ) { [quoteLevelColors addObject: aColor]; } else { [quoteLevelColors addObject: [NSColor cyanColor]]; } } return [quoteLevelColors objectAtIndex: (theLevel-1)%MAX_LEVEL]; } // // // + (void) updateCache { DESTROY(quoteLevelColors); } @end GNUMail/Framework/GNUMail/NSFont+Extensions.m0100644000014600001460000001423710424672357021457 0ustar monotonemonotone/* ** NSFont+Extensions.h ** ** Copyright (c) 2004 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "NSFont+Extensions.h" #include "Constants.h" #include static NSFont *deletedMessageFont = nil; static NSFont *headerNameFont = nil; static NSFont *headerValueFont = nil; static NSFont *messageFont = nil; static NSFont *plainTextMessageFont = nil; static NSFont *recentMessageFont = nil; static NSFont *seenMessageFont = nil; // // // @implementation NSFont (GNUMailFontExtensions) + (NSFont *) fontFromFamilyName: (NSString *) theName trait: (int) theTrait size: (int) theSize { NSArray *allFontNames; NSString *aFontName; NSFont *aFont; int i; allFontNames = [[NSFontManager sharedFontManager] availableMembersOfFontFamily: theName]; aFontName = nil; if (theName) { for (i = 0; i < [allFontNames count]; i++) { NSArray *attributes; attributes = [allFontNames objectAtIndex: i]; // We verify if the font name has the trait we are looking for if ( [[attributes objectAtIndex: 3] intValue] == theTrait ) { aFontName = [attributes objectAtIndex: 0]; break; } } } if (aFontName) { aFont = [self fontWithName: aFontName size: theSize]; } else { switch (theTrait) { case NSFixedPitchFontMask: aFont = [self userFixedPitchFontOfSize: theSize]; break; case NSBoldFontMask: aFont = [self boldSystemFontOfSize: theSize]; break; case NSUnboldFontMask: default: aFont = [self systemFontOfSize: theSize]; break; } } return aFont; } // // // + (NSFont *) deletedMessageFont { if (!deletedMessageFont) { #ifdef MACOSX if ([[NSUserDefaults standardUserDefaults] objectForKey: @"MESSAGE_LIST_FONT_NAME"] ) { deletedMessageFont = [[NSFontManager sharedFontManager] convertFont: [self seenMessageFont] toHaveTrait: NSItalicFontMask]; } else { deletedMessageFont = [[NSFontManager sharedFontManager] convertFont: [NSFont systemFontOfSize: [NSFont smallSystemFontSize]] toHaveTrait: NSItalicFontMask]; } #else deletedMessageFont = [[NSFontManager sharedFontManager] convertFont: [NSFont systemFontOfSize: 0] toHaveTrait: NSItalicFontMask]; #endif RETAIN(deletedMessageFont); } return deletedMessageFont; } // // // + (NSFont *) headerNameFont { if (!headerNameFont) { headerNameFont = [NSFont fontFromFamilyName: [[NSUserDefaults standardUserDefaults] objectForKey: @"HEADER_NAME_FONT_NAME"] trait: NSBoldFontMask size: [[NSUserDefaults standardUserDefaults] floatForKey: @"HEADER_NAME_FONT_SIZE"]]; RETAIN(headerNameFont); } return headerNameFont; } // // // + (NSFont *) headerValueFont { if (!headerValueFont) { headerValueFont = [NSFont fontFromFamilyName: [[NSUserDefaults standardUserDefaults] objectForKey: @"HEADER_VALUE_FONT_NAME"] trait: NSUnboldFontMask size: [[NSUserDefaults standardUserDefaults] floatForKey: @"HEADER_VALUE_FONT_SIZE"]]; RETAIN(headerValueFont); } return headerValueFont; } // // // + (NSFont *) messageFont { if (!messageFont) { messageFont = [NSFont fontFromFamilyName: [[NSUserDefaults standardUserDefaults] objectForKey: @"MESSAGE_FONT_NAME"] trait: NSUnboldFontMask size: [[NSUserDefaults standardUserDefaults] floatForKey: @"MESSAGE_FONT_SIZE"]]; RETAIN(messageFont); } return messageFont; } // // // + (NSFont *) plainTextMessageFont { if (!plainTextMessageFont) { plainTextMessageFont = [NSFont fontFromFamilyName: [[NSUserDefaults standardUserDefaults] objectForKey: @"PLAIN_TEXT_MESSAGE_FONT_NAME"] trait: NSFixedPitchFontMask size: [[NSUserDefaults standardUserDefaults] floatForKey: @"PLAIN_TEXT_MESSAGE_FONT_SIZE"]]; RETAIN(plainTextMessageFont); } return plainTextMessageFont; } // // // + (NSFont *) recentMessageFont { if (!recentMessageFont) { #ifdef MACOSX if ([[NSUserDefaults standardUserDefaults] objectForKey: @"MESSAGE_LIST_FONT_NAME"] ) { recentMessageFont = [NSFont fontFromFamilyName: [[NSUserDefaults standardUserDefaults] stringForKey: @"MESSAGE_LIST_FONT_NAME"] trait: NSBoldFontMask size: [[[NSUserDefaults standardUserDefaults] objectForKey: @"MESSAGE_LIST_FONT_SIZE"] intValue]]; } else { recentMessageFont = [NSFont boldSystemFontOfSize: [NSFont smallSystemFontSize]]; } #else recentMessageFont = [NSFont boldSystemFontOfSize: 0]; #endif RETAIN(recentMessageFont); } return recentMessageFont; } // // // + (NSFont *) seenMessageFont { if (!seenMessageFont) { #ifdef MACOSX if ([[NSUserDefaults standardUserDefaults] objectForKey: @"MESSAGE_LIST_FONT_NAME"] ) { seenMessageFont = [NSFont fontFromFamilyName: [[NSUserDefaults standardUserDefaults] stringForKey: @"MESSAGE_LIST_FONT_NAME"] trait: NSUnboldFontMask size: [[[NSUserDefaults standardUserDefaults] objectForKey: @"MESSAGE_LIST_FONT_SIZE"] intValue]]; } else { seenMessageFont = [NSFont systemFontOfSize: [NSFont smallSystemFontSize]]; } #else seenMessageFont = [NSFont systemFontOfSize: 0]; #endif RETAIN(seenMessageFont); } return seenMessageFont; } // // // + (void) updateCache { DESTROY(deletedMessageFont); DESTROY(headerNameFont); DESTROY(headerValueFont); DESTROY(messageFont); DESTROY(plainTextMessageFont); DESTROY(recentMessageFont); DESTROY(seenMessageFont); } @end GNUMail/Framework/GNUMail/NSPasteboard+Extensions.m0100644000014600001460000000376010424672357022634 0ustar monotonemonotone/* ** NSPasteboard+Extensions.m ** ** Copyright (c) 2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "NSPasteboard+Extensions.h" #include "Constants.h" #include // // This extension allows one to automatically add a message // to an existing pasteboard's property list. The message // has to be initialized - i.e., its raw source must be // immediately available. // // If the pasteboard does NOT contain any message, it'll declare // the new pasteboard type (MessagePboardType). // @implementation NSPasteboard (GNUMailPasteboardExtensions) - (void) addMessage: (CWMessage *) theMessage { NSMutableArray *aPropertyList; aPropertyList = [[NSMutableArray alloc] init]; if ([[self types] containsObject: MessagePboardType]) { [aPropertyList addObjectsFromArray: [self propertyListForType: MessagePboardType]]; } else { [self declareTypes: [NSArray arrayWithObjects: MessagePboardType, nil] owner: [NSApp delegate]]; } [aPropertyList addObject: [NSDictionary dictionaryWithObjectsAndKeys: [NSArchiver archivedDataWithRootObject: [theMessage flags]], @"Flags", [theMessage rawSource], @"Message", nil]]; [self setPropertyList: aPropertyList forType: MessagePboardType]; RELEASE(aPropertyList); } @end GNUMail/Framework/GNUMail/NSUserDefaults+Extensions.m0100644000014600001460000000376610601706270023151 0ustar monotonemonotone/* ** NSUserDefaults+Extensions.m ** ** Copyright (C) 2002-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "NSUserDefaults+Extensions.h" @implementation NSUserDefaults (GNUMailColorExtensions) - (NSColor *) colorForKey: (NSString *) theKey { NSString *aString; NSColor *aColor; float r, g, b; aString = [self objectForKey: theKey]; if ( !aString ) { return nil; } if (sscanf([aString cString], "%f %f %f", &r, &g, &b) != 3) { return nil; } aColor = [NSColor colorWithCalibratedRed: r green: g blue: b alpha: 1.0]; return aColor; } // // // - (void) setColor: (NSColor *) theColor forKey: (NSString *) theKey { NSString *aString; if ( !theColor || !theKey ) { return; } #ifdef MACOSX theColor = [theColor colorUsingColorSpaceName: NSCalibratedRGBColorSpace]; #endif aString = [NSString stringWithFormat: @"%f %f %f", [theColor redComponent], [theColor greenComponent], [theColor blueComponent]]; [self setObject: aString forKey: theKey]; } // // // - (int) integerForKey: (NSString *) theKey default: (int) theValue { id o; o = [self objectForKey: theKey]; if (o) { return [o intValue]; } return theValue; } @end GNUMail/Framework/GNUMail/PasswordPanelController.m0100644000014600001460000000513310424672357022776 0ustar monotonemonotone/* ** PasswordPanelController.m ** ** Copyright (c) 2001-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "PasswordPanelController.h" #include "GNUMail.h" #include "Constants.h" #ifndef MACOSX #include "PasswordPanel.h" #endif // // // @implementation PasswordPanelController - (id) initWithWindowNibName: (NSString *) windowNibName { #ifdef MACOSX self = [super initWithWindowNibName: windowNibName]; #else PasswordPanel *aPasswordPanel; aPasswordPanel = [[PasswordPanel alloc] initWithContentRect: NSMakeRect(200,200,290,150) styleMask: NSTitledWindowMask|NSMiniaturizableWindowMask backing: NSBackingStoreBuffered defer: YES]; self = [super initWithWindow: aPasswordPanel]; [aPasswordPanel layoutPanel]; [aPasswordPanel setDelegate: self]; // We link our outlets passwordSecureField = aPasswordPanel->passwordSecureField; RELEASE(aPasswordPanel); #endif return self; } // // // #ifdef MACOSX - (void) awakeFromNib { [[self window] setInitialFirstResponder: [[passwordSecureField cell] controlView]]; } #endif // // // - (void) dealloc { NSDebugLog(@"PasswordPanelController: -dealloc"); RELEASE(password); [super dealloc]; } // // action methods // - (IBAction) okClicked: (id) sender { [self setPassword: [passwordSecureField stringValue]]; [NSApp stopModal]; [self close]; } - (IBAction) cancelClicked: (id) sender { [self setPassword: nil]; [NSApp stopModalWithCode: NSRunAbortedResponse]; [self close]; } // // delegate methods // - (void) windowWillClose: (NSNotification *) theNotification { // Do nothing } // // access/mutation methods // - (NSString *) password { return password; } - (void) setPassword: (NSString *) thePassword { if ( thePassword ) { RETAIN(thePassword); RELEASE(password); password = thePassword; } else { DESTROY(password); } } @end GNUMail/Framework/GNUMail/PasswordPanel.m0100644000014600001460000000634210424672357020735 0ustar monotonemonotone/* ** PasswordPanel.m ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "PasswordPanel.h" #include "Constants.h" #include "LabelWidget.h" @implementation PasswordPanel // // // - (void) dealloc { NSDebugLog(@"PasswordPanel: -dealloc"); RELEASE(passwordSecureField); [super dealloc]; } // // // - (void) layoutPanel { NSButton *okButton, *cancelButton; LabelWidget *passwordLabel; NSImageView *icon; icon = [[NSImageView alloc] initWithFrame: NSMakeRect(10,90,48,48)]; [icon setImageAlignment: NSImageAlignCenter]; [icon setImage: [NSImage imageNamed: @"pgp-mail.tiff"]]; [icon setImageFrameStyle: NSImageFrameNone]; [icon setEditable: NO]; [[self contentView] addSubview: icon]; RELEASE(icon); passwordLabel = [LabelWidget labelWidgetWithFrame: NSMakeRect(80,90,250,TextFieldHeight) label: _(@"Please enter your password:")]; [passwordLabel setFont: [NSFont systemFontOfSize: 14]]; [[self contentView] addSubview: passwordLabel]; passwordSecureField = [[NSSecureTextField alloc] initWithFrame: NSMakeRect(20,50,250,TextFieldHeight)]; [passwordSecureField setSelectable: YES]; [passwordSecureField setTarget: [self windowController]]; [passwordSecureField setAction: @selector(okClicked:)]; [[self contentView] addSubview: passwordSecureField]; cancelButton = [[NSButton alloc] initWithFrame: NSMakeRect(110,10,75,ButtonHeight)]; [cancelButton setButtonType: NSMomentaryPushButton]; [cancelButton setKeyEquivalent: @"\e"]; [cancelButton setTitle: _(@"Cancel")]; [cancelButton setTarget: [self windowController]]; [cancelButton setAction: @selector(cancelClicked:)]; [[self contentView] addSubview: cancelButton]; RELEASE(cancelButton); okButton = [[NSButton alloc] initWithFrame: NSMakeRect(195,10,75,ButtonHeight)]; [okButton setButtonType: NSMomentaryPushButton]; [okButton setKeyEquivalent: @"\r"]; [okButton setImagePosition: NSImageRight]; [okButton setImage: [NSImage imageNamed: @"common_ret"]]; [okButton setAlternateImage: [NSImage imageNamed: @"common_retH"]]; [okButton setTitle: _(@"OK")]; [okButton setTarget: [self windowController]]; [okButton setAction: @selector(okClicked:)]; [[self contentView] addSubview:okButton]; RELEASE(okButton); // We set the initial responder and the next key views [self setInitialFirstResponder: passwordSecureField]; [passwordSecureField setNextKeyView: cancelButton]; [cancelButton setNextKeyView: okButton]; [okButton setNextKeyView: passwordSecureField]; } @end GNUMail/Framework/GNUMail/PreferencesWindowController.m0100644000014600001460000002633110601706270023635 0ustar monotonemonotone/* ** PreferencesWindowController.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "PreferencesWindowController.h" #include "ConsoleWindowController.h" #include "Constants.h" #include "GNUMail.h" #include "MailWindowController.h" #include "NSBundle+Extensions.h" #include "NSUserDefaults+Extensions.h" #include "GNUMailBundle.h" #ifndef MACOSX #include "PreferencesWindow.h" #endif static PreferencesWindowController *singleInstance = nil; // // Private interface // @interface PreferencesWindowController (Private) - (void) _initializeModuleWithName: (NSString *) theName atIndex: (int) theIndex; - (void) _releaseLoadedBundles; - (void) _selectCellWithTitle: (NSString *) theTitle; @end // // // @implementation PreferencesWindowController - (id) initWithWindowNibName: (NSString *) windowNibName { NSDictionary *allPreferences; #ifdef MACOSX self = [super initWithWindowNibName: windowNibName]; #else PreferencesWindow *preferencesWindow; preferencesWindow = [[PreferencesWindow alloc] initWithContentRect: NSMakeRect(250,250,472,400) styleMask: NSTitledWindowMask backing: NSBackingStoreRetained defer: NO]; self = [super initWithWindow: preferencesWindow]; [preferencesWindow layoutWindow]; [preferencesWindow setDelegate: self]; // We link our outlets matrix = preferencesWindow->matrix; scrollView = preferencesWindow->scrollView; box = preferencesWindow->box; expert = preferencesWindow->expert; RELEASE(preferencesWindow); #endif // We copy the current preferences to a volatile domain allPreferences = [NSDictionary dictionaryWithDictionary: [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]]; // FIXME - This cause a segfault on OS X when reloading a 2nd time the preferences panel #ifndef MACOSX [[NSUserDefaults standardUserDefaults] removeVolatileDomainForName: @"PREFERENCES"]; #endif [[NSUserDefaults standardUserDefaults] setVolatileDomain: allPreferences forName: @"PREFERENCES"]; // We set our window title [[self window] setTitle: _(@"Preferences Panel")]; // We set our mode [self setMode: [[NSUserDefaults standardUserDefaults] integerForKey: @"PREFERENCES_MODE" default: MODE_STANDARD]]; // We initialize our matrix with the standard modules [self initializeWithStandardModules]; // We then add our additional modules [self initializeWithOptionalModules]; // We finally set our autosave window frame name and restore the one from the user's defaults. [[self window] setFrameAutosaveName: @"PreferencesWindow"]; [[self window] setFrameUsingName: @"PreferencesWindow"]; return self; } // // // - (void) dealloc { [self _releaseLoadedBundles]; RELEASE(_allModules); [super dealloc]; } // // delegate methods // - (void) windowDidLoad { // We maintain an array of opened modules _allModules = [[NSMutableDictionary alloc] initWithCapacity: 10]; } // // // - (void) windowWillClose: (NSNotification *) theNotification { // We save our current preferences setting (expert/normal) [[NSUserDefaults standardUserDefaults] setInteger: _mode forKey: @"PREFERENCES_MODE"]; AUTORELEASE(self); singleInstance = nil; } // // // - (void) handleCellAction: (id) sender { id aModule; aModule = [_allModules objectForKey: [[matrix selectedCell] title]]; if (aModule) { [self addModuleToView: aModule]; } else { NSLog(@"Unable to load the %@ bundle.", [[matrix selectedCell] title]); } } // // action methods // - (IBAction) cancelClicked: (id) sender { [self close]; } // // // - (IBAction) expertClicked: (id) sender { NSString *titleOfSelectedCell; titleOfSelectedCell = [[matrix selectedCell] stringValue]; if (_mode == MODE_STANDARD) { [self setMode: MODE_EXPERT]; } else { [self setMode: MODE_STANDARD]; } // We initialize our matrix with the standard modules [self initializeWithStandardModules]; // We then add our additional modules [self initializeWithOptionalModules]; // We reselect the right cell [self _selectCellWithTitle: titleOfSelectedCell]; } // // // - (IBAction) saveAndClose: (id) sender { [self savePreferences: nil]; [self close]; } // // // - (IBAction) savePreferences: (id) sender { NSArray *allNames; id aModule; int i; allNames = [_allModules allKeys]; for (i = 0; i < [allNames count]; i++) { aModule = [_allModules objectForKey: [allNames objectAtIndex: i]]; if ( [aModule hasChangesPending] ) { [aModule saveChanges]; } } [[NSUserDefaults standardUserDefaults] synchronize]; } // // other methods // - (void) addModuleToView: (id) aModule { if (aModule == nil) { return; } if ([box contentView] != [aModule view]) { #ifdef MACOSX NSRect aFrame; float delta; // Compute the height delta between the current module view and the new module view aFrame = [[box contentView] frame]; delta = [[aModule view] frame].size.height - aFrame.size.height; [box setContentView: _blankView]; // Resize the box aFrame = [box frame]; aFrame.origin.y -= delta; aFrame.size.height += delta; [box setFrame: aFrame]; // Resize the window aFrame = [NSWindow contentRectForFrameRect: [[self window] frame] styleMask: [[self window] styleMask]]; aFrame.origin.y -= delta; aFrame.size.height += delta; aFrame = [NSWindow frameRectForContentRect: aFrame styleMask: [[self window] styleMask]]; [[self window] setFrame: aFrame display: YES animate: YES]; #endif [box setContentView: [aModule view]]; [box setTitle: [aModule name]]; } } // // // - (void) initializeWithStandardModules { if (_mode == MODE_STANDARD) { [matrix renewRows: 1 columns: 6]; [self _initializeModuleWithName: @"Account" atIndex: 0]; [self _initializeModuleWithName: @"Viewing" atIndex: 1]; [self _initializeModuleWithName: @"Receiving" atIndex: 2]; [self _initializeModuleWithName: @"Compose" atIndex: 3]; [self _initializeModuleWithName: @"Fonts" atIndex: 4]; [self _initializeModuleWithName: @"Colors" atIndex: 5]; } else { [matrix renewRows: 1 columns: 10]; [self _initializeModuleWithName: @"Account" atIndex: 0]; [self _initializeModuleWithName: @"Viewing" atIndex: 1]; [self _initializeModuleWithName: @"Sending" atIndex: 2]; [self _initializeModuleWithName: @"Receiving" atIndex: 3]; [self _initializeModuleWithName: @"Compose" atIndex: 4]; [self _initializeModuleWithName: @"Fonts" atIndex: 5]; [self _initializeModuleWithName: @"Colors" atIndex: 6]; [self _initializeModuleWithName: @"MIME" atIndex: 7]; [self _initializeModuleWithName: @"Filtering" atIndex: 8]; [self _initializeModuleWithName: @"Advanced" atIndex: 9]; } } // // // - (void) initializeWithOptionalModules { int i; for (i = 0; i < [[GNUMail allBundles] count]; i++) { id aBundle; aBundle = [[GNUMail allBundles] objectAtIndex: i]; if ( [aBundle hasPreferencesPanel] ) { id aModule; NSButtonCell *aButtonCell; int column; // We add our column [matrix addColumn]; column = ([matrix numberOfColumns] - 1); // We get our Preferences module and we add it to our matrix. aModule = (id)[aBundle preferencesModule]; [_allModules setObject: aModule forKey: [aModule name]]; aButtonCell = [matrix cellAtRow: 0 column: column]; [aButtonCell setTag: column]; [aButtonCell setTitle: [aModule name]]; #ifdef MACOSX [aButtonCell setFont: [NSFont systemFontOfSize: 10]]; [aButtonCell setButtonType: NSOnOffButton]; [aButtonCell setBezelStyle: 0]; // not documented but I assume it means None :) [aButtonCell setBordered: NO]; [aButtonCell setGradientType: NSGradientNone]; #else [aButtonCell setFont: [NSFont systemFontOfSize: 8]]; #endif [aButtonCell setImage: [aModule image]]; } } [matrix sizeToCells]; [matrix setNeedsDisplay: YES]; } // // access/mutation methods // - (NSMatrix *) matrix { return matrix; } // // // - (int) mode { return _mode; } // // // - (void) setMode: (int) theMode { _mode = theMode; if (_mode == MODE_EXPERT) { [expert setTitle: _(@"Standard")]; } else { [expert setTitle: _(@"Expert")]; } } // // class methods // + (id) singleInstance { if ( !singleInstance ) { singleInstance = [[PreferencesWindowController alloc] initWithWindowNibName: @"PreferencesWindow"]; // We select the first cell in our matrix [[singleInstance matrix] selectCellAtRow: 0 column: 0]; [singleInstance handleCellAction: [singleInstance matrix]]; } else { return nil; } return singleInstance; } @end // // Private interface // @implementation PreferencesWindowController (Private) - (void) _initializeModuleWithName: (NSString *) theName atIndex: (int) theIndex { id aModule; NSButtonCell *aButtonCell; aModule = [NSBundle instanceForBundleWithName: theName]; if (!aModule) { NSLog(@"Unable to initialize module %@", theName); return; } [_allModules setObject: aModule forKey: _(theName)]; aButtonCell = [matrix cellAtRow: 0 column: theIndex]; [aButtonCell setTag: theIndex]; [aButtonCell setTitle: [aModule name]]; #ifdef MACOSX [aButtonCell setFont: [NSFont systemFontOfSize: 10]]; #else [aButtonCell setFont: [NSFont systemFontOfSize: 8]]; #endif [aButtonCell setImage: [aModule image]]; } // // // - (void) _releaseLoadedBundles { NSEnumerator *aEnumerator; id aModule; aEnumerator = [_allModules objectEnumerator]; while ((aModule = [aEnumerator nextObject])) { RELEASE(aModule); } } // // // - (void) _selectCellWithTitle: (NSString *) theTitle { int i; for (i = 0; i < [matrix numberOfColumns]; i++) { if ( [theTitle isEqualToString: [[matrix cellAtRow: 0 column: i] stringValue]] ) { [matrix selectCellAtRow: 0 column: i]; [self addModuleToView: [_allModules objectForKey: theTitle]]; return; } } // No cell found, we select the first one and perform the action [[singleInstance matrix] selectCellAtRow: 0 column: 0]; [singleInstance handleCellAction: matrix]; [self addModuleToView: [_allModules objectForKey: [[matrix selectedCell] title]]]; } @end GNUMail/Framework/GNUMail/PreferencesWindow.m0100644000014600001460000000665210424672357021610 0ustar monotonemonotone/* ** PreferencesWindow.m ** ** Copyright (c) 2001-2005 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "PreferencesWindow.h" #include "Constants.h" // // // @implementation PreferencesWindow - (void) dealloc { RELEASE(box); RELEASE(matrix); RELEASE(scrollView); RELEASE(expert); [super dealloc]; } // // // - (void) layoutWindow { NSButton *ok, *apply, *cancel; NSButtonCell *cell; box = [[NSBox alloc] initWithFrame: NSMakeRect(8,41,455,260)]; [box setTitlePosition: NSAtTop]; [box setBorderType: NSGrooveBorder]; [[self contentView] addSubview: box]; cell = [[NSButtonCell alloc] init]; AUTORELEASE(cell); [cell setHighlightsBy: NSChangeBackgroundCellMask]; [cell setShowsStateBy: NSChangeBackgroundCellMask]; [cell setImagePosition: NSImageAbove]; matrix = [[NSMatrix alloc] initWithFrame: NSMakeRect(8,306,455,86) mode: NSRadioModeMatrix prototype: cell numberOfRows: 1 numberOfColumns: 10]; [matrix setTarget: [self windowController]]; [matrix setCellSize: NSMakeSize(64,64)]; [matrix setAction: @selector(handleCellAction:)]; scrollView = [[NSScrollView alloc] initWithFrame:NSMakeRect(8,306,455,86)]; [scrollView setBorderType: NSBezelBorder]; [scrollView setHasHorizontalScroller: YES]; [scrollView setHasVerticalScroller: NO]; [scrollView setDocumentView: matrix]; [[self contentView] addSubview: scrollView]; // We create the buttons expert = [[NSButton alloc] initWithFrame:NSMakeRect(8,8,80,ButtonHeight)]; [expert setTitle: _(@"Expert")]; [expert setTarget: [self windowController]]; [expert setAction: @selector(expertClicked:)]; [[self contentView] addSubview: expert]; apply = [[NSButton alloc] initWithFrame:NSMakeRect(230,8,75,ButtonHeight)]; [apply setTitle: _(@"Apply")]; [apply setTarget: [self windowController]]; [apply setAction: @selector(savePreferences:)]; [[self contentView] addSubview: apply]; RELEASE(apply); cancel = [[NSButton alloc] initWithFrame:NSMakeRect(310,8,75,ButtonHeight)]; [cancel setTitle: _(@"Cancel")]; [cancel setKeyEquivalent: @"\e"]; [cancel setTarget: [self windowController]]; [cancel setAction: @selector(cancelClicked:)]; [[self contentView] addSubview: cancel]; RELEASE(cancel); ok = [[NSButton alloc] initWithFrame:NSMakeRect(390,8,75,ButtonHeight)]; [ok setButtonType: NSMomentaryPushButton]; [ok setKeyEquivalent: @"\r"]; [ok setImagePosition: NSImageRight]; [ok setImage: [NSImage imageNamed: @"common_ret"]]; [ok setAlternateImage: [NSImage imageNamed: @"common_retH"]]; [ok setTitle: _(@"OK")]; [ok setTarget: [self windowController]]; [ok setAction: @selector(saveAndClose:)]; [[self contentView] addSubview: ok]; RELEASE(ok); } @end GNUMail/Framework/GNUMail/StripeTableView.m0100644000014600001460000000553510424672357021227 0ustar monotonemonotone/* ** StripeTableView.m ** ** Copyright (c) 2003 ** ** Author: Francis Lachapelle ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #import "StripeTableView.h" @implementation StripeTableView // // Method of NSTableView. // Highlights the region of the receiver in theRect. // This method is invoked before drawRow:clipRect:.drawn. // - (void) highlightSelectionInClipRect: (NSRect) theRect { [self drawStripesInRect: theRect]; [super highlightSelectionInClipRect: theRect]; } // // Method of NSTableView. // Draws the grid lines within theRect, using the grid color set with setGridColor:. // This method draws a grid regardless of whether the receiver is set to draw // one automatically. // - (void) drawGridInClipRect: (NSRect) theRect { NSArray *columnsArray; NSRect aRect; int i, xPos; aRect = [self bounds]; columnsArray = [self tableColumns]; xPos = 0; for(i = 0 ; i < [columnsArray count] ; i++) { xPos += [[columnsArray objectAtIndex:i] width] + [self intercellSpacing].width; [[NSColor colorWithCalibratedWhite: 0.0 alpha: 0.1] set]; [NSBezierPath strokeLineFromPoint: NSMakePoint(aRect.origin.x - 0.5 + xPos, aRect.origin.y) toPoint: NSMakePoint(aRect.origin.x - 0.5 + xPos, aRect.size.height)]; } } // // // - (void) drawStripesInRect: (NSRect) theRect { NSRect stripeRect; float fullRowHeight, yClip; int firstStripe; fullRowHeight = [self rowHeight] + [self intercellSpacing].height; yClip = NSMaxY(theRect); firstStripe = theRect.origin.y / fullRowHeight; if (firstStripe % 2 == 0) { firstStripe++; } stripeRect.origin.x = theRect.origin.x; stripeRect.origin.y = firstStripe * fullRowHeight; stripeRect.size.width = theRect.size.width; stripeRect.size.height = fullRowHeight; if (sStripeColor == nil) { sStripeColor = [[NSColor colorWithCalibratedRed: (237.0 / 255.0) green: (243.0 / 255.0) blue: (254.0 / 255.0) alpha: 1.0] retain]; } [sStripeColor set]; while (stripeRect.origin.y < yClip) { NSRectFill(stripeRect); stripeRect.origin.y += fullRowHeight * 2.0; } } @end GNUMail/Framework/GNUMail/STScriptingSupport.m0100644000014600001460000001101210601435447021741 0ustar monotonemonotone/** ScriptingSupport Code for loading scripting Copy and include this file into your application project. NOTE: Please, do not modify this file. It is part of the StepTalk and depends on its interface. Copyright (c) 2002 Stefan Urbanek Written by: Stefan Urbanek Date: 2002 Apr 13 This file is part of the StepTalk project. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "STScriptingSupport.h" #import #import #import #import #import #import #import @implementation NSApplication (STApplicationScripting) - (NSBundle *)_applicationScriptingBundle { NSFileManager *manager = [NSFileManager defaultManager]; NSEnumerator *enumerator; NSString *path; NSArray *paths; BOOL isDir; paths = NSStandardLibraryPaths(); enumerator = [paths objectEnumerator]; while( (path = [enumerator nextObject]) ) { path = [path stringByAppendingPathComponent:@"Bundles"]; path = [path stringByAppendingPathComponent:@"ApplicationScripting"]; path = [path stringByAppendingPathExtension:@"bundle"]; if( [manager fileExistsAtPath:path isDirectory:&isDir] && isDir) { return [NSBundle bundleWithPath:path]; } } return nil; } - (BOOL)initializeApplicationScripting { NSBundle *bundle; if(![self isScriptingSupported]) { NSRunAlertPanel(@"Scripting is not available", @"Application scripting bundle is not installed. ", @"Cancel", nil, nil); return NO; } NSLog(@"Loading application scripting support"); bundle = [self _applicationScriptingBundle]; if(bundle) { /* Load the bundle! */ [[bundle principalClass] class]; if([self respondsToSelector:@selector(setUpApplicationScripting)]) { return [self setUpApplicationScripting]; } else { NSRunAlertPanel(@"Broken scripting support", @"Scripting support cannot be loaded, because " @"the application scripting bundle is broken.", @"Cancel", nil, nil); return NO; } } else { NSRunAlertPanel(@"Cannot initialize scripting", @"Unable to load application scripting bundle.", @"Cancel", nil, nil); return NO; } } - (BOOL)isScriptingSupported { return ([self _applicationScriptingBundle] != nil); } - (void)_loadAppTalkAndRetryAction:(SEL)sel with:(id)anObject { static BOOL isIn = NO; if(isIn) { NSLog(@"Error occurred while loading application scripting support"); isIn = NO; return; } isIn = YES; if([self initializeApplicationScripting]) { [self performSelector:sel withObject:anObject]; } isIn = NO; } - (id)_loadAppTalkAndRetryAction:(SEL)sel { static BOOL isIn = NO; id retval = nil; if(isIn) { NSLog(@"Error occurred while loading application scripting support"); isIn = NO; return nil; } isIn = YES; if([self initializeApplicationScripting]) { retval = [self performSelector:sel]; } isIn = NO; return retval; } - (void)orderFrontScriptsPanel:(id)sender { [self _loadAppTalkAndRetryAction:_cmd with:sender]; } - (void)orderFrontTranscriptWindow:(id)sender { [self _loadAppTalkAndRetryAction:_cmd with:sender]; } - (NSMenu *)scriptingMenu { return [self _loadAppTalkAndRetryAction:_cmd]; } @end GNUMail/Framework/GNUMail/Task.m0100644000014600001460000001130610601435447017043 0ustar monotonemonotone/* ** Task.m ** ** Copyright (c) 2002-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "Task.h" #include "Constants.h" #include #include #include #include // // // @implementation Task - (id) init { self = [super init]; [self setMessage: nil]; [self setUnmodifiedMessage: nil]; [self setKey: nil]; [self setSendingKey: nil]; [self setDate: [NSDate date]]; [self setOwner: nil]; [self setFilteredMessagesFolders: [NSMutableArray array]]; op = sub_op = total_size = current_size = filtered_count = received_count = total_count = 0; is_running = immediate = NO; origin = ORIGIN_USER; _controllers = [[NSMutableArray alloc] init]; _subtitle = nil; return self; } // // // - (void) dealloc { RELEASE(message); RELEASE(unmodifiedMessage); RELEASE(key); RELEASE(sendingKey); RELEASE(date); RELEASE(owner); RELEASE(filteredMessagesFolders); RELEASE(_controllers); RELEASE(_subtitle); [super dealloc]; } // // NSCoding protocol // // We do NOT store the owner and if the task is running. The task // is obviously not running when it's encoded :-) // - (void) encodeWithCoder: (NSCoder *) theCoder { [theCoder encodeObject: [self message]]; [theCoder encodeObject: [self unmodifiedMessage]]; [theCoder encodeObject: [self key]]; [theCoder encodeObject: [self sendingKey]]; [theCoder encodeObject: [NSNumber numberWithInt: op]]; [theCoder encodeObject: [NSNumber numberWithInt: sub_op]]; [theCoder encodeObject: [self date]]; } // // // - (id) initWithCoder: (NSCoder *) theCoder { self = [super init]; [self setMessage: [theCoder decodeObject]]; [self setUnmodifiedMessage: [theCoder decodeObject]]; [self setKey: [theCoder decodeObject]]; [self setSendingKey: [theCoder decodeObject]]; [self setDate: [theCoder decodeObject]]; [self setOwner: nil]; [self setFilteredMessagesFolders: [NSMutableArray array]]; op = sub_op = filtered_count = received_count = total_count = 0; is_running = NO; _controllers = [[NSMutableArray alloc] init]; return self; } // // NSCopying protocol // - (id) copyWithZone: (NSZone *) zone { Task *aTask; aTask = [[Task alloc] init]; [aTask setMessage: [self message]]; [aTask setUnmodifiedMessage: [self unmodifiedMessage]]; [aTask setKey: [self key]]; [aTask setSendingKey: [self sendingKey]]; [aTask setDate: [self date]]; [aTask setOwner: [self owner]]; aTask->op = op; aTask->sub_op = sub_op; aTask->is_running = is_running; aTask->received_count = received_count; aTask->filtered_count = filtered_count; return aTask; } // // // - (id) message { return message; } - (void) setMessage: (id) theMessage { ASSIGN(message,theMessage); } // // // - (id) unmodifiedMessage { return unmodifiedMessage; } - (void) setUnmodifiedMessage: (id) theMessage { ASSIGN(unmodifiedMessage, theMessage); } // // // - (id) key { return key; } - (void) setKey: (id) theKey { ASSIGN(key, theKey); } // // // - (id) sendingKey { return sendingKey; } - (void) setSendingKey: (id) theKey { ASSIGN(sendingKey, theKey); } // // // - (NSDate *) date { return date; } - (void) setDate: (NSDate *) theDate { ASSIGN(date, theDate); } // // // - (id) owner { return owner; } - (void) setOwner: (id) theOwner { ASSIGN(owner, theOwner); } // // // - (NSMutableArray *) filteredMessagesFolders { return filteredMessagesFolders; } - (void) setFilteredMessagesFolders: (NSMutableArray *) theMutableArray { ASSIGN(filteredMessagesFolders, theMutableArray); } // // // - (void) addController: (id) theController { if (theController && ![_controllers containsObject: theController]) { [_controllers addObject: theController]; } } // // // - (NSArray *) allControllers { return _controllers; } // // // - (NSString *) title { return @""; } // // // - (NSString *) subtitle { return _subtitle; } - (void) setSubtitle: (NSString *) theSubtitle { ASSIGN(_subtitle, theSubtitle); } @end GNUMail/Framework/GNUMail/TaskManager.m0100644000014600001460000022160610613064243020337 0ustar monotonemonotone/* ** TaskManager.m ** ** Copyright (c) 2002-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "TaskManager.h" #include "ConsoleWindowController.h" #include "Constants.h" #include "EditWindowController.h" #include "ExtendedTableView.h" #include "Filter.h" #include "FilterManager.h" #include "FindWindowController.h" #include "GNUMail.h" #include "MailboxManagerCache.h" #include "MailboxManagerController.h" #include "MailWindowController.h" #include "MessageViewWindowController.h" #include "NSPasteboard+Extensions.h" #include "NSUserDefaults+Extensions.h" #include "Task.h" #include "Utilities.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static TaskManager *singleInstance; static Class CWIMAPStore_class; static Class CWLocalStore_class; static Class CWPOP3Store_class; static Class CWSMTP_class; // // TaskManager Private Interface // @interface TaskManager (Private) - (void) _asyncOperationForTask: (Task *) theTask; - (void) _checkMailForAccount: (NSString *) theAccountName origin: (int) theOrigin owner: (id) theOwner; - (void) _executeActionUsingFilter: (Filter *) theFilter message: (NSData *) theMessage task: (Task *) theTask; - (BOOL) _matchFilterRuleFromRawSource: (NSData *) theRawSource task: (Task *) theTask; #if 0 - (BOOL) _filterIMAPMessagesInFolder: (CWIMAPFolder *) theFolder; #endif - (void) _receiveUsingIMAPForTask: (Task *) theTask; - (void) _receiveUsingPOP3ForTask: (Task *) theTask; - (void) _receiveUsingUNIXForTask: (Task *) theTask; - (void) _sendUsingSendmailForTask: (Task *) theTask; - (void) _sendUsingSMTPForTask: (Task *) theTask; - (void) _taskCompleted: (Task *) theTask; - (void) _tick; - (void) _tick_internal; @end // // // @implementation TaskManager + (void) initialize { CWIMAPStore_class = [CWIMAPStore class]; CWLocalStore_class = [CWLocalStore class]; CWPOP3Store_class = [CWPOP3Store class]; CWSMTP_class = [CWSMTP class]; } // // // - (id) init { self = [super init]; _table = NSCreateMapTable(NSIntMapKeyCallBacks, NSObjectMapValueCallBacks, 128); _tasks = [[NSMutableArray alloc] init]; _counter = 0; return self; } // // // - (void) dealloc { NSFreeMapTable(_table); RELEASE(_tasks); [super dealloc]; } // // This method is used to add a task to the runqueue. It will NOT // add a task that is identical to one already in the runqueue. // // Those tasks include: RECEIVE_POP3 and RECEIVE_IMAP+IMAP_STATUS // - (void) addTask: (Task *) theTask { // We insert it at the beginning of our array if (theTask) { Task *aTask; int count; count = [_tasks count]; while (count--) { aTask = [_tasks objectAtIndex: count]; if ((theTask->op == RECEIVE_POP3 || (theTask->op == RECEIVE_IMAP && theTask->sub_op == IMAP_STATUS) || theTask->op == EXPUNGE_ASYNC) && [[aTask key] isEqualToString: [theTask key]]) { return; } } [_tasks insertObject: theTask atIndex: 0]; [self nextTask]; [[ConsoleWindowController singleInstance] reload]; } } // // // - (void) nextTask { Task *aTask; int i; aTask = nil; // // This method is the ONLY one that assigns the current running task. // If there's already one set, it returns nil. // // We search for a task that should be run immediately for (i = ([_tasks count] - 1); i >= 0; i--) { aTask = [_tasks objectAtIndex: i]; if (!aTask->is_running) { // We found one, let's use it. if (aTask->immediate) { aTask->is_running = YES; [[[ConsoleWindowController singleInstance] tasksTableView] setNeedsDisplay: YES]; break; } } aTask = nil; } // We haven't found an immediate task. We loop from the oldest task // to the newest one to find a task that -date meets the requirements of // the current date/time. if (!aTask) { NSDate *aDate; aDate = AUTORELEASE([[NSDate alloc] init]); for (i = ([_tasks count] - 1); i >= 0; i--) { aTask = [_tasks objectAtIndex: i]; if (!aTask->is_running) { if ([[aTask date] compare: aDate] == NSOrderedAscending) { aTask->is_running = YES; [[[ConsoleWindowController singleInstance] tasksTableView] setNeedsDisplay: YES]; break; } } aTask = nil; } } if (aTask) { NSAutoreleasePool *pool; pool = [[NSAutoreleasePool alloc] init]; switch (aTask->op) { case SEND_SENDMAIL: [self _sendUsingSendmailForTask: aTask]; break; case SEND_SMTP: [self _sendUsingSMTPForTask: aTask]; break; case RECEIVE_IMAP: [self _receiveUsingIMAPForTask: aTask]; break; case RECEIVE_POP3: [self _receiveUsingPOP3ForTask: aTask]; break; case RECEIVE_UNIX: [self _receiveUsingUNIXForTask: aTask]; break; case LOAD_ASYNC: case CONNECT_ASYNC: case SAVE_ASYNC: case SEARCH_ASYNC: case OPEN_ASYNC: case EXPUNGE_ASYNC: [self _asyncOperationForTask: aTask]; break; default: NSDebugLog(@"Unknown task type. Ignoring and keeping in the queue."); } RELEASE(pool); } } // // // - (void) removeTask: (Task *) theTask { int i; i = [_tasks indexOfObject: theTask]; if (i != NSNotFound) { [_tasks removeObjectAtIndex: i]; #ifdef MACOSX // We must do this check in case the console wasn't shown, the progress indicator // wouldn't exist. if (i < [[[ConsoleWindowController singleInstance] progressIndicators] count]) { [[[[ConsoleWindowController singleInstance] progressIndicators] objectAtIndex: i] removeFromSuperview]; } #endif [[ConsoleWindowController singleInstance] reload]; } } // // // - (Task *) taskForService: (CWService *) theService message: (CWMessage *) theMessage { Task *aTask; int count; count = [_tasks count]; while (count--) { aTask = [_tasks objectAtIndex: count]; if (aTask->service == theService && !theMessage) { return aTask; } else if (aTask->service == theService && aTask->message == theMessage) { return aTask; } } return nil; } // // // - (Task *) taskForService: (CWService *) theService { return [self taskForService: theService message: nil]; } // // Since this method is invoked a lot, we return // the ivar directly to avoid creating objects. // - (NSArray *) allTasks { return _tasks; } // // // - (void) checkForNewMail: (id) theSender controller: (MailWindowController *) theMailWindowController { NSArray *allKeys; int i, origin; // First of all, we get the 'origin' of the action. That is, if it was // initiated from the user, from the timer or from self, when verifying // mail on statup. if (theSender == theMailWindowController || theSender == [NSApp delegate]) { origin = ORIGIN_STARTUP; } else { // We clicked on the get button or on the menu item. origin = ORIGIN_USER; } // We reset our counter ivar since we don't want to check mails immediately // after we already checked for it. _counter = 0; // // If it's our menu item that called this method but, it's NOT the get "All" // that has been clicked. So, we must verify only one account. // if (theSender && [theSender isKindOfClass: [NSMenuItem class]] && [theSender tag] >= 0) { allKeys = [NSArray arrayWithObject: [theSender title]]; } // // If the user has clicked on the Get button OR // It is our "All" menu item that was clicked on. // else if ((theMailWindowController && theSender == theMailWindowController->get) || (theSender && [theSender isKindOfClass: [NSMenuItem class]] && [theSender tag] < 0)) { // We get all accounts here but we'll verify later that we only use POP3 accounts. allKeys = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] allKeys] sortedArrayUsingSelector: @selector(compare:)]; } // // Our sender is the app's delegate. That means that we were asked to verify mails // on startup. Let's only get the POP3 and UNIX accounts that we must verify on startup. // We skip over IMAP accounts since we don't want to establish the required connections. // else if (theSender == [NSApp delegate]) { NSMutableArray *aMutableArray; aMutableArray = [[NSMutableArray alloc] initWithArray: [[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] allKeys]]; for (i = ([aMutableArray count]-1); i >= 0; i--) { NSDictionary *allValues; NSString *aKey; aKey = [aMutableArray objectAtIndex: i]; // If the account is disabled or it's set to never check mail, we skip over it if ( ![[[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: aKey] objectForKey: @"ENABLED"] boolValue] || [[[[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: aKey] objectForKey: @"RECEIVE"] objectForKey: @"RETRIEVEMETHOD"] intValue] == NEVER ) { continue; } allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: aKey] objectForKey: @"RECEIVE"]; if ( ![allValues objectForKey: @"CHECKONSTARTUP"] || [[allValues objectForKey: @"CHECKONSTARTUP"] intValue] == NSOffState || ([allValues objectForKey: @"SERVERTYPE"] && [[allValues objectForKey: @"SERVERTYPE"] intValue] == IMAP) ) { [aMutableArray removeObject: aKey]; } else { NSDebugLog(@"Will verify for new mail on startup for %@", aKey); } } allKeys = AUTORELEASE(aMutableArray); } else { NSDebugLog(@"TaskManager: -checkForNewMail: controller: called w/o being handled."); return; } // We send all our tasks! for (i = 0; i < [allKeys count]; i++) { [self _checkMailForAccount: [allKeys objectAtIndex: i] origin: origin owner: theMailWindowController]; } } // // // - (void) setMessage: (id) theMessage forHash: (int) theHash { NSMapInsert(_table, (void *)theHash, theMessage); } // // // - (void) stopTask: (Task *) theTask { int op; id o; o = theTask->service; op = theTask->op; if (op == SAVE_ASYNC || !o) { return; } theTask->is_running = NO; [theTask->service cancelRequest]; // We do not refer to the task object past here since it // might alread have been autoreleased. if (op == LOAD_ASYNC || op == SEARCH_ASYNC) { [self stopTasksForService: o]; [o reconnect]; if (op == SEARCH_ASYNC) [[FindWindowController singleInstance] setSearchResults: nil forFolder: nil]; } } // // // - (void) stopTasksForService: (id) theService { Task *aTask; int count; count = [_tasks count]; while (count--) { aTask = [_tasks objectAtIndex: count]; if (aTask->service == theService) { [self removeTask: aTask]; } } } // // // - (void) run { // We create our timer, it'll get added to the runloop in the NSDefaultRunLoopMode and NSEventTrackingRunLoopMode. _timer = [NSTimer timerWithTimeInterval: 5 target: self selector: @selector(_tick) userInfo: nil repeats: YES]; [[NSRunLoop currentRunLoop] addTimer: _timer forMode: NSEventTrackingRunLoopMode]; [[NSRunLoop currentRunLoop] addTimer: _timer forMode: NSDefaultRunLoopMode]; [[NSRunLoop currentRunLoop] addTimer: _timer forMode: NSModalPanelRunLoopMode]; RETAIN(_timer); } // // // - (void) stop { [_timer invalidate]; RELEASE(_timer); } // // // - (void) fire { [_timer fire]; } // // Pantomime's delegate methods // - (void) authenticationCompleted: (NSNotification *) theNotification { Task *aTask; id o; o = [theNotification object]; aTask = [self taskForService: o]; if ([o isKindOfClass: CWSMTP_class]) { ADD_CONSOLE_MESSAGE(_(@"SMTP - Authenticated! Sending the message...")); [o sendMessage]; // We reupdate the message's size, since we now know its final value. aTask->total_size = (float)[[o messageData] length]/(float)1024;; } else if ([o isKindOfClass: CWPOP3Store_class]) { CWPOP3CacheManager *aCacheManager; NSString *aCacheFilename; // We get our POP3 cache aCacheFilename = [Utilities flattenPathFromString: [NSString stringWithFormat: @"%@ @ %@", [o username], [(CWService*)o name]] separator: '/']; aCacheManager = [[CWPOP3CacheManager alloc] initWithPath: [NSString stringWithFormat: @"%@/POP3Cache_%@", GNUMailUserLibraryPath(), aCacheFilename]]; [[o defaultFolder] setCacheManager: AUTORELEASE(aCacheManager)]; ADD_CONSOLE_MESSAGE(_(@"POP3 - Authenticated! Transferring messages...")); [[o defaultFolder] prefetch]; } else { NSString *aString; NSNumber *aNumber; ADD_CONSOLE_MESSAGE(_(@"IMAP - Authenticated!")); aString = [Utilities accountNameForServerName: [(CWService *)o name] username: [o username]]; aNumber = [[[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: aString] objectForKey: @"RECEIVE"] objectForKey: @"SHOW_WHICH_MAILBOXES"]; if (aNumber && [aNumber intValue] == IMAP_SHOW_SUBSCRIBED_ONLY) { [o subscribedFolderEnumerator]; } else { [o folderEnumerator]; } } } // // // - (void) authenticationFailed: (NSNotification *) theNotification { NSString *aString, *aName; Task *aTask; id o; o = [theNotification object]; aTask = [self taskForService: o]; // We get the right account name. if (aTask) { aName = [aTask key]; } else { aName = [Utilities accountNameForServerName: [(CWService *)o name] username: [o username]]; } if ([o isKindOfClass: CWPOP3Store_class]) { aString = _(@"POP3"); } else if ([o isKindOfClass: CWIMAPStore_class]) { aString = _(@"IMAP"); } else { aString = _(@"SMTP"); } NSRunAlertPanel(_(@"Error!"), _(@"%@ authentication failed for account %@."), _(@"OK"), NULL, NULL, aString, aName); // We now invalidate our password [[Utilities passwordCache] removeObjectForKey: [NSString stringWithFormat: @"%@ @ %@", [o username], [(CWService*)o name]]]; // We close the TCP connection. The actual "Service" object will be // released in -connectionTerminated. [o close]; // We leave the task in the queue if it's a SMTP related task. // Otherwise, we do nothing. We will do something else // in -connectionTerminated. if (aTask && [o isKindOfClass: CWSMTP_class]) { [aTask setDate: [AUTORELEASE([[NSDate alloc] init]) addTimeInterval: 300]]; aTask->is_running = NO; [[[ConsoleWindowController singleInstance] tasksTableView] setNeedsDisplay: YES]; } else if ([o isKindOfClass: CWIMAPStore_class]) { [[MailboxManagerController singleInstance] setStore: nil name: [(CWService *)o name] username: [o username]]; } } // // // - (void) serviceInitialized: (NSNotification *) theNotification { NSDictionary *allValues; NSString *aPassword; id o; o = [theNotification object]; if ([o isKindOfClass: CWSMTP_class]) { Task *aTask; aTask = [self taskForService: o]; ADD_CONSOLE_MESSAGE(_(@"SMTP - Connected to %@!"), [(CWSMTP *)o name]); // We must verify if we need to use SMTP authentifcation. allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: [aTask sendingKey]] objectForKey: @"SEND"]; if (![(CWTCPConnection *)[o connection] isSSL] && (([[allValues objectForKey: @"USESECURECONNECTION"] intValue] == SECURITY_TLS_IF_AVAILABLE && [[o capabilities] containsObject: @"STARTTLS"]) || [[allValues objectForKey: @"USESECURECONNECTION"] intValue] == SECURITY_TLS)) { [o startTLS]; return; } if ([allValues objectForKey: @"SMTP_AUTH"] && [[allValues objectForKey: @"SMTP_AUTH"] intValue] == NSOnState) { ADD_CONSOLE_MESSAGE(_(@"SMTP - Authenticating to %@ using %@..."), [allValues objectForKey: @"SMTP_HOST"], [allValues objectForKey: @"SMTP_USERNAME"]); aPassword = [Utilities passwordForKey: [aTask sendingKey] type: OTHER prompt: YES]; if (aPassword) { [o authenticate: [allValues objectForKey: @"SMTP_USERNAME"] password: aPassword mechanism: [allValues objectForKey: @"SMTP_AUTH_MECHANISM"]]; } else { [self authenticationFailed: theNotification]; } } else { // We do not need to use SMTP AUTH, let's send the message right away. [o sendMessage]; // We reupdate the message's size, since we now know its final value. aTask->total_size = (float)[[o messageData] length]/(float)1024;; } } else if ([o isKindOfClass: CWPOP3Store_class] || [o isKindOfClass: CWIMAPStore_class]) { NSString *aMechanism, *aString; aString = [Utilities accountNameForServerName: [(CWService *)o name] username: [o username]]; allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: aString] objectForKey: @"RECEIVE"]; aMechanism = nil; if (![(CWTCPConnection *)[o connection] isSSL] && (([[allValues objectForKey: @"USESECURECONNECTION"] intValue] == SECURITY_TLS_IF_AVAILABLE && ([[o capabilities] containsObject: @"STLS"] || [[o capabilities] containsObject: @"STARTTLS"])) || [[allValues objectForKey: @"USESECURECONNECTION"] intValue] == SECURITY_TLS)) { [o startTLS]; return; } if ([o isKindOfClass: CWPOP3Store_class]) { ADD_CONSOLE_MESSAGE(_(@"POP3 - Connected to %@!"), [(CWService *)o name]); if ([allValues objectForKey: @"USEAPOP"]) { aMechanism = ([[allValues objectForKey: @"USEAPOP"] intValue] == NSOnState ? (id)@"APOP" : nil); } } else { ADD_CONSOLE_MESSAGE(_(@"IMAP - Connected to %@!"), [(CWService *)o name]); aMechanism = [allValues objectForKey: @"AUTH_MECHANISM"]; if (aMechanism && [aMechanism isEqualToString: @"Password"]) { aMechanism = nil; } } aPassword = [Utilities passwordForKey: aString type: IMAP prompt: YES]; if (aPassword) { [o authenticate: [allValues objectForKey: @"USERNAME"] password: aPassword mechanism: aMechanism]; } else { [self authenticationFailed: theNotification]; } } } // // // - (void) serviceReconnected: (NSNotification *) theNotification { id o; o = [theNotification object]; if ([o isKindOfClass: CWIMAPStore_class]) { ADD_CONSOLE_MESSAGE(_(@"Reconnected to server %@"), [(CWService *)o name]); } } // // // - (void) connectionEstablished: (NSNotification *) theNotification { NSDictionary *allValues; id o; o = [theNotification object]; if ([o isKindOfClass: CWSMTP_class]) { Task *aTask; aTask = [self taskForService: o]; ADD_CONSOLE_MESSAGE(_(@"SMTP - Connected to %@!"), [(CWSMTP *)o name]); // We must verify if we need to use SMTP authentifcation. allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: [aTask sendingKey]] objectForKey: @"SEND"]; // We check if we have to enable SSL if ([allValues objectForKey: @"USESECURECONNECTION"] && [[allValues objectForKey: @"USESECURECONNECTION"] intValue] == NSOnState) { [(CWTCPConnection *)[o connection] startSSL]; } } else if ([o isKindOfClass: CWPOP3Store_class] || [o isKindOfClass: CWIMAPStore_class]) { NSString *aString; aString = [Utilities accountNameForServerName: [(CWService *)o name] username: [o username]]; allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: aString] objectForKey: @"RECEIVE"]; // We check if we have to enable SSL if ([allValues objectForKey: @"USESECURECONNECTION"] && [[allValues objectForKey: @"USESECURECONNECTION"] intValue] == NSOnState) { [(CWTCPConnection *)[o connection] startSSL]; } } } // // // - (void) connectionLost: (NSNotification *) theNotification { id o; o = [theNotification object]; if ([o isKindOfClass: CWIMAPStore_class] || [o isKindOfClass: CWPOP3Store_class]) { Task *aTask; ADD_CONSOLE_MESSAGE(_(@"Connection lost to server %@"), [(CWService *)o name]); aTask = [self taskForService: o]; if (aTask) { [self _taskCompleted: aTask]; } if ([o isKindOfClass: CWIMAPStore_class] && [(CWIMAPStore *)o lastCommand] != IMAP_LOGOUT) { [o reconnect]; } else { AUTORELEASE(o); } } } // // // - (void) connectionTerminated: (NSNotification *) theNotification { Task *aTask; id o; o = [theNotification object]; aTask = [self taskForService: o]; if (aTask) { if ([o isKindOfClass: CWPOP3Store_class]) { if (aTask->received_count == 0) { // We show the panel the user wants it and was able to succesfully authenticate to the POP3 server. if ([[NSUserDefaults standardUserDefaults] integerForKey: @"SHOW_NO_NEW_MESSAGES_PANEL" default: NSOnState] == NSOnState && [[Utilities passwordCache] objectForKey: [NSString stringWithFormat: @"%@ @ %@", [o username], [(CWService*)o name]]]) { NSRunAlertPanel(_(@"No New Messages..."), _(@"There are no new messages on %@ @ %@."), _(@"OK"), NULL, NULL, [o username], [(CWPOP3Store *)o name]); } ADD_CONSOLE_MESSAGE(_(@"No new messages on server %@"), [(CWPOP3Store *)o name]); } else { // We thread the folder, if we need to. if ([aTask owner] && [[aTask owner] respondsToSelector: @selector(dataView)] && aTask->received_count != aTask->filtered_count && [[[aTask owner] folder] allContainers]) { [[[aTask owner] folder] thread]; } } } if ([o isKindOfClass: CWPOP3Store_class] || [o isKindOfClass: CWIMAPStore_class]) { [self _taskCompleted: aTask]; } } AUTORELEASE(o); } // // // - (void) connectionTimedOut: (NSNotification *) theNotification { NSString *aString; Task *aTask; id o; o = [theNotification object]; aTask = [self taskForService: o]; // // Here are the scenarios // // Connection NOT ESTABLISHED // // SEND_SMTP Show alert. Leave task in the queue. // RECEIVE_IMAP: Show alert. Remove task from the queue. // RECEIVE_POP3: Show alert. Remove task from the queue. // CONNECT_ASYNC+IMAP Show alert. Remove task from the queue + set store to nil. // // Connection ESTABLISHED // // SEND_SMTP: Show alert. Leave task in the queue. // RECEIVE_IMAP: Show alert. Remove task from the queue. // RECEIVE_POP3: Show alert. Remove task from the queue. // {LOAD,SAVE,SEARCH,OPEN,EXPUNGE}_ASYNC Show alert. {LOAD,SEARCH,OPEN,EXPUNGE}_ASYNC close all assciated windows. // or offer a reconnect option? // if ([o isKindOfClass: CWPOP3Store_class]) { if ([o isConnected]) { aString = _(@"Connection timed out to the %@ POP3 server."); } else { aString = _(@"Unable to connect to the %@ POP3 server."); } NSRunAlertPanel(_(@"Error!"), aString, _(@"OK"), NULL, NULL, [(CWService *)o name]); [self _taskCompleted: aTask]; AUTORELEASE(o); return; } else if ([o isKindOfClass: CWIMAPStore_class]) { if ([o isConnected]) { NSRunAlertPanel(_(@"Error!"), _(@"Connection timed out to the %@ IMAP server."), _(@"OK"), NULL, NULL, [(CWService *)o name]); [self stopTasksForService: o]; [[MailboxManagerController singleInstance] setStore: nil name: [(CWService *)o name] username: [o username]]; [[MailboxManagerController singleInstance] closeWindowsForStore: o]; } else { NSRunAlertPanel(_(@"Error!"), _(@"Unable to connect to the %@ IMAP server."), _(@"OK"), NULL, NULL, [(CWService *)o name]); [self _taskCompleted: aTask]; if (aTask->op == CONNECT_ASYNC) { [[MailboxManagerController singleInstance] setStore: nil name: [(CWService *)o name] username: [o username]]; } } AUTORELEASE(o); return; } else { if ([o isConnected]) { aString = _(@"Connection timed out to the %@ SMTP server."); } else { aString = _(@"Unable to connect to the %@ SMTP server."); } NSRunAlertPanel(_(@"Error!"), aString, _(@"OK"), NULL, NULL, [(CWService *)o name]); [aTask setDate: [AUTORELEASE([[NSDate alloc] init]) addTimeInterval: 300]]; aTask->is_running = NO; [[ConsoleWindowController singleInstance] reload]; AUTORELEASE(o); return; } } // // // - (void) folderExpungeCompleted: (NSNotification *) theNotification { id o; o = [theNotification object]; if ([o isKindOfClass: CWIMAPStore_class] || [o isKindOfClass: [CWLocalFolder class]]) { Task *aTask; [[[[GNUMail lastMailWindowOnTop] windowController] folder] updateCache]; [[[GNUMail lastMailWindowOnTop] windowController] tableViewShouldReloadData]; ADD_CONSOLE_MESSAGE(_(@"Done compacting mailbox %@."), [[[[GNUMail lastMailWindowOnTop] windowController] folder] name]); aTask = [self taskForService: o]; if (aTask) { [self _taskCompleted: aTask]; } } else { [o close]; } } // // // - (void) folderExpungeFailed: (NSNotification *) theNotification { Task *aTask; id o; o = [theNotification object]; aTask = [self taskForService: o]; NSRunAlertPanel(_(@"Error!"), _(@"Unable to compact mailbox %@."), _(@"OK"), NULL, NULL, [[[theNotification userInfo] objectForKey: @"Folder"] name]); if (aTask) { [self _taskCompleted: aTask]; } } // // // - (void) folderPrefetchCompleted: (NSNotification *) theNotification { id o; o = [theNotification object]; if ([o isKindOfClass: CWIMAPStore_class] || [o isKindOfClass: [CWLocalFolder class]]) { NSUserDefaults *theDefaults; id aController, aFolder; Task *aTask; aTask = [self taskForService: o]; if (aTask && aTask->op == OPEN_ASYNC) { [self _taskCompleted: aTask]; } aFolder = [[theNotification userInfo] objectForKey: @"Folder"]; if ([o isKindOfClass: CWIMAPStore_class]) { aController = [[Utilities windowForFolderName: nil store: o] windowController]; // If we just opened the IMAP INBOX, filter messages there #if 0 if (aFolder == [o defaultFolder]) { [self _filterIMAPMessagesInFolder: [o defaultFolder]]; } #endif } else { aController = [[Utilities windowForFolderName: [o name] store: [o store]] windowController]; } theDefaults = [NSUserDefaults standardUserDefaults]; // NOTE: Hiding messages marked as deleted is the default behavior since 1.1.0pre2. if ([theDefaults integerForKey: @"HIDE_DELETED_MESSAGES" default: NSOnState] == NSOffState) { [aFolder setShowDeleted: YES]; } else { [aFolder setShowDeleted: NO]; } if ([theDefaults integerForKey: @"HIDE_READ_MESSAGES" default: NSOffState] == NSOffState) { [aFolder setShowRead: YES]; } else { [aFolder setShowRead: NO]; } if ([theDefaults integerForKey: @"AutomaticallyThreadMessages" default: NSOffState] == NSOffState) { [aFolder unthread]; } else { [aFolder thread]; } [aController updateDataView]; [[aController dataView] scrollIfNeeded]; if ([[aController folder] allContainers]) { [[aController folder] thread]; } } else if ([o isKindOfClass: CWPOP3Store_class]) { CWPOP3Message *aMessage; CWPOP3Folder *aFolder; NSString *aUID; Task *aTask; int i, count; aTask = [self taskForService: o]; aFolder = [o defaultFolder]; count = [aFolder count]; // We get all messages.. for (i = 1; i <= count; i++) { aMessage = (CWPOP3Message *)[aFolder messageAtIndex: i-1]; aUID = [aMessage UID]; // Next we verify if we really need to transfer the message if (![[aFolder cacheManager] dateForUID: aUID]) { // We do... [aMessage rawSource]; aTask->total_size += (float)[aMessage size]/(float)1024; aTask->total_count += 1; } } // If we haven't transferred any messages or if there's none // available on the server, we close the connection right away. if (aTask->total_count == 0) { [o close]; } } } // // // - (void) messagePrefetchCompleted: (NSNotification *) theNotification { CWMessage *aMessage; Task *aTask; id o; aMessage = [[theNotification userInfo] objectForKey: @"Message"]; o = [theNotification object]; aTask = [self taskForService: o]; if ([o isKindOfClass: CWPOP3Store_class]) { NSData *aData; aTask->received_count++; aData = [aMessage rawSource]; [self setMessage: aMessage forHash: [aData hash]]; [self _matchFilterRuleFromRawSource: [aMessage rawSource] task: aTask]; // If we worked on the last message in the folder, we are ready to close // the connection with the POP3 server. if ([aMessage messageNumber] == [[aMessage folder] count]) { [o close]; } } } // // // - (void) messageNotSent: (NSNotification *) theNotification { NSString *aString; Task *aTask; id o; o = [theNotification object]; if ([o isKindOfClass: CWSMTP_class]) { aString = [NSString stringWithFormat: _(@"An error occurred while sending the E-Mail. It might be a\nnetwork problem or an error in your sending preferences.\nLast response received from the server:\n\n(%d) %@\n\nTo save this E-Mail in the Drafts folder, open the Console window\nfrom the Windows menu and chose the \"Save in Drafts\" context menu item\non the corresponding row."), [[theNotification object] lastResponseCode], AUTORELEASE([[NSString alloc] initWithData: [[theNotification object] lastResponse] encoding: NSASCIIStringEncoding])]; } else { aString = _(@"An error occurred while sending the E-Mail. The path to the\nmailer might be incorrect in your sending preferences."); } NSRunAlertPanel(_(@"Error!"), aString, _(@"OK"), NULL, NULL, NULL); // The CWSMTP instance will be removed in -connectionTerminated: // since we are calling close on it. aTask = [self taskForService: o]; // We leave the task in queue. [aTask setDate: [AUTORELEASE([[NSDate alloc] init]) addTimeInterval: 300]]; aTask->is_running = NO; [[ConsoleWindowController singleInstance] reload]; if ([[theNotification object] isKindOfClass: CWSMTP_class]) { [[theNotification object] close]; } } // // // - (void) messageSent: (NSNotification *) theNotification { id aTransport; Task *aTask; aTask = [self taskForService: [theNotification object]]; ADD_CONSOLE_MESSAGE(_(@"SMTP - Sent!")); // We now remove the message from our unsent cache since it was // definitively delivered aTransport = [theNotification object]; [[MailboxManagerController singleInstance] deleteSentMessageWithID: [[aTransport message] messageID]]; if (aTask->sub_op != GNUMailRedirectMessage) { FilterManager *aFilterManager; CWURLName *theURLName; aFilterManager = (FilterManager *)[FilterManager singleInstance]; theURLName = [aFilterManager matchedURLNameFromMessageAsRawSource: [[theNotification object] messageData] type: TYPE_OUTGOING key: [[self taskForService: [theNotification object]] key] filter: nil]; if (theURLName) { [[MailboxManagerController singleInstance] addMessage: [[theNotification object] messageData] toFolder: theURLName]; } // // If the message sent was a reply to an other message, we add the PantomimeAnswered flag // to that original message. // if (aTask->sub_op == GNUMailReplyToMessage && [aTask unmodifiedMessage] && [[aTask unmodifiedMessage] folder]) { id aWindow; aWindow = [Utilities windowForFolderName: [[[aTask unmodifiedMessage] folder] name] store: [[[aTask unmodifiedMessage] folder] store]]; if (aWindow) { CWFolder *aFolder; aFolder = [[aWindow windowController] folder]; if ([aFolder->allMessages containsObject: [aTask unmodifiedMessage]]) { CWFlags *theFlags; theFlags = [[[aTask unmodifiedMessage] flags] copy]; [theFlags add: PantomimeAnswered]; [[aTask unmodifiedMessage] setFlags: theFlags]; RELEASE(theFlags); [[[aWindow windowController] dataView] setNeedsDisplay: YES]; } } } } if ([[theNotification object] isKindOfClass: CWSMTP_class]) { [[theNotification object] close]; } [self _taskCompleted: aTask]; } // // // - (void) service: (CWService *) theService receivedData: (NSData *) theData { Task *aTask; aTask = [self taskForService: theService]; if (aTask) { aTask->current_size += (float)([theData length]/(float)1024); [[[ConsoleWindowController singleInstance] tasksTableView] setNeedsDisplay: YES]; } } // // // - (void) service: (CWService *) theService sentData: (NSData *) theData { Task *aTask; aTask = [self taskForService: theService]; if (aTask) { aTask->current_size += (float)([theData length]/(float)1024); [[[ConsoleWindowController singleInstance] tasksTableView] setNeedsDisplay: YES]; } } // // // - (void) requestCancelled: (NSNotification *) theNotification { Task *aTask; id o; o = [theNotification object]; aTask = [self taskForService: o]; if ([o isKindOfClass: CWSMTP_class]) { [aTask setDate: [AUTORELEASE([[NSDate alloc] init]) addTimeInterval: 300]]; aTask->is_running = NO; aTask->current_size = 0; } else { if ([o isKindOfClass: CWIMAPStore_class] && aTask && aTask->op == CONNECT_ASYNC) { [[MailboxManagerController singleInstance] setStore: nil name: [(CWService *)o name] username: [o username]]; } [self _taskCompleted: aTask]; } AUTORELEASE(o); [[[ConsoleWindowController singleInstance] tasksTableView] setNeedsDisplay: YES]; } // // This method can be invoked if: // // 1) a message is copied to a mailbox when being received (like using POP3) // 2) a message is copied to a mailbox when being DnD by the user // 3) a message is copied to a mailbox when using "Copy/Cut & Paste" // 4) a filter? // - (void) folderAppendCompleted: (NSNotification *) theNotification { id o, aFolder, aWindow, aMessage; NSString *aFolderName; Task *aTask; o = [theNotification object]; aTask = [self taskForService: o]; if (aTask) { aTask->total_count--; if (aTask->total_count <= 0) { [self _taskCompleted: aTask]; } } // // Over POP3, we must mark messages as deleted if we have // successfully appended it to the desired folder. // aMessage = NSMapGet(_table, (void *)[[[theNotification userInfo] objectForKey: @"NSData"] hash]); if (aMessage) { if ([aMessage isKindOfClass: [CWPOP3Message class]]) { // We cache the UID of the message we just got if we have been able to // save the message on disk. If not, we'll leave it on the server. [[[aMessage folder] cacheManager] synchronize]; if (![(CWPOP3Folder *)[aMessage folder] leaveOnServer]) { [aMessage setFlags: AUTORELEASE([[CWFlags alloc] initWithFlags: PantomimeDeleted])]; } } else if ([[aMessage propertyForKey: MessageOperation] intValue] == MOVE_MESSAGES) { CWFlags *theFlags; theFlags = [[aMessage flags] copy]; [theFlags add: PantomimeDeleted]; [aMessage setFlags: theFlags]; RELEASE(theFlags); // // We refresh our _source_ window // aFolder = [aMessage folder]; aFolderName = [(CWFolder *)aFolder name]; aWindow = [Utilities windowForFolderName: aFolderName store: [aFolder store]]; [[aWindow delegate] tableViewShouldReloadData]; [[aWindow delegate] updateStatusLabel]; } NSMapRemove(_table, (void *)[[[theNotification userInfo] objectForKey: @"NSData"] hash]); } // // We now refresh the _destination_ window / node. // aFolder = [[theNotification userInfo] objectForKey: @"Folder"]; aFolderName = [(CWFolder *)aFolder name]; aWindow = [Utilities windowForFolderName: aFolderName store: [aFolder store]]; if (!aWindow) { // // We update the Mailbox Manager cache, IIF the folder wasn't open initially. // If it was open, we had its window and we are gonna refresh its cache in // -updateStatusLabel. // NSString *aUsername, *aStoreName; MailboxManagerCache *aCache; CWFlags *theFlags; unsigned int nbOfMessages, nbOfUnreadMessages; aCache = [(MailboxManagerController *)[MailboxManagerController singleInstance] cache]; theFlags = [[theNotification userInfo] objectForKey: @"Flags"]; if ([o isKindOfClass: CWIMAPStore_class]) { // // If we are transferring to an IMAP folder, we must obtain the // current values of the target folder since we haven't SELECT'ed it // (so [aFolder count] and [aFolder numberOfUnreadMessages] return 0. // aStoreName = [(CWIMAPStore *)o name]; aUsername = [(CWIMAPStore *)o username]; [aCache allValuesForStoreName: aStoreName folderName: [aFolderName stringByReplacingOccurrencesOfCharacter: [(CWIMAPStore *)o folderSeparator] withCharacter: '/'] username: aUsername nbOfMessages: &nbOfMessages nbOfUnreadMessages: &nbOfUnreadMessages]; if (theFlags && ![theFlags contain: PantomimeSeen]) nbOfUnreadMessages += 1; nbOfMessages += 1; } else { aStoreName = @"GNUMAIL_LOCAL_STORE"; aUsername = NSUserName(); nbOfMessages = [(CWLocalFolder*)aFolder count]; nbOfUnreadMessages = [aFolder numberOfUnreadMessages]; } [aCache setAllValuesForStoreName: aStoreName folderName: [aFolderName stringByReplacingOccurrencesOfCharacter: [(id)[aFolder store] folderSeparator] withCharacter: '/'] username: aUsername nbOfMessages: nbOfMessages nbOfUnreadMessages: nbOfUnreadMessages]; [[MailboxManagerController singleInstance] updateOutlineViewForFolder: aFolderName store: aStoreName username: aUsername controller: nil]; } else { [[aWindow delegate] tableViewShouldReloadData]; [[aWindow delegate] updateStatusLabel]; } } // // This method can be invoked if: // // 1) the harddisk is full and we weren't able to write the message // 2) the permissions on the mailbox (or it's parent) don't permit us to write // 3) we tried to copy/move a message to a non-selectable mailbox // 4) the message contains NUL characters and we are appending to a Cyrus // IMAP Server mailbox. This should NEVER happens unless it's a bug. // - (void) folderAppendFailed: (NSNotification *) theNotification { Task *aTask; id o; NSMutableData *aMutableData; aMutableData = [[NSMutableData alloc] initWithData: [[theNotification userInfo] objectForKey: @"NSData"]]; // We remove it from our table, in case we received it from a POP3 server. NSMapRemove(_table, (void *)[[[theNotification userInfo] objectForKey: @"NSData"] hash]); // We replace all CRLF by LF because if we were dealing with an IMAP message, // the raw source has CRLF instead of LF as line separators. [aMutableData replaceCRLFWithLF]; [[MailboxManagerController singleInstance] panic: aMutableData folder: [[[theNotification userInfo] objectForKey: @"Folder"] name]]; RELEASE(aMutableData); o = [theNotification object]; aTask = [self taskForService: o]; if (aTask) { aTask->total_count--; if (aTask->total_count <= 0) { [self _taskCompleted: aTask]; } } } // // // - (void) folderListCompleted: (NSNotification *) theNotification { Task *aTask; id o; o = [theNotification object]; aTask = [self taskForService: o]; if (aTask && aTask->op != CONNECT_ASYNC) { NSArray *subscribedFolders; subscribedFolders = [NSArray arrayWithArray: [[[theNotification userInfo] objectForKey: @"NSEnumerator"] allObjects]]; aTask->total_count = [subscribedFolders count]; [o folderStatus: subscribedFolders]; [o close]; } else { [[MailboxManagerController singleInstance] reloadFoldersForStore: o folders: [[theNotification userInfo] objectForKey: @"NSEnumerator"]]; // If we completed opening an IMAP connection and got the full list of mailboxes... if (aTask && aTask->op == CONNECT_ASYNC) { [self _taskCompleted: aTask]; } // It's important to call this after the NSMapRemove(_table, o); Otherwise, we'll end up having to replace // our entry in our map table when calling -open and we would immediately remove the Task right after. [Utilities restoreOpenFoldersForStore: o]; } } // // // - (void) folderListSubscribedCompleted: (NSNotification *) theNotification { [self folderListCompleted: theNotification]; } // // // - (void) folderSearchCompleted: (NSNotification *) theNotification { Task *aTask; id o; o = [theNotification object]; aTask = [self taskForService: o]; [self _taskCompleted: aTask]; [[FindWindowController singleInstance] setSearchResults: [[theNotification userInfo] objectForKey: @"Results"] forFolder: (CWFolder *)[[theNotification userInfo] objectForKey: @"Folder"]]; } // // // - (void) folderSearchFailed: (NSNotification *) theNotification { [[FindWindowController singleInstance] setSearchResults: nil forFolder: nil]; } // // // - (void) folderStatusCompleted: (NSNotification *) theNotification { CWFolderInformation *aFolderInformation; NSDictionary *aDictionary; NSString *aFolderName; Task *aTask; id o; o = [theNotification object]; aTask = [self taskForService: o]; aTask->received_count += 1; aFolderInformation = [[theNotification userInfo] objectForKey: @"FolderInformation"]; aFolderName = [[theNotification userInfo] objectForKey: @"FolderName"]; [aTask setSubtitle: aFolderName]; aDictionary = [NSDictionary dictionaryWithObjectsAndKeys: aFolderInformation, @"FOLDER_INFORMATION", aFolderName, @"FOLDER_NAME", [(CWService *)o name], @"STORE_NAME", [o username], @"USERNAME", [NSString stringWithFormat: @"%c", [o folderSeparator]], @"FOLDER_SEPARATOR", nil]; [[MailboxManagerController singleInstance] updateFolderInformation: aDictionary]; } // // // - (void) folderOpenCompleted: (NSNotification *) theNotification { id aFolder; aFolder = [[theNotification userInfo] objectForKey: @"Folder"]; [aFolder prefetch]; } // // // - (void) folderOpenFailed: (NSNotification *) theNotification { NSArray *allWindows; id aFolder, aWindow; int i; aFolder = [[theNotification userInfo] objectForKey: @"Folder"]; allWindows = [GNUMail allMailWindows]; for (i = 0; i < [allWindows count]; i++) { aWindow = [allWindows objectAtIndex: i]; if ([(MailWindowController *)[aWindow windowController] folder] == aFolder) { Task *aTask; NSRunAlertPanel(_(@"Error!"), _(@"Unable to open mailbox %@ on %@."), _(@"OK"), NULL, NULL, [(CWFolder *)aFolder name], [(CWService *)[theNotification object] name]); [(MailWindowController *)[aWindow windowController] setFolder: nil]; aTask = [self taskForService: [theNotification object]]; if (aTask && aTask->op == OPEN_ASYNC) { [self _taskCompleted: aTask]; } break; } } } // // // - (void) messagesCopyCompleted: (NSNotification *) theNotification { NSArray *theMessages; unsigned int nbOfTransferredMessages; theMessages = [[theNotification userInfo] objectForKey: @"Messages"]; nbOfTransferredMessages = [theMessages count]; // // We now update our MailboxManagerController cache. Since the operation // was server-side, we must obtain the current values in the cache and // increment them according to what has been transferred. // if (nbOfTransferredMessages > 0) { CWIMAPStore *theStore; NSString *aFolderName; unsigned int nbOfMessages, nbOfUnreadMessages, nbOfUnreadTransferredMessages, i; aFolderName = [[theNotification userInfo] objectForKey: @"Name"]; nbOfUnreadTransferredMessages = 0; theStore = [theNotification object]; for (i = 0; i total_count--; } if (aTask && aTask->total_count == 0) { [self _taskCompleted: aTask]; } } else if ([aMessage propertyForKey: MessageRedirecting]) { int i; for (i = 0; i < [[aTask allControllers] count]; i++) { [(EditWindowController *)[[aTask allControllers] objectAtIndex: i] setMessage: aMessage]; } [aMessage setProperty: nil forKey: MessageRedirecting]; [self _taskCompleted: aTask]; } } // // // - (void) commandCompleted: (NSNotification *) theNotification { id o; o = [theNotification object]; if ([o lastCommand] == IMAP_UID_FETCH_BODY_TEXT) { CWMessage *aMessage; Task *aTask; aMessage = [[theNotification userInfo] objectForKey: @"Message"]; aTask = [self taskForService: o message: aMessage]; if ([aMessage propertyForKey: MessagePreloading]) { id aController; int i; for (i = 0; i < [[aTask allControllers] count]; i++) { aController = [[aTask allControllers] objectAtIndex: i]; if ([aController selectedMessage] == aMessage) { [Utilities showMessage: aMessage target: [aController textView] showAllHeaders: [aController showAllHeaders]]; } } [aMessage setProperty: nil forKey: MessagePreloading]; } [self _taskCompleted: aTask]; } } // // // - (void) commandSent: (NSNotification *) theNotification { // Do nothing for now. } // // Class methods // + (id) singleInstance { if (!singleInstance) { singleInstance = [[TaskManager alloc] init]; } return singleInstance; } @end // // TaskManager private interface // @implementation TaskManager (Private) // // This will only be invoked for IMAP stores. // See Task.h -> SAVE_ASYNC, LOAD_ASYNC, CONNET_ASYNC, SEARCH_ASYNC and others. // - (void) _asyncOperationForTask: (Task *) theTask { NSDictionary *allValues; CWService *aService; allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: [theTask key]] objectForKey: @"RECEIVE"]; aService = [[MailboxManagerController singleInstance] storeForName: [allValues objectForKey: @"SERVERNAME"] username: [allValues objectForKey: @"USERNAME"]]; theTask->service = aService; } // // // - (void) _executeActionUsingFilter: (Filter *) theFilter message: (NSData *) theMessage task: (Task *) theTask { switch ([theFilter actionEMailOperation]) { case BOUNCE: case FORWARD: case REPLY: NSLog(@"Unimplemented action - ignoring."); break; default: NSLog(@"Unknown action - ignoring."); } } // // // - (BOOL) _matchFilterRuleFromRawSource: (NSData *) theRawSource task: (Task *) theTask { FilterManager *aFilterManager; NSString *aFolderName; CWURLName *theURLName; Filter *aFilter; aFilterManager = (FilterManager *)[FilterManager singleInstance]; aFilter = [aFilterManager matchedFilterForMessageAsRawSource: theRawSource type: TYPE_INCOMING]; aFolderName = nil; if (aFilter && [aFilter action] == BOUNCE_OR_FORWARD_OR_REPLY) { [self _executeActionUsingFilter: aFilter message: theRawSource task: theTask]; } else if (aFilter && [aFilter action] == PLAY_SOUND) { if ([[NSFileManager defaultManager] fileExistsAtPath: [aFilter pathToSound]]) { NSSound *aSound; aSound = [[NSSound alloc] initWithContentsOfFile: [aFilter pathToSound] byReference: YES]; [aSound play]; RELEASE(aSound); } } // Even if we bounced (or forward or replied to the) message, or played a sound // when receiving it, we append it to our folder. theURLName = [aFilterManager matchedURLNameFromMessageAsRawSource: theRawSource type: TYPE_INCOMING key: [theTask key] filter: aFilter]; if (theTask->origin == ORIGIN_USER) { // We verify if our task owner is a MailWindowController. If it's the case, // we must check if we really need to add the the folder to our list of // filtered message folders. if ([theTask owner] && [[theTask owner] respondsToSelector: @selector(dataView)] && [Utilities URLWithString: [theURLName stringValue] matchFolder: [[theTask owner] folder]]) { // Same folder, we skip it. goto done; } if ([[theURLName protocol] caseInsensitiveCompare: @"LOCAL"] == NSOrderedSame) { aFolderName = [NSString stringWithFormat: _(@"Local - %@"), [theURLName foldername]]; } else { aFolderName = [NSString stringWithFormat: _(@"IMAP %@@%@ - %@"), [theURLName username], [theURLName host], [theURLName foldername]]; } } done: [[MailboxManagerController singleInstance] addMessage: theRawSource toFolder: theURLName]; if (aFolderName) { theTask->filtered_count++; if (![[theTask filteredMessagesFolders] containsObject: aFolderName]) { [[theTask filteredMessagesFolders] addObject: aFolderName]; } } return YES; } // // See if an IMAP message matches a filter rule. But be careful at this // point: we only want to check filters that just read the headers. It // would be a pain to have to download every message just to check if it // matched a filter // #if 0 - (BOOL) _filterIMAPMessagesInFolder: (CWIMAPFolder *) theFolder { int j, count, filtered; NSArray *allMessages; FilterManager *aFilterManager; aFilterManager = (FilterManager *)[FilterManager singleInstance]; if (theFolder == nil) return NO; /* Make extra sure we're only checking the INBOX */ if (![theFolder isKindOfClass: [CWIMAPFolder class]] || [[theFolder store] defaultFolder] != theFolder) return NO; allMessages = [theFolder allMessages]; count = [allMessages count]; filtered = 0; for (j = count-1; j >=0; j--) { Filter *aFilter; CWMessage *aMessage; aMessage = [allMessages objectAtIndex: j]; if ([[aMessage flags] contain: PantomimeSeen]) continue; aFilter = [aFilterManager matchedFilterForMessage: aMessage type: TYPE_INCOMING_QUICK]; if (aFilter == nil) continue; filtered++; if ([aFilter action] == BOUNCE_OR_FORWARD_OR_REPLY) { /* Not implemented */ } else if ([aFilter action] == PLAY_SOUND) { if ([[NSFileManager defaultManager] fileExistsAtPath: [aFilter pathToSound]]) { NSSound *aSound; aSound = [[NSSound alloc] initWithContentsOfFile: [aFilter pathToSound] byReference: YES]; [aSound play]; RELEASE(aSound); } } else if ([aFilter action] == TRANSFER_TO_FOLDER || [aFilter action] == DELETE) { CWFolder *aDestinationFolder; CWURLName *theURLName; if ([aFilter action] == DELETE) { NSString *aString; aString = [Utilities accountNameForMessage: aMessage]; theURLName = [[CWURLName alloc] initWithString: [[[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: aString] objectForKey: @"MAILBOXES"] objectForKey: @"TRASHFOLDERNAME"] path: [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]]; } else { theURLName = [[CWURLName alloc] initWithString: [aFilter actionFolderName] path: [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]]; } AUTORELEASE(theURLName); aDestinationFolder = [[MailboxManagerController singleInstance] folderForURLName: theURLName]; if (!aDestinationFolder) { return NO; } [aDestinationFolder setProperty: [NSDate date] forKey: FolderExpireDate]; [[MailboxManagerController singleInstance] transferMessages: [NSArray arrayWithObject: aMessage] fromStore: [[aMessage folder] store] fromFolder: [aMessage folder] toStore: [aDestinationFolder store] toFolder: aDestinationFolder operation: MOVE_MESSAGES]; } } if (filtered) ADD_CONSOLE_MESSAGE(_(@"IMAP - filtered %d messages"), filtered); return YES; } #endif // // We must get all body parts (download using body.peek[x]) // - (void) _receiveUsingIMAPForTask: (Task *) theTask { NSDictionary *allValues; CWIMAPStore *aStore; allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: [theTask key]] objectForKey: @"RECEIVE"]; aStore = [[CWIMAPStore alloc] initWithName: [allValues objectForKey: @"SERVERNAME"] port: [[allValues objectForKey: @"PORT"] intValue]]; [aStore addRunLoopMode: NSEventTrackingRunLoopMode]; [aStore addRunLoopMode: NSModalPanelRunLoopMode]; [aStore setUsername: [allValues objectForKey: @"USERNAME"]]; theTask->service = aStore; [aStore setDelegate: self]; [aStore connectInBackgroundAndNotify]; } // // // - (void) _receiveUsingPOP3ForTask: (Task *) theTask { NSDictionary *allValues; CWPOP3Store *aStore; // We get the values associated with the key allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: [theTask key]] objectForKey: @"RECEIVE"]; aStore = [[CWPOP3Store alloc] initWithName: [allValues objectForKey: @"SERVERNAME"] port: [[allValues objectForKey: @"PORT"] intValue]]; [aStore addRunLoopMode: NSEventTrackingRunLoopMode]; [aStore addRunLoopMode: NSModalPanelRunLoopMode]; [aStore setUsername: [allValues objectForKey: @"USERNAME"]]; theTask->service = aStore; [aStore setDelegate: self]; // We set some attributes to the POP3Folder [[aStore defaultFolder] setLeaveOnServer: ([[allValues objectForKey: @"LEAVEONSERVER"] intValue] == NSOnState ? YES : NO)]; [[aStore defaultFolder] setRetainPeriod: [[allValues objectForKey: @"RETAINPERIOD"] intValue]]; [aStore connectInBackgroundAndNotify]; } // // // - (void) _receiveUsingUNIXForTask: (Task *) theTask { CWLocalFolder *aMailSpoolFile; NSDictionary *allValues; NSAutoreleasePool *pool; NSArray *allMessages; int i; // We get our values associated with the key allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: [theTask key]] objectForKey: @"RECEIVE"]; aMailSpoolFile = [[CWLocalFolder alloc] initWithPath: [allValues objectForKey: @"MAILSPOOLFILE"]]; [aMailSpoolFile setType: PantomimeFormatMailSpoolFile]; if (!aMailSpoolFile) { NSRunAlertPanel(_(@"Error!"), _(@"Unable to open or lock the %@ spool file."), _(@"OK"), NULL, NULL, [allValues objectForKey: @"MAILSPOOLFILE"]); [self _taskCompleted: theTask]; return; } allMessages = [aMailSpoolFile messagesFromMailSpoolFile]; pool = nil; for (i = 0; i < [allMessages count]; i++) { if ( (i % 3) == 0 ) { TEST_RELEASE(pool); pool = [[NSAutoreleasePool alloc] init]; } [self _matchFilterRuleFromRawSource: [allMessages objectAtIndex: i] task: theTask]; } TEST_RELEASE(pool); [aMailSpoolFile close]; RELEASE(aMailSpoolFile); [self _taskCompleted: theTask]; } // // // - (void) _sendUsingSendmailForTask: (Task *) theTask { NSDictionary *allValues; CWSendmail *aSendmail; allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: [theTask sendingKey]] objectForKey: @"SEND"]; aSendmail = [[CWSendmail alloc] initWithPath: [allValues objectForKey: @"MAILER_PATH"]]; theTask->service = aSendmail; [aSendmail setDelegate: self]; if ([[theTask message] isKindOfClass: [NSData class]]) { [aSendmail setMessageData: [theTask message]]; } else { [aSendmail setMessage: [theTask message]]; } [aSendmail sendMessage]; } // // // - (void) _sendUsingSMTPForTask: (Task *) theTask { NSDictionary *allValues; NSNumber *portValue; CWSMTP *aSMTP; allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: [theTask sendingKey]] objectForKey: @"SEND"]; portValue = [allValues objectForKey: @"SMTP_PORT"]; if (!portValue) { portValue = [NSNumber numberWithInt: 25]; } aSMTP = [[CWSMTP alloc] initWithName: [allValues objectForKey: @"SMTP_HOST"] port: [portValue intValue]]; [aSMTP addRunLoopMode: NSEventTrackingRunLoopMode]; [aSMTP addRunLoopMode: NSModalPanelRunLoopMode]; theTask->service = aSMTP; [aSMTP setDelegate: self]; if ([[theTask message] isKindOfClass: [NSData class]]) { [aSMTP setMessageData: [theTask message]]; } else { [aSMTP setMessage: [theTask message]]; } // We save the unsent message in case something really bad happens when // trying to connect to the server and the application crashes #warning make this work for redirected messages if (![[theTask message] isKindOfClass: [NSData class]]) { [[MailboxManagerController singleInstance] saveUnsentMessage: [aSMTP messageData] ? [aSMTP messageData] : [[aSMTP message] dataValue] withID: [[theTask message] messageID]]; } ADD_CONSOLE_MESSAGE(_(@"SMTP - connecting to %@..."), [allValues objectForKey: @"SMTP_HOST"]); [aSMTP connectInBackgroundAndNotify]; } // // // - (void) _taskCompleted: (Task *) theTask { int i; if (theTask) { // If it was a RECEIVE task and we transferred messages to other mailboxes, // we warn the user about this. if (theTask->op == RECEIVE_POP3 || theTask->op == RECEIVE_UNIX) { if (theTask->received_count > 0 && (theTask->origin == ORIGIN_STARTUP || theTask->origin == ORIGIN_TIMER)) { // We verify if we must play a sound. If the sound isn't found, we simply use NSBeep() if ([[NSUserDefaults standardUserDefaults] boolForKey: @"PLAY_SOUND"]) { NSString *aString; aString = [[NSUserDefaults standardUserDefaults] stringForKey: @"PATH_TO_SOUND"]; if ([[NSFileManager defaultManager] fileExistsAtPath: aString]) { NSSound *aSound; aSound = [[NSSound alloc] initWithContentsOfFile: aString byReference: YES]; [aSound play]; RELEASE(aSound); } else { NSBeep(); } } } if ([[theTask filteredMessagesFolders] count] > 0) { if ([[NSUserDefaults standardUserDefaults] boolForKey: @"SHOW_FILTER_PANEL"]) { NSRunInformationalAlertPanel(_(@"Filtered messages..."), _(@"%d messages have been transfered to the following folders:\n%@"), _(@"OK"), NULL, NULL, theTask->filtered_count, [[theTask filteredMessagesFolders] componentsJoinedByString: @"\n"]); } if ([[NSUserDefaults standardUserDefaults] boolForKey: @"OPEN_MAILBOX_AFTER_TRANSFER"]) { NSString *aString, *aStoreName, *aFolderName; CWURLName *theURLName; NSRange aRange; for (i = 0; i < [[theTask filteredMessagesFolders] count]; i++) { aString = [[theTask filteredMessagesFolders] objectAtIndex: i]; aRange = [aString rangeOfString: @" - "]; aFolderName = [aString substringFromIndex: NSMaxRange(aRange)]; aStoreName = [aString substringToIndex: aRange.location]; if ([aStoreName isEqualToString: _(@"Local")]) { NSString *thePathToLocalMailDir; thePathToLocalMailDir = [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]; theURLName = [[CWURLName alloc] initWithString: [NSString stringWithFormat: @"local://%@/%@", thePathToLocalMailDir, aFolderName] path: thePathToLocalMailDir]; } else { // We skip the "IMAP " part aRange = [aStoreName rangeOfString: _(@"IMAP ")]; aStoreName = [aStoreName substringFromIndex: NSMaxRange(aRange)]; theURLName = [[CWURLName alloc] initWithString: [NSString stringWithFormat: @"imap://%@/%@", aStoreName, aFolderName]]; } // We finally opens the folder and release our URLName object. [[MailboxManagerController singleInstance] openFolderWithURLName: theURLName sender: [NSApp delegate]]; RELEASE(theURLName); } } } } [self removeTask: theTask]; } // We check to see if there's any more task that needs to be fired [self nextTask]; } // // This method checks for new mail on the specified account name. // // If the account type is POP3 or UNIX, this method adds a new task to // immediately check for new mails on this account. // // If the account type is IMAP, it NOOPs the folder or the store if // and only if it is open. // - (void) _checkMailForAccount: (NSString *) theAccountName origin: (int) theOrigin owner: (id) theOwner { NSDictionary *allValues; Task *aTask; int op, subOp; // If the account is disabled or is set to never check mail we do nothing. if (![[[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: theAccountName] objectForKey: @"ENABLED"] boolValue] || [[[[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: theAccountName] objectForKey: @"RECEIVE"] objectForKey: @"RETRIEVEMETHOD"] intValue] == NEVER) { return; } allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: theAccountName] objectForKey: @"RECEIVE"]; subOp = 0; if (![allValues objectForKey: @"SERVERTYPE"] || [[allValues objectForKey: @"SERVERTYPE"] intValue] == POP3) { op = RECEIVE_POP3; } else if ([[allValues objectForKey: @"SERVERTYPE"] intValue] == IMAP) { CWIMAPStore *aStore; aStore = [[MailboxManagerController singleInstance] storeForName: [allValues objectForKey: @"SERVERNAME"] username: [allValues objectForKey: @"USERNAME"]]; // We noop the store, if one is initialized. if (aStore && [aStore isConnected]) { ADD_CONSOLE_MESSAGE(_(@"NOOPing IMAP server %@."), [aStore name]); [aStore noop]; } else { // The IMAP store is closed, no need to check for new mail on that one. NSDebugLog(@"Skipping mail check for account %@", theAccountName); return; } op = RECEIVE_IMAP; subOp = IMAP_STATUS; } else { op = RECEIVE_UNIX; } aTask = [[Task alloc] init]; aTask->op = op; aTask->sub_op = subOp; [aTask setMessage: nil]; [aTask setKey: theAccountName]; aTask->immediate = YES; aTask->origin = theOrigin; [aTask setOwner: theOwner]; [self addTask: aTask]; RELEASE(aTask); } // // // - (void) _tick { _counter += 5; // Every single minute, we invoke _tick_internal: if (_counter%12 == 0) { [self _tick_internal]; } } // // // - (void) _tick_internal { NSEnumerator *theEnumerator, *foldersEnumerator; id aController, aStore, aFolder; NSMutableArray *allFolders; NSArray *allWindows; NSDictionary *allValues; NSString *aKey; aController = [GNUMail lastMailWindowOnTop]; if (aController) { aController = [[GNUMail lastMailWindowOnTop] windowController]; if ([aController isKindOfClass: [MessageViewWindowController class]]) { aController = [(MessageViewWindowController *)aController mailWindowController]; } } theEnumerator = [[Utilities allEnabledAccounts] keyEnumerator]; while ((aKey = [theEnumerator nextObject])) { allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: aKey] objectForKey: @"RECEIVE"]; // If we check for new mails from this account automatically AND // If our counter modulo the retreive interval is zero, we check for new mails. if ([[allValues objectForKey: @"RETRIEVEMETHOD"] intValue] == AUTOMATICALLY && ((_counter/60) % [[allValues objectForKey: @"RETRIEVEMINUTES"] intValue]) == 0) { [self _checkMailForAccount: aKey origin: ORIGIN_TIMER owner: aController]; } } allFolders = [[NSMutableArray alloc] init]; // // We now loop in all opened MailWindow:s and all messages of them to verify if we got // any messages that are expired, and not selected. // allWindows = [GNUMail allMailWindows]; if (allWindows) { NSArray *allMessages; CWFolder *aFolder; NSCalendarDate *date; NSDate *aDate; id aWindow, aMessage, aSelectedMessage; int i, j, count, seconds; date = (NSCalendarDate *)[NSCalendarDate calendarDate]; for (i = 0; i < [allWindows count]; i++) { aWindow = [allWindows objectAtIndex: i]; aFolder = [(MailWindowController *)[aWindow windowController] folder]; // If the window has no selected folder, skip it. if (!aFolder) continue; [allFolders addObject: aFolder]; aSelectedMessage = [(MailWindowController *)[aWindow windowController] selectedMessage]; allMessages = [aFolder allMessages]; count = [aFolder count]; for (j = 0; j < count; j++) { aMessage = [allMessages objectAtIndex: j]; // If this message is selected, skip it if (aMessage == aSelectedMessage) { continue; } aDate = [aMessage propertyForKey: MessageExpireDate]; // If this property doesn't exist, that means it was never initialzed, so skip it if (!aDate) { continue; } [date years: NULL months: NULL days: NULL hours: NULL minutes: NULL seconds: &seconds sinceDate: aDate]; // If the message has expired, we release its content and we set it as uninitialzed if (seconds > RETAIN_PERIOD) { [aMessage setInitialized: NO]; [aMessage setRawSource: nil]; [(CWMessage *)aMessage setProperty: nil forKey: MessageExpireDate]; } } } #if 0 /* Filter IMAP messages */ [self _filterIMAPMessagesInFolder: aFolder]; #endif } // // We verify if we must expire (ie., close) some folders that were likely left into // an open state after a DnD operation. // theEnumerator = [[[MailboxManagerController singleInstance] allStores] objectEnumerator]; while ((aStore = [theEnumerator nextObject])) { foldersEnumerator = [aStore openFoldersEnumerator]; while ((aFolder = [foldersEnumerator nextObject])) { if (![allFolders containsObject: aFolder]) { NSDate *aDate; int seconds; aDate = [aFolder propertyForKey: FolderExpireDate]; if (!aDate) { continue; } [(NSCalendarDate *)[NSCalendarDate calendarDate] years: NULL months: NULL days: NULL hours: NULL minutes: NULL seconds: &seconds sinceDate: aDate]; if (seconds > RETAIN_PERIOD) { [aFolder close]; } } } } RELEASE(allFolders); // // We expire our cache in AddressBookController // [[AddressBookController singleInstance] freeCache]; } @end GNUMail/Framework/GNUMail/ThreadArcsCell.m0100644000014600001460000003357210561320616020766 0ustar monotonemonotone/* ** ThreadArcsCell.m ** ** Copyright (c) 2004-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "ThreadArcsCell.h" #include "GNUMail.h" #include "Constants.h" #include "MailboxInspectorPanelController.h" #include "MailHeaderCell.h" #include "MailWindowController.h" #include "MessageViewWindowController.h" #include "NSBezierPath+Extensions.h" #include "NSFont+Extensions.h" #include "Utilities.h" #include #include #include #include #define DOT_DIAM 5 #define DOT_RAD 2.5 #define DOT_DIST 10 // // Private interface // @interface ThreadArcsCell (Private) - (void) _drawArcsInFrame: (NSRect) theFrame inView: (NSView *) theView; @end // // // @implementation ThreadArcsCell - (id) init { self = [super init]; _color = RETAIN([NSColor colorWithCalibratedRed: 0.898 green: 0.988 blue: 0.937 alpha: 1.0]); _rect_table = NSCreateMapTable(NSObjectMapKeyCallBacks, NSObjectMapValueCallBacks, 16); _uses_inspector = NO; _left_scroll_rect = NSZeroRect; _right_scroll_rect = NSZeroRect; _last_selected_message = nil; _start_message = nil; _start_message_nr = 0; return self; } // // // - (void) dealloc { RELEASE(_color); NSFreeMapTable(_rect_table); [super dealloc]; } // // // - (void) setUsesInspector: (BOOL) theBOOL { _uses_inspector = theBOOL; } // // No need to retain here. // - (void) setController: (id) theController { _controller = theController; } // // Those break things under GNUstep. // #ifdef MACOSX - (float) height { if ([_controller isKindOfClass: [MailboxInspectorPanelController class]]) { return [[_controller textView] frame].size.width-10; } return [[_controller mailHeaderCell] height]; } - (float) width { return THREAD_ARCS_CELL_WIDTH; } - (NSSize) cellSize { return NSMakeSize(THREAD_ARCS_CELL_WIDTH , [self height]); } #endif // // // - (BOOL) trackMouse: (NSEvent *) theEvent inRect: (NSRect) cellFrame ofView: (NSView *) aTextView atCharacterIndex: (unsigned) charIndex untilMouseUp: (BOOL) flag { NSArray *allKeys; NSValue *aValue; NSPoint aPoint; NSRect aRect; int i; aPoint = [aTextView convertPoint: [theEvent locationInWindow] fromView: nil]; allKeys = NSAllMapTableKeys(_rect_table); if (!NSEqualRects(_left_scroll_rect, NSZeroRect) && NSMouseInRect(aPoint, _left_scroll_rect, YES)) { if (_start_message_nr > 0) { _start_message_nr -= 1; } [aTextView setNeedsDisplay: YES]; return YES; } if (!NSEqualRects(_right_scroll_rect, NSZeroRect) && NSMouseInRect(aPoint, _right_scroll_rect, YES)) { if (_start_message_nr < [allKeys count]-5) { _start_message_nr += 1; } [aTextView setNeedsDisplay: YES]; return YES; } for (i = 0; i < [allKeys count]; i++) { aValue = [allKeys objectAtIndex: i]; aRect = [aValue rectValue]; if (NSMouseInRect(aPoint, aRect, YES)) { CWMessage *aMessage; id aController; aMessage = NSMapGet(_rect_table, aValue); aController = [[GNUMail lastMailWindowOnTop] windowController]; if ([aController isKindOfClass: [MailWindowController class]]) { int row; row = [[aController allMessages] indexOfObject: aMessage]; if (row >= 0 && row < [[aController allMessages] count]) { [[aController dataView] selectRow: row byExtendingSelection: NO]; } } else { [(MessageViewWindowController *)aController setMessage: aMessage]; [Utilities showMessage: aMessage target: [aController textView] showAllHeaders: [aController showAllHeaders]]; } } } return YES; } // // // - (void) drawWithFrame: (NSRect) theFrame inView: (NSView *) theView { NSBezierPath *aRoundRect; NSSize aFrame; id aCell; if (_uses_inspector) { aFrame = [[[_controller textView] enclosingScrollView] contentSize]; theFrame.origin.x += 3; theFrame.size = aFrame; theFrame.size.width -= 9; theFrame.size.height -= 9; } else { aCell = [_controller mailHeaderCell]; theFrame.size.height = [aCell height]; if (theFrame.size.height < THREAD_ARCS_CELL_MIN_HEIGHT) { theFrame.size.height = THREAD_ARCS_CELL_MIN_HEIGHT; } theFrame.size.width = THREAD_ARCS_CELL_WIDTH; theFrame.origin.x -= 3; } // FIXME //#ifdef MACOSX theFrame.origin.y = 5; //#endif [_color set]; aRoundRect = [NSBezierPath bezierPath]; [aRoundRect appendBezierPathWithRoundedRectangle: theFrame withRadius: 8.0]; [aRoundRect fill]; [self _drawArcsInFrame: theFrame inView: theView]; } @end // // // @implementation ThreadArcsCell (Private) - (void) _drawArcsInFrame: (NSRect) theFrame inView: (NSView *) theView { NSMutableAttributedString *aMutableAttributedString; NSMutableArray *allMessages; NSEnumerator *theEnumerator; CWContainer *aContainer; CWMessage *aMessage; NSBezierPath *aBezierPath; NSPoint points[3]; NSRect aRect; int i, j, origin, height, count; float scrollview_width; BOOL flip; NSResetMapTable(_rect_table); aMessage = [_controller selectedMessage]; scrollview_width = 0; aMutableAttributedString = [[NSMutableAttributedString alloc] initWithString: _(@"Thread")]; if (!_uses_inspector) { origin = (THREAD_ARCS_CELL_WIDTH-[aMutableAttributedString size].width)/2 + theFrame.origin.x; } else { scrollview_width = [[[_controller textView] enclosingScrollView] contentSize].width; origin = (scrollview_width-15-[aMutableAttributedString size].width)/2 + theFrame.origin.x; } [aMutableAttributedString setAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [NSFont headerNameFont], NSFontAttributeName, [NSColor colorWithCalibratedRed: 0.686 green: 0.686 blue: 0.886 alpha: 1.0], NSForegroundColorAttributeName, nil] range: NSMakeRange(0, [aMutableAttributedString length])]; [aMutableAttributedString drawAtPoint: NSMakePoint(origin, 10)]; AUTORELEASE(aMutableAttributedString); // // Find the root container // aContainer = [aMessage propertyForKey: @"Container"]; // We check if we found a container if (!aContainer) { return; } while (aContainer->parent) aContainer = aContainer->parent; // We check for the associated message if (!aContainer->message) { return; } // // We now get all children of the root container. We need them // in order to fully draw the thread arcs. // allMessages = [[NSMutableArray alloc] init]; [allMessages addObject: aContainer->message]; theEnumerator = [aContainer childrenEnumerator]; while ((aContainer = [theEnumerator nextObject])) { aMessage = aContainer->message; [allMessages addObject: aMessage]; } // // We sort the messages by date, critical for thread arcs to be useful. // [allMessages sortUsingSelector: @selector(compareAccordingToDate:)]; count = [allMessages count]; // // This will be the y position in the window // height = theFrame.size.height/2+20; origin = theFrame.origin.x+10; // // If the current thread has changed, we start from the first message. // Thread change is determined by the first message in the thread. // if (_start_message != [allMessages objectAtIndex: 0]) { _start_message = [allMessages objectAtIndex: 0]; _start_message_nr = 0; } // // Now move the currently selected message into the drawable area. // We do this only if the message selection has changed, not when // the user simply scrolls the arcs. // if (_last_selected_message != [_controller selectedMessage]) { _last_selected_message = [_controller selectedMessage]; i = [allMessages indexOfObject: _last_selected_message]; if (i != NSNotFound) { if (i < _start_message_nr) { _start_message_nr = i; } if (i > (_start_message_nr-1+(THREAD_ARCS_CELL_WIDTH-10)/DOT_DIST)) { _start_message_nr += (i+1-(_start_message_nr+(THREAD_ARCS_CELL_WIDTH-10)/DOT_DIST)); } } } // // Save the current graphics state and set a clipping area // for the thread arcs // [[NSGraphicsContext currentContext] saveGraphicsState]; [NSBezierPath clipRect: theFrame]; // // We draw the dots // for (i = 0; i < count; i++) { int pos = i-_start_message_nr; aMessage = [allMessages objectAtIndex: i]; aRect = NSMakeRect(origin+pos*DOT_DIST, height, DOT_DIAM, DOT_DIAM); NSMapInsert(_rect_table, (void *)[NSValue valueWithRect: aRect], (void *)aMessage); if (aMessage == [_controller selectedMessage]) { [[NSColor blueColor] set]; [[NSBezierPath bezierPathWithOvalInRect: aRect] stroke]; } else { CWFlags *theFlags = [aMessage flags]; if ([theFlags contain: PantomimeSeen]) { [[NSColor lightGrayColor] set]; } else { [[NSColor blackColor] set]; } [[NSBezierPath bezierPathWithOvalInRect: aRect] fill]; } } // // We draw the scrollers // [[NSColor blackColor] set]; if (_start_message_nr > 0) { _left_scroll_rect = NSMakeRect(theFrame.origin.x+10, theFrame.origin.y+10, 8, [aMutableAttributedString size].height/2); points[0] = NSMakePoint(_left_scroll_rect.origin.x, _left_scroll_rect.origin.y+[aMutableAttributedString size].height/4); points[1] = NSMakePoint(_left_scroll_rect.origin.x+8, _left_scroll_rect.origin.y+[aMutableAttributedString size].height/2); points[2] = NSMakePoint(_left_scroll_rect.origin.x+8, _left_scroll_rect.origin.y); aBezierPath = [NSBezierPath bezierPath]; [aBezierPath appendBezierPathWithPoints: points count: 3]; [aBezierPath closePath]; [aBezierPath fill]; } else { _left_scroll_rect = NSZeroRect; } if ((_uses_inspector && (aRect.origin.x > theFrame.origin.x+scrollview_width-15)) || (!_uses_inspector && (aRect.origin.x > theFrame.origin.x+THREAD_ARCS_CELL_WIDTH-10))) { _right_scroll_rect = NSMakeRect(theFrame.origin.x+theFrame.size.width-18, theFrame.origin.y+10, 8, [aMutableAttributedString size].height/2); points[0] = NSMakePoint(_right_scroll_rect.origin.x+8, _right_scroll_rect.origin.y+[aMutableAttributedString size].height/4); points[1] = NSMakePoint(_right_scroll_rect.origin.x, _right_scroll_rect.origin.y+[aMutableAttributedString size].height/2); points[2] = NSMakePoint(_right_scroll_rect.origin.x, _right_scroll_rect.origin.y); aBezierPath = [NSBezierPath bezierPath]; [aBezierPath appendBezierPathWithPoints: points count: 3]; [aBezierPath closePath]; [aBezierPath fill]; } else { _right_scroll_rect = NSZeroRect; } // // We draw the arcs // for (i = 0; i < count; i++) { int posi = i-_start_message_nr; aMessage = [allMessages objectAtIndex: i]; theEnumerator = [[aMessage propertyForKey: @"Container"] childrenEnumerator]; while ((aContainer = [theEnumerator nextObject])) { // We do NOT consider the sub-children if (aContainer->parent != [aMessage propertyForKey: @"Container"]) { //NSLog(@"SKIPPING SUB-CHILDREN"); continue; } j = [allMessages indexOfObject: aContainer->message]; flip = (j%2 == 0 ? YES : NO); //NSLog(@"i === %d j ===== %d flip = %d", i, j, flip); //if (flip) NSLog(@"FLIP!"); // // If we are drawing arcs for the selected message OR // if we are drawing arcs TO the selected message // if (aMessage == [_controller selectedMessage] || aContainer->message == [_controller selectedMessage]) { [[NSColor blueColor] set]; } else { [[NSColor lightGrayColor] set]; } aBezierPath = [NSBezierPath bezierPath]; if (_uses_inspector) { int posj = j-_start_message_nr; [aBezierPath appendBezierPathWithArcWithCenter: NSMakePoint(origin+7.5+posi*DOT_DIST+(posj-posi-1)*5, (flip?height+5:height+1)) radius: 5+(posj-posi-1)*5 startAngle: (flip?0:180) endAngle: (flip?180:0)]; } else { int posj = j-_start_message_nr; int ydist, ymid; int radius = abs((posj-posi)*DOT_DIAM); if (radius > 6*DOT_DIAM) { radius = 6*DOT_DIAM; } ymid = height+DOT_RAD; ydist = flip ? ymid+radius : ymid-radius; [aBezierPath moveToPoint: NSMakePoint(origin+posi*DOT_DIST+DOT_RAD, ymid)]; [aBezierPath appendBezierPathWithArcFromPoint: NSMakePoint(origin+posi*DOT_DIST+DOT_RAD, ydist) toPoint: NSMakePoint(origin+posi*DOT_DIST+DOT_RAD+(posj-posi)*DOT_DIST/2., ydist) radius: radius]; [aBezierPath appendBezierPathWithArcFromPoint: NSMakePoint(origin+posj*DOT_DIST+DOT_RAD, ydist) toPoint: NSMakePoint(origin+posj*DOT_DIST+DOT_RAD, ymid) radius: radius]; } [aBezierPath stroke]; } } // // restore the old graphics state // [[NSGraphicsContext currentContext] restoreGraphicsState]; RELEASE(allMessages); } @end GNUMail/Framework/GNUMail/Utilities.m0100644000014600001460000016154410613064243020121 0ustar monotonemonotone/* ** Utilities.m ** ** Copyright (c) 2001-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "Utilities.h" #include "EditWindowController.h" #include "ExtendedMenuItem.h" #include "ExtendedTextView.h" #include "FolderNode.h" #include "FolderNodePopUpItem.h" #include "GNUMail.h" #include "GNUMailBundle.h" #include "Constants.h" #include "MailboxManagerController.h" #include "MailHeaderCell.h" #include "MailWindowController.h" #include "MessageViewWindowController.h" #include "MimeType.h" #include "MimeTypeManager.h" #include "NSAttributedString+Extensions.h" #include "NSFont+Extensions.h" #include "NSUserDefaults+Extensions.h" #include "PasswordPanelController.h" #include "Task.h" #include "TaskManager.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // Our static vars static NSMutableDictionary *passwordCache = nil; // // Useful macros // #define INITIALIZE_MESSAGE(message) ({ \ if (![message isInitialized]) \ { \ [message setInitialized: YES]; \ [message setProperty: [NSDate date] forKey: MessageExpireDate]; \ } \ }) // // Utilities private interface // @interface Utilities (Private) + (void) _savePanelDidEnd: (NSSavePanel *) theSavePanel returnCode: (int) theReturnCode contextInfo: (void *) theContextInfo; @end // // // @implementation Utilities + (void) initialize { if (!passwordCache) { passwordCache = [[NSMutableDictionary alloc] init]; } } // // // + (NSString *) encryptPassword: (NSString *) thePassword withKey: (NSString *) theKey { NSMutableData *encryptedPassword; NSMutableString *key; NSString *result; int i; unichar p, k, e; // The length of the key must be greater (or equal) than // the length of the password key = [[NSMutableString alloc] init]; while ([key length] < [thePassword length]) { [key appendString: theKey]; } encryptedPassword = [[NSMutableData alloc] init]; for (i = 0; i < [thePassword length]; i++) { p = [thePassword characterAtIndex: i]; k = [key characterAtIndex: i]; e = p ^ k; [encryptedPassword appendBytes: (void *)&e length: 2]; } result = AUTORELEASE([[NSString alloc] initWithData: [encryptedPassword encodeBase64WithLineLength: 0] encoding: NSASCIIStringEncoding]); RELEASE(encryptedPassword); RELEASE(key); return result; } // // // + (NSString *) decryptPassword: (NSString *) thePassword withKey: (NSString *) theKey { NSMutableString *password; NSMutableString *key; NSData *dec; unsigned char *decryptedPassword; NSString *result; int i; unichar p, k, d; if (thePassword == nil || theKey == nil) { return nil; } // We 'verify' if the password is not encoded in base64 // We should not rely on this method but it's currently the best guess we could make if ([thePassword length] == 0 || ([thePassword length] & 0x03) || [theKey length] == 0) { return thePassword; } // The length of the key must be greater (or equal) than // the length of the password key = [[NSMutableString alloc] init]; while ([key length] < [thePassword length]) { [key appendString: theKey]; } password = [[NSMutableString alloc] init]; dec = [[thePassword dataUsingEncoding: NSASCIIStringEncoding] decodeBase64]; decryptedPassword = (unsigned char *)[dec bytes]; for (i = 0; i < [dec length]; i += 2) { d = decryptedPassword[i] | decryptedPassword[i+1]; k = [key characterAtIndex: i/2]; p = d ^ k; [password appendString: [NSString stringWithCharacters: &p length: 1]]; } result = [[NSString alloc] initWithString: password]; RELEASE(password); RELEASE(key); return AUTORELEASE(result); } // // // + (void) loadAccountsInPopUpButton: (NSPopUpButton *) thePopUpButton select: (NSString *) theAccount { NSString *aDefaultAccount, *aKey; ExtendedMenuItem *aMenuItem; NSEnumerator *theEnumerator; NSDictionary *allAccounts; NSArray *allKeys; int i, index; allAccounts = [Utilities allEnabledAccounts]; allKeys = [[allAccounts allKeys] sortedArrayUsingSelector: @selector(caseInsensitiveCompare:)]; aDefaultAccount = nil; if (theAccount) { aDefaultAccount = theAccount; } else { for (i = 0; i < [allKeys count]; i++) { if ([[[allAccounts objectForKey: [allKeys objectAtIndex: i]] objectForKey: @"DEFAULT"] boolValue]) { aDefaultAccount = [allKeys objectAtIndex: i]; break; } } } // We initialize our popup button [thePopUpButton removeAllItems]; theEnumerator = [allKeys objectEnumerator]; i = index = 0; while ((aKey = [theEnumerator nextObject])) { if (aDefaultAccount && [aKey isEqualToString: aDefaultAccount] ) { index = i; } aMenuItem = [[ExtendedMenuItem alloc] initWithTitle: [NSString stringWithFormat: @"%@ (%@)", [[[allAccounts objectForKey: aKey] objectForKey: @"PERSONAL"] objectForKey: @"EMAILADDR"], aKey] action: NULL keyEquivalent: @""]; [aMenuItem setKey: aKey]; [[thePopUpButton menu] insertItem: aMenuItem atIndex: i]; RELEASE(aMenuItem); i++; } [thePopUpButton selectItemAtIndex: index]; [thePopUpButton synchronizeTitleAndSelectedItem]; } // // // + (void) loadTransportMethodsInPopUpButton: (NSPopUpButton *) thePopUpButton { ExtendedMenuItem *aMenuItem; NSArray *allKeys; int i; // We initialize our popup button used to select the transport methods [thePopUpButton removeAllItems]; allKeys = [[Utilities allEnabledAccounts] allKeys]; for (i = 0; i < [allKeys count]; i++) { NSDictionary *allValues; NSString *aString; allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: [allKeys objectAtIndex: i]] objectForKey: @"SEND"]; if ([[allValues objectForKey: @"TRANSPORT_METHOD"] intValue] == TRANSPORT_SMTP) { aString = [NSString stringWithFormat: @"SMTP (%@)", [allValues objectForKey: @"SMTP_HOST"]]; } else { aString = [NSString stringWithFormat: @"Mailer (%@)", [allValues objectForKey: @"MAILER_PATH"]]; } aMenuItem = [[ExtendedMenuItem alloc] initWithTitle: aString action: NULL keyEquivalent: @""]; [aMenuItem setKey: [allKeys objectAtIndex: i]]; [[thePopUpButton menu] addItem: aMenuItem]; RELEASE(aMenuItem); } } // // // + (NSString *) accountNameForFolder: (CWFolder *) theFolder { if ([theFolder isKindOfClass: [CWIMAPFolder class]]) { NSString *aUsername, *aServerName; CWIMAPStore *aStore; aStore = (CWIMAPStore *)[theFolder store]; aUsername = [aStore username]; aServerName = [aStore name]; return [self accountNameForServerName: aServerName username: aUsername]; } return nil; } // // Given a message, guesses the profile it is associated with by comparing // recipients with profile addresses. Currently compares address domains // only (string after '@') to handle email aliases. Once email alias support // has been added to profiles, we will compare full email addresses. // + (NSString *) accountNameForMessage: (CWMessage *) theMessage { CWInternetAddress *theInternetAddress; NSArray *allKeys, *allRecipients; NSString *theAccountAddress; NSDictionary *theAccount; int i, j; // We get all the message recipients allRecipients = [theMessage recipients]; // We get all the keys for the personal profiles allKeys = [[[Utilities allEnabledAccounts] allKeys] sortedArrayUsingSelector: @selector(caseInsensitiveCompare:)]; // // We go through all enabled account to first try to match one that has the exact recipient // defined in our message's recipients list. // for (i = 0; i < [allKeys count]; i++) { theAccount = [[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: [allKeys objectAtIndex: i]]; // We get the address for this account theAccountAddress = [[theAccount objectForKey: @"PERSONAL"] objectForKey: @"EMAILADDR"]; if ( theAccountAddress && allRecipients ) { // Walk through the recipients and check against profile address for (j = 0; j < [allRecipients count]; j++) { theInternetAddress = (CWInternetAddress *)[allRecipients objectAtIndex: j]; if ([theInternetAddress address] && [[theAccountAddress stringByTrimmingWhiteSpaces] caseInsensitiveCompare: [theInternetAddress address]] == NSOrderedSame) { NSDebugLog(@"Profile to be used = %@", [allKeys objectAtIndex: i]); // We found a matching profile, we return it. return [allKeys objectAtIndex: i]; } } } } // // We haven't found one. At least, let's now try to match one that has only the domain part // in the message's recipients list. // for (i = 0; i < [allKeys count]; i++) { NSString *theAccountDomain; NSRange aRange; theAccount = [[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: [allKeys objectAtIndex: i]]; // We get the address for this account theAccountAddress = [[theAccount objectForKey: @"PERSONAL"] objectForKey: @"EMAILADDR"]; if ( theAccountAddress && allRecipients ) { // Walk through the recipients and check against profile address for (j = 0; j < [allRecipients count]; j++) { // We check only the domain part of profile address (after '@'). aRange = [theAccountAddress rangeOfString: @"@" options: NSBackwardsSearch]; if ( aRange.location == NSNotFound ) { continue; } theAccountDomain = [theAccountAddress substringFromIndex: NSMaxRange(aRange)]; theInternetAddress = (CWInternetAddress *)[allRecipients objectAtIndex: j]; aRange = [[theInternetAddress address] rangeOfString: theAccountDomain options: NSCaseInsensitiveSearch]; if ( aRange.length > 0 ) { NSDebugLog(@"Profile to be used = %@", [allKeys objectAtIndex: i]); // We found a matching profile, we return it. return [allKeys objectAtIndex: i]; } } } } // No match according to the recipients. Now let's check if we can find out the account // that this message belongs to. If we can't, we will simply return nil, which means no // profiles were found. return [self accountNameForFolder: [theMessage folder]]; } // // // + (NSString *) accountNameForServerName: (NSString *) theServerName username: (NSString *) theUsername { NSEnumerator *theEnumerator; NSString *theAccountName; theEnumerator = [[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] keyEnumerator]; while ((theAccountName = [theEnumerator nextObject])) { NSDictionary *allValues; allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: theAccountName] objectForKey: @"RECEIVE"]; if ([[allValues objectForKey: @"USERNAME"] isEqualToString: theUsername] && [[allValues objectForKey: @"SERVERNAME"] isEqualToString: theServerName]) { return theAccountName; } } return nil; } // // // + (NSDictionary *) allEnabledAccounts { NSMutableDictionary *aMutableDictionary; aMutableDictionary = nil; if ([[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"]) { NSArray *allKeys; int i; aMutableDictionary = [[NSMutableDictionary alloc] initWithDictionary: [[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"]]; AUTORELEASE(aMutableDictionary); allKeys = [aMutableDictionary allKeys]; for (i = 0; i < [allKeys count]; i++) { if (![[[aMutableDictionary objectForKey: [allKeys objectAtIndex: i]] objectForKey: @"ENABLED"] boolValue]) { [aMutableDictionary removeObjectForKey: [allKeys objectAtIndex: i]]; } } } return aMutableDictionary; } // // Returns the name of the default account // + (NSString *) defaultAccountName { NSString *aDefaultAccount; NSDictionary *allAccounts; NSArray *allKeys; int i; allAccounts = [Utilities allEnabledAccounts]; allKeys = [allAccounts allKeys]; aDefaultAccount = nil; for (i = 0; i < [allKeys count]; i++) { if ( [[[allAccounts objectForKey: [allKeys objectAtIndex: i]] objectForKey: @"DEFAULT"] boolValue] ) { return [allKeys objectAtIndex: i]; } } return nil; } // // This method returns the window associated to the folder & store. // If the folder name is nil, it returns the first window that uses the 'store'. // + (id) windowForFolderName: (NSString *) theName store: (id) theStore { NSArray *allWindows; // We get all opened windows allWindows = [GNUMail allMailWindows]; if (allWindows) { CWFolder *aFolder; id aWindow; int i; for (i = 0; i < [allWindows count]; i++) { aWindow = [allWindows objectAtIndex: i]; aFolder = [(MailWindowController *)[aWindow windowController] folder]; // If we found our opened folder if (theName && [[aFolder name] isEqualToString: theName] && [aFolder store] == theStore) { return aWindow; } else if (theName == nil && [aFolder store] == theStore) { return aWindow; } } } return nil; } // // // + (FolderNode *) folderNodesFromFolders: (NSEnumerator *) theFolders separator: (unsigned char) theSeparator { NSString *aName, *aString; FolderNode *root; int i; root = [[FolderNode alloc] init]; [root setParent: nil]; if (!theSeparator) { theSeparator = '/'; } while ((aString = [theFolders nextObject])) { //aRange = [aString rangeOfString: theSeparator]; i = [aString indexOfCharacter: theSeparator]; if (i >= 0) { FolderNode *parent; int mark; parent = root; mark = 0; while (i > 0) { if (mark == i) { mark += 1; } else { aName = [aString substringWithRange: NSMakeRange(mark, i-mark)]; if (![parent childWithName: aName]) { [parent addChild: [FolderNode folderNodeWithName: aName parent: parent]]; } parent = [parent childWithName: aName]; mark = i+1; } i = [aString indexOfCharacter: theSeparator fromIndex: mark]; } aName = [aString substringFromIndex: mark]; if (![parent childWithName: aName]) { [parent addChild: [FolderNode folderNodeWithName: aName parent: parent]]; } } else { if (![root childWithName: aString]) { [root addChild: [FolderNode folderNodeWithName: aString parent: root]]; } } } return AUTORELEASE(root); } // // This method returns a node using a thePath to search // and rootNode as the starting point in it's search. // // The path to the node MUST always use '/' as the folder separator // if no other separtor can be specified. Otherwise, it should use // the result of the -folderSeparator method from IMAPStore. // + (FolderNode *) folderNodeForPath: (NSString *) thePath using: (FolderNode *) rootNode separator: (unsigned char) theSeparator { NSArray *pathComponents; FolderNode *aFolderNode; int i, j, c; pathComponents = [thePath componentsSeparatedByString: [NSString stringWithFormat: @"%c", theSeparator]]; c = [pathComponents count]; aFolderNode = rootNode; for (i = 0; i < c; i++) { NSString *aPathComponent; aPathComponent = [pathComponents objectAtIndex: i]; if ([aPathComponent length] == 0) { continue; } for (j = 0; j < [aFolderNode childCount]; j++) { if ([[[aFolderNode childAtIndex: j] name] isEqualToString: aPathComponent]) { aFolderNode = [aFolderNode childAtIndex: j]; break; } } } return aFolderNode; } // // This method build a complete path of a node. It will stop // building the path when parent == nil is reached. // // We always return a //folder/subfolder/subsubfolder // or //folder.subfolder.subsubfolder // + (NSString *) completePathForFolderNode: (FolderNode *) theFolderNode separator: (unsigned char) theSeparator { NSMutableString *aMutableString; FolderNode *parent; #warning This cache seems to cause problem especially it we transfer a message from IMAP server A Foo to IMAP server B Foo.C #if 0 if ([theFolderNode path]) { return [theFolderNode path]; } #endif aMutableString = [[NSMutableString alloc] init]; parent = theFolderNode; if (!theSeparator) { theSeparator = '/'; } // We don't loop for no reason if the root was passed as the parameter if (![parent parent]) { RELEASE(aMutableString); return [NSString stringWithFormat: @"/%@/", [parent name]]; } while (parent != nil) { [aMutableString insertString: [parent name] atIndex: 0]; // We verify if the parent of that node has a parent. // If it doesn't, that means we must add our // // and break the loop. if ([[parent parent] parent]) { [aMutableString insertString: [NSString stringWithFormat: @"%c", theSeparator] atIndex: 0]; } else { [aMutableString insertString: [NSString stringWithFormat: @"/%@/", [[parent parent] name]] atIndex: 0]; break; } parent = [parent parent]; } [theFolderNode setPath: aMutableString]; return AUTORELEASE(aMutableString); } // // We skip the first in //folder/subfolder/mbox // or //folder.subfolder.mbox // in order to only get the full path of the mbox. // // If the no mailbox was selected, we return nil. // + (NSString *) pathOfFolderFromFolderNode: (FolderNode *) theFolderNode separator: (unsigned char) theSeparator { NSString *aString; int i; if (!theSeparator) { theSeparator = '/'; } // We build our full path (including //) to our folder aString = [Utilities completePathForFolderNode: theFolderNode separator: theSeparator]; // We trim the // part. i = [aString indexOfCharacter: '/' fromIndex: 1]; if (i > 0) { return [aString substringFromIndex: i+1]; } return nil; } // // // + (NSString *) flattenPathFromString: (NSString *) theString separator: (unsigned char) theSeparator { // If the separator is undefined, we assume a default one. if (!theSeparator) { theSeparator = '/'; } return [theString stringByReplacingOccurrencesOfCharacter: theSeparator withCharacter: '_']; } // // Calculates the store key from a node. The key returned is: // // @ . // // The usage of this method only makes sense for FolderNode objects // used to represent an IMAP store and its folders. // + (NSString *) storeKeyForFolderNode: (FolderNode *) theFolderNode serverName: (NSString **) theServerName username: (NSString **) theUsername { NSString *aString = nil; if ( theFolderNode ) { NSString *aServerName, *aUsername; NSRange aRange; aString = [Utilities completePathForFolderNode: theFolderNode separator: '/']; aRange = [aString rangeOfString: @"/" options: 0 range: NSMakeRange(1, [aString length] - 1)]; if ( aRange.length ) { aString = [aString substringWithRange: NSMakeRange(1, aRange.location - 1)]; } else { aString = [aString substringFromIndex: 1]; } aString = [aString stringByTrimmingWhiteSpaces]; // We ensure that we really received a "IMAP value" if ( [aString isEqualToString: _(@"Local")] ) { // Seems we got a Local value. aServerName = nil; aUsername = NSUserName(); } else { NSDictionary *allValues; allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: aString] objectForKey: @"RECEIVE"]; aServerName = [allValues objectForKey: @"SERVERNAME"]; aUsername = [allValues objectForKey: @"USERNAME"]; aString = [NSString stringWithFormat: @"%@ @ %@", aUsername, aServerName]; } if ( theServerName != NULL ) { *theServerName = aServerName; } if ( theUsername != NULL ) { *theUsername = aUsername; } } return aString; } // // // + (BOOL) URLWithString: (NSString *) theString matchFolder: (CWFolder *) theFolder { CWURLName *theURLName; theURLName = [[CWURLName alloc] initWithString: theString path: [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]]; if ([[theFolder name] isEqualToString: [theURLName foldername]]) { // If's a local folder, we simply compare the protocol. if ([theFolder isKindOfClass: [CWLocalFolder class]]) { if ([[theURLName protocol] caseInsensitiveCompare: @"LOCAL"] == NSOrderedSame) { RELEASE(theURLName); return YES; } } // It's an IMAP folder, we must compare the hostname and the username. else { CWIMAPStore *aStore; aStore = (CWIMAPStore *)[theFolder store]; if ([[aStore name] isEqualToString: [theURLName host]] && [[aStore username] isEqualToString: [theURLName username]]) { RELEASE(theURLName); return YES; } } } RELEASE(theURLName); return NO; } // // // + (BOOL) stringValueOfURLName: (NSString *) theString isEqualTo: (NSString *) theName { NSEnumerator *theEnumerator; NSString *theAccountName; theEnumerator = [[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] keyEnumerator]; while ((theAccountName = [theEnumerator nextObject])) { NSDictionary *allValues; allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: theAccountName] objectForKey: @"MAILBOXES"]; if ([[allValues objectForKey: theName] isEqualToString: theString]) { return YES; } } return NO; } // // // + (NSString *) stringValueOfURLNameFromFolder: (CWFolder *) theFolder { NSString *aString; if ([theFolder isKindOfClass: [CWLocalFolder class]]) { aString = [NSString stringWithFormat: @"local://%@/%@", [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"], [theFolder name]]; } else { aString = [NSString stringWithFormat: @"imap://%@@%@/%@", [((CWIMAPStore *)[theFolder store]) username], [((CWIMAPStore *)[theFolder store]) name], [theFolder name]]; } return aString; } // // // + (NSString *) stringValueOfURLNameFromFolderNode: (FolderNode *) theFolderNode serverName: (NSString *) theServerName username: (NSString *) theUsername { NSString *aString; aString = [Utilities pathOfFolderFromFolderNode: theFolderNode separator: '/']; // // If it's a Local mailbox... // if ([aString hasPrefix: _(@"Local Mailboxes")]) { // We have something like "Local Mailboxes/subfolderA/subfolderB/mbox" NSRange aRange; aRange = [aString rangeOfString: @"/"]; // We build our URL aString = [NSString stringWithFormat: @"local://%@/%@", [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"], [aString substringFromIndex: aRange.location + 1]]; } // // It's an IMAP mailbox. // else { NSString *aPathToFolder; NSRange aRange; // We have something like /subfolderA/subfolderB/mbox aRange = [aString rangeOfString: @"/"]; // we search for: / <- the / aPathToFolder = [aString substringFromIndex: aRange.location + 1]; if (theServerName && theUsername) { aString = [NSString stringWithFormat: @"imap://%@@%@/%@", theUsername, theServerName, aPathToFolder]; } else { NSString *aServername, *aUsername, *theAccountName; NSDictionary *allValues; theAccountName = [aString substringToIndex: aRange.location]; allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: theAccountName] objectForKey: @"RECEIVE"]; aUsername = [allValues objectForKey: @"USERNAME"]; aServername = [allValues objectForKey: @"SERVERNAME"]; aString = [NSString stringWithFormat: @"imap://%@@%@/%@", aUsername, aServername, aPathToFolder]; } } return aString; } // // // + (FolderNode *) initializeFolderNodesUsingAccounts: (NSDictionary *) theAccounts { FolderNode *allNodes, *nodes; CWLocalStore *aStore; NSArray *allKeys; int i; allNodes = [[FolderNode alloc] init]; // // Local // aStore = [[MailboxManagerController singleInstance] storeForName: @"GNUMAIL_LOCAL_STORE" username: NSUserName()]; nodes = [Utilities folderNodesFromFolders: [aStore folderEnumerator] separator: '/']; if ([nodes childCount] > 0) { [nodes setName: _(@"Local Mailboxes")]; [allNodes addChild: nodes]; [nodes setParent: allNodes]; } // // IMAP // allKeys = [[theAccounts allKeys] sortedArrayUsingSelector: @selector(compare:)]; for (i = 0; i < [allKeys count]; i++) { NSDictionary *allValues; NSArray *theArray; allValues = [[theAccounts objectForKey: [allKeys objectAtIndex: i]] objectForKey: @"RECEIVE"]; theArray = [allValues objectForKey: @"SUBSCRIBED_FOLDERS"]; if (theArray && [theArray count] > 0) { nodes = [Utilities folderNodesFromFolders: [theArray objectEnumerator] separator: '/']; [nodes setName: [allKeys objectAtIndex: i]]; [allNodes addChild: nodes]; [nodes setParent: allNodes]; } } return AUTORELEASE(allNodes); } // // // + (void) addItemsToMenu: (NSMenu *) theMenu tag: (int) theTag action: (SEL) theAction folderNodes: (FolderNode *) theFolderNodes { int i; //[theMenu removeAllItems]; //[theMenu setAutoenablesItems: NO]; // We now add all our nodes for (i = 0; i < [theFolderNodes childCount]; i++) { [Utilities addItem: [theFolderNodes childAtIndex: i] tag: theTag action: theAction toMenu: theMenu]; } } // // Usually, theFolderNodes will be a pointer to a FolderNode object // representing the "tree" of all our Local and/or IMAP nodes. // This "tree" is usually build using: // // Utilities: +initializeFolderNodesUsingAccounts: // // We will ALWAYS have at least one node. // + (void) addItemsToPopUpButton: (NSPopUpButton *) thePopUpButton usingFolderNodes: (FolderNode *) theFolderNodes { int i; [thePopUpButton removeAllItems]; [thePopUpButton setAutoenablesItems: NO]; // We now add all our nodes for (i = 0; i < [theFolderNodes childCount]; i++) { [Utilities addItem: [theFolderNodes childAtIndex: i] level: 0 tag: 0 action: @selector(foo:) toMenu: [thePopUpButton menu]]; } [thePopUpButton selectItemAtIndex: 0]; } // // This method adds new items to the specified menu. // It respects the level parameter for indenting properly // the items in order to represent a hierarchy. // + (void) addItem: (FolderNode *) theFolderNode level: (int) theLevel tag: (int) theTag action: (SEL) theAction toMenu: (NSMenu *) theMenu { NSMutableString *aMutableString; FolderNodePopUpItem *theItem; int i; aMutableString = [[NSMutableString alloc] init]; for (i = 0; i < theLevel; i++) { [aMutableString appendString: @" "]; } [aMutableString appendString: [theFolderNode name]]; theItem = [[FolderNodePopUpItem alloc] initWithTitle: aMutableString action: NULL keyEquivalent: @""]; [theItem setTag: theTag]; [theItem setFolderNode: theFolderNode]; RELEASE(aMutableString); // We enable / disable our item if ( [theFolderNode childCount] > 0 ) { [theItem setAction: NULL]; [theItem setEnabled: NO]; } else { [theItem setAction: theAction]; [theItem setEnabled: YES]; } // We finally add our item [theMenu addItem: theItem]; RELEASE(theItem); for (i = 0; i < [theFolderNode childCount]; i++) { [Utilities addItem: [theFolderNode childAtIndex: i] level: (theLevel + 1) tag: theTag action: theAction toMenu: theMenu]; } } // // // + (void) addItem: (FolderNode *) theFolderNode tag: (int) theTag action: (SEL) theAction toMenu: (NSMenu *) theMenu { FolderNodePopUpItem *theItem; int i; [theMenu setAutoenablesItems: NO]; theItem = [[FolderNodePopUpItem alloc] initWithTitle: [theFolderNode name] action: NULL keyEquivalent: @""]; [theItem setTag: theTag]; [theItem setFolderNode: theFolderNode]; // We enable / disable our item if ([theFolderNode childCount] > 0) { [theItem setAction: NULL]; } else { [theItem setAction: theAction]; [theItem setEnabled: YES]; } // We finally add our item [theMenu addItem: theItem]; if ([theFolderNode childCount] > 0) { NSMenu *aMenu; aMenu = [[NSMenu alloc] init]; for (i = 0; i < [theFolderNode childCount]; i++) { [Utilities addItem: [theFolderNode childAtIndex: i] tag: theTag action: theAction toMenu: aMenu]; } [theMenu setSubmenu: aMenu forItem: theItem]; RELEASE(aMenu); } RELEASE(theItem); } // // // + (FolderNodePopUpItem *) folderNodePopUpItemForFolderNode: (FolderNode *) theFolderNode popUpButton: (NSPopUpButton *) thePopUpButton { FolderNodePopUpItem *theItem; int i; for (i = 0; i < [thePopUpButton numberOfItems]; i++) { theItem = (FolderNodePopUpItem *)[thePopUpButton itemAtIndex: i]; if ([theItem folderNode] == theFolderNode) { return theItem; } } return nil; } // // // + (FolderNodePopUpItem *) folderNodePopUpItemForURLNameAsString: (NSString *) theString usingFolderNodes: (FolderNode *) theFolderNodes popUpButton: (NSPopUpButton *) thePopUpButton account: (NSString *) theAccountName { FolderNodePopUpItem *aPopUpItem; FolderNode *aFolderNode; CWURLName *aURLName; if (!theString) { return nil; } aURLName = [[CWURLName alloc] initWithString: theString path: [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]]; if ([[aURLName protocol] caseInsensitiveCompare: @"LOCAL"] == NSOrderedSame) { aFolderNode = [Utilities folderNodeForPath: [NSString stringWithFormat: @"%@/%@", _(@"Local Mailboxes"), [aURLName foldername]] using: theFolderNodes separator: '/']; } else { if (!theAccountName) { theAccountName = [Utilities accountNameForServerName: [aURLName host] username: [aURLName username]]; } aFolderNode = [Utilities folderNodeForPath: [NSString stringWithFormat: @"%@/%@", theAccountName, [aURLName foldername]] using: theFolderNodes separator: '/']; } aPopUpItem = [Utilities folderNodePopUpItemForFolderNode: aFolderNode popUpButton: thePopUpButton]; RELEASE(aURLName); return aPopUpItem; } // // // + (NSString *) passwordForKey: (id) theKey type: (int) theType prompt: (BOOL) aBOOL { NSString *aPassword, *usernameKey, *passwordKey, *serverNameKey; NSDictionary *allValues; if (theType == POP3 || theType == IMAP) { allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: theKey] objectForKey: @"RECEIVE"]; usernameKey = @"USERNAME"; passwordKey = @"PASSWORD"; serverNameKey = @"SERVERNAME"; } else { allValues = [[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: theKey] objectForKey: @"SEND"]; usernameKey = @"SMTP_USERNAME"; passwordKey = @"SMTP_PASSWORD"; serverNameKey = @"SMTP_HOST"; } // We define a new key if ([allValues objectForKey: usernameKey] && [allValues objectForKey: serverNameKey]) { theKey = [NSString stringWithFormat: @"%@ @ %@", [allValues objectForKey: usernameKey], [allValues objectForKey: serverNameKey]]; aPassword = [Utilities decryptPassword: [allValues objectForKey: passwordKey] withKey: theKey]; // We verify in our cache if (!aPassword) { aPassword = [passwordCache objectForKey: theKey]; } } else { aPassword = nil; theKey = nil; } // If we must prompt for the password if (!aPassword && aBOOL) { PasswordPanelController *theController; int result; theController = [[PasswordPanelController alloc] initWithWindowNibName: @"PasswordPanel"]; [[theController window] setTitle: (theKey ? theKey : (id)@"")]; result = [NSApp runModalForWindow: [theController window]]; // If the user has entered a password... if (result == NSRunStoppedResponse) { aPassword = [theController password]; // Let's cache this password... if (theKey) [passwordCache setObject: aPassword forKey: theKey]; } else { aPassword = nil; } RELEASE(theController); } return aPassword; } // // // + (NSMutableDictionary *) passwordCache { return passwordCache; } // // Creates a reply // + (void) replyToMessage: (CWMessage *) theMessage folder: (CWFolder *) theFolder mode: (PantomimeReplyMode) theMode { EditWindowController *theEditWindowController; NSString *theAccountName, *theAccountAddress; CWMessage *aMessage; BOOL shouldReplyToList, aBOOL; int i; if (!theMessage || ![theMessage content]) { NSBeep(); return; } // // We initialize our message, just to be safe. It SHOULD already be // initialized since it's selected (since the user wants to reply to // this selected mail) // INITIALIZE_MESSAGE(theMessage); theAccountName = [self accountNameForMessage: theMessage]; theAccountAddress = nil; shouldReplyToList = NO; aBOOL = YES; if (theAccountName) { theAccountAddress = [[[[[NSUserDefaults standardUserDefaults] objectForKey: @"ACCOUNTS"] objectForKey: theAccountName] objectForKey: @"PERSONAL"] objectForKey: @"EMAILADDR"]; } // // We verify for the List-Post header. This is definied in RFC-2369. We use it to offer // a "reply to list" option to the user. // if ([[theMessage allHeaders] objectForKey: @"List-Post"] && [[[[theMessage allHeaders] objectForKey: @"List-Post"] stringByTrimmingWhiteSpaces] caseInsensitiveCompare: @"NO"] != NSOrderedSame) { int choice; choice = NSRunAlertPanel(_(@"List Reply..."), _(@"To whom would you like to reply?"), _(@"List"), // default _(@"Everyone"), // alternate _(@"Sender"), nil); if (choice == NSAlertDefaultReturn) { shouldReplyToList = YES; } else if (choice == NSAlertAlternateReturn) { theMode = theMode|PantomimeReplyAllMode; } else { theMode = theMode&(theMode^PantomimeReplyAllMode); aBOOL = NO; } } if (shouldReplyToList || (theMode&PantomimeReplyAllMode)) { // We do only that (ie., we don't offer the "Reply to all" option) } else if (aBOOL && [theMessage recipientsCount] > 1) { int choice; choice = NSRunAlertPanel(_(@"Reply..."), _(@"Would you like to reply to all recipients?"), _(@"No"), // default _(@"Yes"), // alternate nil); if (choice == NSAlertAlternateReturn) { theMode = theMode|PantomimeReplyAllMode; } else { theMode = theMode&(theMode^PantomimeReplyAllMode); } } // We create our window controller theEditWindowController = [[EditWindowController alloc] initWithWindowNibName: @"EditWindow"]; if (theEditWindowController) { [[theEditWindowController window] setTitle: _(@"Reply to a message...")]; [theEditWindowController setSignaturePosition: [[NSUserDefaults standardUserDefaults] integerForKey: @"SIGNATURE_REPLY_POSITION" default: SIGNATURE_END]]; [theEditWindowController setShowCc: ((theMode&PantomimeReplyAllMode) == PantomimeReplyAllMode)]; [theEditWindowController setMode: GNUMailReplyToMessage]; // We set the original message [theEditWindowController setUnmodifiedMessage: theMessage]; // We create a replied copy of our message and we retain it aMessage = [theMessage reply: theMode]; RETAIN(aMessage); // If we are in the Sent folder, we replace the recipient with the original recipients // of the messages. if ([Utilities stringValueOfURLName: [Utilities stringValueOfURLNameFromFolder: theFolder] isEqualTo: @"SENTFOLDERNAME"]) { [aMessage setRecipients: [[theEditWindowController unmodifiedMessage] recipients]]; } // Remove original recipient from recipient list. As a small optimization, we don't do that // if we reply only to a mailing list since the recipients will get replaced below. if (!shouldReplyToList && (theMode&PantomimeReplyAllMode) && theAccountAddress) { for (i = ([aMessage recipientsCount]-1); i >= 0; i--) { if ([[(CWInternetAddress*)[[aMessage recipients] objectAtIndex: i] address] caseInsensitiveCompare: theAccountAddress] == NSOrderedSame) { [aMessage removeRecipient: (CWInternetAddress *)[[aMessage recipients] objectAtIndex: i]]; break; } } } // We want to include only the list address on list reply if (shouldReplyToList) { CWInternetAddress *theInternetAddress; NSMutableString *aMutableString; aMutableString = [NSMutableString stringWithString: [theMessage headerValueForName: @"List-Post"]]; [aMutableString deleteCharactersInRange: [aMutableString rangeOfString: @"mailto:"]]; theInternetAddress = [[CWInternetAddress alloc] initWithString: aMutableString]; [theInternetAddress setType: PantomimeToRecipient]; [aMessage setRecipients: [NSArray arrayWithObject: theInternetAddress]]; RELEASE(theInternetAddress); } [theEditWindowController setMessage: aMessage]; RELEASE(aMessage); // We set the appropriate account and show our window [theEditWindowController setAccountName: theAccountName]; [theEditWindowController showWindow: self]; // When replying to a mail, focus the text view [[theEditWindowController window] makeFirstResponder: [theEditWindowController textView]]; } } // // // + (void) forwardMessage: (CWMessage *) theMessage mode: (PantomimeForwardMode) theMode { EditWindowController *theEditWindowController; NSString *theAccountName; CWMessage *aMessage; if (!theMessage || ![theMessage content]) { NSBeep(); return; } // // We initialize our message, just to be safe. It SHOULD already be // initialized since it's selected (since the user wants to forward // this selected mail) // INITIALIZE_MESSAGE(theMessage); // We guess the profile we should be using theAccountName = [self accountNameForMessage: theMessage]; // We create a forwarded copy of our message and we retain it aMessage = [theMessage forward: theMode]; RETAIN(aMessage); theEditWindowController = [[EditWindowController alloc] initWithWindowNibName: @"EditWindow"]; if (theEditWindowController) { [[theEditWindowController window] setTitle: _(@"Forward a message...")]; [theEditWindowController setSignaturePosition: [[NSUserDefaults standardUserDefaults] integerForKey: @"SIGNATURE_FORWARD_POSITION" default: SIGNATURE_BEGINNING]]; [theEditWindowController setMessage: aMessage]; [theEditWindowController setShowCc: NO]; [theEditWindowController setMode: GNUMailForwardMessage]; // We set the appropriate account and show our window [theEditWindowController setAccountName: theAccountName]; [theEditWindowController showWindow: self]; } RELEASE(aMessage); } // // This method displays a message in the textView. // + (void) showMessage: (CWMessage *) theMessage target: (NSTextView *) theTextView showAllHeaders: (BOOL) headersFlag { if (theMessage) { CWFlags *theFlags; id aDelegate; int i, count; if ([theMessage isKindOfClass: [CWIMAPMessage class]] && ![(CWIMAPFolder *)[theMessage folder] selected]) { return; } // If the content of the message has neven been parsed before, we do it now! INITIALIZE_MESSAGE(theMessage); // We clear our 'Save' menu count = [[(GNUMail *)[NSApp delegate] saveMenu] numberOfItems]; while (count > 1) { count--; [[(GNUMail *)[NSApp delegate] saveMenu] removeItemAtIndex: count]; } // We begin by clearing what we have in our text view [[theTextView textStorage] deleteCharactersInRange: NSMakeRange(0, [[theTextView textStorage] length])]; // We inform our bundles that the message WILL BE shown in the text view for (i = 0; i < [[GNUMail allBundles] count]; i++) { id aBundle; aBundle = [[GNUMail allBundles] objectAtIndex: i]; if ([aBundle respondsToSelector: @selector(messageWillBeDisplayed:inView:)]) { [aBundle messageWillBeDisplayed: theMessage inView: theTextView]; } } [[theTextView textStorage] appendAttributedString: [NSAttributedString attributedStringFromContentForPart: theMessage controller: [[theTextView window] windowController]]]; [[theTextView textStorage] quote]; [[theTextView textStorage] format]; [[theTextView textStorage] insertAttributedString: [NSAttributedString attributedStringFromHeadersForMessage: theMessage showAllHeaders: headersFlag useMailHeaderCell: YES] atIndex: 0]; // We update the Flags of our message (ie., we add PantomimeSeen) theFlags = [theMessage flags]; // If the message was a new one, let's change the app icon back to GNUMail.tiff if (![theFlags contain: PantomimeSeen]) { [theFlags add: PantomimeSeen]; } // We remove the potential \\Recent IMAP flag. [theFlags remove: PantomimeRecent]; // We ensure that the selected table row is properly refreshed after changing the flags // FIXME: find a more elegant solution. aDelegate = [[GNUMail lastMailWindowOnTop] delegate]; if (aDelegate) { id aDataView; aDataView = nil; if ([aDelegate isKindOfClass: [MailWindowController class]]) { aDataView = [aDelegate dataView]; } else { aDataView = [[aDelegate mailWindowController] dataView]; } if ([aDataView selectedRow] >= 0) { [aDataView setNeedsDisplayInRect: [aDataView rectOfRow: [aDataView selectedRow]]]; } } // We finally highlight the URLs in our message, if we want to if ([[NSUserDefaults standardUserDefaults] objectForKey: @"HIGHLIGHT_URL"] && [[[NSUserDefaults standardUserDefaults] objectForKey: @"HIGHLIGHT_URL"] intValue] == NSOnState) { [[theTextView textStorage] highlightAndActivateURL]; // We update the rects of our cursors [[theTextView window] invalidateCursorRectsForView: theTextView]; } // We inform our bundles that the message HAS BEEN shown in the text view for (i = 0; i < [[GNUMail allBundles] count]; i++) { id aBundle; aBundle = [[GNUMail allBundles] objectAtIndex: i]; if ([aBundle respondsToSelector: @selector(messageWasDisplayed:inView:)]) { [aBundle messageWasDisplayed: theMessage inView: theTextView]; } } // If we have more than one attachement, we create a 'save all' menu at the top if ([[(GNUMail *)[NSApp delegate] saveMenu] numberOfItems] > 2) { NSMenuItem *aMenuItem; aMenuItem = [[NSMenuItem alloc] init]; [aMenuItem setTitle: _(@"All Attachments")]; [aMenuItem setTarget: [NSApp delegate]]; [aMenuItem setAction: @selector(saveAllAttachments:)]; [aMenuItem setKeyEquivalent: @""]; [[(GNUMail *)[NSApp delegate] saveMenu] insertItem: aMenuItem atIndex: 1]; RELEASE(aMenuItem); } } else { NSDebugLog(@"Unable to find the message in the hashtable!"); } // We scroll to the beginning of the message and we remove any previous text selection [theTextView scrollPoint: NSMakePoint(0,0)]; [theTextView setSelectedRange: NSMakeRange(0,0)]; } // // // + (void) showMessageRawSource: (CWMessage *) theMessage target: (NSTextView *) theTextView { if (theMessage && theTextView) { NSAttributedString *theAttributedString; NSDictionary *theAttributes; NSString *aString; NSData *aData; if ([theMessage isKindOfClass: [CWIMAPMessage class]] && ![(CWIMAPFolder *)[theMessage folder] selected]) { return; } theAttributes = [NSDictionary dictionaryWithObject: [NSFont userFixedPitchFontOfSize: 0] forKey: NSFontAttributeName]; aData = [theMessage rawSource]; if (!aData) { aString = _(@"Loading message..."); if (![[TaskManager singleInstance] taskForService: [[theMessage folder] store]]) { Task *aTask; [theMessage setProperty: [NSNumber numberWithBool: YES] forKey: MessageLoading]; aTask = [[Task alloc] init]; [aTask setKey: [Utilities accountNameForFolder: [theMessage folder]]]; aTask->op = LOAD_ASYNC; aTask->immediate = YES; aTask->total_size = (float)[theMessage size]/(float)1024; [aTask setMessage: theMessage]; [[TaskManager singleInstance] addTask: aTask]; RELEASE(aTask); } [[[TaskManager singleInstance] taskForService: [[theMessage folder] store]] addController: [[theTextView window] windowController]]; } else { // If the message's encoding is 8bit or binary, we try to use the message's charset if ([theMessage contentTransferEncoding] == PantomimeEncoding8bit || [theMessage contentTransferEncoding] == PantomimeEncodingBinary) { NSData *aCharset; if ([[theMessage charset] isEqualToString: @"us-ascii"]) { aCharset = [@"iso-8859-1" dataUsingEncoding: NSASCIIStringEncoding]; } else { aCharset = [[theMessage charset] dataUsingEncoding: NSASCIIStringEncoding]; } aString = AUTORELEASE([[NSString alloc] initWithData: aData encoding: [NSString encodingForCharset: aCharset]]); //NSLog(@"RAWSOURCE = |%@| |%@|", aString, [theMessage charset]); } else { aString = AUTORELEASE([[NSString alloc] initWithData: aData encoding: NSASCIIStringEncoding]); // Again, we check for broken MUAs. // WE FORCE if (!aString) { aString = [NSString stringWithData: aData charset: [@"iso-8859-1" dataUsingEncoding: NSASCIIStringEncoding]]; if (!aString) { aString = [NSString stringWithData: aData charset: [@"utf-8" dataUsingEncoding: NSASCIIStringEncoding]]; } } } } theAttributedString = [[NSAttributedString alloc] initWithString: aString attributes: theAttributes]; [[theTextView textStorage] setAttributedString: theAttributedString]; RELEASE(theAttributedString); // We scroll to the beginning of the message and we remove any previous text selection [theTextView scrollPoint: NSMakePoint(0,0)]; [theTextView setSelectedRange: NSMakeRange(0,0)]; } else { NSBeep(); } } // // // + (void) clickedOnCell: (id ) attachmentCell inRect: (NSRect) cellFrame atIndex: (unsigned) charIndex sender: (id) sender { NSTextAttachment *attachment; NSFileWrapper *filewrapper; MimeType *aMimeType; NSString *aString; #ifdef MACOSX NSWindow *aWindow; #endif // If it's our header cell, we immediately return if ([attachmentCell isKindOfClass: [MailHeaderCell class]]) { return; } attachment = [attachmentCell attachment]; filewrapper = [attachment fileWrapper]; aMimeType = nil; aMimeType = [[MimeTypeManager singleInstance] mimeTypeForFileExtension: [[filewrapper preferredFilename] pathExtension]]; if (!aMimeType || [aMimeType action] == PROMPT_SAVE_PANEL || sender == [NSApp delegate]) { NSSavePanel *aSavePanel; aSavePanel = [NSSavePanel savePanel]; [aSavePanel setAccessoryView: nil]; [aSavePanel setRequiredFileType: @""]; #ifdef MACOSX if ([sender respondsToSelector: @selector(window)]) { aWindow = [sender window]; } else { aWindow = [GNUMail lastMailWindowOnTop]; } [aSavePanel beginSheetForDirectory: [GNUMail currentWorkingPath] file: [filewrapper preferredFilename] modalForWindow: aWindow modalDelegate: self didEndSelector: @selector(_savePanelDidEnd: returnCode: contextInfo:) contextInfo: filewrapper]; #else [self _savePanelDidEnd: aSavePanel returnCode: [aSavePanel runModalForDirectory: [GNUMail currentWorkingPath] file: [filewrapper preferredFilename]] contextInfo: filewrapper]; #endif } else if ([aMimeType action] == OPEN_WITH_WORKSPACE) { aString = [NSString stringWithFormat:@"%@/%d_%@", GNUMailTemporaryDirectory(), [[NSProcessInfo processInfo] processIdentifier], [filewrapper preferredFilename]]; if ([[filewrapper regularFileContents] writeToFile: aString atomically: YES]) { [[NSFileManager defaultManager] enforceMode: 0600 atPath: aString]; // // If we successfully open the file with the Workspace, it will be // removed when the application exists in GNUMail+Extensions: -removeTemporaryFiles. // if (![[NSWorkspace sharedWorkspace] openFile: aString]) { [[NSFileManager defaultManager] removeFileAtPath: aString handler: nil]; } } } else { if (![[NSFileManager defaultManager] fileExistsAtPath: [aMimeType dataHandlerCommand]]) { NSRunAlertPanel(_(@"Error!"), _(@"The external program (%@) for opening this MIME-Type (%@) can't be found."), _(@"OK"), NULL, NULL, [aMimeType dataHandlerCommand], [aMimeType mimeType]); return; } aString = [NSString stringWithFormat:@"%@/%d_%@", GNUMailTemporaryDirectory(), [[NSProcessInfo processInfo] processIdentifier], [filewrapper preferredFilename]]; if ([[filewrapper regularFileContents] writeToFile: aString atomically: YES]) { NSMutableString *aPath; NSTask *aTask; [[NSFileManager defaultManager] enforceMode: 0600 atPath: aString]; aTask = [[NSTask alloc] init]; // Construct the launch path. If is an MacOS app wrapper, add the full path to the binary aPath = [[NSMutableString alloc] initWithString: [aMimeType dataHandlerCommand]]; #ifdef MACOSX if ([[NSWorkspace sharedWorkspace] isFilePackageAtPath: aPath]) { [aPath appendString: [NSString stringWithFormat: @"/Contents/MacOS/%@", [[aPath stringByDeletingPathExtension] lastPathComponent]]]; } #endif // Launch task and look for exceptions NS_DURING { // We register for our notification [[NSNotificationCenter defaultCenter] addObserver: [NSApp delegate] selector: @selector(taskDidTerminate:) name: NSTaskDidTerminateNotification object: aTask]; [aTask setLaunchPath: aPath]; [aTask setArguments: [NSArray arrayWithObjects: aString, nil]]; [aTask launch]; } NS_HANDLER { NSRunAlertPanel(_(@"Error!"), _(@"There was an error launching the external program (%@) for opening this attachment (%@)!\nException: %@"), _(@"OK"), NULL, NULL, aPath, aString, localException); } NS_ENDHANDLER } else { NSBeep(); } } } // // // + (void) restoreOpenFoldersForStore: (id) theStore { if ([[NSUserDefaults standardUserDefaults] objectForKey: @"OPEN_LAST_MAILBOX"] == nil || [[NSUserDefaults standardUserDefaults] boolForKey: @"OPEN_LAST_MAILBOX"]) { NSMutableArray *foldersToOpen; foldersToOpen = [[NSUserDefaults standardUserDefaults] objectForKey: @"FOLDERS_TO_OPEN"]; if (!foldersToOpen || [foldersToOpen count] == 0) { #ifdef MACOSX // On OS X, we show an empty viewer window if we had no mailbox // to open upon GNUMail's startup if ([[GNUMail allMailWindows] count] == 0) { [[NSApp delegate] newViewerWindow: self]; } #endif return; } else { int i; for (i = 0; i < [foldersToOpen count]; i++) { CWURLName *theURLName; theURLName = [[CWURLName alloc] initWithString: [foldersToOpen objectAtIndex: i] path: [[NSUserDefaults standardUserDefaults] objectForKey: @"LOCALMAILDIR"]]; if (([theStore isKindOfClass: [CWLocalStore class]] && [[theURLName protocol] caseInsensitiveCompare: @"LOCAL"] == NSOrderedSame) || ([theStore isKindOfClass: [CWIMAPStore class]] && [[theURLName protocol] caseInsensitiveCompare: @"IMAP"] == NSOrderedSame && [[theURLName host] caseInsensitiveCompare: [(CWIMAPStore *)theStore name]] == NSOrderedSame && [[theURLName username] caseInsensitiveCompare: [theStore username]] == NSOrderedSame)) { [[MailboxManagerController singleInstance] openFolderWithURLName: theURLName sender: [NSApp delegate]]; } RELEASE(theURLName); } } } } @end // // Private implementation for Utilities // @implementation Utilities (Private) // // // + (void) _savePanelDidEnd: (NSSavePanel *) theSavePanel returnCode: (int) theReturnCode contextInfo: (void *) theContextInfo { // If successful, save file under designated name if (theReturnCode == NSOKButton) { if (![[(NSFileWrapper *)theContextInfo regularFileContents] writeToFile: [theSavePanel filename] atomically: YES]) { NSBeep(); } else { [[NSFileManager defaultManager] enforceMode: 0600 atPath: [theSavePanel filename]]; } [GNUMail setCurrentWorkingPath: [[theSavePanel filename] stringByDeletingLastPathComponent]]; } } @end // // C functions // NSComparisonResult CompareVersion(NSString *theCurrentVersion, NSString *theLatestVersion) { NSArray *currentVersion, *latestVersion; int i, currentCount, latestCount; currentVersion = [theCurrentVersion componentsSeparatedByString: @"."]; currentCount = [currentVersion count]; latestVersion = [theLatestVersion componentsSeparatedByString: @"."]; latestCount = [latestVersion count]; // // Note: Version 1.0 < 1.0.0 < 1.0.1 // for (i = 0; i < currentCount && i < latestCount; i++) { int c, l; c = [[currentVersion objectAtIndex: i] intValue]; l = [[latestVersion objectAtIndex: i] intValue]; if ( c < l ) { return NSOrderedAscending; } if ( c > l ) { return NSOrderedDescending; } } if ( i < latestCount ) { return NSOrderedAscending; } return NSOrderedSame; } // // // NSString *GNUMailTemporaryDirectory() { NSFileManager *aFileManager; NSString *aString; aString = [NSString stringWithFormat: @"%@/GNUMail", NSTemporaryDirectory()]; aFileManager = [NSFileManager defaultManager]; if (![aFileManager fileExistsAtPath: aString]) { [aFileManager createDirectoryAtPath: aString attributes: [aFileManager fileAttributesAtPath: NSTemporaryDirectory() traverseLink: NO]]; [aFileManager enforceMode: 0700 atPath: aString]; } return aString; } // // // NSString *GNUMailUserLibraryPath() { return [NSString stringWithFormat: @"%@/GNUMail", [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex: 0] ]; } // // // NSString *GNUMailVersion() { #ifdef MACOSX return [[[NSBundle bundleForClass: [[NSApp delegate] class]] infoDictionary] objectForKey: @"CFBundleVersion"]; #else return [[[NSBundle mainBundle] infoDictionary] objectForKey: @"ApplicationRelease"]; #endif } GNUMail/Framework/GNUMail/WelcomePanel.m0100644000014600001460000001031310606371542020511 0ustar monotonemonotone/* ** WelcomePanel.m ** ** Copyright (c) 2006-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "WelcomePanel.h" #include "Constants.h" #include "LabelWidget.h" #include "Utilities.h" @implementation WelcomePanel - (void) _cancelClicked: (id) sender { [NSApp stopModalWithCode: NSRunAbortedResponse]; } - (void) _continueClicked: (id) sender { [NSApp stopModal]; } - (void) layoutWindow { NSButton *cancelButton, *continueButton; LabelWidget *label; NSButtonCell *cell; NSImageView *icon; icon = [[NSImageView alloc] initWithFrame: NSMakeRect(-25,147,128,128)]; [icon setImageAlignment: NSImageAlignLeft]; [icon setImage: [NSImage imageNamed: @"GNUMail_128"]]; [icon setImageFrameStyle: NSImageFrameNone]; [[self contentView] addSubview: icon]; RELEASE(icon); label = [LabelWidget labelWidgetWithFrame: NSMakeRect(81,230,290,32) label: @"Welcome to GNUMail!" alignment: NSLeftTextAlignment]; [label setFont: [NSFont boldSystemFontOfSize: 24]]; [[self contentView] addSubview: label]; #ifdef GNUSTEP label = [LabelWidget labelWidgetWithFrame: NSMakeRect(81,185,304,50) #else label = [LabelWidget labelWidgetWithFrame: NSMakeRect(81,175,304,50) #endif label: _(@"You need to configure GNUMail before using it.") alignment: NSLeftTextAlignment]; [[self contentView] addSubview: label]; #ifdef GNUSTEP label = [LabelWidget labelWidgetWithFrame: NSMakeRect(16,100,385,50) #else label = [LabelWidget labelWidgetWithFrame: NSMakeRect(16,90,385,50) #endif label: @"Please choose your preferred local storage format:\n(if unsure, choose the UNIX mbox format)" alignment: NSLeftTextAlignment]; [[self contentView] addSubview: label]; cell = [[NSButtonCell alloc] init]; [cell setButtonType: NSRadioButton]; [cell setBordered: NO]; [cell setImagePosition: NSImageLeft]; matrix = [[NSMatrix alloc] initWithFrame:NSMakeRect(16,46,250,50) mode: NSRadioModeMatrix prototype: cell numberOfRows: 2 numberOfColumns: 1]; [matrix setIntercellSpacing: NSMakeSize(0, 5)]; [matrix setAutosizesCells: NO]; [matrix setAllowsEmptySelection: NO]; RELEASE(cell); [[matrix cellAtRow: 0 column: 0] setTitle: _(@"Standard UNIX mbox format")]; [[matrix cellAtRow: 1 column: 0] setTitle: _(@"Maildir mailbox format")]; #ifndef GNUSTEP [matrix sizeToFit]; #endif [[self contentView] addSubview: matrix]; RELEASE(matrix); cancelButton = [[NSButton alloc] initWithFrame: NSMakeRect(230,12,70,25)]; [cancelButton setTitle: _(@"Cancel")]; [cancelButton setTarget: self]; [cancelButton setAction: @selector(_cancelClicked:)]; #ifndef GNUSTEP [cancelButton setBezelStyle: NSRoundedBezelStyle]; #endif [[self contentView] addSubview: cancelButton]; RELEASE(cancelButton); continueButton = [[NSButton alloc] initWithFrame: NSMakeRect(310,12,80,25)]; [continueButton setTitle: _(@"Continue")]; [continueButton setTarget: self]; [continueButton setKeyEquivalent: @"\r"]; #ifdef GNUSTEP [continueButton setImagePosition: NSImageRight]; [continueButton setImage: [NSImage imageNamed: @"common_ret"]]; [continueButton setAlternateImage: [NSImage imageNamed: @"common_retH"]]; #else [continueButton setBezelStyle: NSRoundedBezelStyle]; #endif [continueButton setAction: @selector(_continueClicked:)]; [[self contentView] addSubview: continueButton]; RELEASE(continueButton); [self setContentSize: NSMakeSize(400,275)]; } - (NSMatrix *) matrix { return matrix; } @end GNUMail/Framework/GNUMail/GNUmakefile0100644000014600001460000000630210575213556020042 0ustar monotonemonotone# # GNUMail Framework Makefile for GNUstep # # Copyright (C) 2001-2006 # # Author: Ludovic Marcotte # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. include $(GNUSTEP_MAKEFILES)/common.make FRAMEWORK_NAME = GNUMail GNUMAIL_MAJOR_VERSION=1 GNUMAIL_MINOR_VERSION=2 GNUMAIL_SUBMINOR_VERSION=0 GNUMAIL_VERSION=${GNUMAIL_MAJOR_VERSION}.${GNUMAIL_MINOR_VERSION}.${GNUMAIL_SUBMINOR_VERSION} VERSION=${GNUMAIL_VERSION} GNUMail_OBJC_FILES = \ AboutPanel.m \ AboutPanelController.m \ AddressBookController.m \ AddressBookPanel.m \ ApplicationIconController.m \ AutoCompletingTextField.m \ ConsoleWindow.m \ ConsoleWindowController.m \ Constants.m \ ExtendedCell.m \ ExtendedFileWrapper.m \ ExtendedMenuItem.m \ ExtendedTableView.m \ ExtendedTextAttachmentCell.m \ ExtendedTextView.m \ ExtendedOutlineView.m \ ExtendedWindow.m \ EditWindow.m \ EditWindowController.m \ EditWindowToolbar.m \ Filter.m \ FilterManager.m \ FindWindow.m \ FindWindowController.m \ FolderNode.m \ FolderNodePopUpItem.m \ GNUMail.m \ GNUMail+Extensions.m \ GNUMail+MenuValidation.m \ GNUMail+Services.m \ ImageTextCell.m \ LabelWidget.m \ MailboxInspectorPanel.m \ MailboxInspectorPanelController.m \ MailboxManager.m \ MailboxManagerCache.m \ MailboxManagerController.m \ MailboxManagerToolbar.m \ MailHeaderCell.m \ MailWindow.m \ MailWindowController.m \ MailWindowToolbar.m \ MessageViewWindow.m \ MessageViewWindowController.m \ MessageViewWindowToolbar.m \ MimeType.m \ MimeTypeManager.m \ NavigationToolbarItem.m \ NewMailboxPanel.m \ NewMailboxPanelController.m \ NSAttributedString+Extensions.m \ NSAttributedString+TextEnriched.m \ NSBezierPath+Extensions.m \ NSBundle+Extensions.m \ NSColor+Extensions.m \ NSFont+Extensions.m \ NSPasteboard+Extensions.m \ NSUserDefaults+Extensions.m \ PasswordPanel.m \ PasswordPanelController.m \ PreferencesWindow.m \ PreferencesWindowController.m \ STScriptingSupport.m \ Task.m \ TaskManager.m \ ThreadArcsCell.m \ Utilities.m \ WelcomePanel.m GNUMail_LIB_DIRS = -L../$(GNUSTEP_LIBRARIES_ROOT) GNUMail_GUI_LIBS = -lPantomime -lAddresses -lAddressView ADDITIONAL_INCLUDE_DIRS = -I. # We want to get all the warnings... ADDITIONAL_OBJCFLAGS += -Wall -Wno-import -I/usr/kerberos/include # Under Solaris, we include SSL headers / libraries ifeq ($(findstring solaris, $(GNUSTEP_TARGET_OS)), solaris) ADDITIONAL_OBJCFLAGS += -I/usr/local/ssl/include ADDITIONAL_LDFLAGS += -L/usr/local/ssl/lib -lssl -lcrypto endif include $(GNUSTEP_MAKEFILES)/aggregate.make include $(GNUSTEP_MAKEFILES)/framework.make GNUMail/Framework/GNUMail/PreferencesModule.h0100644000014600001460000000236310424675302021545 0ustar monotonemonotone/* ** PreferencesModule.h ** ** Copyright (c) 2001, 2002, 2003 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_PreferencesModule #define _GNUMail_H_PreferencesModule #import @protocol PreferencesModule - (id) initWithNibName: (NSString *) theName; - (void) dealloc; - (NSImage *) image; - (NSString *) name; - (NSView *) view; - (BOOL) hasChangesPending; - (void) initializeFromDefaults; - (void) saveChanges; // // class methods // + (id) singleInstance; @end #endif // _GNUMail_H_PreferencesModule GNUMail/Framework/GNUMail/GNUMail+MenuValidation.h0100644000014600001460000000206410575213556022311 0ustar monotonemonotone/* ** GNUMail+Services.h ** ** Copyright (c) 2004-2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _GNUMail_H_GNUMail_MenuValidation #define _GNUMail_H_GNUMail_MenuValidation #include "GNUMail.h" @interface GNUMail (MenuValidation) - (BOOL) validateMenuItem: (id) theMenuItem; @end #endif // _GNUMail_H_GNUMail_MenuValidation GNUMail/Framework/GNUMail/GNUMail+MenuValidation.m0100644000014600001460000001367110601706270022312 0ustar monotonemonotone/* ** GNUMail+MenuValidation.m ** ** Copyright (c) 2007 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "GNUMail+MenuValidation.h" #include "Constants.h" #include "EditWindowController.h" #include "MailWindowController.h" #include #include #include #include @implementation GNUMail (MenuValidation) - (BOOL) validateMenuItem: (id) theMenuItem { id aController; id aMessage; aController = [[GNUMail lastMailWindowOnTop] delegate]; aMessage = nil; if (aController) { if ([aController isKindOfClass: [MailWindowController class]] && [[aController dataView] numberOfSelectedRows] > 0) { aMessage = [[aController selectedMessages] objectAtIndex: 0]; } else { aMessage = [aController selectedMessage]; } } // // Delete / Undelete message // if (theMenuItem == deleteOrUndelete) { if (!aMessage) return NO; if ([[aMessage flags] contain: PantomimeDeleted]) { [deleteOrUndelete setTitle: _(@"Undelete")]; [deleteOrUndelete setTag: UNDELETE_MESSAGE]; } else { [deleteOrUndelete setTitle: _(@"Delete")]; [deleteOrUndelete setTag: DELETE_MESSAGE]; } } // // Deliver // else if (theMenuItem == deliver) { if ([[[NSApp keyWindow] windowController] isKindOfClass: [EditWindowController class]]) { [theMenuItem setTarget: [[[NSApp orderedWindows] objectAtIndex: 0] windowController]]; return YES; } else { [theMenuItem setTarget: nil]; return NO; } } // // Mark as Flagged / Unflagged // else if (theMenuItem == markAsFlaggedOrUnflagged) { if (!aMessage) return NO; if ([[aMessage flags] contain: PantomimeFlagged]) { [markAsFlaggedOrUnflagged setTitle: _(@"Mark as Unflagged")]; [markAsFlaggedOrUnflagged setTag: MARK_AS_UNFLAGGED]; } else { [markAsFlaggedOrUnflagged setTitle: _(@"Mark as Flagged")]; [markAsFlaggedOrUnflagged setTag: MARK_AS_FLAGGED]; } } // // Mark as Read / Unread // else if (theMenuItem == markAsReadOrUnread) { if (!aMessage) return NO; if ([[aMessage flags] contain: PantomimeSeen]) { [markAsReadOrUnread setTitle: _(@"Mark as Unread")]; [markAsReadOrUnread setTag: MARK_AS_UNREAD]; } else { [markAsReadOrUnread setTitle: _(@"Mark as Read")]; [markAsReadOrUnread setTag: MARK_AS_READ]; } } // // Save in Drafts else if (theMenuItem == saveInDrafts) { if ([[[NSApp keyWindow] windowController] isKindOfClass: [EditWindowController class]]) { return YES; } return NO; } // // // Show All Headers / Filtered // else if (theMenuItem == showAllHeaders) { if (!aMessage) return NO; if ([aController showAllHeaders]) { [showAllHeaders setTitle: _(@"Filtered Headers")]; [showAllHeaders setTag: HIDE_ALL_HEADERS]; } else { [showAllHeaders setTitle: _(@"All Headers")]; [showAllHeaders setTag: SHOW_ALL_HEADERS]; } } // // Show / Hide Delete messages // else if (theMenuItem == showOrHideDeleted) { if (!aController) return NO; if ([[aController folder] showDeleted]) { [showOrHideDeleted setTitle: _(@"Hide Deleted")]; [showOrHideDeleted setTag: HIDE_DELETED_MESSAGES]; } else { [showOrHideDeleted setTitle: _(@"Show Deleted")]; [showOrHideDeleted setTag: SHOW_DELETED_MESSAGES]; } } // // Show / Hide Read messages // else if (theMenuItem == showOrHideRead) { if (!aController) return NO; if ([[aController folder] showRead]) { [showOrHideRead setTitle: _(@"Hide Read")]; [showOrHideRead setTag: HIDE_READ_MESSAGES]; } else { [showOrHideRead setTitle: _(@"Show Read")]; [showOrHideRead setTag: SHOW_READ_MESSAGES]; } } // // Show / Hide Toolbar and Customize Toolbar... // else if (theMenuItem == customizeToolbar || theMenuItem == showOrHideToolbar) { id aWindow; aWindow = [NSApp keyWindow]; if (!aWindow || ![aWindow toolbar]) { return NO; } if (theMenuItem == showOrHideToolbar) { if ([(NSToolbar *)[aWindow toolbar] isVisible]) { [showOrHideToolbar setTitle: _(@"Hide Toolbar")]; } else { [showOrHideToolbar setTitle: _(@"Show Toolbar")]; } } } // // Show Raw Source / Normal Display // else if (theMenuItem == showRawSource) { if (!aMessage) return NO; if ([aController showRawSource]) { [showRawSource setTitle: _(@"Normal Display")]; } else { [showRawSource setTitle: _(@"Raw Source")]; } } // // Thread / Unthread messages // else if (theMenuItem == threadOrUnthreadMessages) { if (!aController) return NO; if ([[aController folder] allContainers]) { [threadOrUnthreadMessages setTitle: _(@"Unthread Messages")]; [threadOrUnthreadMessages setTag: UNTHREAD_MESSAGES]; [selectAllMessagesInThread setAction: @selector(selectAllMessagesInThread:)]; } else { [threadOrUnthreadMessages setTitle: _(@"Thread Messages")]; [threadOrUnthreadMessages setTag: THREAD_MESSAGES]; [selectAllMessagesInThread setAction: NULL]; } } return YES; } @end GNUMail/GNUMailInfo.plist0100644000014600001460000000331210601435447015715 0ustar monotonemonotone{ ApplicationDescription = "A GNUstep mail client."; ApplicationName = "GNUMail.app"; ApplicationRelease = "1.2.0"; ApplicationURL = "http://www.collaboration-world.com/gnumail"; Authors = ("See docs/WHOIS for the complete list of contributors.", "Ludovic Marcotte and contributors"); Copyright = "Copyright (C) 1999 ... 2007 Ludovic Marcotte and contributors."; CopyrightDescription = "Released under the GNU General Public License 2.0"; FullVersionID = "1.2.0 September 2007"; NSIcon = "GNUMail.tiff"; NSServices = ( { NSPortName = GNUMail; NSMessage = newMessageWithContent; NSSendTypes = (NSStringPboardType); NSMenuItem = { default = "GNUMail/New Mail with content"; Czech = "GNUMail/Nov\u00fd mail s obsahem"; German = "GNUMail/Neue Mail mit Inhalt"; Swedish = "GNUMail/Nytt brev med inneh\u00e5ll"; }; NSKeyEquivalent = { default = n; }; }, { NSPortName = GNUMail; NSMessage = newMessageWithRecipient; NSSendTypes = (NSStringPboardType); NSMenuItem = { default = "GNUMail/New Mail with recipient"; Czech = "GNUMail/Nov\u00fd mail s p\u00f8\u00edjemcem"; German = "GNUMail/Neue Mail mit Empf\u00e4nger"; Swedish = "GNUMail/Nytt brev med mottagare"; }; NSKeyEquivalent = { default = m; }; }, { NSPortName = GNUMail; NSMessage = newMessageWithAttachments; NSSendTypes = (NSFilenamesPboardType); NSMenuItem = { default = "GNUMail/New Mail with attachment(s)"; Czech = "GNUMail/Nov\u00fd mail s p\u00f8\u00edlohou"; }; } ); } GNUMail/GNUMail_main.m0100644000014600001460000000236110424701326015204 0ustar monotonemonotone/* ** GNUMail_main.m ** ** Copyright (c) 2003-2006 ** ** Author: Ludovic Marcotte ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program; if not, write to the Free Software ** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #import #include "GNUMail.h" #include "Constants.h" // // Starting point of GNUMail // int main(int argc, const char *argv[], char *env[]) { NSAutoreleasePool *pool; GNUMail *gnumail; pool = [[NSAutoreleasePool alloc] init]; gnumail = [[GNUMail alloc] init]; [NSApplication sharedApplication]; [NSApp setDelegate: gnumail]; NSApplicationMain(argc, argv); RELEASE(gnumail); RELEASE(pool); return 0; } GNUMail/GNUMail.scriptSuite0100644000014600001460000001274110424672357016300 0ustar monotonemonotone AppleEventCode GMAL Classes BccRecipient AppleEventCode Brpt Superclass InternetAddress CcRecipient AppleEventCode Crpt Superclass InternetAddress InternetAddress AppleEventCode Grpt Attributes address AppleEventCode Gadr Type NSString personal AppleEventCode Gpnl Type NSString Superclass NSCoreSuite.AbstractObject MessageComposition AppleEventCode Gcmp Attributes account AppleEventCode Acct Type NSString author AppleEventCode Athr Type NSString content AppleEventCode Ctnt Type NSTextStorage hasSignature AppleEventCode hSig Type NSNumber<Bool> signaturePosition AppleEventCode sPos Type NSNumber<Int> subject AppleEventCode Subj Type NSString Superclass NSCoreSuite.AbstractObject SupportedCommands Attach handleAttachScriptCommand: SendMessage handleSendMessageScriptCommand: ShowMessage handleShowMessageScriptCommand: ToManyRelationships bccRecipients AppleEventCode Brpt LocationRequiredToCreate NO Type BccRecipient ccRecipients AppleEventCode Crpt LocationRequiredToCreate NO Type CcRecipient recipients AppleEventCode Grpt LocationRequiredToCreate NO Type InternetAddress toRecipients AppleEventCode Trpt LocationRequiredToCreate NO Type ToRecipient NSApplication AppleEventCode capp Superclass NSCoreSuite.NSApplication ToManyRelationships messageCompositions AppleEventCode Gcmp LocationRequiredToCreate NO Type MessageComposition ToRecipient AppleEventCode Trpt Superclass InternetAddress Commands Attach AppleEventClassCode GMAL AppleEventCode Gatt Arguments file AppleEventCode Gfil Type NSString CommandClass NSScriptCommand GetURL AppleEventClassCode GURL AppleEventCode GURL CommandClass GetURLScriptCommand OpenURL AppleEventClassCode GURL AppleEventCode gurl CommandClass GetURLScriptCommand SendMessage AppleEventClassCode GMAL AppleEventCode Gsnd CommandClass NSScriptCommand ShowMessage AppleEventClassCode GMAL AppleEventCode Gshw CommandClass NSScriptCommand Name GNUMail GNUMail/GNUMail.suiteModel0100644000014600001460000005525310424672357016101 0ustar monotonemonotone Classes BccRecipient English.lproj description A "Bcc" recipient humanReadableName bcc recipient pluralName bcc recipients appleEventCode Brpt codeGenDict classMethodForKVC declareKVCKeys implementKeyedArchiving defaultSubcontainerAttribute presentationOrder 5 propertyKeysForAccessingToManysByID propertyKeysForAccessingToManysByName superclass InternetAddress xmlEncodingVersion 2.0 CcRecipient English.lproj description A "Cc" recipient humanReadableName cc recipient pluralName cc recipients appleEventCode Crpt codeGenDict classMethodForKVC declareKVCKeys implementKeyedArchiving defaultSubcontainerAttribute presentationOrder 4 propertyKeysForAccessingToManysByID propertyKeysForAccessingToManysByName superclass InternetAddress xmlEncodingVersion 2.0 InternetAddress Attributes address English.lproj description Email address of recipient humanReadableName address number singular sex none appleEventCode Gadr codeGenDict callDidChange callUndoManager implementAccessors pbType NSString presentationOrder 1 readOnly NO type NSString xmlEncodingVersion 2.0 personal English.lproj description Real name of recipient humanReadableName personal number singular sex none appleEventCode Gpnl codeGenDict callDidChange callUndoManager implementAccessors pbType NSString presentationOrder 0 readOnly NO type NSString xmlEncodingVersion 2.0 English.lproj description A message recipient humanReadableName recipient pluralName recipients appleEventCode Grpt codeGenDict classMethodForKVC declareKVCKeys implementKeyedArchiving defaultSubcontainerAttribute presentationOrder 2 propertyKeysForAccessingToManysByID propertyKeysForAccessingToManysByName superclass NSCoreSuite.AbstractObject xmlEncodingVersion 2.0 MessageComposition Attributes account English.lproj description Specifies mail account from which to send this message humanReadableName account number singular sex none appleEventCode Acct codeGenDict callDidChange callUndoManager implementAccessors implementAsPrimitive pbType NSString presentationOrder 5 readOnly NO type NSString xmlEncodingVersion 2.0 author English.lproj description Author of message humanReadableName author number singular sex none appleEventCode Athr codeGenDict callDidChange callUndoManager implementAccessors pbType NSString presentationOrder 0 readOnly NO type NSString xmlEncodingVersion 2.0 content English.lproj description Body of message humanReadableName content number singular sex none appleEventCode Ctnt codeGenDict callDidChange callUndoManager implementAccessors pbType NSTextStorage presentationOrder 3 readOnly NO type NSTextStorage xmlEncodingVersion 2.0 hasSignature English.lproj description Specifies whether the message has a signature humanReadableName has signature number singular sex none appleEventCode hSig codeGenDict callDidChange callUndoManager implementAccessors pbType NSNumber presentationOrder 4 readOnly NO type NSNumber<Bool> xmlEncodingVersion 2.0 signaturePosition English.lproj description Position of signature (top/bottom) humanReadableName signature position number singular sex none appleEventCode sPos codeGenDict callDidChange callUndoManager implementAccessors pbType NSNumber presentationOrder 1 readOnly NO type NSNumber<Int> xmlEncodingVersion 2.0 subject English.lproj description Subject of message humanReadableName subject number singular sex none appleEventCode Subj codeGenDict callDidChange callUndoManager implementAccessors pbType NSString presentationOrder 2 readOnly NO type NSString xmlEncodingVersion 2.0 English.lproj description A message composition humanReadableName message composition pluralName message compositions SupportedCommands Attach English.lproj methodName handleAttachScriptCommand: name Attach presentationOrder 0 xmlEncodingVersion 2.0 SendMessage English.lproj methodName handleSendMessageScriptCommand: name SendMessage presentationOrder 2 xmlEncodingVersion 2.0 ShowMessage English.lproj methodName handleShowMessageScriptCommand: name ShowMessage presentationOrder 1 xmlEncodingVersion 2.0 ToManyRelationships bccRecipients English.lproj humanReadableName bcc recipients number singular sex none appleEventCode Brpt codeGenDict callDidChange callUndoManager implementAccessors pbType id locationRequiredToCreate NO presentationOrder 2 readOnly NO type BccRecipient xmlEncodingVersion 2.0 ccRecipients English.lproj humanReadableName cc recipients number singular sex none appleEventCode Crpt codeGenDict callDidChange callUndoManager implementAccessors pbType id locationRequiredToCreate NO presentationOrder 1 readOnly NO type CcRecipient xmlEncodingVersion 2.0 recipients English.lproj humanReadableName recipients number singular sex none appleEventCode Grpt codeGenDict callDidChange callUndoManager implementAccessors pbType id locationRequiredToCreate NO presentationOrder 3 readOnly NO type InternetAddress xmlEncodingVersion 2.0 toRecipients English.lproj humanReadableName to recipients number singular sex none appleEventCode Trpt codeGenDict callDidChange callUndoManager implementAccessors pbType id locationRequiredToCreate NO presentationOrder 0 readOnly NO type ToRecipient xmlEncodingVersion 2.0 appleEventCode Gcmp codeGenDict classMethodForKVC declareKVCKeys implementKeyedArchiving defaultSubcontainerAttribute presentationOrder 1 propertyKeysForAccessingToManysByID propertyKeysForAccessingToManysByName superclass NSCoreSuite.AbstractObject xmlEncodingVersion 2.0 NSApplication English.lproj description Main application class humanReadableName application pluralName applications ToManyRelationships messageCompositions English.lproj humanReadableName message compositions number singular sex none appleEventCode Gcmp codeGenDict callDidChange callUndoManager implementAccessors pbType id locationRequiredToCreate NO presentationOrder 0 readOnly NO type MessageComposition xmlEncodingVersion 2.0 appleEventCode capp codeGenDict classMethodForKVC declareKVCKeys implementKeyedArchiving defaultSubcontainerAttribute presentationOrder 0 propertyKeysForAccessingToManysByID propertyKeysForAccessingToManysByName superclass NSCoreSuite.NSApplication xmlEncodingVersion 2.0 ToRecipient English.lproj description A "To" recipient humanReadableName to recipient pluralName to recipients appleEventCode Trpt codeGenDict classMethodForKVC declareKVCKeys implementKeyedArchiving defaultSubcontainerAttribute presentationOrder 3 propertyKeysForAccessingToManysByID propertyKeysForAccessingToManysByName superclass InternetAddress xmlEncodingVersion 2.0 Commands Attach Arguments file English.lproj description File name of attachment humanReadableName file number singular sex none appleEventCode Gfil codeGenDict pbType NSString optional NO presentationOrder 0 type NSString xmlEncodingVersion 2.0 English.lproj description Adds an attachment humanReadableName attach isVerb YES appleEventClassCode GMAL appleEventCode Gatt commandClass NSScriptCommand presentationOrder 3 resultAppleEventCode type xmlEncodingVersion 2.0 GetURL English.lproj description Opens a URL humanReadableName get URL isVerb YES appleEventClassCode GURL appleEventCode GURL commandClass GetURLScriptCommand presentationOrder 0 resultAppleEventCode type xmlEncodingVersion 2.0 OpenURL English.lproj description Opens a URL humanReadableName open URL isVerb YES appleEventClassCode GURL appleEventCode gurl commandClass GetURLScriptCommand presentationOrder 1 resultAppleEventCode type xmlEncodingVersion 2.0 SendMessage English.lproj description Sends a message humanReadableName send isVerb YES appleEventClassCode GMAL appleEventCode Gsnd commandClass NSScriptCommand presentationOrder 2 resultAppleEventCode type xmlEncodingVersion 2.0 ShowMessage English.lproj description Shows a message humanReadableName show isVerb YES appleEventClassCode GMAL appleEventCode Gshw commandClass NSScriptCommand presentationOrder 4 resultAppleEventCode type xmlEncodingVersion 2.0 English.lproj description Scripting interface for GNUMail.app humanReadableName GNUMail script suite appleEventCode GMAL codeGenDict name GNUMail presentationOrder 2147483647 suiteNameReferenceMap NSCoreSuite order 0 path xmlEncodingVersion 2.0 GNUMail/GNUmakefile0100644000014600001460000000403210432175455014644 0ustar monotonemonotone# # GNUMail.app Makefile for GNUstep # # Copyright (C) 2001-2006 # # Author: Ludovic Marcotte # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. include $(GNUSTEP_MAKEFILES)/common.make SUBPROJECTS = \ Framework/GNUMail \ Bundles/Account \ Bundles/Advanced \ Bundles/Colors \ Bundles/Compose \ Bundles/Filtering \ Bundles/Fonts \ Bundles/Import \ Bundles/MIME \ Bundles/Receiving \ Bundles/Sending \ Bundles/Viewing APP_NAME = GNUMail GNUMail_OBJC_FILES = GNUMail_main.m GNUMail_RESOURCE_FILES = \ Resources/*.lproj \ Resources/Icons/*.tiff \ Resources/Goodies/Welcome \ ScriptingInfo.plist GNUMail_LANGUAGES = \ Resources/Arabic \ Resources/Czech \ Resources/English \ Resources/German \ Resources/French \ Resources/Russian \ Resources/Spanish \ Resources/Swedish \ Resources/Turkish GNUMail_LIB_DIRS = -L../$(GNUSTEP_LIBRARIES_ROOT) -LFramework/GNUMail/GNUMail.framework/Versions/Current/$(GNUSTEP_TARGET_LDIR) -LFramework/GNUMail/GNUMail.framework GNUMail_GUI_LIBS = -lGNUMail -lPantomime -lAddresses -lAddressView GNUMail_LOCALIZED_RESOURCE_FILES = Localizable.strings ADDITIONAL_INCLUDE_DIRS += -I./Framework/GNUMail ADDITIONAL_OBJCFLAGS += -Wall -Wno-import -I/usr/kerberos/include # If we want to memory-debug the application on Linux #ADDITIONAL_LDFLAGS += -lefence include $(GNUSTEP_MAKEFILES)/aggregate.make include $(GNUSTEP_MAKEFILES)/application.make GNUMail/README0100644000014600001460000000003210424674324013446 0ustar monotonemonotoneSee Documentation/README. GNUMail/Resources/0040755000014600001460000000000010424702213014535 5ustar monotonemonotoneGNUMail/Resources/Arabic.lproj/0040755000014600001460000000000010424672357017062 5ustar monotonemonotoneGNUMail/Resources/Arabic.lproj/Localizable.strings0100644000014600001460000020337610562042234022712 0ustar monotonemonotone/** Clock.m */ /** ClockController.m */ /** ComposeView.m */ "When replying to an E-Mail, add the signature to the" = "9F/ 'D1Q/Q 9DI (1J/ %DC*1HFJ  #6A 'D*QHBJ9 %DI"; "beginning" = "(/'J)"; "end" = "FG'J)"; "of the message." = "'D1Q3'D)."; "When forwarding an E-Mail, add the signature to the" = "9F/ *E1J1 13'D) %DC*1HFJQ)  #6A 'D*QHBJ9 %DI"; "Wrap lines at" = "DOAQ 'D#371 9F/"; "characters when sending plain/text messages." = "'D#-1A 9F/E' *13D 13'D) E,1Q/)/F5QJQ)."; "Default charset used when sending a message:" = "E,EH9) 'DE-'1A 'D'A*1'6JQ) 'DE3*./E) 9F/ %13'D 13'D):"; "Automatic" = "*DB'&J"; /** ComposeViewController.m */ "Compose" = "#DQA"; /* "Automatic" = "*DB'&J"; */ /** Face.m */ /** FaceController.m */ /** ExtendedFilteringTableView.m */ /** ExtendedTableColumn.m */ /** FilterEditorWindow.m */ "Description:" = "'DH5A:"; "Active" = "F4P7"; "Filter type:" = "FH9 'DE5A'):"; "Incoming" = "H'1/"; "Outgoing" = "5'/1"; "External Program" = "(1F'E, .'1,J"; "Process with external program:" = "9'D, ('3*./'E (1F'E, .'1,J:"; "and apply criteria(s)" = "H7(QB 'D4Q1H7"; "after" = "(9/"; "before" = "B(D"; "program execution." = "*FAJ0 'D(1F'E,."; "Criteria" = "417"; "To" = "%DI"; "Cc" = "F3.)"; "To or Cc" = "%DI #H F3.)"; "Subject" = "'DEH6H9"; "From" = "EF"; "Expert..." = ".(J1..."; "Contains" = "J-*HJ"; "Is Equal" = "E3'HJ"; "Has Prefix" = "DG 3'(B)"; "Has Suffix" = "DG D'-B)"; "Match Expression" = "7'(B 'D*Q9(J1"; "and" = "H"; "or" = "#H"; "(none)" = "(D'4J!)"; "Action" = "9ED"; "Set the color to:" = ":JQ1 'DDQHF %DI:"; "Transfer to mailbox:" = "'FBD %DI 5F/HB 'D(1J/:"; "Do..." = "'A9D..."; "Delete the message" = "'-0A 'D1Q3'D)"; "Blue" = "#21B"; "Brown" = "(FQJ"; "Cyan" = "#21B /'CF"; "Dark Gray" = "1E'/JQ /'CF"; "Green" = "#.61"; "Magenta" = "B1E2J"; "Orange" = "(1*B'DJ"; "Purple" = "(FA3,J"; "Red" = "#-E1"; "White" = "#(J6"; "Yellow" = "#5A1"; "Bounce to:" = "#1,9 %DI:"; "Forward to:" = "*E1J1 %DI:"; "Reply to:" = "1/Q %DI:"; "Set message" = "-/Q/ 13'D)"; "Cancel" = "%D:'!"; "OK" = "EH'AB"; /** FilterEditorWindowController.m */ "Add a filter" = "#6A E5AQJ"; "Error!" = ".7#!"; "The selected target folder (%@) holds folders, not messages." = "'D/QDJD 'DG/A 'DE3*./E (%@) J-*HJ #/DQ)  HDJ3 13'&D."; /* "OK" = "OK"; */ "Warning!" = "*-0J1!"; "Defining a Coloring filter that uses an external program is a BAD idea.\nThis will slow down drastically the application." = "*91JA *5AJ) ('D#DH'F *3*./E (1F'E, .'1,JQ GJ AC1) 3JQ&) 3JQ&)..\n3HA J(7Q& G0' 'D*Q7(JB CDQJQ'K."; /* "To" = "To"; */ /* "Cc" = "Cc"; */ /* "To or Cc" = "To or Cc"; */ /* "From" = "From"; */ "Is in Address Book" = "EH,H/ AJ /A*1 'D9F'HJF"; /** FilterHeaderEditorWindow.m */ "Header" = "*1HJ3)"; "Header:" = "*1HJ3):"; "Remove" = "#2D"; "Add" = "#6A"; /* "Cancel" = "%D:'!"; */ /* "OK" = "EH'AB"; */ /** FilterHeaderEditorWindowController.m */ "Add a header" = "#6A %DI 'D*Q1HJ3)"; /** FilterMessageWindow.m */ "Text to include before original message:" = "Text to include before original message:"; /* "Cancel" = "%D:'!"; */ /* "OK" = "EH'AB"; */ /** FilterMessageWindowController.m */ /** FilteringView.m */ "Rules" = "#-C'E"; /* "Active" = "F4P7"; */ "Add..." = "#6A..."; "Delete" = "'-0A"; "Edit..." = "-1Q1..."; "Duplicate" = "EC1Q1"; /** FilteringViewController.m */ "Yes" = "F9E"; "No" = "D'"; "Delete..." = "'-0A..."; "Are you sure you want to delete this filter?" = "GD #F* E*#CQ/ #FC *1J/ -0A G0G 'DE5A')"; /* "Cancel" = "Cancel"; */ "Edit a filter" = "-1Q1 E5A')"; "Filtering" = "'D*Q5AJ)"; /** FontsView.m */ "Font used when displaying a message for:" = "'D.7Q 'DE3*./E 9F/ 916 'D1Q3'D) D@:"; "Header name:" = "'3E 'D*Q1HJ3):"; "Size:" = "'D-,E:"; "Header value:" = "BJE) 'D*Q1HJ3):"; "Content of message:" = "E-*HI 'D1Q3'D):"; "Use fixed-width font for plain text messages" = "'3*./E .7Q'K 0' 916 +'(* DD1Q3'&D 'DFQ5JQ) 'DE,1Q/)"; "Plain text font:" = ".7Q 'DFQ5 'DE,1Q/:"; /** FontsViewController.m */ "Fonts" = ".7H7"; /** MIMEView.m */ "Mime-Type" = "FH9 Mime"; "File extension(s)" = "'E*/'/'* 'DEDAQ'*"; /* "Add..." = "Add..."; */ /* "Delete" = "Delete"; */ /* "Edit..." = "Edit..."; */ "Import from mailcap" = "'3*H1/ EF mailcap"; /** MIMEViewController.m */ /* "Delete..." = "Delete..."; */ "Are you sure you want to delete this Mime-Type entry?" = "GD #F* E*#CQ/ EF #FQC *1J/ -0A EO/.D FH9 Mime G0'?"; /* "Cancel" = "Cancel"; */ /* "Yes" = "Yes"; */ "MIME" = "MIME"; /** MailcapParser.m */ /** MailcapWindow.m */ /* "Mime-Type" = "Mime-Type"; */ "Command" = "#E1"; /* "Cancel" = "Cancel"; */ "Import" = "'3*H1/"; /** MailcapWindowController.m */ "Import from mailcap file" = "'3*H1/ EF EDA mailcap"; "Mailcap Import Error!" = ".7# AJ '3*J1'/ Mailcap!"; "You must select at least one mailcap item to import!" = "J,( #F *.*'1 9F51 mailcap H'-/ 9DI 'D#BDQ D'3*J1'/G!"; /* "OK" = "OK"; */ /** MimeTypeEditorWindow.m */ "Mime-Type (ex: image/jpeg):" = "FH9 Mime (E+D'K: image/jpeg):"; "File extensions (ex: jpeg,jpg,jpe):" = "'E*/'/'* 'DEDAQ'* (E+D'K: jpeg,jpg,jpe):"; /* "Description:" = "'DH5A:"; */ "View:" = "916:"; "Display if possible (as icon if it is not possible)" = "'916 %F C'F EECF'K (C#JBHF) %F DE JCF EECF'K)"; "Always display as icon" = "'916 /'&E'K C#JBHF)"; "Action:" = "9ED:"; "Prompt save panel" = "DH-) 'D-A8 'DAH1J"; "Open with external program:" = "'A*- ('3*./'E (1F'E, .'1,J:"; "Choose" = "'.*1"; "Needs a terminal for the external program" = "J-*', %DI 4'4) 71AJQ) EF #,D 'D(1F'E, 'D.'1,JQ"; "Please choose an icon to represent this Mime-Type (tiff file only):" = "1,'! '.*1 #JBHF) *E+QD FH9 Mime G0' (EDA tiff AB7):"; /* "Cancel" = "Cancel"; */ /* "OK" = "OK"; */ /** MimeTypeEditorWindowController.m */ "Add a Mime-Type" = "#6A FH9 Mime"; "Edit a Mime-Type" = "-1Q1 FH9 Mime"; /** MailboxesView.m */ "Default mailbox used for:" = "5F/HB 'D(1J/ 'D'A*1'6J 'DE3*./E D@:"; "Inbox:" = "'DH'1/:"; "Outbox:" = "'D5Q'/1:"; "Drafts:" = "'DE3H/Q'*:"; "Trash:" = "'DBE'E):"; "(If you don't see all your IMAP mailboxes, first open the connection to this IMAP server.)" = "(%F DE *CF *1I CDQ 5F'/JB (1J/ IMAP 'D.'5Q) (C  #HQD'K 'A*- 'D'*5'D %DI .'/E IMAP G0'.)"; "Compact mailbox when closing (not recommended)" = "'6:7 5F/HB 'D(1J/ 9F/ 'D%:D'B (:J1 E3*-3F)"; "Reuse the mail window when selecting a folder" = "#9/ '3*./'E F'A0) 'D(1J/ 9F/ '.*J'1 /DJD"; /** MailboxesViewController.m */ "Mailboxes" = "5F'/JB 'D(1J/"; /** PGPController.m */ "Encrypt" = "4AQ1"; "Sign" = "HBQ9"; "\nThe supplied passphrase was wrong or not given" = "\nCDE) 'DE1H1 'DE/.D) C'F* .'7&) #H DE *O/.D"; "\nWrong passphrase (or something else)" = "\nCDE) E1H1 .'7&) (#H 4J! ".1)"; "\nYour key is expired. You must generate a new one\nbefore trying to send again any signed or encrypted messages." = "\n'F*G* 5D'-J) EA*'-C. 9DJC *HDJ/ H'-/ ,/J/\nB(D E-'HD) 'D%13'D E,/Q/'K #J 13'&D EHBQ9) #H E4AQ1)."; "Decryption failed due the following reason(s):\n" = "A4D* %2'D) 'D*Q4AJ1 DD#3('( 'D*Q'DJ):\n"; /* "Error!" = "Error!"; */ /* "OK" = "OK"; */ "Encryption failed due the following reason(s):\n" = "A4D 'D*Q4AJ1 (3(( 'D#3('( 'D*'DJ):\n"; "Passphrase for %@" = "CDE) E1H1 %@"; /** PGPView.m */ "GPG/PGP executable path:" = "E3'1 (1F'E, GPG/PGP:"; "User E-Mail address:" = "9FH'F 'D(1J/ 'D'DC*1HFJ DDE3*./E:"; "Use FROM E-Mail address for signing" = "'3*./E 9FH'F 'DE13D EFG DD*QHBJ9"; /** PGPViewController.m */ "Version: %@" = "'DFQ3.): %@"; "PGP" = "PGP"; /** NewPersonalProfilePanel.m */ "Please enter the name of the new profile:" = "1,'! #/.D '3E 'D3,DQ 'D.'5 'D,/J/:"; /* "Cancel" = "Cancel"; */ /* "OK" = "OK"; */ /** NewPersonalProfilePanelController.m */ "New Personal Profile" = "3,DQ 4.5JQ ,/J/"; /** PersonalView.m */ "Available personal profiles:" = "'D3Q,D'* 'D4Q.5JQ) 'DE*HAQ1):"; /* "Add" = "Add"; */ /* "Delete" = "Delete"; */ "Set this profile as default" = "69 G0' 'D3Q,DQ 'D4Q.5J C'A*1'6J"; "Your name:" = "'3EC:"; "Your E-Mail address:" = "9FH'F (1J/C 'D'DC*1HFJ:"; "Reply-to address:" = "9FH'F 'D1Q/ %DI:"; "Organization:" = "'DEF8QE):"; "Signature" = "'D*QHBJ9"; "Obtain signature from" = "'-5D 9DI 'D*QHBJ9 EF"; "content of file" = "E-*HJ'* 'DEDA"; "program's output" = "EO.1, 'D(1F'E,"; /* "Choose" = "Choose"; */ /** PersonalViewController.m */ /* "Error!" = "Error!"; */ "This profile name already exists. Please choose another name." = "'3E 'D3,DQ 'D4Q.5JQ G0' EH,H/ E3(B'K. 1,'! '.*1 '3E'K ".1."; /* "OK" = "OK"; */ "You must have at least one defined personal profile at any time." = "J,( #F JCHF D/JC 9DI 'D#BD 3,DQ 4.5JQ .'5Q E91QA AJ #JQ HB*."; /* "Delete..." = "Delete..."; */ "Are you sure you want to delete the %@ personal profile?" = "GD #F* E*#CQ/ #FQC *1J/ %D:'! 'D3,DQ 'D4.5JQ 'D.'5Q %@"; /* "Cancel" = "Cancel"; */ /* "Yes" = "Yes"; */ "Personal" = "4.5JQ"; /** IMAPView.m */ "Check for mail every" = "*-BQB EF 'D(1J/ CD"; "minutes" = "/BJB)"; "Folders" = "#/DQ)"; "Subscribed" = "EO4*1C"; "List" = "D'&-)"; "Subscribe" = "'4*1C"; "Unsubscribe" = "#DR:P '4*1'CC"; /** IMAPViewController.m */ "All Folders" = "CDQ 'D#/DQ)"; "Y" = "F"; /* "Error!" = "Error!"; */ "Authentication error with the IMAP server." = ".7# AJ 'D*QH+JB E9 .'/E IMAP."; /* "OK" = "OK"; */ "An error occured while listing the folders on this IMAP server." = "-/+ .7# #+F'! 31R/ 'D#/DQ) 9DI .'/E IMAP G0'."; "You are already subscribed to this IMAP folder." = "#F* E4*1C E3(B'K AJ /DJD IMAP G0'."; "You cannot subscribe to this folder." = "D' JECFC 'D'4*1'C (G0' 'DE,DQ/."; "An error occured while subscribing to folder:\n%@." = "-/+ .7# #+F'! 'D'4*1'C AJ 'D/QDJD:\n%@."; "You are already unsubscribed from this IMAP folder." = "DB/ *EQ %D:'! '4*1'C 3'(B'K EF /DJD IMAP G0'."; "An error occured while unsubscribing to folder:\n%@." = "-/+ .7# #+F'! %D:'! 'D'4*1'C AJ 'D/QDJD:\n%@."; /** POP3View.m */ "Leave messages on server for" = "'*1C 'D1Q3'&D 9DI 'D.'/E DE/Q)"; "days" = "#JQ'E"; "Use APOP (if possible)" = "'3*./E APOP (%F #ECF)"; "Download messages from this server into mailbox:" = "F2QD 'D1Q3'&D EF G0' 'D'./E %DI 5F/HB 'DH'1/:"; "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)" = "(%F DE *1N CD 5F'/JB 'DH'1/ D.'/E IMAP  A'A*- 'D'*Q5'D #HQD'K\n%DI G0' 'D.'/E.)"; /** POP3ViewController.m */ /** ReceivingView.m */ "Retrieve mail (for POP3 accounts and local mail spool file)" = "',RD( 'D(1J/ (D-3'('* POP3 HEDA E.2F 'D(1J/ 'DE-DQJ)"; "Manually" = "J/HJQ'K"; "Automatically every" = ""DJQ'K CD"; /* "minutes" = "minutes"; */ "Incoming mail servers" = ".'/E'* 'D(1J/ 'DH'1/"; "Incoming Servers" = ".'/E'* 'DH'1/"; /* "Add" = "Add"; */ "Edit" = "-1Q1"; /* "Delete" = "Delete"; */ "Show alert panel for received and transferred messages" = "#8G1 DH-) 'D%F0'1 DD1Q3'&D 'DEO3*DE) H'DEO13D)"; "Show No New Messages panel" = "#8G1 DH-) D' 13'&D ,/J/)"; /** ReceivingViewController.m */ "POP3" = "POP3"; "IMAP" = "IMAP"; "%@ [UNIX]" = "%@ [JHFC3]"; /* "Error!" = "Error!"; */ "To edit this account, you must first close the connection with the server." = "CJ *O9/QD G0' 'D-3'(  9DJC #HQD'K B79 'D'*Q5'D ('D.'/E."; /* "OK" = "OK"; */ "To delete this account, you must first close the connection with the server." = "CJ *-0A G0' 'D-3'(  9DJC #HQD'K B79 'D'*Q5'D ('D.'/E."; /* "Delete..." = "Delete..."; */ "Are you sure you want to delete this receiving server entry?" = "GD #F* E*#CQ/ EF #FQC *1J/ -0A EO/.D .'/E 'D'3*B('D G0'"; /* "Cancel" = "Cancel"; */ /* "Yes" = "Yes"; */ "Receiving" = ",'1J 'D'3*B('D"; /** ReceivingWindow.m */ "Server type:" = "FH9 'D.'/E:"; /* "POP3" = "POP3"; */ /* "IMAP" = "IMAP"; */ "UNIX" = "JHFC3"; "Server name:" = "'3E 'D.'/E:"; "Port:" = "'DEFA0:"; "Username:" = "'3E 'DE3*./E:"; "Password:" = "CDE) 'DE1H1:"; "Remember password" = "*0CQ1 CDE) 'DE1H1"; "Verify for new mail on startup" = "*-BQB EF H,H/ (1J/ ,/J/ 9F/ (/! 'D*Q4:JD"; "Use secure connection (SSL)" = "'3E 'D'*Q5'D 'D"EF (SSL)"; "General" = "9'EQ"; /* "Cancel" = "Cancel"; */ /* "OK" = "OK"; */ /** ReceivingWindowController.m */ "Receiving preferences" = "*A6JD'* 'D'3*B('D"; /* "IMAP" = "IMAP"; */ /* "POP3" = "POP3"; */ /* "UNIX" = "UNIX"; */ /** UNIXView.m */ "Mail spool file:" = "EDA E.2F 'D(1J/:"; /* "Choose" = "Choose"; */ "Download messages from this spool file into mailbox:" = "F2QD 'D1Q3'&D EF EDA 'DE.2F G0' %DI 5F/HB 'D(1J/:"; /* "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)" = "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)"; */ /** UNIXViewController.m */ /** SendingView.m */ "Delivery methods" = "71B 'D*QH5JD"; "Method" = "'D7Q1JB)"; "Value" = "'DBJE)"; /* "Add" = "Add"; */ /* "Edit" = "Edit"; */ /* "Remove" = "Remove"; */ "Additional Outgoing Headers" = "*1HJ3'* 'D5Q'/1 'D%6'AJQ)"; "Key" = "'DEA*'-"; "Key:" = "'DEA*'-:"; "Value:" = "'DBJE):"; /** SendingViewController.m */ "SMTP" = "SMTP"; "Mailer" = "Mailer"; /* "Delete..." = "Delete..."; */ "Are you sure you want to delete this transport method?" = "GD #F* E*#CQ/ #FQC *1J/ -0A 71JB) 'DFQBD G0G"; /* "Cancel" = "Cancel"; */ /* "Yes" = "Yes"; */ "Sending" = ",'1J 'D%13'D"; /** TransportMethodEditorWindow.m */ "Transport method:" = "71JB) 'DFQBD:"; /* "Mailer" = "Mailer"; */ /* "SMTP" = "SMTP"; */ "Mailer:" = "Mailer:"; "Host:" = "'DE6JA:"; /* "Port:" = "Port:"; */ "Authenticate using" = "H+QB ('3*./'E"; "Most secure" = "'D#C+1 #EF'K"; "Supported mechanisms" = "'D"DJQ'* 'DE/9HE)"; /* "Username:" = "Username:"; */ /* "Password:" = "Password:"; */ /* "Remember password" = "Remember password"; */ "Associated personal profile:" = "'DEDAQ 'D4Q.5JQ 'D.'5Q 'DE1*(7:"; /* "Cancel" = "Cancel"; */ /* "OK" = "OK"; */ /** TransportMethodEditorWindowController.m */ "Add a transport method" = "#6A 71JB) FBD"; "Edit a transport method" = "9/QD 71JB) FBD"; /** ViewingView.m */ "Messages" = "'D1Q3'&D"; "Hide deleted messages on startup" = "'.RAP 'D1Q3'&D 'DE-0HA) 9F/ (/! 'D*Q4:JD"; "Hide read messages on startup" = "'.RAP 'D1Q3'&D 'DEB1H!) 9F/ (/! 'D*Q4:JD"; "Highlight URLs in message content" = "EJQ2 9F'HJF URLs AJ E-*HJ'* 'D1Q3'D)"; "Table columns" = "#9E/) 'D,/HD"; "Status" = "'D-'D)"; "Id" = "GHJQ)"; "Date" = "*'1J."; /* "From" = "From"; */ /* "Subject" = "Subject"; */ "Size" = "-,E"; "Shown headers while viewing a mail" = "#8G1 'D*Q1HJ3'* #+F'! 916 (1J/"; "Show all headers" = "#8G1 CDQ 'D*Q1HJ3'*"; /* "Remove" = "Remove"; */ /* "Add" = "Add"; */ "Defaults" = "'D'A*1'6JQ'*"; /* "Key:" = "Key:"; */ "Shown Headers" = "'D*Q1HJ3'* 'D8Q'G1)"; "Double-clicking in message list:" = "'D6Q:7 'DE2/H, AJ D'&-) 'D1Q3'&D:"; "Opens reply editor" = "JA*- E-1Q1 'D1Q/"; "Opens message in new window" = "JA*- 'D1Q3'D) AJ F'A0) ,/J/)"; /** ViewingViewController.m */ "Viewing" = ",'1J 'D916"; /** Address.m */ /** AddressBook.m */ /* "General" = "General"; */ /** AddressBookController.m */ "Address Book" = "/A*1 'D9F'HJF"; "Add Group" = "#6A E,EH9)"; "Delete Group" = "'-0A E,EH9)"; /* "General" = "General"; */ /* "Error!" = "Error!"; */ "This group already exist! Please choose an other name." = "G0G 'DE,EH9) EH,H/) E3(B'K! 1,'! '.*1 '3E'K ".1."; /* "OK" = "OK"; */ /* "Delete..." = "Delete..."; */ "Are you sure you want to delete this address?" = "GD #F* E*#CQ/ #FQC *1J/ -0A G0' 'D9FH'F"; /* "No" = "No"; */ /* "Yes" = "Yes"; */ "Are you sure you want to delete this group?" = "GD #F* E*#CQ/ #FQC *1J/ -0A G0G 'DE,EH9)"; "You must select a group to import the addresses in." = "J,( #F *.*'1 E,EH9) CJ *3*H1/ 'D9F'HJF %DJG'."; "< no address >" = "< D' 9FH'F >"; "Add Address" = "#6A 9FH'F"; "Delete Address" = "'-0A 9FH'F"; "Enter the contact's E-Mail address here" = "#/.D 9FH'F 'D(1J/ 'D'DC*1HFJ DDEO1'3D GF'"; "Groups" = "E,EH9'*"; "Move to:" = "'F*BD %DI:"; /** AddressBookWindow.m */ /* "Groups" = "Groups"; */ "Name:" = "'D'3E:"; "Modify" = "9/QD"; "Import from:" = "'3*H1/ EF:"; "OPENSTEP Mail.app" = "*7(JB (1J/ #H(F3R*("; "LDIF" = "LDIF"; "Close" = "#:DB"; /** BounceWindow.m */ "Send" = "#13D"; "Addresses" = "9F'HJF"; "From:" = "EF:"; "Using:" = "('3*./'E:"; "To:" = "%DI:"; "Cc:" = "F3.):"; "Bcc:" = "F3.) %6'AJQ):"; /** BounceWindowController.m */ "Bounce a message" = "#1,9 13'D)"; /* "Error!" = "Error!"; */ "Unable to create a valid bounced message.\nPlease, report this as a bug." = "DE JECF %F4'! 13'D) EO1,9) 5'D-).\n1,'!K  BE (*B1J1 G0' C9DQ)."; /* "OK" = "OK"; */ "Please, verify that the To/Cc/Bcc fields are correct. Also, you MUST have at least one\nvalid E-Mail address in the To field." = "1,'!K  *-BQB EF #FQ -BHD %DI/F3.)/F3.) %6'AJQ) 5-J-). #J6'K  J,( #F JCHF D/JC 9FH'F\n(1J/ 'DC*1HFJ H'-/ 5'D- AJ 'D-BD %DI."; "Stop" = "*HBQA"; "Starting the thread for bouncing the E-Mail..." = ",'1J (/! 9EDJQ) %1,'9 'D(1J/ 'D'DC*1HFJ..."; "Closing..." = ",'1J 'D%:D'B..."; "A mail is currently being sent. Please wait." = "J,1J -'DJQ'K %13'D (1J/. 1,'! 'F*81."; "An error occured during the authentication with the SMTP server (%@)." = "-/+ .7# .D'D 'D*QH+JB E9 .'/E SMTP (%@)."; "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences." = "-/+ .7# .D'D %13'D 'D(1J/ 'D%DC*1HFJ. B/ *CHF E4CD) 4(C)\n#H .7# AJ *A6JD'* 'D%13'D."; /* "Send" = "Send"; */ "Manual stop of bouncing thread." = "'D%JB'A 'D*QDJB'&J D9EDJQ) 'D%1,'9."; "Exiting the thread used to bounce the E-Mail..." = ",'1J 'D.1H, EF 9EDJQ) %1,'9 'D(1J/ 'D'DC*1HFJ..."; /** BounceWindowToolbar.m */ /** ConsoleWindow.m */ /* "Date" = "Date"; */ "Message" = "13'D)"; /** ConsoleWindowController.m */ /* "Date" = "Date"; */ "%H:%M:%S.%F" = "%H:%M:%S.%F"; /** EditWindow.m */ /* "Send" = "Send"; */ "Attach" = "#1RAPB"; "Add Cc" = "#6A F3.) (Cc)"; "Add Bcc" = "#6A F3.) %6'AJQ) (Bcc)"; /* "Addresses" = "Addresses"; */ /* "From:" = "From:"; */ /* "Using:" = "Using:"; */ "Charset:" = "E,EH9) 'DE-'1A:"; /* "Automatic" = "Automatic"; */ /* "To:" = "To:"; */ /* "Cc:" = "Cc:"; */ /* "Bcc:" = "Bcc:"; */ "Subject:" = "'DEH6H9:"; /** EditWindowController.m */ /* "Error!" = "Error!"; */ "You must have at least one transport agent defined.\nSee Preferences -> Sending." = "J,( #F JCHF D/JC 9EJD FBRD H'-/ EO91QA 9DI 'D#BD.\n'F81 *A6JD'* -> 'D%13'D."; /* "OK" = "OK"; */ /* "Stop" = "Stop"; */ "Starting the thread for sending the E-Mail..." = ",'1J (/! 9EDJQ) %13'D 'D(1J/ 'D'DC*1HFJ..."; "(no subject)" = "((/HF EH6H9)"; /* "Closing..." = "Closing..."; */ /* "A mail is currently being sent. Please wait." = "A mail is currently being sent. Please wait."; */ "Would you like to save this message in the Drafts folder?" = "GD *H/Q -A8 G0G 'D1Q3'D) AJ E,DQ/ 'DE3H/Q'*"; /* "Cancel" = "Cancel"; */ /* "Yes" = "Yes"; */ /* "No" = "No"; */ "An error occured while attempting to obtain the message store for the Drafts folder." = "-/+ .7# .D'D E-'HD) 'D-5HD 9DI E.2F 'D1Q3'&D D/DJD 'DE3H/Q'*."; "Remove Cc" = "#2D F3.) (Cc)"; /* "Add Cc" = "Add Cc"; */ "Remove Bcc" = "#2D 'DFQ3.) 'D%6'AJQ) (Bcc)"; /* "Add Bcc" = "Add Bcc"; */ /* "An error occured during the authentication with the SMTP server (%@)." = "An error occured during the authentication with the SMTP server (%@)."; */ /* "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences." = "-/+ .7# .D'D %13'D 'D(1J/ 'D'DC*1HFJ. It might be a network\nproblem or an error in your sending preferences."; */ /* "Send" = "Send"; */ "An error occured while attempting to obtain the message store for the Outbox folder.\nThe message nonetheless successfully sent." = "-/+ .7# #+F'! E-'HD) 'D-5HD 9DI E.2F 'D1Q3'&D D/DJD 'D(1J/ 'D5Q'/1.\n*EQ %13'D 'D1Q3'D) (F,'- 9DI 'D1Q:E EF 0DC."; "You must define a recipient in the field \"To\"." = "J,( #F *O-/Q/ EO3*DE'K AJ 'D-BD \"%DI\"."; /* "Automatic" = "Automatic"; */ "Manual stop of sending thread." = "%JB'A J/HJ D9EDJQ) 'D%13'D."; "Exiting the thread used to send the E-Mail..." = ",'1J 'D.1H, EF 'D9EDJQ) 'DEO3*./E) D%13'D 'D(1J/ 'D'DC*1HFJ..."; "An error occured while decoding %@. Please fix this address." = "-/+ .7# .D'D ACQ *4AJ1 %@. 1,'! #5D- G0' 'D9FH'F."; "%0.1fKB (%d characters)" = "%0.1f CJDH('J* (%d -1A)"; /** EditWindowToolbar.m */ /** ExtendedAttachmentCell.m */ "%@ (%d bytes)" = "%@ (%d ('J*)"; "%@ (%d KB)" = "%@ (%d CJDH('J*)"; /** ExtendedCell.m */ /** ExtendedOutlineView.m */ /** ExtendedTableView.m */ /** ExtendedWindow.m */ /** Filter.m */ /** FilterManager.m */ /** FindWindow.m */ "Find:" = "'(-+:"; "Replace with:" = "'3*(/D (@:"; "Find Scope" = "E,'D 'D(-+"; "Summaries" = "'D*QD.J5'*"; /* "Messages" = "'D1Q3'&D"; */ "Find Options" = ".J'1'* 'D(-+"; "Ignore Case" = "*,'GD -'D) 'D#-1A"; "Regular Expression" = "*9(J1 EOF*8E"; "Find All" = "'9+1 9DI 'DCDQ"; "Replace" = "'3*(/D"; "Replace & Find" = "'3*(/D H'(-+"; "Previous" = "'D3Q'(B"; "Next" = "'D*Q'DJ"; /** FindWindowController.m */ "Find" = "'(-+"; "Searching..." = ",'1J 'D(-+..."; "Done searching. %d results found." = "'C*ED 'D(-+. %d F*J,) HO,/*."; /** FolderNode.m */ /** FolderNodePopUpItem.m */ /** GNUMail.m */ /* "Error!" = "Error!"; */ "An error occured while attempting to obtain the message store for target filter." = "-/+ .7# .D'D E-'HD) 'D-5HD 9DI E.2F 'D1Q3'&D DDE5A') 'DG/A."; /* "OK" = "OK"; */ /* "You must have at least one transport agent defined.\nSee Preferences -> Sending." = "J,( #F JCHF D/JC 9DI 'D#BD 9EJD FBD H'-/ EO91QA.\n'F81 *A6JD'* -> 'D%13'D."; */ "Your Software is up-to-date" = "(1F'E,C EH'C( D".1 *-/J+"; "You have the most recent version of GNUMail." = "D/JC 'DFQ3.) 'D#-/+ EF (1J/ ,FJH."; "A New Version is Available" = "F3.) ,/J/) E*HAQ1)"; "A new version of GNUMail is available (version %@). Would you like to download the new version now?" = "F3.) ,/J/) EF (1J/ ,FJH E*HAQ1) ('DFQ3.) %@). GD *H/Q *F2JD 'DFQ3.) 'D,/J/) 'D"F"; /* "Cancel" = "Cancel"; */ "Feature not implemented!" = "'DEJ2) :J1 EO7(QB)!"; "Sorry, this feature is only available under Mac OS X." = "9AH'K  G0G 'DEJ2) E*HAQ1) AB7 6EF Mac OS X."; "Compact..." = "'6:7..."; "Compacting a mailbox will permanently remove deleted messages.\nDo you want to continue?" = "6:7 5F/HB 'D(1J/ 3HA J2JD 'D1Q3'&D 'DE-0HA) FG'&JQ'K.\nGD *1J/ 'D'3*E1'1"; /* "No" = "No"; */ /* "Yes" = "Yes"; */ "Compacting mailbox, please wait..." = ",'1J 6:7 5F/HB 'D(1J/. 1,'! 'F*81..."; "Done compacting mailbox %@." = "'C*ED 6N:R7 5F/HB 'D(1J/ %@."; "New message..." = "13'D) ,/J/)..."; "Undelete" = "'3R*N9P/R"; /* "Delete" = "Delete"; */ "Mark as Unread" = "9DQEG 9DI #FQG :J1 EB1H!"; "Mark as Read" = "9DQEG 9DI #FQG EB1H!"; "Mailbox error!" = ".7# AJ 5F/HB 'D(1J/!"; "You must select a valid mailbox to open!" = "J,( #F *.*'1 5F/HB (1J/ 5'D- DA*-G!"; "Local" = "E-DQJ"; "Information" = "E9DHE'*"; "Use the same directory (%@) to save all other attachments? (override the files with the same name)." = "GD '3*./E FA3 'D/QDJD (%@) D-A8 CDQ 'DEO1AB'* 'D#.1I ('C*( AHB 'DEDAQ'* 'D*J DG' FA3 'D'3E)."; "Show Filtered Headers" = "#8G1 'D*Q1HJ3'* 'DEO5AQ')"; "Show All Headers" = "#8G1 CDQ 'D*Q1HJ3'*"; "Hide Status Bar" = "#.RAP 41J7 'D-'D)"; "Show Status Bar" = "#8G1 41J7 'D-'D)"; "Show Normal Display" = "#8G1 'D916 'D9'/J"; "Show RAW Source" = "#8G1 'DE5/1 'DEO,1Q/"; "Info" = "E9DHE'*"; "Mailbox" = "5F/HB 'D(1J/"; /* "Message" = "Message"; */ /* "Compose" = "Compose"; */ /* "Edit" = "Edit"; */ "Windows" = "FH'A0"; "Print" = "7('9)"; "Services" = "./E'*"; "Hide" = "%.A'!"; "Quit" = ".1H,"; "Info Panel..." = "DH-) 'DE9DHE'*..."; "Check For Updates" = "*-BQB EF H,H/ *-/J+'*"; "Preferences..." = "*A6JD'*..."; "Help..." = "E3'9/)..."; "Mailboxes..." = "5F'/JB (1J/..."; "Get New Mail" = "#-61 'D(1J/ 'D,/J/"; "Sorting" = "'DA12"; "Sort by Date" = "'A12 (-3( 'D*Q'1J."; "Sort by Name" = "'A12 (-3( 'D'3E"; "Sort by Number" = "'A12 (-3( 'D1QBE"; "Sort by Size" = "'A12 (-3( 'D-,E"; "Sort by Subject" = "'A12 (-3( 'DEH6H9"; "Hide Deleted" = "'.RAQ 'DEN-0HA)"; "Hide Read" = "#.RAQ 'DEBR1H!)"; "Compact" = "'6:7"; "Select All Messages" = "'.*1 CDQ 'D1Q3'&D"; "Send to Address Book" = "#13D %DI /A*1 'D9F'HJF"; "Save Attachment" = "'-A8 'DEO1ANB"; "Save Text from Message" = "'-A8 'DFQ5Q EF 'D1Q3'D)"; "Text Encodings" = "*4AJ1'* 'DFQ5"; "Bounce..." = "%1,'9..."; "Apply Manual Filters" = "7(QB E5'AM J/HJQ)"; "New" = ",/J/"; "Reply" = "1/"; "Reply All" = "1/ DDCDQ"; "Forward" = "*E1J1"; "Addresses..." = "9F'HJF..."; "Drafts" = "E3H/Q'*"; "Save in Drafts" = "'-A8 AJ 'DE3H/Q'*"; "Restore Draft" = "'3*1,9 E3H/Q)"; "Cut" = "A5"; "Copy" = "F3."; "Paste" = "D5B"; "Undo" = "*1',9"; /* "Find" = "Find"; */ "Spelling..." = "*G,&)..."; "Check Spelling" = "*A-Q5 'D*QG,&)"; "Select All" = "-/Q/ 'DCDQ"; "Find Panel..." = "DH-) 'D(-+..."; "Find Next" = "'(-+ 9F 'D*Q'DJ"; "Find Previous" = "'(-+ 9F 'D3Q'(B"; "Enter Selection" = "'/.D 'D.J'1"; "Console" = "Console"; "Arrange" = "F8QE"; "Miniaturize" = "5:Q1"; /* "Close" = "Close"; */ "Setup Printer" = "%9/'/ 'D7Q'(9)"; "Important!" = "EGEQ!"; "No configuration found for GNUMail.app" = "DE JO9+1 9DI *GJ&) *7(JB (1J/ ,FJH"; "Configure" = "GJQ!"; "Loaded bundle at path %@" = "*EQ *-EJD 'D1QO2E) 9DI 'DE3'1 %@"; "Failed to initialize bundle at path %@" = "A4D '(*/'! 'D1QO2E) 9DI 'DE3'1 %@"; "Error loading bundle at path %@" = ".7# AJ *-EJD 'DQO2E) 9DI 'DE3'1 %@"; "All" = "'DCD"; "Show Deleted" = "#8G1 'DEN-0HA)"; "Show Read" = "#8G1 'DEB1H!H"; "Default" = "'A*1'6J"; /** GNUMailConstants.m */ /** Group.m */ /** LabelWidget.m */ /** LocalMailDelivery.m */ /** MailHeaderCell.m */ /** MailWindow.m */ /* "Delete" = "Delete"; */ "Get" = "#-6P1"; /* "Mailboxes" = "Mailboxes"; */ /* "Compose" = "Compose"; */ /* "Reply" = "Reply"; */ /* "Forward" = "Forward"; */ /* "Addresses" = "Addresses"; */ /* "Find" = "Find"; */ /* "Status" = "Status"; */ /* "Id" = "Id"; */ /* "Date" = "Date"; */ /* "From" = "From"; */ /* "Subject" = "Subject"; */ /* "Size" = "Size"; */ /** MailWindowController.m */ /* "New message..." = "New message..."; */ "Local - %@" = "E-DQJ - %@"; "IMAP on %@ - %@" = "IMAP 9DI %@ - %@"; "No Messages!" = "D' 13'&D!"; "There are no messages in this Mailbox!" = "DJ3* GF'C 13'&D AJ 5F/HB 'D(1J/ G0'!"; /* "OK" = "OK"; */ "< unknown >" = "< :J1 E91HA >"; /* "Closing..." = "Closing..."; */ "GNUMail.app is currently receiving E-Mails. Please wait." = "*7(JB (1J/ ,FJH JBHE -'DJQ'K ('3*D'E 'D(1J/. 1,'! 'F*81."; "Would you like to close the connection with the IMAP server?" = "GD *1J/ %:D'B 'D'*Q5'D E9 .'/E IMAP"; /* "Cancel" = "Cancel"; */ /* "Yes" = "Yes"; */ /* "No" = "No"; */ "Closed local folder %@." = "*EQ %:D'B 'D/QDJD 'DE-DQJ %@."; "Closed IMAP folder %@ on %@." = "*EQ %:D'B /DJD IMAP %@ 9DI %@."; "Closing IMAP connection on %@." = ",'1J %:D'B 'D'*Q5'D E9 IMAP 9DI %@."; /* "Stop" = "Stop"; */ "Starting the fetching thread for %@.." = ",'1J (/! 9EDJQ) 'D,D( EF #,D %@.."; /* "Error!" = "Error!"; */ "Unable to communicate with the POP3 server (%@)." = "DE JECF 'D*QH'5D E9 .'/E POP3 (%@)."; "Invalid password %@ @ %@." = "CDE) E1H1 :J1 5'D-) %@ @ %@."; "An error occured while obtaining the IMAP Store to save the received message.\n%@" = "-/+ .7# .D'D 'D-5HD 9DI E.2F IMAP D-A8 'D1Q3'D) 'DEO3*DE).\n%@"; "The received message was saved in your local Inbox folder." = "'D1Q3'D) 'DE3*DE) *EQ -A8G' AJ /DJD 5F/HBC 'DH'1/ 'DE-DQJ."; "No New Messages..." = "D' 13'&D ,/J/)..."; "There are no new messages on %@ @ %@." = "DJ3* GF'C 13'&D ,/J/) 9DI %@ @ %@."; /* "Get" = "Get"; */ "Filtered messages..." = "'D1Q3'&D 'DE5AQ')..."; "%d messages have been transfered to the following folders:\n%@" = "%d 13'&D *EQ FBDG' %DI 'D#/DQ) 'D*Q'DJ):\n%@"; "%d messages (%dKB) - %d unread (%dKB) - %d selected (%0.1fKB) - %d deleted" = "%d 13'D) (%d CJDH('J*) - %d :J1 EB1H!) (%dCJDH('J*) - %d E-/Q/) (%0.1fCJDH ('J*) - %d E-0HA)"; "IMAP %@ @ %@ - %@" = "IMAP %@ @ %@ - %@"; "No new messages on server %@" = "D' 13'&D ,/J/) 9DI 'D.'/E %@"; "Got a %@ while estabilishing (or closing) the POP3 connection to server %@." = "-5D* 9DI %@ .D'D %F4'! (#H %:D'B) '*5'D POP3 %DI 'D.'/E %@."; "Exiting the fetching thread for %@..." = ",'1J 'D.1H, EF 9EDJQ) 'D%-6'1 D@%@..."; "Got a %@ while transferring mails from %@." = "-5D %@ .D'D FBD 'D1Q3'&D EF %@."; /** MailWindowToolbar.m */ /** MailboxManager.m */ "Open this folder on startup" = "'A*- G0' 'D/QDJD 9F/ 'D(/!"; /* "Mailbox" = "Mailbox"; */ /* "Size" = "Size"; */ /* "Messages" = "Messages"; */ /* "Close" = "Close"; */ /** MailboxManagerCache.m */ /** MailboxManagerController.m */ /* "Mailboxes" = "Mailboxes"; */ /* "Mailbox" = "Mailbox"; */ "All Mailboxes" = "CDQ 5F'/JB 'D(1J/"; /* "Size" = "-,E"; */ "%d KB" = "%d CJDH('J*"; /* "Messages" = "13'&D"; */ "%d (%d unread)" = "%d (%d :J1 EB1H!))"; /* "Local" = "Local"; */ /* "Closing..." = "Closing..."; */ "Would you like to close the connection with this IMAP server?" = "GD *H/Q %:D'B 'D'*Q5'D E9 .'/E IMAP"; /* "No" = "No"; */ /* "Yes" = "Yes"; */ /* "Closing IMAP connection on %@." = ",'1J %:D'B '*Q5'D IMAP 9DI %@."; */ "Transfer error!" = ".7# AJ 'DFQBD!"; "You cannot transfer a message inside the same mailbox!" = "D' JECFC FBD 13'D) AJ /'.D FA3 5F/HB 'D(1J/!"; /* "OK" = "OK"; */ /* "Mailbox error!" = ".7# AJ 5F/HB 'D(1J/!"; */ /* "You must select a valid mailbox to open!" = "J,( #F *.*'1 5F/HB (1J/ 5'D- DA*-G!"; */ "You must select a valid mailbox\nto transfer this E-Mail to!" = "J,( #F *.*'1 5F/HB (1J/ 5'D-\nDFBD G0G 'D1Q3'D) 'D'DC*1HFJQ) %DJG!"; "You cannot transfer E-Mails to this folder!" = "D' JECFC FBD 'D1Q3'&D 'D'DC*1HFJQ) %DI G0' 'D/QDJD!"; "You must select a valid root where to create this new mailbox." = "J,( #F *.*'1 ,01'K 5'D-'K -J+ *1J/ %F4'! 5F/HB 'D(1J/ 'D,/J/."; "Please select the mailbox you would like to delete." = "1,'! '.*1 5F/HB 'D(1J/ 'D0J *1J/ -0AG."; /* "Delete..." = "'-0A..."; */ "Are you sure you want to delete this mailbox?" = "GD #F* E*#CQ/ #FQC *1J/ -0A 5F/HB 'D(1J/ G0'"; /* "Cancel" = "%D:'!"; */ "Error while deleting!" = ".7# .D'D 'D-0A!"; "You can't delete an opened mailbox! Close it first." = "D' JECFC -0A 5F/HB (1J/ EA*H-! #:DBG #HQD'K."; /* "Error!" = ".7#!"; */ "The mailbox delete operation failed." = "A4D* 9EDJQ) -0A 5F/HB 'D(1J/."; "You must select a valid mailbox to rename!" = "J,( #F *.*'1 5F/HB (1J/ 5'D- D*:JJ1 '3EG!"; "You can't rename an opened mailbox! Close it first." = "D' JECF *:JJ1 '3E 5F/HB (1J/ EA*H-! #:DBG #HD'K."; "Edit Mailbox" = "9/QD 5F/HB 'D(1J/"; "Please enter the new name of the Mailbox:" = "1,'!K #/.D 'D'3E 'D,/J/ D5F/HB 'D(1J/:"; "The local mailbox %@ does not exist!" = "5F/HB 'D(1J/ 'DE-DQJ %@ :J1 EH,H/!"; "This folder (%@) holds folders, not messages!" = "G0' 'D/DJD (%@) J-*HJ #/DQ)  HDJ3 13'&D!"; "Local folder %@ opened." = "A*- 'D/QDJD 'DE-DJ %@."; "A folder (%@) is already open. Please close it first." = "'D/DJD (%@) EA*H- E3(B'K. 1,'!K #:DBG #HQD'K."; "Opening IMAP folder %@ on %@..." = ",'1J A*- /DJD IMAP %@ 9DI %@..."; "IMAP folder %@ on %@ opened." = "A*- /DJD IMAP %@ 9DI %@."; "Connecting to IMAP server %@ using SSL" = ",'1J 'D'*5'D (.'/E IMAP %@ ('3*./'E SSL"; "Connecting to IMAP server %@" = ",'1J 'D'*5'D (.'/E IMAP %@"; "Unable to communicate with the IMAP server (%@:%i)." = "D' JECF 'D*QH'5D E9 .'/E IMAP (%@:%i)."; "Authenticating using %@..." = ",'1J 'D*QH+JB ('3*./'E %@..."; "Connected to %@!" = "*E 'D'*Q5'D E9 %@!"; /* "Invalid password %@ @ %@." = "CDE) E1H1 :J1 5'D-) %@ @ %@."; */ "A fatal error occured when appending the message to the %@ folder." = "-/+ .7# -1, .D'D %6'A) 'D1Q3'D) %DI 'DE,DQ/ %@."; /** MailboxManagerToolbar.m */ /** MessageViewWindow.m */ /* "Delete" = "Delete"; */ /* "Reply" = "Reply"; */ /* "Forward" = "Forward"; */ /* "Show All Headers" = "Show All Headers"; */ /** MessageViewWindowController.m */ /** MessageViewWindowToolbar.m */ /** MimeType.m */ /** MimeTypeManager.m */ /** NSRegEx.m */ /** NSStringExtensions.m */ /** NSUserDefaultsExtensions.m */ /** NewMailboxPanel.m */ "Please enter the name of the new Mailbox:" = "1,'!K #/.D '3E 5F/HB 'D(1J/ 'D,/J/:"; /* "Cancel" = "Cancel"; */ /* "OK" = "OK"; */ /** NewMailboxPanelController.m */ "New Mailbox" = "5F/HB (1J/ ,/J/"; /* "Local" = "Local"; */ /* "Error!" = "Error!"; */ "The mailbox rename operation failed." = "A4D* 9EDJQ) *:JJ1 '3E 5F/HB 'D(1J/."; /* "OK" = "OK"; */ "The mailbox create operation failed." = "A4D* 9EDJQ) %F4'! 5F/HB 'D(1J/."; /** PasswordPanel.m */ "Please enter your password:" = "1,'!K #/.D CDE) 'DE1H1 'D.'5Q) (C:"; /* "Cancel" = "Cancel"; */ /* "OK" = "OK"; */ /** PasswordPanelController.m */ /** PreferencesWindow.m */ "Apply" = "*7(JB"; /* "Cancel" = "Cancel"; */ /* "OK" = "OK"; */ /** PreferencesWindowController.m */ "Preferences Panel" = "DH-) 'D*QA6JD'*"; "Loading preferences bundle at path %@." = ",'1J *-EJD E,EH9) 'D*QA6JD'* 9DI 'DE3'1 %@."; /** TextEnrichedConsumer.m */ /** Utilities.m */ /* "Error!" = "Error!"; */ "A part of this E-Mail can't be represented. Please report this as a bug." = ",2! EF G0' 'D(1J/ 'D'DC*1HFJ D' JECF *E+JDG. 1,'! B1Q1 G0G C9DQ)."; /* "OK" = "OK"; */ "No text/plain part found. Please report this bug since GNUMail.app doesn't support this other kind of parts." = "DE JO9+1 9DI ,2! F5/E,1Q/. 1,'! BE (*B1J1 G0G 'D9DQ) -J+ #F *7(JB (1J/ ,FJH D' J/9E FH9 'D#,2'! G0G 'D#.1I."; "Local Mailboxes" = "5F'/JB 'D(1J/ 'DE-DQJQ)"; "Reply..." = "1/Q..."; "Would you like to reply to all recipients?" = "GD *H/Q 'D1Q/ %DI CDQ 'DE3*DEJF"; /* "No" = "No"; */ /* "Yes" = "Yes"; */ "Reply to a message..." = "1/Q 9DI 13'D)..."; "Forward a message..." = "E1Q1 13'D)..."; "Save all" = "'-A8 'DCDQ"; "The external program (%@) for opening this MIME-Type (%@) can't be found." = "'D(1F'E, 'D.'1,J (%@) 'DE3*./E DA*- FH9 MIME (%@) D' JECF 'D9+H1 9DJG."; GNUMail/Resources/Czech.lproj/0040755000014600001460000000000010424672357016735 5ustar monotonemonotoneGNUMail/Resources/Czech.lproj/Localizable.strings0100644000014600001460000021517610562042234022566 0ustar monotonemonotone /** Clock.m */ /** ClockController.m */ /** ComposeView.m */ "When replying to an E-Mail, add the signature to the" = "Pi odpovdn na E-mail, pidat podpis na"; "beginning" = "zatek"; "end" = "konec"; "of the message." = "zprvy."; "When forwarding an E-Mail, add the signature to the" = "Pi pedvn (forwading) E-Mailu, pidat podpis na"; "Wrap lines at" = "Zlom dek na"; "characters when sending plain/text messages." = "znaku pi posln plain/text zprvy."; "Default charset used when sending a message:" = "Vchoz kdovn, kter se pouije pi odesln zprvy:"; "Automatic" = "Automaticky"; "In this panel, you can specify where you want GNUMail.app to automatically\nadd your signature when replying to a mail or when forwarding a mail. You can\nset your signature in the Personal panel."="V tomto panelu me nastavit, kam GNUMail.app pid podpis pi opovdan\nnebo peposln zprvy. Podpis me nastavit v panelu Osobn."; /** ComposeViewController.m */ "Compose" = "Napsat zprvu"; /* "Automatic" = "Automaticky"; */ /** Face.m */ /** FaceController.m */ /** ExtendedFilteringTableView.m */ /** ExtendedTableColumn.m */ /** FilterEditorWindow.m */ "Description:" = "Popis:"; "Active" = "Aktivn"; "Filter type:" = "Aplikovat na:"; "Incoming" = "Pchoz"; "Outgoing" = "Odchoz"; "External Program" = "Extern program"; "Process with external program:" = "Zpracovat externm programem:"; "and apply criteria(s)" = "a aplikovat kritria"; "after" = "po"; "before" = "ped"; "program execution." = "sputn/m programu."; "Criteria" = "Kritria"; "To" = "Pro"; "Cc" = "Kopie"; "To or Cc" = "Pro / kopie"; "Subject" = "Pedmt"; "From" = "Od"; "Expert..." = "Expert..."; "Contains" = "Obsahuje"; "Is Equal" = "Je rovno"; "Has Prefix" = "Zan na"; "Has Suffix" = "Kon na"; "Match Expression" = "Opovd vrazu"; "and" = "a"; "or" = "nebo"; "(none)" = "(none)"; "Action" = "Akce"; "Set the color to:" = "Nastav barvu na:"; "Transfer to mailbox:" = "Pesu do mailboxu:"; "Do..." = "Prove..."; "Delete the message" = "Sma zprvu"; "Blue" = "Modrou"; "Brown" = "Hndou"; "Cyan" = "Cyaninovou"; "Dark Gray" = "Tmav edou"; "Green" = "Zelenou"; "Magenta" = "Magentovou"; "Orange" = "Oranovou"; "Purple" = "Rovou"; "Red" = "ervenou"; "White" = "Blou"; "Yellow" = "lutou"; "Bounce to:" = "Odra na:"; "Forward to:" = "Pepoli na:"; "Reply to:" = "Odpovz na:"; "Set message" = "Set message"; "Cancel" = "Zruit"; "OK" = "OK"; /** FilterEditorWindowController.m */ "Add a filter" = "Pidat filtr"; "Error!" = "Chyba!"; "The selected target folder (%@) holds folders, not messages." = "Vybran sloka (%@) je jen pro sloky, n pro zprvy."; /* "OK" = "OK"; */ "Warning!" = "Varovn!"; "Defining a Coloring filter that uses an external program is a BAD idea.\nThis will slow down drastically the application." = "Obarvovat zprvy, kter se filtruj pes extern program, NEN DOBR npad.\nVrazn to zpomal celou aplikaci."; /* "To" = "Pro"; */ /* "Cc" = "Kopie"; */ /* "To or Cc" = "Pro / kopie"; */ /* "Od" = "Od"; */ "Is in Address Book" = "Je v adresi"; /** FilterHeaderEditorWindow.m */ "Header" = "Hlavika"; "Header:" = "Hlavika:"; "Remove" = "Odstranit"; "Add" = "Pidat"; /* "Cancel" = "Zruit"; */ /* "OK" = "OK"; */ /** FilterHeaderEditorWindowController.m */ "Add a header" = "Pidat hlaviku"; /** FilterMessageWindow.m */ "Text to include before original message:" = "Text, kter bude vloen ped originln zprvou:"; /* "Cancel" = "Zruit"; */ /* "OK" = "OK"; */ /** FilterMessageWindowController.m */ /** FilteringView.m */ "Rules" = "Filtry"; /* "Active" = "Aktivn"; */ "Add..." = "Pidat..."; "Delete" = "Smazat"; "Edit..." = "Upravit..."; "Duplicate" = "Duplikovat"; /** FilteringViewController.m */ "Yes" = "Ano"; "No" = "Ne"; "Delete..." = "Smazat..."; "Are you sure you want to delete this filter?" = "Opravdu chce smazat tento filtr?"; /* "Cancel" = "Zruit"; */ "Edit a filter" = "Upravit filter"; "Filtering" = "Filtrovn"; /** FontsView.m */ "Font used when displaying a message for:" = "Psmo pouit pi zobrazen zprvy:"; "Header name:" = "Nzev hlaviky:"; "Size:" = "Velikost:"; "Header value:" = "Hodnota hlaviky:"; "Content of message:" = "Obsah zprvy:"; "Font preview for the header name:" = "Nhled psma pro nzvy v hlavice:"; "This is an example..." = "Toto je pklad... ()"; "Use fixed-width font for plain text messages" = "Pout psmo s pevnou kou pi zobrazen plain/textov zprvy"; "Plain text font:" = "Psmo pro plain/text:"; /** FontsViewController.m */ "Fonts" = "Psma"; /** MIMEView.m */ "Mime-Type" = "Mime-Typy"; "File extension(s)" = "Koncovka souboru"; /* "Add..." = "Pidat..."; */ /* "Delete" = "Smazat"; */ /* "Edit..." = "Upravit..."; */ "Import from mailcap" = "Importovat z mailcapu"; /** MIMEViewController.m */ /* "Delete..." = "Smazat..."; */ "Are you sure you want to delete this Mime-Type entry?" = "Chce smazat tento zznam o Mime-Typu?"; /* "Cancel" = "Zruit"; */ /* "Yes" = "Ano"; */ "MIME" = "MIME"; /** MailcapParser.m */ /** MailcapWindow.m */ /* "Mime-Type" = "Mime-Typy"; */ "Command" = "Pkaz"; /* "Cancel" = "Zruit"; */ "Import" = "Importovat"; /** MailcapWindowController.m */ "Import from mailcap file" = "Importovat ze souboru mailcapu"; "Mailcap Import Error!" = "Chyba pi importu mailcapu!"; "You must select at least one mailcap item to import!" = "Mus vybrat alespo jedenu poloku!"; /* "OK" = "OK"; */ /** MimeTypeEditorWindow.m */ "Mime-Type (ex: image/jpeg):" = "Mime-Typ (nap: image/jpeg):"; "File extensions (ex: jpeg,jpg,jpe):" = "Koncovka souboru (nap: jpeg,jpg,jpe):"; /* "Description:" = "Popis:"; */ "View:" = "Zobrazen:"; "Display if possible (as icon if it is not possible)" = "Zobrazit, pokud je to mon (kdy ne, tak jako ikonu)"; "Always display as icon" = "Vdy jako ikonu"; "Action:" = "Akce:"; "Prompt save panel" = "Uloit"; "Open with external program:" = "Otevt externm programem:"; "Open with Workspace" = "Otevt pracovn plochou"; "Choose" = "Vybrat"; "Needs a terminal for the external program" = "Extern program vyaduje terminl"; "Please choose an icon to represent this Mime-Type (tiff file only):" = "Ikona reprezentujic zvolen Mime-Typ (jen tiff):"; /* "Cancel" = "Zruit"; */ /* "OK" = "OK"; */ /** MimeTypeEditorWindowController.m */ "Add a Mime-Type" = "Pidat"; "Edit a Mime-Type" = "Upravit"; /** MailboxesView.m */ "Default mailbox used for:" = "Schrnka pouit pro:"; "Inbox:" = "Pchoz:"; "Outbox:" = "Odchoz:"; "Drafts:" = "Rozpracovan:"; "Trash:" = "Ko:"; "(If you don't see all your IMAP mailboxes, first open the connection to this IMAP server.)" = "(Pokud nevid vechny sv IMAP schrnky, spoj se nejdv s IMAP serverem.)"; "Compact mailbox when closing (not recommended)" = "Komprimovat schrnku pi uzaven (nedoporuuje se)"; "Reuse the mail window when selecting a folder" = "Pouij jedno okno pro vechny sloky."; /** MailboxesViewController.m */ "Mailboxes" = "Schrnky"; /** PGPController.m */ "Encrypt" = "ifrovat"; "Sign" = "Podepsat"; "\nThe supplied passphrase was wrong or not given" = "\nHeslo je chybn, nebo nebylo zadno."; "\nWrong passphrase (or something else)" = "\npatn heslo (nebo nco jinho)"; "\nYour key is expired. You must generate a new one\nbefore trying to send again any signed or encrypted messages." = "\nPlatnost kle vyprela. Mus vygenerovat nov,\n abys mohl odeslat ifrovanou nebo podepsanou zprvu."; "Decryption failed due the following reason(s):\n" = "Z tohoto dvodu se nepovedlo rozifrovat:\n"; /* "Error!" = "Chyba"; */ /* "OK" = "OK"; */ "Encryption failed due the following reason(s):\n" = "Z tohoto dvodu se nepodailo zaifrovat:\n"; "Passphrase for %@" = "Heslo pro %@"; /** PGPView.m */ "GPG/PGP executable path:" = "Umstn programu GPG/PGP:"; "User E-Mail address:" = "E-Mail uivatele:"; "Use FROM E-Mail address for signing" = "Pi podepisovn odeli email z tto adresy"; /** PGPViewController.m */ "Version: %@" = "Verze: %@"; "PGP" = "PGP"; /** NewPersonalProfilePanel.m */ "Please enter the name of the new profile:" = "Zadej jmno novho profilu:"; /* "Cancel" = "Zruit"; */ /* "OK" = "OK"; */ /** NewPersonalProfilePanelController.m */ "New Personal Profile" = "Nov profil"; /** PersonalView.m */ "Available personal profiles:" = "Dostupn profily:"; /* "Add" = "Pidat"; */ /* "Delete" = "Smazat"; */ "Set this profile as default" = "Nastav tento profil jako vchoz"; "Your name:" = "Tv jmno:"; "Your E-Mail address:" = "Tvj E-Mail:"; "Reply-to address:" = "Odpov na adresu:"; "Organization:" = "Organizace:"; "Signature" = "Podpis"; "Obtain signature from" = "Zskej podpis"; "Obtain signature from:" = "Zskej podpis"; "content of file" = "ze souboru"; "program's output" = "z programu"; "Choose file" = "Vybrat soubor"; "Choose program" = "Vybrat program"; "File location:" = "Umstn souboru"; "Program location:" = "Umstn programu"; "Please specify your personal informations. You need to specify at least your\nname and your E-Mail address. You can leave the other fields blank." = "Prosm vypl tvoje osobn daje. Mus zadat alesp jmno a tvoji E-Mailovou\nadresu. Ostatn polka nemus doplovat."; "(Ex: Bob Smith)" = "Nap: James Bond"; "(Ex: bob@smith.com)" = "Nap: bond@agenti.com"; "(Ex: ACME inc.)" = "Nap: 007 a.s."; "The signature will be appended at the end of your message." = "Podpis bude pipojen na konec zprvy."; /* "Choose" = "Zvol"; */ /** PersonalViewController.m */ /* "Error!" = "Chyba"; */ "This profile name already exists. Please choose another name." = "Toto jmno profilu ji existuje. Zvol jin."; /* "OK" = "OK"; */ "You must have at least one defined personal profile at any time." = "Vdy mus bt definovn alespo jeden profil."; /* "Delete..." = "Smazat..."; */ "Are you sure you want to delete the %@ personal profile?" = "Oprvdu chce smazat profil %@?"; /* "Cancel" = "Zruit"; */ /* "Yes" = "Ano"; */ "Personal" = "Osobn"; /** IMAPView.m */ "Check for mail every" = "Zkontroluj potu kadch"; "minutes" = "minut"; "Folders" = "Sloky"; "Subscribed" = "Pihlen"; "List" = "List"; "Subscribe" = "Pihlsit"; "Unsubscribe" = "Odhlsit"; /** IMAPViewController.m */ "All Folders" = "Vechny sloky"; "Y" = "Y"; /* "Error!" = "Chyba"; */ "Authentication error with the IMAP server." = "Chyba pi autentifikaci na IMAP server."; /* "OK" = "OK"; */ "An error occured while listing the folders on this IMAP server." = "An error occured while listing the folders on this IMAP server."; "You are already subscribed to this IMAP folder." = "You are already subscribed to this IMAP folder."; "You cannot subscribe to this folder." = "You cannot subscribe to this folder."; "An error occured while subscribing to folder:\n%@." = "An error occured while subscribing to folder:\n%@."; "You are already unsubscribed from this IMAP folder." = "You are already unsubscribed from this IMAP folder."; "An error occured while unsubscribing to folder:\n%@." = "An error occured while unsubscribing to folder:\n%@."; /** POP3View.m */ "Leave messages on server for" = "Nech zprvu na serveru"; "days" = "dn"; "Use APOP (if possible)" = "Pouij APOP(pokud je to mon)"; "Download messages from this server into mailbox:" = "Zprvy z tohoto serveru ulo do schrnky:"; "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)" = ""; /** POP3ViewController.m */ /** ReceivingView.m */ "Retrieve mail (for POP3 accounts and local mail spool file)" = "Vyber potu (jen pro lokln a POP3 ty)"; "Manually" = "Run"; "Automatically every" = "Automaticky kadch"; /* "minutes" = "minut"; */ "Incoming mail servers" = "Servery pro pchoz potu"; "Incoming Servers" = "Servery"; /* "Add" = "Pidat"; */ "Edit" = "Upravit"; /* "Delete" = "Smazat"; */ "Show alert panel for received and transferred messages" = "Zobraz panel pro pijat a pesunut zprvy."; "Show No New Messages panel" = "Nezobrazuj panel o pijatch zprvch"; "Please specify at least one receiving account. Usually, you would want to add\nthe informations related to your incoming mail server (usually, POP3). Click on\nthe Add button to proceed." = "Pomoc tlatka [Pidat] pidej alespo jeden et pro pchoz potu.Po klep-\nnut na [Pidat] vypl poadovan daje o serveru (vtinou POP3)."; /** ReceivingViewController.m */ "POP3" = "POP3"; "IMAP" = "IMAP"; "%@ [UNIX]" = "%@ [UNIX]"; /* "Error!" = "Chyba"; */ "To edit this account, you must first close the connection with the server." = "Pro editaci tohoto tu mus nejdve ukonit spojen se serverem."; /* "OK" = "OK"; */ "To delete this account, you must first close the connection with the server." = "Ped zruenm tohoto tu mus ukonit spojen se serverem."; /* "Delete..." = "Smazat..."; */ "Are you sure you want to delete this receiving server entry?" = "Opravdu chce smazat zznam o tomto serveru?"; /* "Cancel" = "Zruit"; */ /* "Yes" = "Ano"; */ "Receiving" = "Pjem"; /** ReceivingWindow.m */ "Server type:" = "Typ serveru:"; /* "POP3" = "POP3"; */ /* "IMAP" = "IMAP"; */ "UNIX" = "UNIX"; "Server name:" = "Jmno serveru:"; "Port:" = "Port:"; "Username:" = "Uivatel:"; "Password:" = "Heslo:"; "Remember password" = "Pamatovat si heslo"; "Verify for new mail on startup" = "Vyber potu po sputn"; "Check for new mail on startup" = "Vybrat potu po sputn GNUMail.app"; "Use secure connection (SSL)" = "Pout zabezpeen spojen (SSL)"; "General" = "Hlavn"; /* "Cancel" = "Zruit"; */ /* "OK" = "OK"; */ /** ReceivingWindowController.m */ "Receiving preferences" = "Nastaven stahovn"; /* "IMAP" = "IMAP"; */ /* "POP3" = "POP3"; */ /* "UNIX" = "UNIX"; */ /** UNIXView.m */ "Mail spool file:" = "Sobor s potou:"; /* "Choose" = "Vybrat"; */ "Download messages from this spool file into mailbox:" = "Zprvy z tohoto souboru ulo do schrnky:"; /* "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)" = ""; */ /** UNIXViewController.m */ /** SendingView.m */ "Delivery methods" = "Zpsob odesln"; "Method" = "Zpsob"; "Value" = "Hodnota"; /* "Add" = "Pidat"; */ /* "Edit" = "Upravit"; */ /* "Remove" = "Odstranit"; */ "Additional Outgoing Headers" = "Pidat do hlaviky odchoz zprvy"; "Key" = "Kl"; "Key:" = "Kl:"; "Value:" = "Hodnota:"; "Please specify at least one transport method. Usually, you would want to add\nthe informations related to your outgoing mail server (usually, SMTP). Click on\nthe Add button to proceed." = "Prosm uri alespo jeden zpsob odesln zprv. Pravdpodobn bude\nchtt pidat server pro odchoz potu (vetinou SMTP).\nKlepni na [Pidat] a vypl poadovan daje."; /** SendingViewController.m */ "SMTP" = "SMTP"; "Mailer" = "Mailer"; /* "Delete..." = "Smazat..."; */ "Are you sure you want to delete this transport method?" = "Opravdu chce smazat tento zpsob transportu?"; /* "Cancel" = "Zruit"; */ /* "Yes" = "Ano"; */ "Sending" = "Odesln"; /** TransportMethodEditorWindow.m */ "Transport method:" = "Metoda transportu:"; /* "Mailer" = "Mailer"; */ /* "SMTP" = "SMTP"; */ "Mailer:" = "Mailer:"; "(Ex: /usr/sbin/sendmail -t)" = "Nap.: /usr/sbin/sendmail -t"; "(Ex: mail.host.com)" = "Nap.: smtp.mail.cz"; "(Usually, 25)" = "Obvykle 25"; "Host:" = "Host:"; /* "Port:" = "Port:"; */ "Authenticate using" = "Autentifikovat se"; "Most secure" = "Co nejbezpenji"; "Supported mechanisms" = "Podporovan mechanismy"; /* "Username:" = "Username:"; */ /* "Password:" = "Password:"; */ /* "Remember password" = "Remember password"; */ "Associated personal profile:" = "Piazen profil:"; /* "Cancel" = "Zruit"; */ /* "OK" = "OK"; */ /** TransportMethodEditorWindowController.m */ "Add a transport method" = "Pidej metodu transportu"; "Edit a transport method" = "Edituj metodu transportu"; /** ViewingView.m */ "Messages" = "Zprvy"; "Hide deleted messages on startup" = "Pi startu skryj smazan zprvy"; "Hide read messages on startup" = "Pi startu skryj peten zprvy"; "Highlight URLs in message content" = "Zvrazni URL adresy v obsahu zprvy"; "Table columns" = "Sloupce tabulky"; "Status" = "Stav"; "Id" = "Id"; "Date" = "Datum"; /* "Od" = "Od"; */ /* "Subject" = "Pedmt"; */ "Size" = "Velikost"; "Shown headers while viewing a mail" = "Zobrazen hlaviky pi prohlen zprvy"; "Show all headers" = "Zobraz celou hlaviku"; /* "Remove" = "Odstranit"; */ /* "Add" = "Pidat"; */ "Defaults" = "Vchoz"; /* "Key:" = "Key:"; */ "Shown Headers" = "Zobrazen hlaviky"; "Double-clicking in message list:" = "Dvojklik na zprvu:"; "Opens reply editor" = "oteve editor pro odpov"; "Opens message in new window" = "oteve zprvu v novm okn"; /** ViewingViewController.m */ "Viewing" = "Prohlen"; /** Address.m */ /** AddressBook.m */ /* "General" = "Hlavn"; */ /** AddressBookController.m */ "Address Book" = "Adres"; "Add Group" = "Pidat skupinu"; "Delete Group" = "Smazat skupinu"; /* "General" = "Hlavn"; */ /* "Error!" = "Chyba"; */ "This group already exist! Please choose an other name." = "Jmno skupiny ji existuje! Vyber jin."; /* "OK" = "OK"; */ /* "Delete..." = "Smazat..."; */ "Are you sure you want to delete this address?" = "Opravdu chce smazat tuto adresu?"; /* "No" = "Ne"; */ /* "Yes" = "Ano"; */ "Are you sure you want to delete this group?" = "Opravdu chce smazat tuto skupinu?"; "You must select a group to import the addresses in." = "Mus vybrat skupinu, do kter se budou adresy importovat."; "< no address >" = "< bez adresy >"; "Add Address" = "Pidat adresu"; "Delete Address" = "Smazat adresu"; "Enter the contact's E-Mail address here" = "Zde zadej E-Mailovou adresu"; "Groups" = "Skupiny"; "Move to:" = "Pesu do:"; /** AddressBookWindow.m */ /* "Groups" = "Groups"; */ "Name:" = "Jmno:"; "Modify" = "Upravit"; "Import from:" = "Importovat z:"; "OPENSTEP Mail.app" = "OPENSTEP Mail.app"; "LDIF" = "LDIF"; "Close" = "Zavt"; /** BounceWindow.m */ "Send" = "Odeslat"; "Addresses" = "Adres"; "From:" = "Od:"; "Using:" = "uitm:"; "To:" = "Pro:"; "Cc:" = "Kopie:"; "Bcc:" = "Slep k.:"; /** BounceWindowController.m */ "Bounce a message" = "Odrazit zprvu"; /* "Error!" = "Chyba"; */ "Unable to create a valid bounced message.\nPlease, report this as a bug." = "Nemu vyvoit platnou odraenou zprvu.\nProsm, nahla toto jako chybu."; /* "OK" = "OK"; */ "Please, verify that the To/Cc/Bcc fields are correct. Also, you MUST have at least one\nvalid E-Mail address in the To field." = "Prosm, zkontroluj oknka Pro/Kopie/Slep kopie. V oknku Pro MUS bt \nalespo jedna platn E-Mailov adresa."; "Stop" = "Stop"; "Starting the thread for bouncing the E-Mail..." = "Startuji vlkno na odraen E-Mail..."; "Closing..." = "Zavrm..."; "A mail is currently being sent. Please wait." = "Odeslm E-Mail. Prosm ekej."; "An error occured during the authentication with the SMTP server (%@)." = "Chyba pi autentifikaci na SMTP server (%@)."; "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences." = "Chyba pi odesln E-Mailu. Me to bt sov\nproblm nebo chyba v nastaven."; /* "Send" = "Odeslat"; */ "Manual stop of bouncing thread." = "Manuln zastaven odrecho vlkna."; "Exiting the thread used to bounce the E-Mail..." = "Opoutm vlkno pouit k odraen E-Mailu..."; /** BounceWindowToolbar.m */ /** ConsoleWindow.m */ /* "Date" = "Datum"; */ "Message" = "Zprva"; /** ConsoleWindowController.m */ /* "Datum" = "Datum"; */ "%H:%M:%S.%F" = "%H:%M:%S.%F"; /** EditWindow.m */ /* "Send" = "Odeslat"; */ "Attach" = "Pipojit"; "Add Cc" = "+ Kopie"; "Add Bcc" = "+ Slep kopie"; /* "Addresses" = "Adresy"; */ /* "From:" = "Od:"; */ /* "Using:" = "uitm:"; */ "Charset:" = "Kdovn:"; /* "Automatic" = "Automaticky"; */ /* "To:" = "Pro:"; */ /* "Cc:" = "Kopie:"; */ /* "Bcc:" = "Slep kopie:"; */ "Subject:" = "Pedmt:"; /** EditWindowController.m */ /* "Error!" = "Chyba"; */ "You must have at least one transport agent defined.\nSee Preferences -> Sending." = "Mus nastavit, jak mm odeslat zprvy.\nPodvej se na Nastaven -> Odesln."; /* "OK" = "OK"; */ /* "Stop" = "Zastavit"; */ "Starting the thread for sending the E-Mail..." = "Startuji vlkno na odesln E-Mailu..."; "(no subject)" = "(bez pedmtu)"; /* "Closing..." = "Zavrm..."; */ /* "A mail is currently being sent. Please wait." = "Odeslm e-mail. ekej."; */ "Would you like to save this message in the Drafts folder?" = "Chce uloit tuto zprvu mezi rozepsan?"; /* "Cancel" = "Zruit"; */ /* "Yes" = "Ano"; */ /* "No" = "Ne"; */ "An error occured while attempting to obtain the message store for the Drafts folder." = "Chyba pi pokusu zskat rozepsanou zprvu."; "Remove Cc" = "- Kopie"; /* "Add Cc" = "+ Kopie"; */ "Remove Bcc" = "- Slep kopie"; /* "Add Bcc" = "+ Slep kopie"; */ /* "An error occured during the authentication with the SMTP server (%@)." = "Chyba pi autentifikaci na SMTP serveru (%@)."; */ /* "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences." = "Nastala chyba pi odesln E-Mailu, me to bt chyba st nebo nastaven."; */ /* "Send" = "Poslat"; */ "An error occured while attempting to obtain the message store for the Outbox folder.\nThe message nonetheless successfully sent." = "An error occured while attempting to obtain the message store for the Outbox folder.\nThe message nonetheless successfully sent."; "You must define a recipient in the field \"To\"." = "Mus zadat njak pjmce do polka \"Pro\"."; /* "Automatic" = "Automaticky"; */ "Manual stop of sending thread." = "Run zastaven odesln."; "Exiting the thread used to send the E-Mail..." = "Opoutm vlkno pout k odesln E-Mailu..."; "An error occured while decoding %@. Please fix this address." = "Chyba pi dekdovn %@. Prosm oprav tu adresu."; "%0.1fKB (%d characters)" = "%0.1fKB (%d znak)"; /** EditWindowToolbar.m */ /** ExtendedAttachmentCell.m */ "%@ (%d bytes)" = "%@ (%d byt)"; "%@ (%d KB)" = "%@ (%d KB)"; /** ExtendedCell.m */ /** ExtendedOutlineView.m */ /** ExtendedTableView.m */ /** ExtendedWindow.m */ /** Filter.m */ /** FilterManager.m */ /** FindWindow.m */ "Find:" = "Najt:"; "Replace with:" = "Nahradit:"; "Find Scope" = "Find Scope"; "Summaries" = "Summaries"; /* "Messages" = "Zprvy"; */ "Find Options" = "Volby pro hledn"; "Ignore Case" = "Ignorovat velikost"; "Regular Expression" = "Regulrn vraz"; "Find All" = "Najt ve"; "Replace" = "Nahradit"; "Replace & Find" = "Najt & nahradit"; "Previous" = "Pedchoz"; "Next" = "Dal"; /** FindWindowController.m */ "Find" = "Najt"; "Searching..." = "Hledm..."; "Done searching. %d results found." = "Prohledvn dokoneno. Nalezeno %d vsledk."; /** FolderNode.m */ /** FolderNodePopUpItem.m */ /** GNUMail.m */ /* "Error!" = "Chyba"; */ "An error occured while attempting to obtain the message store for target filter." = "An error occured while attempting to obtain the message store for target filter."; /* "OK" = "OK"; */ /* "You must have at least one transport agent defined.\nSee Preferences -> Sending." = "You must have at least one transport agent defined.\nSee Preferences -> Sending."; */ "About GNUMail.app" = "O aplikaci GNUMail.app"; "Your Software is up-to-date" = "Tvj software je up-to-date"; "You have the most recent version of GNUMail." = "M posledn verzi GNUMailu."; "A New Version is Available" = "Nov verze je dostupn"; "A new version of GNUMail is available (version %@). Would you like to download the new version now?" = "Je dostupn nov verze GNUMailu (verze %@). Chce j sthnout?"; /* "Cancel" = "Zruit"; */ "Feature not implemented!" = "Vlastnost nen implementovna!"; "Sorry, this feature is only available under Mac OS X." = "Promi, ale todle funguje jen v Mac OS X."; "Compact..." = "Komprimovat..."; "Compacting a mailbox will permanently remove deleted messages.\nDo you want to continue?" = "Komprimovn schrnky nenvratn odstran smazan zprvy.\nChce pokraovat?"; /* "No" = "Ne"; */ /* "Yes" = "Ano"; */ "Compacting mailbox, please wait..." = "Komprimuji schrnku, prosm ekej..."; "Done compacting mailbox %@." = "Schrnka %@ zkomprimovna."; "New message..." = "Nov zprva..."; "Undelete" = "Obnovit smazan"; /* "Delete" = "Smazat"; */ "Mark as Unread" = "Oznait jako nepeten"; "Mark as Read" = "Oznait jako peten"; "Mailbox error!" = "Chyba schrnky!"; "You must select a valid mailbox to open!" = "Mus vybrat platnou schrnku k oteven!"; "Local" = "Lokln"; "Information" = "Informace"; "Use the same directory (%@) to save all other attachments? (override the files with the same name)." = "Pout stejn adres (%@) na uloen vech ploh? (Pepe soubory se stejnmi jmny)"; "Show Filtered Headers" = "Zobrazit filtrovanou hlaviku"; "Show All Headers" = "Zobrazit celou hlaviku"; "Hide Status Bar" = "Skrt stavov dek"; "Show Status Bar" = "Zobrazit stavov dek"; "Show Normal Display" = "Zobrazit normln"; "Show RAW Source" = "Zobrazit zdroj RAW"; "Info" = "Info"; "Mailbox" = "Schrnka"; /* "Message" = "Zprva"; */ /* "Compose" = "Napsat"; */ "Edit" = "pravy"; "Windows" = "Okna"; "Print" = "Tisk"; "Services" = "Sluby"; "Hide" = "Skrt"; "Quit" = "Ukonit"; "Info Panel..." = "Info..."; "Check For Updates" = "Podvat se po updatech"; "Preferences..." = "Nastaven..."; "Help..." = "Npovda..."; "Mailboxes..." = "Schrnky..."; "Get New Mail" = "Sthni nov zprvy"; "All" = "Vechny"; "Sorting" = "Poad"; "Thread Messages" = "Podle vlkna"; "Sort by Date" = "Seadit podle data"; "Sort by Name" = "Seadit podle jmna"; "Sort by Number" = "Seadit podle sla"; "Sort by Size" = "Seadit podle velikosti"; "Sort by Subject" = "Seadit podle pedmtu"; "Hide Deleted" = "Skryj smazan"; "Hide Read" = "Skryj peten"; "Compact" = "Komprimovat"; "Select All Messages" = "Vyber vechny zprvy"; "Send to Address Book" = "Odeslat na adresu"; "Save Attachment" = "Uloit plohy"; "Save Text from Message" = "Uloit text ze zprvy"; "Text Encodings" = "Kdovn textu"; "Bounce..." = "Odrazit..."; "Apply Manual Filters" = "Aplikovat manuln filtr"; "New" = "Nov"; "Reply" = "Odpovdt"; "Reply All" = "Odpovdt vem"; "Forward" = "Pedat dl"; "Addresses..." = "Adres..."; "Drafts" = "Rozepsan"; "Save in Drafts" = "Uloit do rozepsanch"; "Restore Draft" = "Navrtit rozepsanou zprvu"; "Cut" = "Vyjmout"; "Copy" = "Koprovat"; "Paste" = "Vloit"; "Undo" = "Zpt"; "Paste As Quoted Text" = "Vloit jako citovan text"; /* "Find" = "Najt"; */ "Spelling..." = "Pravopis..."; "Check Spelling" = "Zkontrolovat pravopis"; "Select All" = "Vybrat ve"; "Find Panel..." = "Najt..."; "Find Next" = "Najt dal"; "Find Messages..." = "Najt zprvy.."; "Find Text..." = "Najt text..."; "Find Previous" = "Najt pedchoz"; "Enter Selection" = "Zadat vbr"; "Console" = "Konsole"; "Arrange" = "Uspodat"; "Miniaturize" = "Miniaturizovat"; /* "Close" = "Zavt"; */ "Setup Printer" = "Nastavit tiskrnu"; "Important!" = "Dleit!"; "No configuration found for GNUMail.app" = "Nenalezena konfigurace pro GNUMail.app"; "Configure" = "Konfigurovat"; "Loaded bundle at path %@" = "Bundle nahrno: %@"; "Failed to initialize bundle at path %@" = "Nepovedlo se zinicializovat bundle: %@"; "Error loading bundle at path %@" = "Chyba p %@"; "All" = "Vechny"; "Show Deleted" = "Zobraz smazan"; "Show Read" = "Zobraz peten"; "Default" = "Vchoz"; /** GNUMailConstants.m */ /** Group.m */ /** LabelWidget.m */ /** LocalMailDelivery.m */ /** MailHeaderCell.m */ /** MailWindow.m */ /* "Delete" = "Smazat"; */ "Get" = "Pijmout"; /* "Mailboxes" = "Schrnky"; */ /* "Compose" = "Napsat"; */ /* "Odpovdt" = "Odpovdt"; */ /* "Forward" = "Pedat dl"; */ /* "Addresses" = "Adresy"; */ /* "Find" = "Najt"; */ /* "Status" = "Status"; */ /* "Id" = "Id"; */ "Date" = "Datum"; "From" = "Od"; "Subject" = "Pedmt"; "Size" = "Velikost"; /** MailWindowController.m */ /* "New message..." = "Nov zprva..."; */ "Local - %@" = "Lokln - %@"; "IMAP on %@ - %@" = "IMAP na %@ - %@"; "No Messages!" = "dn zprvy!"; "There are no messages in this Mailbox!" = "V tto schrnce nejsou dn zprvy!"; /* "OK" = "OK"; */ "< unknown >" = "< neznm >"; /* "Closing..." = "Zavrm..."; */ "GNUMail.app is currently receiving E-Mails. Please wait." = "GNUMail.app nyn pijm E-Maily. Prosm ekej."; "Would you like to close the connection with the IMAP server?" = "Opravdu chce ukonit spojen s IMAP serverem?"; /* "Cancel" = "Zruit"; */ /* "Yes" = "Ano"; */ /* "No" = "Ne"; */ "Closed local folder %@." = "Lokln sloky %@ uzaveny."; "Closed IMAP folder %@ on %@." = "Uzavena IMAP sloka %@ na %@."; "Closing IMAP connection on %@." = "Zavrm IMAP spojen %@."; /* "Stop" = "Stop"; */ "Starting the fetching thread for %@.." = "Zanam stahovat vlkno %@.."; /* "Error!" = "Chyba"; */ "Unable to communicate with the POP3 server (%@)." = "Nemu se spojit s POP3 serverem (%@)."; "Invalid password %@ @ %@." = "patn heslo %@ @ %@."; "An error occured while obtaining the IMAP Store to save the received message.\n%@" = "An error occured while obtaining the IMAP Store to save the received message.\n%@"; "The received message was saved in your local Inbox folder." = "Obdren zprvy byly uloeny do lokn Pchoz schrnky."; "No New Messages..." = "dn nov zprvy..."; "There are no new messages on %@ @ %@." = "dn nov zprvy na %@ @ %@."; /* "Get" = "Pijmout"; */ "Filtered messages..." = "Filtered messages..."; "%d messages have been transfered to the following folders:\n%@" = "%d zprv bylo pesunuto do tto schrnky:\n%@"; "%d messages (%dKB) - %d unread (%dKB) - %d selected (%0.1fKB) - %d deleted" = "%d zprv (%dKB) - %d nepetench (%dKB) - %d oznaench (%0.1fKB) - %d smazanch"; "IMAP %@ @ %@ - %@" = "IMAP %@ @ %@ - %@"; "No new messages on server %@" = "dn nov zprvy na serveru %@"; "Got a %@ while estabilishing (or closing) the POP3 connection to server %@." = "Got a %@ while estabilishing (or closing) the POP3 connection to server %@."; "Exiting the fetching thread for %@..." = "Exiting the fetching thread for %@..."; "Got a %@ while transferring mails from %@." = "Got a %@ while transferring mails from %@."; /** MailWindowToolbar.m */ /** MailboxManager.m */ "Open this folder on startup" = "Pi startu otevi tuto schrnku"; /* "Mailbox" = "Schrnka"; */ /* "Size" = "Velikost"; */ /* "Messages" = "Zprvy"; */ /* "Close" = "Zavt"; */ /** MailboxManagerCache.m */ /** MailboxManagerController.m */ /* "Mailboxes" = "Schrnky"; */ /* "Mailbox" = "Schrnka"; */ "All Mailboxes" = "Vechny schrnky"; /* "Size" = "Velikost"; */ "%d KB" = "%d KB"; /* "Messages" = "Zprvy"; */ "%d (%d unread)" = "%d (%d nepetench)"; /* "Local" = "Local"; */ /* "Closing..." = "Closing..."; */ "Would you like to close the connection with this IMAP server?" = "Opravdu chce ukonit spojen s IMAP serverem?"; /* "No" = "Ne"; */ /* "Yes" = "Ano"; */ /* "Closing IMAP connection on %@." = "Closing IMAP connection on %@."; */ "Transfer error!" = "Chyba pesunu!"; "You cannot transfer a message inside the same mailbox!" = "Neme pesunout zprvu tam, kde u je!"; /* "OK" = "OK"; */ /* "Mailbox error!" = "Chyba schrnky!"; */ /* "You must select a valid mailbox to open!" = "K oteven mus zvolit platnou schrnku!"; */ "You must select a valid mailbox\nto transfer this E-Mail to!" = "Mus vybrat platnou schrnku,\n do kter pesunu tento email!"; "You cannot transfer E-Mails to this folder!" = "Neme pesunout E-Maily do tto schrnky!"; "You must select a valid root where to create this new mailbox." = "Mus zvolit platnou nadazenou schrnku pro nov vytvenou schrnku."; "Please select the mailbox you would like to delete." = "Prosm ozna schrnku, kterou chce smazat."; /* "Delete..." = "Smazat..."; */ "Are you sure you want to delete this mailbox?" = "Opravdu chce smazat tuto schrnku?"; /* "Cancel" = "Zruit"; */ "Error while deleting!" = "Chyba pi mazn!"; "You can't delete an opened mailbox! Close it first." = "Neme smazat otevenou schrnku! Nejdv ji uzavi."; /* "Error!" = "Chyba"; */ "The mailbox delete operation failed." = "Mazn schrnky selhalo."; "You must select a valid mailbox to rename!" = "K pejmenovn mus vybrat njakou schrnku!"; "You can't rename an opened mailbox! Close it first." = "Neme pejmenovat otevenou schrnku! Nejdv ji uzavi."; "Edit Mailbox" = "Upravit schrnku"; "Please enter the new name of the Mailbox:" = "Prosm zadej jmno nov schrnky:"; "The local mailbox %@ does not exist!" = "Lokln schrnka %@ neexistuje!"; "This folder (%@) holds folders, not messages!" = "Tato sloka (%@) je na sloky, ne na zprvy!"; "Local folder %@ opened." = "Loklni sloka %@ otevena."; "A folder (%@) is already open. Please close it first." = "Sloka (%@) Je ji otevena. Nejdv ji uzavi."; "Opening IMAP folder %@ on %@..." = "Otvrm sloku IMAP %@ na %@..."; "IMAP folder %@ on %@ opened." = "Sloka IMAP %@ n %@ otevena."; "Connecting to IMAP server %@ using SSL" = "Pipojuji se na IMAP server %@ pomoc SSL"; "Connecting to IMAP server %@" = "Pipojuji se na IMAP server %@"; "Unable to communicate with the IMAP server (%@:%i)." = "Nemu komunikovat s IMAP serverem (%@:%i)."; "Authenticating using %@..." = "Atentifikace uitm %@..."; "Connected to %@!" = "Spojeno s %@!"; /* "Invalid password %@ @ %@." = "Neplatn heslo %@ @ %@."; */ "A fatal error occured when appending the message to the %@ folder." = "Chyba pi pidvn zprvy do sloky %@."; /** MailboxManagerToolbar.m */ /** MessageViewWindow.m */ /* "Delete" = "Smazat"; */ /* "Odpovdt" = "Odpovdt"; */ /* "Forward" = "Pedat dl"; */ /* "Show All Headers" = "Zobraz vechny hlaviky"; */ /** MessageViewWindowController.m */ /** MessageViewWindowToolbar.m */ /** MimeType.m */ /** MimeTypeManager.m */ /** NSRegEx.m */ /** NSStringExtensions.m */ /** NSUserDefaultsExtensions.m */ /** NewMailboxPanel.m */ "Please enter the name of the new Mailbox:" = "Prosm zadej jmno pro novou schrnku:"; /* "Cancel" = "Zruit"; */ /* "OK" = "OK"; */ /** NewMailboxPanelController.m */ "New Mailbox" = "Nov schrnka"; /* "Local" = "Lokln"; */ /* "Error!" = "Chyba"; */ "The mailbox rename operation failed." = "Nepodailo se pejmenovat schrnku."; /* "OK" = "OK"; */ "The mailbox create operation failed." = "Nepodailo se vytvoit schrnku."; /** PasswordPanel.m */ "Please enter your password:" = "Prosm zadej heslo:"; /* "Cancel" = "Zruit"; */ /* "OK" = "OK"; */ /** PasswordPanelController.m */ /** PreferencesWindow.m */ "Apply" = "Pout"; /* "Cancel" = "Zruit"; */ /* "OK" = "OK"; */ "Expert" = "Podrobn"; "Standard" = "Jednodue"; /** PreferencesWindowController.m */ "Preferences Panel" = "Nastaven"; "Loading preferences bundle at path %@." = "Nahrvm preferences bundle z %@."; "Expert" = "Podrobn"; "Standard" = "Jednodue"; /** TextEnrichedConsumer.m */ /** Utilities.m */ /* "Error!" = "Chyba"; */ "A part of this E-Mail can't be represented. Please report this as a bug." = "A part of this E-Mail can't be represented. Please report this as a bug."; /* "OK" = "OK"; */ "No text/plain part found. Please report this bug since GNUMail.app doesn't support this other kind of parts." = "Nenalezena text/plain st. Prosm nahla tuto chybu since GNUMail.app doesn't support this other kind of parts."; "Local Mailboxes" = "Lokln schrnky"; "Reply..." = "Odpovdt..."; "Would you like to reply to all recipients?" = "Chce odpovdt vem pjemcm?"; /* "No" = "Ne"; */ /* "Yes" = "Ano"; */ "Reply to a message..." = "Odpovz na zprvu..."; "Forward a message..." = "Pepoli zprvu..."; "Save all" = "Ulo ve"; "The external program (%@) for opening this MIME-Type (%@) can't be found." = "Extern program (%@) pro pro oteven tohoto MIME-Typu (%@) neme bt nalezen."; GNUMail/Resources/English.lproj/0040755000014600001460000000000010424672357017272 5ustar monotonemonotoneGNUMail/Resources/English.lproj/AboutPanel.nib/0040755000014600001460000000000010424672357022073 5ustar monotonemonotoneGNUMail/Resources/English.lproj/AboutPanel.nib/classes.nib0100644000014600001460000000050010424672357024212 0ustar monotonemonotone{ IBClasses = ( { CLASS = AboutPanelController; LANGUAGE = ObjC; OUTLETS = {versionLabel = NSTextField; }; SUPERCLASS = NSWindowController; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }GNUMail/Resources/English.lproj/AboutPanel.nib/info.nib0100644000014600001460000000070510506157373023514 0ustar monotonemonotone IBDocumentLocation 29 126 356 240 0 0 1280 1002 IBFramework Version 446.1 IBOpenObjects 5 IBSystem Version 8J135 GNUMail/Resources/English.lproj/AboutPanel.nib/objects.nib0100644000014600001460000000544710506157373024222 0ustar monotonemonotone typedstream@NSIBObjectDataNSObjectNSCustomObject)@@NSString+AboutPanelControlleri NSView) NSResponder @@@@ffffffffNSMutableArrayNSArray NSImageView NSControl) NSMutableSetNSSetIApple PDF pasteboard type1NeXT Encapsulated PostScript v1.2 pasteboard typeNeXT TIFF v4.0 pasteboard typeNSFilenamesPboardTypeApple PICT pasteboard typeApple PNG pasteboard type/icc@ NSImageCell)NSCellAii@@@@NSCustomResource)NSImage GNUMail_bigiiic NSTextFieldy?9?9NSTextFieldCell> NSActionCell@GNUMailNSFont,[44c]$LucidaGrande-Boldf(i:c@@NSColor@@@System controlColorff?*controlTextColor:lff@ Main author:,$LucidaGrande-Bold³ŁS  @$Ludovic Marcotte $[36c]LucidaGrande Ƴ9ff@ Contributors:ŅʳŁˁ f f@Ken Ferry, Francis Lachapelle Bjorn Giesler, Jonathan B. Leffert Vincent Ricard Pierre-Yves Rivaille Nicolas Roard Ujwal S. SetlurɅͳ@Special thanks:Ņг)  @Matt Ackeret, Luis Garcia Alanis Martin Brecher Erik Dalen Andrew Lindesay Jeff Meininger Stéphane Peron Jeff Teunissen QuiqueɅӳ@;GNUMail Version x.y.z - http://www.collaboration-world.comɅֳffff???@0(c) 1998-2006 Ludovic Marcotte and contributors.Ʌڳ???ځځNSWindowTemplate iiffffi@@@@@cځxAbout GNUMail.appNSPanelNSMutableStringViewՁڙәƙЙ͙ޕ֙ʙ™ ӄNSTextField2211ڄNSTextField231Ƅ NSTextField22 File's OwnerЄNSTextField2111̈́NSTextField221ބPanelք NSTextField23ʄNSTextField211 NSTextField2„ NSTextField21NSNibOutletConnectorτNSNibConnectorބwindowޕdelegateք versionLabel@i   IBCocoaFrameworkGNUMail/Resources/English.lproj/AboutPanel.nib/keyedobjects.nib0100644000014600001460000001470710506157373025243 0ustar monotonemonotonebplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver ]IB.objectdata 156<=AEKSklmnrv~  #$(/078<=DELMTU\]delmtu|}  "56789:;<=>?@_ADGJU$null  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRootgvwhuxie234[NSClassName_AboutPanelController789:X$classesZ$classname:;^NSCustomObjectXNSObject_IBCocoaFramework>?@ZNS.objects78BCCD;\NSMutableSetUNSSet>FJGHI acXLMNOPQ0]NSDestinationWNSLabelXNSSource _`TUVWXYZ[\]^_`abcdefghij_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass\ []x^_{{172, 158}, {474, 447}}_About GNUMail.appWNSPanelopqYNS.stringTView78sttu;_NSMutableStringXNSStringwxyz.|}ZNSSubviews_NSNextResponderWNSFrameYZ>J"38>BFJNSXxygg[NSSuperviewYNSEnabledXNSvFlagsVNSCell[NSDragTypesZNSEditable ! >@_Apple PDF pasteboard type_1NeXT Encapsulated PostScript v1.2 pasteboard type_NeXT TIFF v4.0 pasteboard type_NSFilenamesPboardType_Apple PICT pasteboard type_Apple PNG pasteboard type_{{0, 47}, {180, 400}}`WNSScaleWNSStyleZNSContentsZNSAnimatesWNSAlign[NSCellFlags\NSCellFlags2 2^NSResourceNameWNSImage[GNUMail_big78£;_NSCustomResource_%NSCustomResource78Ƥ;[NSImageCell\%NSImageCell78ʥ;[NSImageViewYNSControlVNSView[NSResponderxyggԀ# 2$_{{185, 377}, {319, 57}}_NSBackgroundColor[NSTextColorYNSSupport]NSControlView).&%"1@WGNUMailVNSSizeVNSNameXNSfFlags"B '(_LucidaGrande-Bold78;VNSFontWNSColor[NSColorName\NSColorSpace]NSCatalogName,+*-VSystem\controlColorWNSWhiteK0.66666669-78;0/*-_controlTextColor B0-78 ;_NSTextFieldCell\NSActionCell78;[NSTextField\%NSTextFieldxygg4 25_{{188, 364}, {102, 18}} ).7631\Main author:%"A`'(xygg+.9 2:_{{197, 339}, {268, 17}}34).<;81_$Ludovic Marcotte 9:"A@=(\LucidaGrandexygg@C? 2@_{{188, 313}, {102, 18}}I).7A>1]Contributors:xyggPSC 2D_{{197, 203}, {268, 102}}3Y).ЬgOSJ8FB N>"3f78;>ЬOgggggg0gggg f>Ы0OJS8FB N>"3f>Ыjklmnopqrstf_NSTextField2211^NSTextField231]NSTextField22\File's Owner_NSTextField2111^NSTextField221UPanel]NSTextField23^NSTextField211\NSTextField2]NSTextField21> Рf> Рf>ЯOHgG0I SNa J>8"B3Fcf>#Я$%&'()*+,-./0123yz{|}~f     >BJX>EРf>HРf78KLL;^NSIBObjectData#,1:LQVdf+9Ubu|   $&(?HQ\apyG[mw(09CHJSZlu "+2>IKMOPSUWYZcprtvxz|~$@Xy*>GP\ir}  ) 3 A C E G I K M R W _ p w ~       * 2 > @ B K P e g i k m        4 U W Y [ ] _ a n   / 4 6 8 E b d f h i k m  & ( * , . 0 2  "$&8UWY[\^`z   Q^d+8:CJYax'8:<>@IZ\^`box!#%')+-6MOQSUWY[]_acew   !DFHJLNPRTVXZ\^`bdfoM GNUMail/Resources/English.lproj/ConsoleWindow.nib/0040755000014600001460000000000010424672357022633 5ustar monotonemonotoneGNUMail/Resources/English.lproj/ConsoleWindow.nib/classes.nib0100644000014600001460000000127710424672357024766 0ustar monotonemonotone{ IBClasses = ( {CLASS = ConsoleMessage; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {deleteClicked = id; saveClicked = id; }; CLASS = ConsoleWindowController; LANGUAGE = ObjC; OUTLETS = { currentTaskBox = NSBox; menu = NSMenu; messagesTableView = NSTableView; tasksTableView = NSTableView; }; SUPERCLASS = NSWindowController; }, {CLASS = ExtendedTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }GNUMail/Resources/English.lproj/ConsoleWindow.nib/info.nib0100644000014600001460000000070410561571425024252 0ustar monotonemonotone IBDocumentLocation 82 75 356 240 0 0 1280 1002 IBFramework Version 446.1 IBOpenObjects 5 IBSystem Version 8L127 GNUMail/Resources/English.lproj/ConsoleWindow.nib/objects.nib0100644000014600001460000000573410561571425024760 0ustar monotonemonotone typedstream@NSIBObjectDataNSObjectNSCustomObject)@@NSString+ConsoleWindowControlleri NSTabViewItem@@@@@@@NSMutableString2NSView) NSResponder @@@@ffffffffNSMutableArrayNSArray NSScrollView➒ NSClipView: NSTableView= NSControl)icc@ @@@ff@@f::iNSTableHeaderView@@cccNSColorc@@@SystemcontrolBackgroundColorff?* _NSCornerView   NSTableColumn)@fff@@ccMessage/(脄NSTableHeaderCellNSTextFieldCell> NSActionCellNSCellAii@@@@MessageNSFont$[36c]LucidaGrandef i:c@@>headerTextColor1@™$LucidaGrande controlTextColorƆ Message DateBB9X脼DateĆ1@ȅʆɄ gridColor?V@ NSScrollerӫ  ff:?r _doScroller: Ւ?}پ &&Ԓ֒ffffi  !&&Messages controlColor NSTabViewچ EEڙߙ7ᙂNSClassSwapper*@#ExtendedTableView㙂,,㒅  Status(脼Status>Ć1@ȅʆ円.r@,,ᒅ咅婰Ւᙂ  ᒅ? Ւᙂxxᒅ?}پ ..ߒ㒅㒅 00 ..ڒÁTÁTܒ@@@icc1߄Tasks؅چ™$LucidaGrande  ږ܄NSWindowTemplate iiffffi@@@@@cҁExNSPanelView܅ffffՁ̩ᖩږܖ喝ߖNSTabViewItem1 File's Owner̄NSTableColumn1Window儘 NSTableView NSTableView NSScrollView1󄘘 NSTabViewItemڄ NSTabView߄NSViewꄘ NSTableColumnNSViewᄘ NSScrollView1 NSTableColumn NSMutableSetNSSetINSNibOutletConnectorτNSNibConnectorwindowdelegatemessagesTableView dataSourcedelegate儘tasksTableView啄 dataSource啄delegate@i̙&(X ̣8̝)Y̸;9?@̩:*TA' WRUZ璄IBCocoaFrameworkGNUMail/Resources/English.lproj/ConsoleWindow.nib/keyedobjects.nib0100644000014600001460000002033610561571425025775 0ustar monotonemonotonebplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver ]IB.objectdata 156<=AEPXpqrsw{'/027:BCDGMV[^cdfimrsvyz %-.-46<EFMNUXYabijnopqrvxyz{|hh23456789:;<=?>?@ABCDEFGJMPU$null  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRoot€ĀŀÀZ234[NSClassName_ConsoleWindowController789:X$classesZ$classname:;^NSCustomObjectXNSObject_IBCocoaFramework>?@ZNS.objects78BCCD;\NSMutableSetUNSSet>FOGHIJKLMN 7QRSTUV0]NSDestinationWNSLabelXNSSource YZ[\]^_`abcdefghijklmno_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass x_{{210, 237}, {429, 325}}PWNSPaneltuvYNS.stringTView78xyyz;_NSMutableStringXNSString|}~.ZNSSubviews_NSNextResponderWNSFrameK>O7|}~ll_NSAllowTruncatedLabels[NSSuperview_NSSelectedTabViewItemVNSFont_NSDrawsBackgroundYNSTvFlagsXNSvFlags^NSTabViewItems N} L~M>O7|}~JK>O7|}[NSFrameSize]NSNextKeyView[NSHScrollerXNSsFlags[NSVScroller]NSContentView\NSScrollAmtsHE7AIOA A B@B@>OAE7|}~YNSBGColorYNSDocViewYNScvFlags=< @>Oʀ7}2_NSIntercellSpacingWidth_NSColumnAutoresizingStyle[NSRowHeight_NSDraggingSourceMaskForLocalYNSEnabled_NSIntercellSpacingHeight_NSOriginalClassName_NSDraggingSourceMaskForNonLocal\NSCornerView[NSGridColor^NSTableColumns_NSBackgroundColor"@@"B8 r@"@;8!2_ExtendedTableView[NSTableViewZ{418, 300}}~. _{{419, 0}, {12, 17}}78;]_NSCornerViewVNSView[NSResponder>O"7     ^NSResizingMask\NSHeaderCellZNSMinWidthWNSWidth\NSIdentifier^NSIsResizeableZNSDataCellZNSMaxWidth$"B "Cπ# 0"Dz6VStatus !"#$%&[NSTextColorYNSSupportZNSContents[NSCellFlags\NSCellFlags2)+&%/()*+,-.VNSSizeVNSNameXNSfFlags"A0'(\LucidaGrande781;3456WNSWhite\NSColorSpaceK0.33333299*78899;WNSColor9;4<=>?@6[NSColorName]NSCatalogName.-,*VSystem_headerTextColor34E6B0*78HIIJKL;_NSTableHeaderCell_NSTextFieldCell\NSActionCellVNSCellN PQSTU]NSControlView23151@()*W,-Z"AP'(34\6B1*9;4<=`?@6.4,*_controlTextColor78eJJKL;78ghh;]NSTableColumn78jkkl;^NSMutableArrayWNSArray9;4<no?@6:9,*YgridColor34t6D0.5*78wxx;^NSClassSwapper_{{1, 1}, {418, 300}}9;4<{|?@6?>,*_controlBackgroundColor346K0.66666669*78;ZNSClipView}~XNSTargetYNSPercentXNSActionBD"? C_{{419, 1}, {11, 286}}\_doScroller:78;ZNSScrollerYNSControl}~FD"?}ـG_{{-100, -100}, {120, 15}}Z{431, 302}78;\NSScrollView_{{10, 25}, {431, 302}}78;_{{-11, -13}, {451, 340}}>ONT79 RYNSTabViewQOPStvQ1UTasks9;4<{?@6?R,*\controlColor78¢;]NSTabViewItem9 RQU|VStvQ2|}~.W{K>OԀX7|}_NSHeaderClipViewYVzVZb_urZIOA A AA>O݀Zru_b7|}~Ѐ[XX\=\q@>O\7}\NSHeaderView^Z"A V@Zpb]8d2Z{418, 276}}  \`__a|}~ЀxXX^=^y@Y{418, 17}78;_NSTableHeaderView}~XXc >!O"#ek7     '()+\g"Cf j6WMessage /"#2%&i+&h/3456*N PQSTU231\5     >?@AC\m"B9X"Bl o6\Message Date /"#J%&Li+&n/TDateN PQSTT231\578VW;\%NSTableView_{{1, 17}, {418, 276}}}~]_`XXXsD"?rt_{{419, 17}, {11, 262}}}~fhXXXvDw_{{-100, -100}, {414, 15}}>kO^7_{{1, 0}, {418, 17}}Z{431, 294}_{{10, 33}, {431, 294}}XMessages()*+,-u'( 78w;_{{1, 9}, {429, 325}}_{{0, 0}, {1280, 1002}}Z{213, 129}_{3.40282e+38, 3.40282e+38}78}~~;_NSWindowTemplateVwindow78;_NSNibOutletConnector^NSNibConnectorQRS0VT XdelegateQRSV0\_messagesTableViewQRS0V\ZdataSourceQRS0V\QRSV0^tasksTableViewQRS0VʀQRS0Vʀ>l#T"Tk \XN"Ve78ll;>T0l \XVNT\>0#T"Tk \XN"Ve>^NSTabViewItem1\File's Owner^NSTableColumn1VWindow]NSScrollView1>ʀ>>0MHN"#TIJlKGLTNXVek \ "> !"#$%&'()*+,-./0&(X 8)Y;9?@:*TA' WRU>HO7>K>N78QRR;^NSIBObjectData#,1:LQVdfFXt 2>LV]_acegikmoqsuwy{} !(5;DUWY[]_acegx)6@MWcegikmoqsu~!#%')2579j   "$&(*,58:<my,6@JLNPRTVXZ]_hkmo  ) D Z |  & ( * - / F O X f m y       # % & ( - / 6 S _ i t   # ( 0 E Q _ a c e g i p        0 5 7 9 < I L N c e g i k ~  +BWY[]_x'0;FPuwy{}!#%'@JLNPRTV_aci~ CVXZ\^`bdfhjl3@BDIJOQSUWY[]h   !#%NPRWYZ\^f+-/135:?\^`bdfkt "$&BKNPRhs %8?HOfu):<>@BSUWY[d!#%')+-/135>[]_acegikmoqsuwy!#%')+-/13579;=?ACL} SGNUMail/Resources/English.lproj/EditWindow.nib/0040755000014600001460000000000010424672357022116 5ustar monotonemonotoneGNUMail/Resources/English.lproj/EditWindow.nib/classes.nib0100644000014600001460000000635610424672357024254 0ustar monotonemonotone{ IBClasses = ( {CLASS = AddressComboBox; LANGUAGE = ObjC; SUPERCLASS = NSComboBox; }, { ACTIONS = {complete = id; }; CLASS = AutoCompletingTextField; LANGUAGE = ObjC; SUPERCLASS = NSTextField; }, { ACTIONS = { accountSelectionHasChanged = id; insertFile = id; sendMessage = id; showBcc = id; showCc = id; }; CLASS = EditWindowController; LANGUAGE = ObjC; OUTLETS = { accountPopUpButton = NSPopUpButton; addBcc = id; addCc = id; addresses = id; bccLabel = NSTextField; bccText = AutoCompletingTextField; ccLabel = NSTextField; ccText = AutoCompletingTextField; insert = id; scrollView = NSScrollView; send = id; sizeLabel = NSTextField; subjectLabel = NSTextField; subjectText = NSTextField; textView = ExtendedTextView; toLabel = NSTextField; toText = AutoCompletingTextField; transportMethodPopUpButton = NSPopUpButton; }; SUPERCLASS = NSWindowController; }, {CLASS = ExtendedTextView; LANGUAGE = ObjC; SUPERCLASS = NSTextView; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { addToAddressBook = id; bounceMessage = id; composeMessage = id; composeMessageFromDeadLetter = id; deleteOrUndeleteMessage = id; findNext = id; findPrevious = id; forwardMessage = id; getNewMessages = id; markMessageAsReadOrUnread = id; print = id; replyAllMessage = id; replyMessage = id; saveTextFromMessage = id; selectAllMessages = id; selectionOfMessageHasChanged = id; showAddressBook = id; showAllHeaders = id; showFindWindow = id; showMailboxManager = id; showPrefWindow = id; showRAWSource = id; }; CLASS = GNUMail; LANGUAGE = ObjC; OUTLETS = { compose = NSMenu; deleteOrUndelete = NSMenuItem; edit = NSMenu; find = NSMenu; format = NSMenu; info = NSMenu; mailbox = NSMenu; markAsReadOrUnread = NSMenuItem; menu = NSMenu; message = NSMenu; print = NSMenu; sendToAddressBook = NSMenu; services = NSMenu; showAllHeaders = NSMenuItem; windows = NSMenu; }; SUPERCLASS = NSObject; }, {CLASS = NSObject; LANGUAGE = ObjC; } ); IBVersion = 1; }GNUMail/Resources/English.lproj/EditWindow.nib/info.nib0100644000014600001460000000070410557334503023534 0ustar monotonemonotone IBDocumentLocation 107 17 473 240 0 0 1024 746 IBFramework Version 446.1 IBOpenObjects 6 IBSystem Version 8L127 GNUMail/Resources/English.lproj/EditWindow.nib/keyedobjects.nib0100644000014600001460000002726710575213557025276 0ustar monotonemonotonebplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver ]IB.objectdata5 156<=AE^ftz{ &'./05OPQRVZmtu|}  (*379?HQXYdfhj{   #,-5>?GHIJKLOPUV[\[afglmrs[x}~[[[ *+,-.T/012/3456789:04;<BH~xU$null  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRoot܁1݀34ހځ2234[NSClassName_EditWindowController789:X$classesZ$classname:;^NSCustomObjectXNSObject_IBCocoaFramework>?@ZNS.objects78BCCD;\NSMutableSetUNSSet>F]GHIJKLMNOPQRSTUVWXYZ[\ )/5;Àŀǀɀˀ΀ЀҀԀր؀__`abcd0]NSDestinationWNSLabelXNSSource ghijklmmopqrs_NSNextResponder[NSSuperviewWNSFrameYNSEnabledXNSvFlagsVNSCell   ugiv.xyZNSSubviewsB_{{71, 269}, {546, 22}}|}~bp_NSBackgroundColor[NSTextColorYNSSupportZNSContents]NSControlView_NSDrawsBackground[NSCellFlags\NSCellFlags2 qA@PVNSSizeVNSNameXNSfFlags"AP\LucidaGrande78;VNSFontWNSColor[NSColorName\NSColorSpace]NSCatalogNameVSystem_textBackgroundColorWNSWhiteB178;YtextColorB078l;_NSTextFieldCell\NSActionCell78;[NSTextField\%NSTextFieldYNSControlVNSView[NSResponder[subjectText78ģ;_NSNibOutletConnector^NSNibConnector_`ad0(ghijklmmprҀ !_{{5, 271}, {61, 17}}|}~܀#&"@XSubject:%$\controlColorK0.66666669'_controlTextColor\subjectLabel_`ad0*.ghijklmmpr + ,_{{5, 301}, {61, 17}}|}~܀#&-*TBcc:XbccLabel_`ad004ghijklmm pr 1 2_{{5, 331}, {61, 17}}|}~܀#&30SCc:WccLabel_`ad06:ghijklmm"pr% 7 8_{{5, 360}, {61, 17}}|}~+܀#&96STo:WtoLabel_`a12d0<6789:;<=>?@ABCDEFGHImKLMN_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass_NSFrameAutosaveName>?= 08@_{{53, 236}, {637, 431}}[New messageXNSWindowSTUYNS.stringTViewA78WXXY;_NSMutableStringXNSString>[]babcdefghijk60* CHcgw}_ghijklmmpprs D E_{{17, 399}, {49, 17}}|}~xya܀#&GFCUFrom:~"A0 ghijklmmpq I bJ_{{68, 394}, {302, 26}}~xpbxp_NSAlternateImage^NSButtonFlags2]NSButtonFlagsVNSMenuZNSMenuItem_NSAlternateContents_NSPreferredEdge_NSPeriodicDelay]NSAltersState_NSKeyEquivalent_NSUsesItemFromMenu_NSPeriodicInterval_NSArrowPositionGA@@MLa HKG KSUA]NSMnemonicLoc_NSKeyEquivModMaskWNSStateWNSTitleYNSOnImageZNSKeyEquivXNSTarget\NSMixedImageXNSActionMNOJSVU[NSMenuItemsW`XUItem12^NSResourceNameQRPWNSImage_NSMenuCheckmark78ͣ;_NSCustomResource_%NSCustomResource2ȀTRP_NSMenuMixedState__popUpItemAction:78;SUZOtherViewsA>]ހLY\_MZOJSV[UItem2M]OJSV^UItem378;^NSMutableArrayWNSArray78;78l;_NSPopUpButtonCell^NSMenuItemCell\NSButtonCell]%NSButtonCell78;]NSPopUpButtonXNSButtonghijklmmp r d  e_{{382, 398}, {42, 17}}|}~xc܀#&GfcWUsing: ghijklmmp  h bi_{{426, 393}, {194, 26}}~x pd%xpGlka gjG SUA,2lmOiSVn46o`pSUA>:] <=kqt_AGlrOiSVsJPluOiSVvghijklmmTpVW x |y_{{8, 399}, {16, 17}}~Ze^_`aczwD@{ȀSUA78gl;78i;ughklminkopqmmtuvwxyzC\NSBorderType_NSTitlePosition[NSTitleCellYNSOffsets]NSTransparentYNSBoxType~ >|]}_ghiffy}}_{{2, 2}, {696, 1}}78;_{{0, 387}, {700, 5}}V{0, 0}|}~tSBoxM0 0.8000000178;UNSBoxghijklmmpqr _{{0, 249}, {700, 14}}|}~g#@T0 KB"A  K0.33333299ughkmm[NSFrameSize]NSNextKeyView[NSHScrollerXNSsFlags[NSVScroller]NSContentView Ҁ>]_ughikhhYNSBGColorYNSDocViewYNScvFlags# >]΀_ghk2[NSExtensionZ{625, 547}_ExtendedTextViewZNSTextView78;\NSCustomView_{{1, 1}, {620, 244}}78;ZNSClipViewghijkhhhpZNSCurValueYNSPercent"? ">c8_{{621, 1}, {15, 230}}\_doScroller:78;ZNSScrollerghijkhhhp "?_{{-100, -100}, {675, 15}}Z{637, 246}78   ;\NSScrollViewgh ijkl2mmpq_NSOriginalClassName _AutoCompletingTextField_{{71, 299}, {546, 22}}|}~ip 78!"";^NSClassSwappergh ijkl2mm&'pq*+ _{{71, 329}, {546, 22}}|}~jp gh ijkl2mm89pq<= _{{71, 359}, {546, 22}}|}~kp _{{1, 9}, {637, 431}}_{{0, 0}, {1280, 1002}}Z{450, 422}_{3.40282e+38, 3.40282e+38}ZEditWindow78MNN;_NSWindowTemplateVwindow_`adRd0g_transportMethodPopUpButton_`a0Xd1̯dekf}h1 jibgam<cb=gw6}LlY̯mmmmhmfdm0mbmmmmm1mmmm M}gM l H M < l l >̯de0kf}1 jicgab<b=gw6}LlY ̯ !"#$%&'(߀^NSPopUpButton1\File's Owner\NSTextField2^NSTextField123WNSBox11YPopUpList[NSMenuItem1VWindow]NSTextField21^NSTextField122[NSMenuItem2^NSTextField121^NSTextField221^NSTextField111]NSTextField22^NSTextField212]NSTextField12^NSTextField211>=̣kij>C̣=+>I̯3dSR0YkPj WUfmbheg}\iaXZKHIV1LbO[TMJcN=QG<gŀ*ÀҀMk΀ɀ\} w؀CЀ0Ԁ5)6Yˀ<;Hրǀ/clt Lq>̯3      !"#$%&'()*+,-./0!QGPJ"YF935 H@IS6LM^O2N>]_>̠>̠78;^NSIBObjectData#,1:LQVdf%7Sep|+5<>ACEGILNPSUWY\^`bdmy{}$SUWY[]_acegikmoqsuwy{} "$5@BDFHa #*1:?ACFS\ah}$146?HZgp}    + - / 1 2 5 7 9 P q s u w y { }   # % ' ) + H J L N O Q S j  " $ & ( * . 6 G I K M O l n p r s u w  ) ; E S a n {    # % . 5 G P Y | ~   "')+.KMOQRTVo$6DVk$,6AJW`bglnprtvxz!#%8LUZcnpy%-6;DSgv#%')+-/7TVXZ[]_y+-/1:<ELNPRT}68:<>@IKMOT]_hs|   !$&(9;=?AV_f}  $EGIKMOQV[lqsux    )02468aku #:CLW "$%',.JU^gt !#,1@egikmnprt 13579;<>Uny!2468:KMOQS]nprtv "$&(FOVn#^`bdfhjlnprtvxz|~              " $ - f h j l n p r t v x z | ~ !!!!!! ! !!!!!!!'!4!A!P!X!b!n!u!!!!!!!!!""""""""&"-"/"1"3"5">"""""""""""""""""""""""""""""""""""""""""""""##### # # #############################################$$$$ $ $$$$$$$$ $"$$$&$($*$,$.$0$2$4$6$8$:$<$>$@$B$D$F$H$J$L$N$P$R$T$V$X$Z$\$^$`$b$d$f$h$j$l$n$p$r$t$v$x$$$$$$$$$$$$GNUMail/Resources/English.lproj/FindWindow.nib/0040755000014600001460000000000010424672357022111 5ustar monotonemonotoneGNUMail/Resources/English.lproj/FindWindow.nib/classes.nib0100644000014600001460000000133510424672357024237 0ustar monotonemonotone{ IBClasses = ( { ACTIONS = {findAll = id; nextMessage = id; previousMessage = id; }; CLASS = FindWindowController; LANGUAGE = ObjC; OUTLETS = { findAllButton = NSButton; findField = NSTextField; foundLabel = NSTextField; ignoreCaseButton = NSButton; matrix = NSMatrix; nextButton = NSButton; previousButton = NSButton; regularExpressionButton = NSButton; }; SUPERCLASS = NSWindowController; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; } ); IBVersion = 1; }GNUMail/Resources/English.lproj/FindWindow.nib/info.nib0100644000014600001460000000070210424672357023532 0ustar monotonemonotone IBDocumentLocation 46 66 356 240 0 0 1024 746 IBFramework Version 291.0 IBOpenObjects 6 IBSystem Version 6R73 GNUMail/Resources/English.lproj/FindWindow.nib/objects.nib0100644000014600001460000001071110424672357024231 0ustar monotonemonotone typedstream@NSIBObjectDataNSObjectNSCustomObject)@@NSString+FindWindowControlleri NSTextField NSControl)NSView) NSResponder @@@@ffffffffNSMutableArrayNSArray NSBox*NSMatrix>&&icc@#iiii:::ffffi@@@@@ NSActionCellNSCellA\D( NSButtonCell?ii@@@@FromNSFont$[36c]LucidaGrandef c i: ssii@@@@@HqA@҄c@@ńtextBackgroundColorȆń textColor:NSButtonX X 8Find Allگ@ [28c]Helvetica ے] ] Previousு@ےLT T 8Next䯁@߅e;;Ԩ@0 foundĄńcontrolTextColorنےPaa Ignore CaseH.?@ABCDEFGHIJKLM OPQRSTWNSLabel]NSDestinationXNSSource V WXYZ[\]^_`abcdefghijkl\NSWindowViewYNSWTFlags]NSWindowTitleYNSMinSizeYNSMaxSize\NSWindowRect_NSWindowStyleMask_NSWindowBacking\NSScreenRect]NSWindowClass[NSViewClasspx  _{{138, 449}, {430, 166}}TFindWNSPanel qrsYNS.stringTView./uv_NSMutableStringuw2XNSString yz{|}~_NSNextResponderZNSSubviewsWNSFrameC 5=JR[bjouyy z{aiha]NSTransparentYNSOffsets_NSTitlePosition\NSBorderTypeXNSvFlags]NSContentView[NSTitleCellYNSBoxType[NSSuperviewIEFD 5= yz{|B 5=y {ii[NSProtoCell[NSCellClassYNSNumRowsZNSCellSize_NSBackgroundColor_NSIntercellSpacingYNSNumCols]NSMatrixFlagsYNSEnabled^NSSelectedCellWNSCellsVNSFont_NSCellBackgroundColor:9A7<8D( @_{{5, 4}, {188, 38}} 5=äƀ#25 _NSKeyEquivalentYNSSupport_NSAlternateContents]NSControlView\NSCellFlags2_NSPeriodicDelay^NSButtonFlags2]NSButtonFlags[NSCellFlags_NSPeriodicInterval_NSAlternateImageZNSContents"!H?@A]NSCatalogName[NSColorName?=>VSystem\controlColor "#$EhI0.666667 "#$GhB1./IJXNSMatrixIKLMN2Y%NSMatrixYNSControlVNSView[NSResponder_{{2, 2}, {181, 48}}./MQMN2_{{20, 52}, {185, 65}}V{0, 0} UVHGZFind Scope./Y2./[\UNSBox[MN2y z{a^_ih`abcaKOLPN 5=ea y{|gM_{{2, 2}, {181, 47}}_{{225, 52}, {185, 64}} UkQ\Find Options y{naopqaZTS_{{17, 128}, {56, 14}} tuvwx[NSTextColorY@VUUFind: <=#${?|AXW_controlTextColor "#$hB0./_NSTextFieldCell2./[NSTextFieldLMN2\%NSTextField y{naa] \_{{78, 124}, {332, 22}} tu/_NSDrawsBackground^@`qA <=#$?A__textBackgroundColor <=#${?AaYtextColor y{aaidc_{{14, 8}, {88, 32}} /.h8@feXFind All gYHelveticaQ ./XNSButtonLMN2 y{a.alk_{{239, 8}, {93, 32}} /.nmXPrevious qr y{a.aqp_{{332, 8}, {84, 32}} .tsrTNext qr qr y{naiawv_{{101, 16}, {139, 14}} tuwƀxW0 found y{aa{z_{{233, 80}, {97, 18}} //i΀}|[Ignore Case р~XNSSwitch y{aa_{{233, 58}, {143, 18}} //i؀_Regular Expression_{{1, 1}, {430, 166}}_{{0, 0}, {1024, 746}}Z{430, 188}Z{515, 211}./_NSWindowTemplate2Vwindow./_NSNibOutletConnector2^NSNibConnector OPQRT_initialFirstResponder OPQRYfindField OPQRZfoundLabel OPQXfindAll:./_NSNibControlConnector2 OPQ_previousMessage: OPQ\nextMessage: OPQR[nextKeyView OPQR_ignoreCaseButton OPQR_regularExpressionButton OPQRVmatrix OPQR ^previousButton OPQR ZnextButton OPQR]findAllButton OPQWfindAll 5Taa 5aaaaaaaaaTa 5Ta 5 !"#$%&'()*YNSButton4YNSMatrix1\File's OwnerYNSButton3\NSTextField2VNSBox1UPanel]NSTextField11YNSButton5ZNSButton41 57 57 58#IKD?HCLBAaaJE@GTFM 5:#;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]€ÀĀŀƀǀȀɀʀˀ̀̀΀πЀрҀӀԀՀր׀؀ـڀۀ܀݀ހ߀;C>I4%B<=3J/-E"H5&A@D?./{|^NSIBObjectData{2~]IB.objectdata#,5:LQ]kr|"$&(*,.02468:<>@IUWYpy#%')+-/13579;=?ARZhqsuw!/;=?DFHJLNPRTVqv~!#%')+-/1ft~  amy "#%')+AJSUWY  + > I K M O T ] _ a c h y   ! , : G N      , . 0")4=EJSbiv~ BDLU\'1;BNdmt'*;=Sl  "$7DGPbkt!68Nceo   )4QSUl)+-/4=Fceg%.09RTVo !(1HO^oq 0ACPaco-/=NPXa "$&(*,.8BOYfmsLNPRTVXZ\^`bdfhjlnprtvxz|~GNUMail/Resources/English.lproj/MailWindow.nib/0040755000014600001460000000000010424672357022113 5ustar monotonemonotoneGNUMail/Resources/English.lproj/MailWindow.nib/classes.nib0100644000014600001460000000672010424672357024244 0ustar monotonemonotone{ IBClasses = ( {CLASS = ExtendedTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; }, { ACTIONS = {concludeDragOperation = id; draggingExited = id; }; CLASS = ExtendedTextView; LANGUAGE = ObjC; SUPERCLASS = NSTextView; }, {CLASS = ExtendedWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { addToAddressBook = id; bounceMessage = id; cleanQuit = id; composeMessage = id; composeMessageFromDeadLetter = id; findNext = id; findPrevious = id; forwardMessage = id; getNewMessages = id; replyAllMessage = id; replyMessage = id; saveTextFromMessage = id; selectAllMessages = id; selectionOfMessageHasChanged = id; showAddressBook = id; showAllHeaders = id; showFindWindow = id; showLocalInboxWindow = id; showMailboxManager = id; showPrefWindow = id; undeleteMessage = id; }; CLASS = GNUMail; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { collapseItem = id; deleteMessage = id; doubleClickedOnDataView = id; expandItem = id; filtersHaveChanged = id; firstMessage = id; forwardMessage = id; getNewMessages = id; lastMessage = id; nextMessage = id; nextUnreadMessage = id; openOrCloseDrawer = id; pageDownMessage = id; pageUpMessage = id; previousMessage = id; previousUnreadMessage = id; replyMessage = id; updateMessageFlags = id; viewMessageInWindow = id; }; CLASS = MailWindowController; LANGUAGE = ObjC; OUTLETS = { addresses = NSButton; compose = NSButton; dataView = id; dateColumn = NSTableColumn; delete = id; drawer = NSDrawer; find = NSButton; forward = NSButton; fromColumn = NSTableColumn; get = id; icon = NSButton; idColumn = NSTableColumn; label = NSTextField; mailboxes = NSButton; navigationView = NSView; next = NSButton; outlineView = ExtendedOutlineView; previous = NSButton; progressIndicator = NSProgressIndicator; reply = NSButton; sizeColumn = NSTableColumn; splitView = NSSplitView; statusColumn = NSTableColumn; subjectColumn = NSTableColumn; tableScrollView = NSScrollView; textScrollView = NSScrollView; textView = NSTextView; }; SUPERCLASS = NSWindowController; } ); IBVersion = 1; }GNUMail/Resources/English.lproj/MailWindow.nib/info.nib0100644000014600001460000000070510557334503023532 0ustar monotonemonotone IBDocumentLocation 50 131 356 240 0 0 1280 1002 IBFramework Version 446.1 IBOpenObjects 5 IBSystem Version 8L127 GNUMail/Resources/English.lproj/MailWindow.nib/objects.nib0100644000014600001460000000737410560055653024241 0ustar monotonemonotone typedstream@NSIBObjectDataNSObjectNSCustomObject)@@NSString+MailWindowControlleriNSProgressIndicator܄NSView) NSResponder @@@@ffffffffNSMutableArrayNSArray NSTextField NSControl)icc@NSTextFieldCell> NSActionCellNSCellAii@@@@@labelNSFont$[36c]LucidaGrandef ci:c@@NSColor@@@System controlColorff?*controlTextColor:NSButton  NSButtonCell?$LucidaGrande  ssii@@@@@T@NSMutableString NSSplitView  NSScrollView⛒ NSClipView:NSClassSwapper*@#ExtendedTableView NSTableView= @@@ff@@f::iNSTableHeaderView’ȆȒȄ@@ccccontrolBackgroundColorʒĆ _NSCornerView   NSTableColumn)@fff@@ccStatusP(PNSTableHeaderCellStatus$LucidaGrande >headerTextColor1@ׅĭĆ#P(Pզ#ׅن1@ׅĭܰĆDate(զDateׅ headerColor܆ن1@ׅḭ̆ĆFrom(զFromׅن1@ׅḭ̆ĆSubjectk(զSubjectׅن1@ׅḭ̆ĆSizeBuAMPզSizeׅن1@ׅḭ̆Ć܄ gridColor?@Ēľ̅ NSScrollerӣ ff:?~ff _doScroller:   ?lū ʒΆɒʒ΄ffffi ’ NSCustomView)??ExtendedTextView NSTextView??00?33ūrrūҁAA  &&L NSPSMatrix[12f]ccddcdNSWindowTemplate iiffffi@@@@@c&0xMailExtendedWindowViewffff-[Ė ĖĖľĖĖĖNSDrawerȁȰ22XIIff ݄ NSTableColumnNSButton WindowNSDrawer NSScrollView111ViewĄ NSTableViewфNSTableColumn1 File's Owner NSTextField1 NSMutableSetNSSetINSNibOutletConnectorτNSNibConnector window!݄idColumn!ф statusColumn!℘ dateColumn!鄘 fromColumn! subjectColumn!label!ĕ dataSource!ĕdelegate! delegate!󄘘 sizeColumn!tableScrollView!ĄdataView!icon! splitView!textScrollView!textView!progressIndicator! parentWindow!delegate!drawer!delegate(@iBHZ$՝,Da>2.&\(Jՙ[6<վYc*ջb @0:4Օ Lա8FƒIBCocoaFrameworkGNUMail/Resources/English.lproj/MailWindow.nib/keyedobjects.nib0100644000014600001460000002512310560055653025253 0ustar monotonemonotonebplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver ]IB.objectdata 156<=AE^f~   8@NRqrstz%&%,3>?>ELPUVY\]`klmpylz~ll   %&+,1278=>CDIJOPUghijmnsxy~lr()*+,-./0123456789:;<=>?@ABCDEFGH`IJKLMNQTWU$null  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRootʁـڀˀ؁ۀ̀ȁ234[NSClassName_MailWindowController789:X$classesZ$classname:;^NSCustomObjectXNSObject_IBCocoaFramework>?@ZNS.objects78BCCD;\NSMutableSetUNSSet>F]GHIJKLMNOPQRSTUVWXYZ[\ €Āƀf_`abcd0]NSDestinationWNSLabelXNSSource ghijklmnopqrstuvwxyz{|}_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass 0x_{{137, 154}, {675, 550}}TMail^ExtendedWindowYNS.stringTView78;_NSMutableStringXNSString.ZNSSubviews_NSNextResponderWNSFrame>]#+fzz[NSSuperviewYNSEnabledXNSvFlagsVNSCell "_{{31, 533}, {531, 14}}_NSBackgroundColor[NSTextColorYNSSupportZNSContents]NSControlView_NSDrawsBackground[NSCellFlags\NSCellFlags2 !@UlabelVNSSizeVNSNameXNSfFlags"A\LucidaGrande78â;VNSFontWNSColor[NSColorName\NSColorSpace]NSCatalogNameVSystem\controlColorWNSWhiteK0.6666666978Ţ;̀ _controlTextColorB078;_NSTextFieldCell\NSActionCell78;[NSTextField\%NSTextFieldYNSControlVNSView[NSResponderzz$  *%_{{653, 532}, {16, 16}}_NSKeyEquivalent^NSButtonFlags2_NSPeriodicInterval]NSButtonFlags_NSPeriodicDelay_NSAlternateContents('&#T@)Ȁ&P "AP78;\NSButtonCell]%NSButtonCell78;XNSButtonzz,>]-xf!"#$%&'()*,./01234.67[NSFrameSize]NSNextKeyView\NSCornerView_NSHeaderClipView[NSHScrollerXNSsFlags[NSVScroller]NSContentView\NSScrollAmts.+v+/96qm/wOA A AA>9].410//mq69f"ABCDGHGJKLMYNSBGColorYNSDocViewYNScvFlags0--1U1k l>O]G1fSTUVWXY2Z[#!\]^_`.bce.ghijk/mnop2_NSIntercellSpacingWidth\NSHeaderView_NSColumnAutoresizingStyle[NSRowHeightYNSTvFlags_NSDraggingSourceMaskForLocal_NSIntercellSpacingHeight_NSOriginalClassName_NSDraggingSourceMaskForNonLocal[NSGridColor^NSTableColumns"@@5/"A`@ /"@j2394g]=INW\afrG^NSResizingMask\NSHeaderCellZNSMinWidthWNSWidth\NSIdentifier^NSIsResizeableZNSDataCellZNSMaxWidth1?"B "B> FHVStatuskBCA@E"A0K0.33333299̀ D_headerTextColor78;_NSTableHeaderCellpGɀGA1!1@B178Ϣ;]NSTableColumnrG1KJ MHQ#kBCALEpGɀGA1!rG1P"CO THTDatekRCAQEp̀GS[headerColorHGɀUA1 !̀V_controlBackgroundColorrG    1Y"CX ["DzHTFromkRCAZEHGɀUA1 !rG !# 1^"B] `HWSubject*kRCA_EHGɀUA1 !r4G6789<\NSIsEditable1c"AM"Bub eHTSizeCkRCAdEHGɀUA1 !78MNNO;^NSMutableArrayWNSArrayQR̀ihYgridColorWD0.578Z[[;^NSClassSwapper_{{1, 17}, {662, 183}}78^__;ZNSClipViewa&bcg22hijXNSTargetYNSPercentXNSAction---np"?~ffo_{{663, 17}, {11, 183}}\_doScroller:78noo;ZNSScrollera&bct2uhwx---rp"?l€s_{{-100, -100}, {662, 11}}>{]_5f_{{1, 0}, {662, 17}}Z{675, 201}78;\NSScrollView"%&'(36y++zzw>]zf"BACJLMXNSBounds{xx||l>]|f23[NSExtensionzz}~_{{5, 0}, {658, 319}}_ExtendedTextViewZNSTextView78;\NSCustomView_{{1, 1}, {658, 319}}abc2hZNSCurValuexx"?xp"?33_{{659, 1}, {15, 304}}a&c2`h€xxxp_{{-100, -100}, {114, 15}}_{{0, 210}, {675, 321}}_{{0, -1}, {675, 531}}78Ȥ;[NSSplitViewzzYNSpiFlagsZNSMaxValue\NSDrawMatrix1 #@Y ր78٢;ZNSPSMatrix_{{7, 532}, {16, 16}}78ݤ;_NSProgressIndicator_{{1, 9}, {675, 550}}78;_{{0, 0}, {1280, 1002}}Z{557, 347}_{3.40282e+38, 3.40282e+38}78;_NSWindowTemplateVwindow78;_NSNibOutletConnector^NSNibConnector_`ad0IXidColumn_`ad0=\statusColumn_`ad0NZdateColumn_`ad0WZfromColumn_`ad0\]subjectColumn_`a d0_`a0dG1ZdataSource_`a0dG1Xdelegate_`a0db _`a"d0aZsizeColumn_`a(d0-_tableScrollView_`aG.d01XdataView_`a4d0#Ticon_`a:d0+YsplitView_`a@d0x^textScrollView_`aFd0|XtextView_`aLd0_progressIndicator_`abRdT VWXYZ[\]^.`k.bcd.f]NSContentSize_NSLeadingOffset_NSPreferredEdgeZNSDelegate_NSMinContentSize_NSTrailingOffset^NSParentWindow_NSMaxContentSize""ApZ{200, 200}X{50, 50}Z{600, 400}78kll;XNSDrawer\parentWindow_`a0pdTÀ_`aTud0ŀVdrawer_`a0{dǀ|>bzGT+ x\WI1=a#-|N78OO;>zz0GbGGGGzGz0+1 11-11+x1>bTG0I# -|1=>€̀΀πЀрҀӀԀՀր׀VWindow]NSScrollView1R11^NSTableColumn1\File's Owner\NSTextField1>G1>i2>(WZHzLXUOMIGJ[QTKTGVNSP0b\RY#€=Nax1ĀI-\+W|  ƀ>(      !"#$%&܀݀ހ߀Za\[Ycb>O]f>R>U78XYY;^NSIBObjectData#,1:LQVdfz "0LYls !#:CLW\kt   !#%'8FNWY[]_ #&(*,.0246;=?Z_nw   *6@IPRTVWZ\^w #):AHQVXZ\irw~      ( * , . 0 C P S U ^ g y  G Y h }    ) 2 = F _ a c e g j l u z | ~   " / 1 3 5 7 9 ; = ? B D F H J ] f q s u w y { } < V c  "')+-2;<>@EGIKMOQSUWkw#%')+BKTbkxz|~ !#%,IKMOQSXinpr   #%.3Ajlnpqsuw "$&(*?ACEGStvxz|}@BDFHIKtvx} "')*+-/4QSUWY[|~'0;`is|~  '0357MXajw  "$&COQSUWY[r  $IKMOQSUq  !#,1<S\e{ 2ARTVXZctvxz|   "$&(*5FHJLNWhjlnp"3579;J[]_acl} +>M`bdikmotvx   =?ACEGIKMOQSUWY[]_ajox!#%')+-/18FIXer{~              " $ & ( * , . 0 2 4 6 8 : < > @ I !!!!!! ! !!!!!!!!!! !"!$!&!(!*!,!.!0!2!4!6!8!:!!G!H!J!S!T!V!_!`!b!k!pZ!GNUMail/Resources/English.lproj/MainMenu.nib/0040755000014600001460000000000010424672357021552 5ustar monotonemonotoneGNUMail/Resources/English.lproj/MainMenu.nib/classes.nib0100644000014600001460000001030510575213557023675 0ustar monotonemonotone{ IBClasses = ( {CLASS = ExtendedMenuItem; LANGUAGE = ObjC; SUPERCLASS = NSMenuItem; }, {CLASS = ExtentedMenuItem; LANGUAGE = ObjC; SUPERCLASS = NSMenuItem; }, { ACTIONS = {pasteAsQuoted = id; }; CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { addSenderToAddressBook = id; applyManualFilter = id; changeTextEncoding = id; checkForUpdates = id; close = id; compactMailbox = id; composeMessage = id; copy = id; customizeToolbar = id; cut = id; deleteOrUndeleteMessage = id; enterSelectionInFindPanel = id; findNext = id; findPrevious = id; forwardMessage = id; getNewMessages = id; importMailboxes = id; makeFilterFromListId = id; makeFilterFromSender = id; makeFilterFromSubject = id; markMessageAsFlaggedOrUnflagged = id; markMessageAsReadOrUnread = id; newViewerWindow = id; nextUnreadMessage = id; paste = id; previousUnreadMessage = id; printMessage = id; redirectMessage = id; replyToMessage = id; restoreDraft = id; saveAllAttachments = id; saveAttachment = id; saveInDrafts = id; saveTextFromMessage = id; selectAllMessagesInThread = id; selectionInTextViewHasChanged = id; showAboutPanel = id; showAddressBook = id; showAllHeaders = id; showConsoleWindow = id; showFindWindow = id; showMailboxInspectorPanel = id; showMailboxManager = id; showOrHideDeletedMessages = id; showOrHideReadMessages = id; showOrHideTableColumns = id; showOrHideToolbar = id; showPreferencesWindow = id; showRawSource = id; sortByDate = id; sortByName = id; sortByNumber = id; sortBySize = id; sortBySubject = id; threadOrUnthreadMessages = id; }; CLASS = GNUMail; LANGUAGE = ObjC; OUTLETS = { columns = NSMenu; create = NSMenuItem; customizeToolbar = NSMenuItem; delete = NSMenuItem; deleteOrUndelete = NSMenuItem; deliver = NSMenuItem; dock = NSMenu; drafts = NSMenu; edit = NSMenu; enterSelection = NSMenuItem; filters = NSMenu; find = NSMenu; forward = NSMenu; incomingMailServers = NSMenu; info = NSMenu; mailbox = NSMenu; markAsFlaggedOrUnflagged = NSMenuItem; markAsReadOrUnread = NSMenuItem; menu = NSMenu; message = NSMenu; messageFilter = NSMenu; rename = NSMenuItem; reply = NSMenu; save = NSMenu; saveInDrafts = NSMenuItem; selectAllMessagesInThread = NSMenuItem; services = NSMenu; showAllHeaders = NSMenuItem; showOrHideDeleted = NSMenuItem; showOrHideRead = NSMenuItem; showOrHideToolbar = NSMenuItem; showRawSource = NSMenuItem; sorting = NSMenu; textEncodings = NSMenu; threadOrUnthreadMessages = NSMenuItem; view = NSMenu; windows = NSMenu; }; SUPERCLASS = NSObject; } ); IBVersion = 1; }GNUMail/Resources/English.lproj/MainMenu.nib/info.nib0100644000014600001460000000106610557334503023172 0ustar monotonemonotone IBDocumentLocation 11 105 356 240 0 0 1280 1002 IBEditorPositions 29 100 777 479 44 0 0 1280 1002 IBFramework Version 446.1 IBOpenObjects 29 IBSystem Version 8L127 GNUMail/Resources/English.lproj/MainMenu.nib/keyedobjects.nib0100644000014600001460000007005010575213557024716 0ustar monotonemonotonebplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver ]IB.objectdatag 156<@DHL   $+/0148?@ADHOPQTX_`adhopqtx  !&-./05<=>CGHKOQRV]abcfkrstuz  !"#(/345:AEFGLSTUV[bcdipqrw~   '()*.567<?IT]^_dijus#,34=FGISZ[\cdenwEbp~  &-.6=>?FGHQXY`ajjk! ~'./8ABAFJQR[Gd mvvw=  #$)*/056;<;A;F;K;P;U;Z_`efkpqvw|} x z  * @ A B C F I K M N O P A S V Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                             ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W Z ] `U$null  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRootNcbcOaedf PLdR234[NSClassName]NSApplication789:X$classesZ$classname:;^NSCustomObjectXNSObject=>?YNS.string_IBCocoaFramework78ABBC;_NSMutableStringXNSStringEFGZNS.objects78IJJK;\NSMutableSetUNSSetEMfNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ "'-27@BDFHJWNSLabelXNSSource VNSMenu]NSMnemonicLoc_NSKeyEquivModMaskWNSTitleYNSOnImageZNSKeyEquiv\NSMixedImage  VNSName[NSMenuItems# XMinimizeQm2^NSResourceNameWNSImage_NSMenuCheckmark78ݣ;_NSCustomResource_%NSCustomResource2؀_NSMenuMixedState78;ZNSMenuItem=?_performMiniaturize:78;_NSNibControlConnector^NSNibConnectorʀ _Bring All to FrontP=?_arrangeInFront:!ʀ   de]Stop speaking]stopSpeaking:&#ʀ$%_`_Check Spelling As You Type_toggleContinuousSpellChecking:!#,(%&(ʀ)*+,.IJZSelect AllQa=2?ZselectAll:571.%:<ʀ)/0UPasteQv=B?Vpaste:EG63%JLʀ)45TRedoQZ=R?Uredo:UW;8Z\ʀ$9:^Check SpellingQ;=b?^checkSpelling:eg@=%jlʀ)>?TUndoQz=r?Uundo:uwEBz|ʀ$CD[Spelling...Q:=?_showGuessPanel:IGʀH^Start speaking^startSpeaking:NK%ʀ)LMTCopyQc=?Ucopy:SP%ʀ)QRSCutQx=?Tcut:0]NSDestinationUWX23VWGNUMailXdelegate78;_NSNibOutletConnectorÀU^Zʀ[\]΁RSYFind NextQgYfindNext:րUc`ʀ[ab]Find PreviousQd]findPrevious:0ieʀfgh,9-\Quit GNUMailQqZterminate:Uokʀlmn\Mark as ReadQu_markMessageAsReadOrUnread: kqXU_markAsReadOrUnreadUwsʀtuvـWCompactQk_compactMailbox:#%U|y(*ʀfz{^Preferences...Q,_showPreferencesWindow:24U~7ʀf_Check for Updates..._checkForUpdates:?@XUDF^Text EncodingsEI78LMMN;^NSMutableArrayWNSArray78P;]textEncodingsSUWXZʀ^`=>]Page Setup...QP=d?^runPageLayout:hjUWmoʀ[New MessageQn_composeMessage:wyUW|ʀ_Save Message As Text..._saveTextFromMessage:Uʀ YAddressesQA_showAddressBook:Uʀ WConsoleQC_showConsoleWindow:XU\Get New MailE_incomingMailServersUʀf]About GNUMail_showAboutPanel:UWʀUCloseQwVclose:0Ѐʀf\Hide GNUMailQhUhide:0߀ʀf[Hide Others_hideOtherApplications:0ʀfXShow AllWunhide:%ʀ)_Paste As Quoted TextQV^pasteAsQuoted: UŀW ʀÀĀXPrint...Qp]printMessage:Uʀʀ[Ȁɀ_Enter SelectionQe_enterSelectionInFindPanel:%'Uπ)*ʀ̀΀02ij_Thread Messages_threadOrUnthreadMessages:79UԀ;<ʀҀӀBDTDate[sortByDate:IKUـ;NPʀҀ׀؀TNameQS[sortByName:XZU݀;]ʀҀ܀VNumber]sortByNumber:fhU;kʀҀTSize[sortBySize:tvU;yʀҀWSubject^sortBySubject:XU)UNSTag̀\Show Deleted_showOrHideDeletedXU)̀YShow Read^showOrHideReadU_showOrHideDeletedMessages:U_showOrHideReadMessages:U)̀[All Headers_showAllHeaders:UWʀ]Save As DraftQs]saveInDrafts:ˀUWʀ]Restore Draft]restoreDraft:0ـʁ\GNUMail HelpQ?YshowHelp: XUʀlWDeliverWdeliver  XUʀl VDelete_deleteOrUndeleteXU  _Apply Manual FiltersEʁTItemWfiltersU"$ʀtYMailboxesQM_showMailboxManager:+-0ʀ TZoom\performZoom:9 $XU==?VWindowE@-CF !"JKOO\NSIsDisabled]NSIsSeparator   JKOO   ^_NSWindowsMenuWwindows`a&XUefh'򀆁(XMainMenuEklmnopqrs):Ffց퀅vw`zYNSSubmenuXNSAction&f*+^submenuAction:E4%倧.~y/078eJKOOf  JKOOf  vwf312XServices465=?E__NSServicesMenuJKOOf  JKOOf  \_NSAppleMenuvw`Wҁ&;ÀUsCĀUuHŀUwMƀUyRǀU{WȀU}\nXUWcolumns:bʁ!XUTsavehHU#mLU%W_showFindWindow:s'XU\saveInDraftsyU)L_selectAllMessagesInThread:L+XU_selectAllMessagesInThread~-XUVcreate/XUVdelete1XUVrenamet3XUWmailbox U5_makeFilterFromSender: U7_makeFilterFromSubject:sU9_addSenderToAddressBook:U;_replyToMessage:U=U?ƀUA_forwardMessage:ǀUCUE_showOrHideToolbarUG_customizeToolbarIXUKXUE wzWvzsK{mxyLt:CqM!7ur;Wp9o K|FU%`|} p#PZs}l~j{n 4h?onHv%Gqg)-~ w'rȁƁ08ÁہqTǁ:UĀW3kKfʁ!nրZa.ꀘe$Ҁ#ZlсfkG7`Cցs"L) &Bρ(u[ہЁ.N)〵 wǁށ€~߀POt?ysF̀y[3E{8=́ Ӂ/\KB́}M78 yNN;E { w~W)`0!W))%lz{W)`)%%` mW)%p;u)`)Wp;%Wnr0)W`%;`%`W)W;%)%}qs)W`):;%)Wo%o%%)lӀf̀$ltnl[l&là[0̀))ۀlǀ ́k&̀[))l& f\:$[l̀ )ҁ́&lf̀[Ҁtn )Fff̀ltl&)n[ ҁ&lf)&tf̀ n[tlfҀ)̀)Ёց̀tlfnt&́ʀҀfO)l̀tnf)f llft))$̀tlnME  wpq s`q%WF0w$U\#t&ցyel8"BME + w , - . / 0 1 2 3 4 5 4 4 8 9 : ; 4 = >QRSTUVWXYZYY[\]^Y_`M\NSMenuItem10[NSMenuItem1[NSMenuItem2= D?Q1= G?Q2=?=i?S121T1111\NSMenuItem11= Q?\File's OwnerE T wME W wME Z wjnO`d_KsC f!ukhY?gWS%;lPT0oZsmmjl pzxzpy-wv9tq[o|pyr\srGNgzU]7{QtWq`Kuqw}vh~~ La{V)n|b%xvenP{R |F~#:}}rZ'H4WUi^oMcXF0BG&jT 2kq!aՀ߁{ LJZ=-yҁsP.H2fOC4K:)kƀہ:B}"сJրT$u<%UNƁ/ Y`ˁ63 &7nB_.  ǁ?"Ѐ8fpց8ށtÁwӁ\WO0rށ7<.s ́πx*)ā>ځD,[K$8 'E@"(ʁЀ#ہý́(~Ad[Ze}F3lǁFME [ w \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Yefghijklmnopqrstuvwxyz{|}~ÁāŁƁǁȁɁʁˁ́́΁ρЁсҁӁԁՁցׁ؁فځہ܁݁ށ߁      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abMJ0!'t>"D1<j4,=B'ro/P:g7x|M86<>F?~$Q-S %GL:8%&Ja9?2E+Q5HK@\L m) HN.z}I\*IbAqC#( 3n;9oO E XE [ wME ^ wM78 a b b;^NSIBObjectData#,1:LQVdf8> *1?M[u    ) 2 ; E X Z c j |         ! $ ' * - 0 3 6 9 < ? B E H K N Q T W Z ] ` c f i l o r u x { ~    # 0 2 7 < > @ B D F W ^ j m p r u ~     " ' 2 ; Q S \ c {   13579;=JMOR`n{}579;=?ANQSVaclwy   #)+8:<>_acegikz|"$&(*,.:<EWYfhjl  "CEGIKMOSU^cev  $'),68BSUWY[|~"3579;\^`bdfhuxz}*-/2:<N_aceg.?ACEGTVXZirsu~  &57HJLNPqsuwy{}%')+-NPRTVXZdfy  !#9JLNPRsuwy{}   .02468:GIO`bdfh  "$EGIKMOQhjy02O`bdfh+.038DUWY[]~   2468:<>CO`bdfh 02468]_acegis   ) + - / 1 3 5 A S d f h j l ! !!*!,!/!1!4!U!X![!]!`!b!d!q!t!v!y!!!!!!!!!!!!!!!!!!"""""$"&")"+"-"/"1"8"K"\"_"b"d"f"s"v"x"{"""""""""""""""""""### #"#%#'#)#3#5#K#X#[#]#`###########################$ $-$;$=$?$A$B$D$F$H$I$r$t$v$x$y${$}$$$$$$$$$$$$$$$$$$$$$%%%% % %4%>%G%J%L%O%Q%S%U%W%Z%i%r%%%%%%%%%%%%%%%%%%%%%%%& & &&&&&&&&A&C&F&I&K&M&O&Q&T&]&n&q&t&v&y&&&&&&&&&&&&&&&''''' ' ' ''''F'I'K'N'P'R'T'V'Y'^'g'i'r''''''''''''''''''''''(((((((!(#($(E(G(J(L(N(P(R(h(((((((((((((((((((((())))))))) )#)&))),)/)1)Z)\)^)`)a)c)e)g)h)))))))))))))))))******!*#*%*(*-*6*8*A*P*S*V*Y*[*]*`*b*d******************++++++++++F+H+J+L+M+O+Q+S+T+}++++++++++++++++++++++++++,,,,,/,2,4,7,9,;,=,?,B,G,P,q,s,v,y,|,~,,,,,,,,,,,,,,,,,,,,,,,,,,- -------"-$-I-L-O-Q-S-U-W-|------------------------..&.).,...0.2.4.6.[.^.a.c.e.g.i.k.r....................////// ///1/3/5/7/9/;/0@0C0E0H0J0L0X0[00000000000000000000000011;1>1@1C1E1G1I1K1N1V1_11111111111111111111111111111222"2%2'2)2+2-20262C2F2H2K2T2[2^2a2d2f222222222222222223333 3 3333>3@3C3F3H3J3L3N3Q3Y3f3i3k3n3w3|333333333333333333334 4"4%4'4)4+4-464_4a4c4e4f4h4j4l4m444444444444444445555 5"5$5&5(5+5>5K5N5P5S5\5a5d5g5i5555555555555555555566666&6(6+6-6/61636E6n6p6r6t6u6w6y6{6|666666666666666666777 7 7777&7O7Q7S7U7V7X7Z7\7]777777777777777777788888 8 8 888!86898<8?8B8E8H8K8N8Q8S8U8~88888888888888888888889997999;9=9>9@9B9D9E9f9h9k9m9o9q9s9}9999999999999999:::::::: :!:J:M:O:R:T:V:X:Z:]::::::::::::::::::::::::;;; ; ;;;0;2;5;7;9;T;e;g;j;l;n;};;;;;;;;;;;;;;;;;<< <"<%<'<*=O=Q=T=V=Y=v=====================> >>>>>(>*>->/>2>C>E>H>J>M>^>a>d>f>h>p>>>>>>>>>>>>>>>>>>>>>>>??????7?H?K?N?P?R?n????????????????????????@@ @ @@@)@:@<@?@A@D@]@n@p@s@u@x@@@@@@@@@@@@@@@@@AAA A AA"A3A5A8A:A=ANAPASAUAXAlA}AAAAAAAAAAAAAAAAC C CCCCCCC C#C&C)C,C/C2C4C7C9C;C>CACDCGCICKCMCPCSCVCYC[C^CaCdCfChCkCnCpCsCvCxC{C}CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDD DDDDDDDDD!D#D&D)D+D-D0D3D6D9D;D>DADCDFDIDLDODQDSDUDWDZD]D`DcDfDiDlDnDpDsDvDyD|DDDDDDDDDDDDDEEEEEEEEEEEEEEFFFFF F F FFFFFFFF"F$F&F(F+F.F0F2F4F6F8F:F=F?FBFDFGFJFMFOFQFSFUFWFYF[F^F`FcFeFhFjFlFnFpFrFtFwFzF|F~FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGGGG G G GGGGGGGG G"G$G&G(G+G-G/G1G3G5G7G9GRARDRGRJRMRORRRURXR[R]R_RaRdRgRjRlRoRrRuRxR{R}RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSS S SSSSSSS!S$S'S*S-S0S2S5S8S;S>SASDSGSISLSOSRSUSXS[S^SaSdSgSiSlSoSrSuSwSyS|SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTT TTTTTTTT!T#T%T(T+T.T1T4T7T:T=T@TBTETHTKTNTQTTTWTZT]T`TbTeTgTiTkTmTpTsTvTyT{T~TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTUU U UUUU!U"U%U.U3 cUBGNUMail/Resources/English.lproj/MainMenu.nib/objects.nib0100644000014600001460000003052610575213557023700 0ustar monotonemonotone typedstream@NSIBObjectDataNSObjectNSCustomObject)@@NSString+ NSApplicationi NSMenuItemNSMenu̔i@@@MessageNSMutableArrayNSArray i@@IIi@@@@:i@DeliverdNSCustomResource)NSImageNSMenuCheckmarkNSMenuMixedStateReplysubmenuAction:ReplyNormalrSimpleAlleForwardForward AttachmentInlineWRedirectAdd Sender to Address BookMake Filter fromMake Filter from˟Sender˟Subject Mark as ReaduMark as FlaggedDeleteSaveSaveܟText from MessageText EncodingsText EncodingsApply Manual FiltersApply Manual FiltersItem疄NSMutableStringFile New MessagenNew Viewer WindownSave Message As Text... Save As Drafts Restore DraftImport Mailboxes... Page Setup...PPrint...pClosewGNUMail About GNUMail  Check for Updates... Preferences...,   Hide GNUMailh Hide Others Show All  Quit GNUMailq _NSAppleMenuServicesServices_NSServicesMenu View,Thread Messages,ColumnsColumns3Date3Flags3From3Number3Size3Status3Subject,Sort BySort ByFDateFNameSFNumberFSizeFSubject,@, Show Deleted, Show Read,@, All Headers, Raw Source,@,Previous Unread, Next Unread+, Hide Toolbar,Customize Toolbar...,Spellingj Spelling...:ijCheck Spelling As You TypeCheck Spelling;jқMailbox u MailboxesMtuOpen in New Windowu Inspector...uu Create...u Delete...uRenameuuCompactk Get New Mail Get New Mailu63ƛFindFind Messages...F Find Nextg Find PreviousdEnter Selectione Find Text...fڛMainMenuGNUMail EditEdit UndozRedoZCutxCopycPastevPaste As Quoted TextV Select AllaSelect All Messages in ThreadFindSpellingjSpeechSpeech̟Start speaking̟ Stop speakingView,MessageMailboxuWindowWindow۟Minimizem۟Zoom۟۟ AddressesA۟ConsoleC۟۟Bring All to Front_NSWindowsMenuHelpHelp GNUMail Help? _NSMainMenuFile閄GNUMaiĺ֛ʖT,' 1, tțږۖD,31ׁW,с̖ʁɛفۖ" jȖFDpjY,ۖՖIFɖU,Ӂӛρ̖ Z,˖KF}u83ۖÁہٖ  \,ᛖu˖Ձ:3ۖNF⛖ Łu ^,ށۖ<3{u PFg,Ɓuז_,u >3ue,ܖRF ƖÛb,u@3! ,Ӗۖ؛盖 xuȁmj/,uśB3jNSMenuGNUMailՄ NSMenuItemÄ NSMenuItem10Ȅ NSMenuItem1p NSMenuItem212uMainMenuׁ121"1111NSMenui NSMenuItem11 File's Ownerm NSMenuItem1 NSMutableSetNSSetIfNSNibControlConnectorτNSNibConnector@@@ޅperformMiniaturize:년arrangeInFront:х stopSpeaking:ptoggleContinuousSpellChecking: selectAll:paste:redo:icheckSpelling:undo:mshowGuessPanel:υstartSpeaking:copy:cut:NSNibOutletConnectorρdelegate findNext: findPrevious:" terminate:ӁmarkMessageAsReadOrUnread:+ӄmarkAsReadOrUnreadcompactMailbox:showPreferencesWindow:checkForUpdates:+䄘 textEncodingsrunPageLayout:composeMessage:saveTextFromMessage:showAddressBook:showConsoleWindow:+incomingMailServersshowAboutPanel:close:hide:hideOtherApplications:unhide:pasteAsQuoted: printMessage:enterSelectionInFindPanel:/threadOrUnthreadMessages:I sortByDate:K sortByName:N sortByNumber:P sortBySize:RsortBySubject:+UshowOrHideDeleted+WshowOrHideReadUshowOrHideDeletedMessages:WshowOrHideReadMessages:ZshowAllHeaders: saveInDrafts: restoreDraft:󕄘 showHelp:+deliver+؄deleteOrUndelete+鄘filtersxshowMailboxManager:ᅄ performZoom:+ۄwindows+menu+\ showRawSource\showRawSource:+/threadOrUnthreadMessages+ZshowAllHeadersnewViewerWindow:_previousUnreadMessage:bnextUnreadMessage:؁deleteOrUndeleteMessage:+enterSelectionimportMailboxes:ÁredirectMessage:+քmarkAsFlaggedOrUnflaggedց markMessageAsFlaggedOrUnflagged:}showMailboxInspectorPanel:6showOrHideTableColumns:8showOrHideTableColumns::showOrHideTableColumns:<showOrHideTableColumns:>showOrHideTableColumns:@showOrHideTableColumns:BshowOrHideTableColumns:+3columns+܄save߁saveTextFromMessage:showFindWindow:+ saveInDraftsÁselectAllMessagesInThread:+ÄselectAllMessagesInThread+create+delete+rename+umailbox΁makeFilterFromSender:ЁmakeFilterFromSubject:ƁaddSenderToAddressBook:replyToMessage:replyToMessage:replyToMessage:forwardMessage:forwardMessage:eshowOrHideToolbargcustomizeToolbar+eshowOrHideToolbar+gcustomizeToolbar@iIJ0!ρڪ'=t3>s骁몁"ƁDxÁ1Ӂ<j6΁4Aʁت,_ӪK=PϪ@BTת؁嬨Á'u쪁&rݪoF˪8M\㪁ઁ/فP:ӁǪ(gOŁ7́誁תx|gM8Ё6U1<e֪>tˁF?~m۪RЪB$I̪ہQ-ȁS* %:ŚG}WڪՁg٪ŁYƪ-w᪁[Ѫ^eL:ǁ8%&Ci۪3ӁJ/嬨yځa]ҪiÁ 95?KͪɁ2WɁEcժ+uQҁ5E<qHȁ֪сª{+KƁ突@ 7\{_ઁ ªLYު ,Ȫ9m)ց }ρHaԪՁN?Q.Ī٪kܪj!z}сImݪ\*ժI܁bAoqpުŁCNΪ>/ɪ߁#( ˁ3n"G1;Z⪁9êUت";oׁObߪDʪ'Ū$ RIBCocoaFrameworkGNUMail/Resources/English.lproj/MessageViewWindow.nib/0040755000014600001460000000000010424672357023450 5ustar monotonemonotoneGNUMail/Resources/English.lproj/MessageViewWindow.nib/classes.nib0100644000014600001460000000205010424672357025571 0ustar monotonemonotone{ IBClasses = ( { ACTIONS = {concludeDragOperation = id; draggingExited = id; }; CLASS = ExtendedTextView; LANGUAGE = ObjC; SUPERCLASS = NSTextView; }, {CLASS = ExtendedWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { deleteMessage = id; forwardMessage = id; nextMessage = id; previousMessage = id; replyAllMessage = id; replyMessage = id; }; CLASS = MessageViewWindowController; LANGUAGE = ObjC; OUTLETS = { deleteView = NSView; navigationView = NSView; nextMessage = NSButton; previousMessage = NSButton; textView = NSTextView; }; SUPERCLASS = NSWindowController; } ); IBVersion = 1; }GNUMail/Resources/English.lproj/MessageViewWindow.nib/info.nib0100644000014600001460000000070510557334503025067 0ustar monotonemonotone IBDocumentLocation 66 110 356 240 0 0 1280 1002 IBFramework Version 446.1 IBOpenObjects 5 IBSystem Version 8L127 GNUMail/Resources/English.lproj/MessageViewWindow.nib/objects.nib0100644000014600001460000000217210560055653025565 0ustar monotonemonotone typedstream@NSIBObjectDataNSObjectNSCustomObject)@@NSString+MessageViewWindowControlleri NSScrollView℄NSView) NSResponder @@@@ffffffffNSMutableArrayNSArray  NSClipView: NSCustomView)ExtendedTextView NSTextView@@cccNSColorc@@@System controlColorff?* NSScrollerӄ NSControl)icc@ff: _doScroller:ffffi NSWindowTemplate iiffffi@@@@@cy#0xWindowExtendedWindowNSMutableStringViewffffՁMessageViewWindowView File's OwnerWindow NSMutableSetNSSetINSNibOutletConnectorτNSNibConnectorwindowdelegatetextView@i  &$%'IBCocoaFrameworkGNUMail/Resources/English.lproj/MessageViewWindow.nib/keyedobjects.nib0100644000014600001460000000713510560055653026613 0ustar monotonemonotonebplist00 Y$archiverX$versionT$topX$objects_NSKeyedArchiver ]IB.objectdataQ 156<=AEKSmnoptx %+r1n258CNOPQRSTWZ]U$null  !"#$%&'()*+,-./0_NSObjectsValues_NSAccessibilityConnectors_NSClassesValuesZNSOidsKeys[NSNamesKeys]NSClassesKeys_NSAccessibilityOidsValues\NSOidsValues_NSVisibleWindowsV$class]NSConnections]NSNamesValues]NSObjectsKeys_NSAccessibilityOidsKeys[NSFramework]NSFontManagerYNSNextOidVNSRoot;MBC?@ZNS.objects78BCCD;\NSMutableSetUNSSet>FJGHI 57LMNOPQ0]NSDestinationWNSLabelXNSSource 34TUVWXYZ[\]^_`abcdefghijkl_NSWindowStyleMask_NSWindowBackingYNSMinSize]NSWindowTitle]NSWindowClass\NSWindowRect\NSScreenRectYNSMaxSize\NSWindowViewYNSWTFlags[NSViewClass_NSFrameAutosaveName/ .00x21_{{121, 35}, {755, 689}}VWindow^ExtendedWindowqrsYNS.stringTView78uvvw;_NSMutableStringXNSStringyz{|.~ZNSSubviews_NSNextResponderWNSFrame,->Jyzhh[NSFrameSize[NSSuperview]NSNextKeyView[NSHScrollerXNSvFlagsXNSsFlags[NSVScroller]NSContentView*'#+>J#'yz{YNSBGColorYNSDocViewYNScvFlags ">Jz2[NSExtensionZ{738, 688}_ExtendedTextViewZNSTextView78;\NSCustomViewVNSView[NSResponder78£;^NSMutableArrayWNSArray_{{1, 1}, {738, 688}}WNSColor[NSColorName\NSColorSpace]NSCatalogName !VSystem\controlColorWNSWhiteK0.66666669!78Ƣ;78ڤ;ZNSClipViewz{ZNSCurValueXNSTargetXNSAction"?$&%_{{739, 1}, {15, 674}}\_doScroller:78;ZNSScrollerYNSControlz{(&)_{{-100, -100}, {738, 15}}Z{755, 690}78;\NSScrollView_{{1, 9}, {755, 689}}78;_{{0, 0}, {1280, 1002}}Z{213, 129}_{3.40282e+38, 3.40282e+38}_MessageViewWindow78;_NSWindowTemplateVwindow78;_NSNibOutletConnector^NSNibConnectorLMN0 QO64 XdelegateLMNQ084XtextView>hO :78â;>hO0 :>&0O :>,-./>?@:\File's Owner>3:>6:>9G0OHIh  57:>DEFGHIJKLEFGHIJKL:  &$%>UJ>X:>[:78^__;^NSIBObjectData#,1:LQVdf \n .HTblsuwy{}$/02;BOU^egikm~ &3@JWam '2DLNPRT]`bdGQ[egikmoqsuxz#*9AXmu +6?HJLQSUXZ\t   6 ? F _ j     , . 0 2 4 = F O Q S U W Y b g p y { }     " $ & ( * , . 0 2 4 6 8 : < E F H Q R T ] ^ ` i n` }GNUMail/Resources/English.lproj/NewMailboxPanel.nib/0040755000014600001460000000000010424672357023066 5ustar monotonemonotoneGNUMail/Resources/English.lproj/NewMailboxPanel.nib/classes.nib0100644000014600001460000000064510424672357025217 0ustar monotonemonotone{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {cancelClicked = id; okClicked = id; }; CLASS = NewMailboxPanelController; LANGUAGE = ObjC; OUTLETS = {mailboxNameField = NSTextField; popUpButton = NSPopUpButton; }; SUPERCLASS = NSWindowController; } ); IBVersion = 1; }GNUMail/Resources/English.lproj/NewMailboxPanel.nib/info.nib0100644000014600001460000000070210424672357024507 0ustar monotonemonotone IBDocumentLocation 10 46 356 240 0 0 1024 746 IBFramework Version 291.0 IBOpenObjects 6 IBSystem Version 6R73 GNUMail/Resources/English.lproj/NewMailboxPanel.nib/objects.nib0100644000014600001460000000455710424672357025221 0ustar monotonemonotone typedstream@NSIBObjectDataNSObjectNSCustomObject)@@NSString+NewMailboxPanelControlleri NSMenu̔i@@@NSMutableString OtherViewsNSMutableArrayNSArray NSMenuItem i@@IIi@@@@:i@mboxNSCustomResource)NSImageNSMenuCheckmarkNSMenuMixedState_popUpItemAction:NSPopUpButtonCell1NSMenuItemCell҄ NSButtonCell? NSActionCellNSCellAiiA@@@@NSFont$[36c]LucidaGrandef ci: NSPopUpButton̄NSButton NSControl)NSView) NSResponder @@@@ffffffff NSTextFieldYlicc@NSTextFieldCell=@)Please enter the name of the new Mailbox:$LucidaGrande  c@@NSColor@@@System controlColorff?*„controlTextColor:\NqA@ȸ„textBackgroundColor„ textColordž T T OKτ ssii@@@@@@  T T Cancelӽ@ NSImageView NSMutableSetNSSetINSFilenamesPboardType?@@@@ NSImageCell)GNUMailiiiRR^^K@$LucidaGrande i@i=maildirfolderϸ׸ȸNSWindowTemplate iiffffi@@@@@c>R0x New MailboxNSPanelViewffffRRӸ晖䙖蕙 PopUpList NSTextField2 NSPopUpButton脘Panel File's OwnerτNSButtonȄ NSTextFieldӄ NSButton1愘 NSMenuItem2䄘 NSMenuItem1 NSMenuItemNSNibOutletConnectorτNSNibConnector脘windowNSNibControlConnectorӕcancelClicked:ϕ okClicked:ȄmailboxNameFieldmailboxNameLabel蕄delegate popUpButton@i ˸ % ˙# ˕$˲!˺ˠ"&IBCocoaFrameworkGNUMail/Resources/English.lproj/NewMailboxPanel.nib/keyedobjects.nib0100644000014600001460000001106410424672357026232 0ustar monotonemonotonebplist00Y$archiverX$versionX$objectsT$top_NSKeyedArchivert (,-348<DKcdefjnu|  $(+/0234589=@ADFGIJLMPRTV^_`abcdfuvwxyz{|}~U$null  !"#$%&']NSFontManagerV$classYNSNextOid_NSVisibleWindowsVNSRoot\NSOidsValues_NSClassesValues]NSConnections]NSNamesValues]NSObjectsKeysZNSOidsKeys]NSClassesKeys[NSFramework[NSNamesKeys_NSObjectsValuess&ec[WdbZY )*+[NSClassName_NewMailboxPanelController./01Z$classnameX$classes^NSCustomObject02XNSObject_IBCocoaFramework 567ZNS.objects./9:\NSMutableSet9;2UNSSet 5=>E?@ABC NQSU EFGHIJWNSLabel]NSDestinationXNSSourceML L MNOPQRSTUVWXYZ[\]^_`ab\NSWindowViewYNSWTFlags]NSWindowTitleYNSMinSizeYNSMaxSize\NSWindowRect_NSWindowStyleMask_NSWindowBacking\NSScreenRect]NSWindowClass[NSViewClassKx IJ H _{{285, 423}, {338, 120}}[New MailboxWNSPanel ghiYNS.stringTView./kl_NSMutableStringkm2XNSString opqrst_NSNextResponderZNSSubviewsWNSFrameGF 5=vwxyz{#.5: o}q~WWVNSCellYNSEnabled[NSSuperview" _{{59, 84}, {232, 16}} w_NSBackgroundColorYNSSupport]NSControlView\NSCellFlags2[NSTextColor[NSCellFlagsZNSContents!@_)Please enter the name of the new Mailbox: VNSSizeVNSNameXNSfFlags"A0\LucidaGrande./VNSFont2 WNSColor]NSCatalogName[NSColorName\NSColorSpaceVSystem\controlColor WNSWhiteI0.666667./2 _controlTextColor B0./_NSTextFieldCell}2\NSActionCell./[NSTextField2\%NSTextFieldYNSControlVNSView[NSResponder o}q~W_WXNSvFlags%$_{{62, 54}, {256, 22}} x_NSDrawsBackground)',qA&P "AP( +*_textBackgroundColor B1 -YtextColor o}q~WW40/_{{243, 13}, {84, 32}} y_NSKeyEquivalent_NSAlternateContents_NSPeriodicDelay^NSButtonFlags2]NSButtonFlags_NSPeriodicInterval_NSAlternateImage32@1ROKQ ./\NSButtonCell}2]%NSButtonCell./XNSButton2 o}q~WW76_{{159, 13}, {84, 32}} z98VCancel gh o}q~W  W ZNSEditable[NSDragTypesD>=; 56 <_NSFilenamesPboardType_{{20, 54}, {34, 52}} _WNSScaleWNSStyleWNSAlignC? )^NSResourceNameB@AWNSImageWGNUMail./!"_NSCustomResource!#2_%NSCustomResource./%&[NSImageCell%'}2\%NSImageCell./)*[NSImageView)2./,-^NSMutableArray,.2WNSArray_{{1, 1}, {338, 120}}./12_{{0, 0}, {1024, 746}}Z{338, 136}Z{338, 160}./67_NSWindowTemplate62Vwindow./:;_NSNibOutletConnector:<2^NSNibConnector EFG>?zPO^cancelClicked:./BC_NSNibControlConnectorB<2 EFG>EyRZokClicked: EFGHHxT_mailboxNameField EFGHKJVXdelegate 5NOXyxJz{wW./.Q.2 5NSWWWWWJ 5NUyxJwz 5NWXYZ[\]\]^_`aUPanel\NSTextField2\File's OwnerYNSButton1 5N7 5N7 5Ne?@BC{JwAzyWx 5Nghijklmnopqrstfghijklmnopqr   ./^NSIBObjectData2]IB.objectdata#,5:LQ<B(4FHJLNPRTVXZ\^`bdmy{} )+68:<>@QYgprtv .:<>GIKMOQSUWYt !#%'@GQ]_acd|  9JQXachjly468KX[dv?SUWYbdev{}    Q c y    % . 9 V X Z r   ! 8 U ] e m o q v x  ! , 5 D K S j s z     * 3 K R c e p  "$&(*0=JT]fo  GNUMail/Resources/English.lproj/PasswordPanel.nib/0040755000014600001460000000000010424672357022623 5ustar monotonemonotoneGNUMail/Resources/English.lproj/PasswordPanel.nib/classes.nib0100644000014600001460000000061710424672357024753 0ustar monotonemonotone{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {cancelClicked = id; okClicked = id; }; CLASS = PasswordPanelController; LANGUAGE = ObjC; OUTLETS = {passwordSecureField = NSSecureTextField; }; SUPERCLASS = NSWindowController; } ); IBVersion = 1; }GNUMail/Resources/English.lproj/PasswordPanel.nib/info.nib0100644000014600001460000000070610506157373024245 0ustar monotonemonotone IBDocumentLocation 112 134 356 240 0 0 1280 1002 IBFramework Version 446.1 IBOpenObjects 5 IBSystem Version 8J135 GNUMail/Resources/English.lproj/PasswordPanel.nib/objects.nib0100644000014600001460000000400710506157373024741 0ustar monotonemonotone typedstream@NSIBObjectDataNSObjectNSCustomObject)@@NSString+PasswordPanelControlleriNSButton NSControl)NSView) NSResponder @@@@ffffffffNSMutableArrayNSArray NSTextFieldYhicc@NSTextFieldCell> NSActionCellNSCellAii@@@@@Please enter your password: NSFont$[36c]LucidaGrandef c i:c@@NSColor@@@System controlColorff?*controlTextColor:NSClassSwapper*@#NSSecureTextField\NqA@$LucidaGrande textBackgroundColor textColor T T  NSButtonCell?8Cancel ssii@@@@@@NSMutableStringØ[28c]Helvetica  NSImageView NSMutableSetNSSetIApple PDF pasteboard type1NeXT Encapsulated PostScript v1.2 pasteboard typeNeXT TIFF v4.0 pasteboard typeNSFilenamesPboardTypeApple PICT pasteboard typeApple PNG pasteboard type?@@@@ NSImageCell)NSCustomResource)NSImagepgp-mailiiiRR T T 8OK@ ŅNSWindowTemplate iiffffi@@@@@c~RxAuthenticationNSPanelØViewffffRRږƞ NSButton1ڄPanel NSTextField NSButton2 File's Owner NSTextField2ɻNSNibOutletConnectorτNSNibConnectorڄwindowڕdelegate试passwordSecureFieldNSNibControlConnector鯙 okClicked:𯾕cancelClicked: @iŢř Şž ŕų IBCocoaFrameworkGNUMail/Resources/English.lproj/PreferencesWindow.nib/0040755000014600001460000000000010424672357023472 5ustar monotonemonotoneGNUMail/Resources/English.lproj/PreferencesWindow.nib/classes.nib0100644000014600001460000000125710424672357025623 0ustar monotonemonotone{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = { cancelClicked = id; expertClicked = id; handleCellAction = id; saveAndClose = id; savePreferences = id; }; CLASS = PreferencesWindowController; LANGUAGE = ObjC; OUTLETS = { box = NSBox; expert = NSButton; matrix = NSMatrix; scrollView = NSScrollView; }; SUPERCLASS = NSWindowController; } ); IBVersion = 1; }GNUMail/Resources/English.lproj/PreferencesWindow.nib/info.nib0100644000014600001460000000117310424672357025116 0ustar monotonemonotone IBDocumentLocation 98 383 356 240 0 0 1280 1002 IBFramework Version 291.0 IBSystem Version 6L60 IBUserGuides 5 guideLocations Vertical:259.000000 Horizontal:308.000000 guidesLocked GNUMail/Resources/English.lproj/PreferencesWindow.nib/keyedobjects.nib0100644000014600001460000001551110424672357026637 0ustar monotonemonotonebplist00.Y$archiverX$versionX$objectsT$top_NSKeyedArchiver (,-348<JQijklpt{89FKLOTUTWTYT[T^T`TcTeTgTijTmruyz{~H2d3 !"#a$%&'(\)*+U$null  !"#$%&']NSFontManagerV$classYNSNextOid_NSVisibleWindowsVNSRoot\NSOidsValues_NSClassesValues]NSConnections]NSNamesValues]NSObjectsKeysZNSOidsKeys]NSClassesKeys[NSFramework[NSNamesKeys_NSObjectsValuesЀ )*+[NSClassName_PreferencesWindowController./01Z$classnameX$classes^NSCustomObject02XNSObject_IBCocoaFramework 567ZNS.objects./9:\NSMutableSet9;2UNSSet 5=>?@ABCDEFGHI vx{} KLMNOPWNSLabel]NSDestinationXNSSourceut R STUVWXYZ[\]^_`abcdefgh\NSWindowViewYNSWTFlags]NSWindowTitleYNSMinSizeYNSMaxSize\NSWindowRect_NSWindowStyleMask_NSWindowBacking\NSScreenRect]NSWindowClass[NSViewClasss qr p _{{319, 157}, {518, 616}}_Preferences PanelXNSWindow mnoYNS.stringTView./qr_NSMutableStringqs2XNSString uvwxyz_NSNextResponderZNSSubviewsWNSFrameo 5=|}~!+16iu vw]]]NSTransparentYNSOffsets_NSTitlePosition\NSBorderTypeXNSvFlags]NSContentView[NSTitleCellYNSBoxType[NSSuperview  5= uwx}}_{{2, 2}, {474, 443}}./VNSView2[NSResponder./^NSMutableArray2WNSArray_{{20, 56}, {478, 447}}V{0, 0} YNSSupport\NSCellFlags2[NSCellFlagsZNSContents mnSBox VNSSizeVNSNameXNSfFlags"AP\LucidaGrande./VNSFont2./VNSCell2./UNSBox2 uw]d]YNSEnabled*#" _{{421, 12}, {83, 32}} ~d_NSKeyEquivalent_NSAlternateContents]NSControlView_NSPeriodicDelay^NSButtonFlags2]NSButtonFlags_NSPeriodicInterval_NSAlternateImage)('8@%$ROK ߀&YHelveticaPQ ./\NSButtonCell2]%NSButtonCell\NSActionCell./XNSButton2YNSControl uw]d]-,_{{338, 12}, {83, 32}} d0/.UApply mn mn uw]d]32_{{253, 12}, {83, 32}} d54VCancel mn uvw]    ] [NSVScrollerXNSsFlags]NSNextKeyView[NSHScrollerh78` gd 5=  uvwYNScvFlagsYNSBGColorXNSBoundsYNSDocView_9 :Z]^ 5= u! "#$%&'()*+,-./d012345647[NSProtoCell[NSCellClassYNSNumRowsZNSCellSize_NSBackgroundColor_NSIntercellSpacingYNSNumCols]NSSelectedRow]NSMatrixFlags[NSFrameSize]NSSelectedColWNSCells_NSCellBackgroundColorXW\UV  U(;?@ABCDE=ACEGIKMOQS GHIJ?6 @>WAccount MN"A0@ PdGQHIRSUNSTagKBURadio PeGQHIRVD PGQHIRXF PGQHIRZH P\GQHIR]J PHGQHIR_L PaGQHIRbN PGQHIRdP QHIRfR QHIRhTX{81, 70} HQkRl@Y nopqWNSWhite\NSColorSpace[B1./stWNSColors2./vwXNSMatrixvx2Y%NSMatrix_{{2, 2}, {474, 70}}_{{417, 0}, {474, 70}}./|}ZNSClipView|2 uwXNSActionXNSTargetYNSPercentcba"?L_{{-100, -100}, {11, 56}}\_doScroller:./ZNSScroller2 uwZNSCurValuef"?e"?0E_{{2, 72}, {474, 11}}_{{20, 511}, {478, 85}}./\NSScrollView2 uw]]kj_{{14, 12}, {83, 32}} dnmlVExpert mn mn_{{1, 9}, {518, 616}}_{{0, 0}, {1280, 1002}}Z{483, 413}_{3.40282e+38, 3.40282e+38}./_NSWindowTemplate2Vwindow./_NSNibOutletConnector2^NSNibConnector KLMN}wSbox KLM~zy]saveAndClose:./_NSNibControlConnector2 KLM|_savePreferences: KLM~^cancelClicked: KLM_handleCellAction: KLMNPXdelegate KLMNVmatrix KLM^expertClicked: KLMNVexpert KLMNZscrollView 5ӀDB;CE}AP>@~?=]<./բ2 5ׯ]]}]]]]P 5٩}~P 5۩䀐YNSButton3YNSButton1YNSButton2\File's OwnerVWindowYNSMatrix1 57 57 5!AIDH~?>]C@E?BA=G;C}<EB@DPF 5!      ./,-^NSIBObjectData,2/0]IB.objectdata#,5:LQ%,6IP]o}1:EN]bk~  "$&Wdn| 4=FPRW`ry#-?LUcoy 18MWdp{} 2<>@BC[   ! # ( * 3 5 7 9 < M O Q [ \ ^ g t  / 1 3 5 ; D M j l n   $ 0 2 4 6 8 : = ? A J Q ~   ) 3 > R g q          ! # % ' X Z \ a c k | 79npNP#+09BOYo$/:grtw|~;=?AHQZq!#'8:<JSkr(*9JLSdfqz| %')+-/1357AKUbis|!#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}1GNUMail/Resources/English.lproj/GNUMail.scriptTerminology0100644000014600001460000001022010424672357024175 0ustar monotonemonotone Classes BccRecipient Description A "Bcc" recipient Name bcc recipient PluralName bcc recipients CcRecipient Description A "Cc" recipient Name cc recipient PluralName cc recipients InternetAddress Attributes address Description Email address of recipient Name address personal Description Real name of recipient Name personal Description A message recipient Name recipient PluralName recipients MessageComposition Attributes account Description Specifies mail account from which to send this message Name account author Description Author of message Name author content Description Body of message Name content hasSignature Description Specifies whether the message has a signature Name has signature signaturePosition Description Position of signature (top/bottom) Name signature position subject Description Subject of message Name subject Description A message composition Name message composition PluralName message compositions NSApplication Description Main application class Name application PluralName applications ToRecipient Description A "To" recipient Name to recipient PluralName to recipients Commands Attach Arguments file Description File name of attachment Name file Description Adds an attachment Name attach GetURL Description Opens a URL Name get URL OpenURL Description Opens a URL Name open URL SendMessage Description Sends a message Name send ShowMessage Description Shows a message Name show Description Scripting interface for GNUMail.app Name GNUMail script suite GNUMail/Resources/English.lproj/InfoPlist.strings0100644000014600001460000000106010424672357022606 0ustar monotonemonotone/* Localized versions of Info.plist keys */ CFBundleName = "GNUMail"; CFBundleShortVersionString = "GNUMail version 1.2.0"; CFBundleGetInfoString = "GNUMail version 1.2.0, Copyright 1998-2004 Ludovic Marcotte"; NSHumanReadableCopyright = "Copyright 1998-2004 Ludovic Marcotte"; GNUMail/Resources/English.lproj/Localizable.strings0100644000014600001460000020635410562042234023121 0ustar monotonemonotone /** Clock.m */ /** ClockController.m */ /** ComposeView.m */ "When replying to an E-Mail, add the signature to the" = "When replying to an E-Mail, add the signature to the"; "beginning" = "beginning"; "end" = "end"; "of the message." = "of the message."; "When forwarding an E-Mail, add the signature to the" = "When forwarding an E-Mail, add the signature to the"; "Wrap lines at" = "Wrap lines at"; "characters when sending plain/text messages." = "characters when sending plain/text messages."; "Default charset used when sending a message:" = "Default charset used when sending a message:"; "Automatic" = "Automatic"; /** ComposeViewController.m */ "Compose" = "Compose"; /* "Automatic" = "Automatic"; */ /** Face.m */ /** FaceController.m */ /** ExtendedFilteringTableView.m */ /** ExtendedTableColumn.m */ /** FilterEditorWindow.m */ "Description:" = "Description:"; "Active" = "Active"; "Filter type:" = "Filter type:"; "Incoming" = "Incoming"; "Outgoing" = "Outgoing"; "External Program" = "External Program"; "Process with external program:" = "Process with external program:"; "and apply criteria(s)" = "and apply criteria(s)"; "after" = "after"; "before" = "before"; "program execution." = "program execution."; "Criteria" = "Criteria"; "To" = "To"; "Cc" = "Cc"; "To or Cc" = "To or Cc"; "Subject" = "Subject"; "From" = "From"; "Expert..." = "Expert..."; "Contains" = "Contains"; "Is Equal" = "Is Equal"; "Has Prefix" = "Has Prefix"; "Has Suffix" = "Has Suffix"; "Match Expression" = "Match Expression"; "and" = "and"; "or" = "or"; "(none)" = "(none)"; "Action" = "Action"; "Set the color to:" = "Set the color to:"; "Transfer to mailbox:" = "Transfer to mailbox:"; "Do..." = "Do..."; "Delete the message" = "Delete the message"; "Blue" = "Blue"; "Brown" = "Brown"; "Cyan" = "Cyan"; "Dark Gray" = "Dark Gray"; "Green" = "Green"; "Magenta" = "Magenta"; "Orange" = "Orange"; "Purple" = "Purple"; "Red" = "Red"; "White" = "White"; "Yellow" = "Yellow"; "Bounce to:" = "Bounce to:"; "Forward to:" = "Forward to:"; "Reply to:" = "Reply to:"; "Set message" = "Set message"; "Cancel" = "Cancel"; "OK" = "OK"; /** FilterEditorWindowController.m */ "Add a filter" = "Add a filter"; "Error!" = "Error!"; "The selected target folder (%@) holds folders, not messages." = "The selected target folder (%@) holds folders, not messages."; /* "OK" = "OK"; */ "Warning!" = "Warning!"; "Defining a Coloring filter that uses an external program is a BAD idea.\nThis will slow down drastically the application." = "Defining a Coloring filter that uses an external program is a BAD idea.\nThis will slow down drastically the application."; /* "To" = "To"; */ /* "Cc" = "Cc"; */ /* "To or Cc" = "To or Cc"; */ /* "From" = "From"; */ "Is in Address Book" = "Is in Address Book"; /** FilterHeaderEditorWindow.m */ "Header" = "Header"; "Header:" = "Header:"; "Remove" = "Remove"; "Add" = "Add"; /* "Cancel" = "Cancel"; */ /* "OK" = "OK"; */ /** FilterHeaderEditorWindowController.m */ "Add a header" = "Add a header"; /** FilterMessageWindow.m */ "Text to include before original message:" = "Text to include before original message:"; /* "Cancel" = "Cancel"; */ /* "OK" = "OK"; */ /** FilterMessageWindowController.m */ /** FilteringView.m */ "Rules" = "Rules"; /* "Active" = "Active"; */ "Add..." = "Add..."; "Delete" = "Delete"; "Edit..." = "Edit..."; "Duplicate" = "Duplicate"; /** FilteringViewController.m */ "Yes" = "Yes"; "No" = "No"; "Delete..." = "Delete..."; "Are you sure you want to delete this filter?" = "Are you sure you want to delete this filter?"; /* "Cancel" = "Cancel"; */ "Edit a filter" = "Edit a filter"; "Filtering" = "Filtering"; /** FontsView.m */ "Font used when displaying a message for:" = "Font used when displaying a message for:"; "Header name:" = "Header name:"; "Size:" = "Size:"; "Header value:" = "Header value:"; "Content of message:" = "Content of message:"; "Use fixed-width font for plain text messages" = "Use fixed-width font for plain text messages"; "Plain text font:" = "Plain text font:"; /** FontsViewController.m */ "Fonts" = "Fonts"; /** MIMEView.m */ "Mime-Type" = "Mime-Type"; "File extension(s)" = "File extension(s)"; /* "Add..." = "Add..."; */ /* "Delete" = "Delete"; */ /* "Edit..." = "Edit..."; */ "Import from mailcap" = "Import from mailcap"; /** MIMEViewController.m */ /* "Delete..." = "Delete..."; */ "Are you sure you want to delete this Mime-Type entry?" = "Are you sure you want to delete this Mime-Type entry?"; /* "Cancel" = "Cancel"; */ /* "Yes" = "Yes"; */ "MIME" = "MIME"; /** MailcapParser.m */ /** MailcapWindow.m */ /* "Mime-Type" = "Mime-Type"; */ "Command" = "Command"; /* "Cancel" = "Cancel"; */ "Import" = "Import"; /** MailcapWindowController.m */ "Import from mailcap file" = "Import from mailcap file"; "Mailcap Import Error!" = "Mailcap Import Error!"; "You must select at least one mailcap item to import!" = "You must select at least one mailcap item to import!"; /* "OK" = "OK"; */ /** MimeTypeEditorWindow.m */ "Mime-Type (ex: image/jpeg):" = "Mime-Type (ex: image/jpeg):"; "File extensions (ex: jpeg,jpg,jpe):" = "File extensions (ex: jpeg,jpg,jpe):"; /* "Description:" = "Description:"; */ "View:" = "View:"; "Display if possible (as icon if it is not possible)" = "Display if possible (as icon if it is not possible)"; "Always display as icon" = "Always display as icon"; "Action:" = "Action:"; "Prompt save panel" = "Prompt save panel"; "Open with external program:" = "Open with external program:"; "Choose" = "Choose"; "Needs a terminal for the external program" = "Needs a terminal for the external program"; "Please choose an icon to represent this Mime-Type (tiff file only):" = "Please choose an icon to represent this Mime-Type (tiff file only):"; /* "Cancel" = "Cancel"; */ /* "OK" = "OK"; */ /** MimeTypeEditorWindowController.m */ "Add a Mime-Type" = "Add a Mime-Type"; "Edit a Mime-Type" = "Edit a Mime-Type"; /** MailboxesView.m */ "Default mailbox used for:" = "Default mailbox used for:"; "Inbox:" = "Inbox:"; "Outbox:" = "Outbox:"; "Drafts:" = "Drafts:"; "Trash:" = "Trash:"; "(If you don't see all your IMAP mailboxes, first open the connection to this IMAP server.)" = "(If you don't see all your IMAP mailboxes, first open the connection to this IMAP server.)"; "Compact mailbox when closing (not recommended)" = "Compact mailbox when closing (not recommended)"; "Reuse the mail window when selecting a folder" = "Reuse the mail window when selecting a folder"; /** MailboxesViewController.m */ "Mailboxes" = "Mailboxes"; /** PGPController.m */ "Encrypt" = "Encrypt"; "Sign" = "Sign"; "\nThe supplied passphrase was wrong or not given" = "\nThe supplied passphrase was wrong or not given"; "\nWrong passphrase (or something else)" = "\nWrong passphrase (or something else)"; "\nYour key is expired. You must generate a new one\nbefore trying to send again any signed or encrypted messages." = "\nYour key is expired. You must generate a new one\nbefore trying to send again any signed or encrypted messages."; "Decryption failed due the following reason(s):\n" = "Decryption failed due the following reason(s):\n"; /* "Error!" = "Error!"; */ /* "OK" = "OK"; */ "Encryption failed due the following reason(s):\n" = "Encryption failed due the following reason(s):\n"; "Passphrase for %@" = "Passphrase for %@"; /** PGPView.m */ "GPG/PGP executable path:" = "GPG/PGP executable path:"; "User E-Mail address:" = "User E-Mail address:"; "Use FROM E-Mail address for signing" = "Use FROM E-Mail address for signing"; /** PGPViewController.m */ "Version: %@" = "Version: %@"; "PGP" = "PGP"; /** NewPersonalProfilePanel.m */ "Please enter the name of the new profile:" = "Please enter the name of the new profile:"; /* "Cancel" = "Cancel"; */ /* "OK" = "OK"; */ /** NewPersonalProfilePanelController.m */ "New Personal Profile" = "New Personal Profile"; /** PersonalView.m */ "Available personal profiles:" = "Available personal profiles:"; /* "Add" = "Add"; */ /* "Delete" = "Delete"; */ "Set this profile as default" = "Set this profile as default"; "Your name:" = "Your name:"; "Your E-Mail address:" = "Your E-Mail address:"; "Reply-to address:" = "Reply-to address:"; "Organization:" = "Organization:"; "Signature" = "Signature"; "Obtain signature from" = "Obtain signature from"; "content of file" = "content of file"; "program's output" = "program's output"; /* "Choose" = "Choose"; */ /** PersonalViewController.m */ /* "Error!" = "Error!"; */ "This profile name already exists. Please choose another name." = "This profile name already exists. Please choose another name."; /* "OK" = "OK"; */ "You must have at least one defined personal profile at any time." = "You must have at least one defined personal profile at any time."; /* "Delete..." = "Delete..."; */ "Are you sure you want to delete the %@ personal profile?" = "Are you sure you want to delete the %@ personal profile?"; /* "Cancel" = "Cancel"; */ /* "Yes" = "Yes"; */ "Personal" = "Personal"; /** IMAPView.m */ "Check for mail every" = "Check for mail every"; "minutes" = "minutes"; "Folders" = "Folders"; "Subscribed" = "Subscribed"; "List" = "List"; "Subscribe" = "Subscribe"; "Unsubscribe" = "Unsubscribe"; /** IMAPViewController.m */ "All Folders" = "All Folders"; "Y" = "Y"; /* "Error!" = "Error!"; */ "Authentication error with the IMAP server." = "Authentication error with the IMAP server."; /* "OK" = "OK"; */ "An error occured while listing the folders on this IMAP server." = "An error occured while listing the folders on this IMAP server."; "You are already subscribed to this IMAP folder." = "You are already subscribed to this IMAP folder."; "You cannot subscribe to this folder." = "You cannot subscribe to this folder."; "An error occured while subscribing to folder:\n%@." = "An error occured while subscribing to folder:\n%@."; "You are already unsubscribed from this IMAP folder." = "You are already unsubscribed from this IMAP folder."; "An error occured while unsubscribing to folder:\n%@." = "An error occured while unsubscribing to folder:\n%@."; /** POP3View.m */ "Leave messages on server for" = "Leave messages on server for"; "days" = "days"; "Use APOP (if possible)" = "Use APOP (if possible)"; "Download messages from this server into mailbox:" = "Download messages from this server into mailbox:"; "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)" = "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)"; /** POP3ViewController.m */ /** ReceivingView.m */ "Retrieve mail (for POP3 accounts and local mail spool file)" = "Retrieve mail (for POP3 accounts and local mail spool file)"; "Manually" = "Manually"; "Automatically every" = "Automatically every"; /* "minutes" = "minutes"; */ "Incoming mail servers" = "Incoming mail servers"; "Incoming Servers" = "Incoming Servers"; /* "Add" = "Add"; */ "Edit" = "Edit"; /* "Delete" = "Delete"; */ "Show alert panel for received and transferred messages" = "Show alert panel for received and transferred messages"; "Show No New Messages panel" = "Show No New Messages panel"; /** ReceivingViewController.m */ "POP3" = "POP3"; "IMAP" = "IMAP"; "%@ [UNIX]" = "%@ [UNIX]"; /* "Error!" = "Error!"; */ "To edit this account, you must first close the connection with the server." = "To edit this account, you must first close the connection with the server."; /* "OK" = "OK"; */ "To delete this account, you must first close the connection with the server." = "To delete this account, you must first close the connection with the server."; /* "Delete..." = "Delete..."; */ "Are you sure you want to delete this receiving server entry?" = "Are you sure you want to delete this receiving server entry?"; /* "Cancel" = "Cancel"; */ /* "Yes" = "Yes"; */ "Receiving" = "Receiving"; /** ReceivingWindow.m */ "Server type:" = "Server type:"; /* "POP3" = "POP3"; */ /* "IMAP" = "IMAP"; */ "UNIX" = "UNIX"; "Server name:" = "Server name:"; "Port:" = "Port:"; "Username:" = "Username:"; "Password:" = "Password:"; "Remember password" = "Remember password"; "Verify for new mail on startup" = "Verify for new mail on startup"; "Use secure connection (SSL)" = "Use secure connection (SSL)"; "General" = "General"; /* "Cancel" = "Cancel"; */ /* "OK" = "OK"; */ /** ReceivingWindowController.m */ "Receiving preferences" = "Receiving preferences"; /* "IMAP" = "IMAP"; */ /* "POP3" = "POP3"; */ /* "UNIX" = "UNIX"; */ /** UNIXView.m */ "Mail spool file:" = "Mail spool file:"; /* "Choose" = "Choose"; */ "Download messages from this spool file into mailbox:" = "Download messages from this spool file into mailbox:"; /* "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)" = "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)"; */ /** UNIXViewController.m */ /** SendingView.m */ "Delivery methods" = "Delivery methods"; "Method" = "Method"; "Value" = "Value"; /* "Add" = "Add"; */ /* "Edit" = "Edit"; */ /* "Remove" = "Remove"; */ "Additional Outgoing Headers" = "Additional Outgoing Headers"; "Key" = "Key"; "Key:" = "Key:"; "Value:" = "Value:"; /** SendingViewController.m */ "SMTP" = "SMTP"; "Mailer" = "Mailer"; /* "Delete..." = "Delete..."; */ "Are you sure you want to delete this transport method?" = "Are you sure you want to delete this transport method?"; /* "Cancel" = "Cancel"; */ /* "Yes" = "Yes"; */ "Sending" = "Sending"; /** TransportMethodEditorWindow.m */ "Transport method:" = "Transport method:"; /* "Mailer" = "Mailer"; */ /* "SMTP" = "SMTP"; */ "Mailer:" = "Mailer:"; "Host:" = "Host:"; /* "Port:" = "Port:"; */ "Authenticate using" = "Authenticate using"; "Most secure" = "Most secure"; "Supported mechanisms" = "Supported mechanisms"; /* "Username:" = "Username:"; */ /* "Password:" = "Password:"; */ /* "Remember password" = "Remember password"; */ "Associated personal profile:" = "Associated personal profile:"; /* "Cancel" = "Cancel"; */ /* "OK" = "OK"; */ /** TransportMethodEditorWindowController.m */ "Add a transport method" = "Add a transport method"; "Edit a transport method" = "Edit a transport method"; /** ViewingView.m */ "Messages" = "Messages"; "Hide deleted messages on startup" = "Hide deleted messages on startup"; "Hide read messages on startup" = "Hide read messages on startup"; "Highlight URLs in message content" = "Highlight URLs in message content"; "Table columns" = "Table columns"; "Status" = "Status"; "Id" = "Id"; "Date" = "Date"; /* "From" = "From"; */ /* "Subject" = "Subject"; */ "Size" = "Size"; "Shown headers while viewing a mail" = "Shown headers while viewing a mail"; "Show all headers" = "Show all headers"; /* "Remove" = "Remove"; */ /* "Add" = "Add"; */ "Defaults" = "Defaults"; /* "Key:" = "Key:"; */ "Shown Headers" = "Shown Headers"; "Double-clicking in message list:" = "Double-clicking in message list:"; "Opens reply editor" = "Opens reply editor"; "Opens message in new window" = "Opens message in new window"; /** ViewingViewController.m */ "Viewing" = "Viewing"; /** Address.m */ /** AddressBook.m */ /* "General" = "General"; */ /** AddressBookController.m */ "Address Book" = "Address Book"; "Add Group" = "Add Group"; "Delete Group" = "Delete Group"; /* "General" = "General"; */ /* "Error!" = "Error!"; */ "This group already exist! Please choose an other name." = "This group already exist! Please choose an other name."; /* "OK" = "OK"; */ /* "Delete..." = "Delete..."; */ "Are you sure you want to delete this address?" = "Are you sure you want to delete this address?"; /* "No" = "No"; */ /* "Yes" = "Yes"; */ "Are you sure you want to delete this group?" = "Are you sure you want to delete this group?"; "You must select a group to import the addresses in." = "You must select a group to import the addresses in."; "< no address >" = "< no address >"; "Add Address" = "Add Address"; "Delete Address" = "Delete Address"; "Enter the contact's E-Mail address here" = "Enter the contact's E-Mail address here"; "Groups" = "Groups"; "Move to:" = "Move to:"; /** AddressBookWindow.m */ /* "Groups" = "Groups"; */ "Name:" = "Name:"; "Modify" = "Modify"; "Import from:" = "Import from:"; "OPENSTEP Mail.app" = "OPENSTEP Mail.app"; "LDIF" = "LDIF"; "Close" = "Close"; /** BounceWindow.m */ "Send" = "Send"; "Addresses" = "Addresses"; "From:" = "From:"; "Using:" = "Using:"; "To:" = "To:"; "Cc:" = "Cc:"; "Bcc:" = "Bcc:"; /** BounceWindowController.m */ "Bounce a message" = "Bounce a message"; /* "Error!" = "Error!"; */ "Unable to create a valid bounced message.\nPlease, report this as a bug." = "Unable to create a valid bounced message.\nPlease, report this as a bug."; /* "OK" = "OK"; */ "Please, verify that the To/Cc/Bcc fields are correct. Also, you MUST have at least one\nvalid E-Mail address in the To field." = "Please, verify that the To/Cc/Bcc fields are correct. Also, you MUST have at least one\nvalid E-Mail address in the To field."; "Stop" = "Stop"; "Starting the thread for bouncing the E-Mail..." = "Starting the thread for bouncing the E-Mail..."; "Closing..." = "Closing..."; "A mail is currently being sent. Please wait." = "A mail is currently being sent. Please wait."; "An error occured during the authentication with the SMTP server (%@)." = "An error occured during the authentication with the SMTP server (%@)."; "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences." = "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences."; /* "Send" = "Send"; */ "Manual stop of bouncing thread." = "Manual stop of bouncing thread."; "Exiting the thread used to bounce the E-Mail..." = "Exiting the thread used to bounce the E-Mail..."; /** BounceWindowToolbar.m */ /** ConsoleWindow.m */ /* "Date" = "Date"; */ "Message" = "Message"; /** ConsoleWindowController.m */ /* "Date" = "Date"; */ "%H:%M:%S.%F" = "%H:%M:%S.%F"; /** EditWindow.m */ /* "Send" = "Send"; */ "Attach" = "Attach"; "Add Cc" = "Add Cc"; "Add Bcc" = "Add Bcc"; /* "Addresses" = "Addresses"; */ /* "From:" = "From:"; */ /* "Using:" = "Using:"; */ "Charset:" = "Charset:"; /* "Automatic" = "Automatic"; */ /* "To:" = "To:"; */ /* "Cc:" = "Cc:"; */ /* "Bcc:" = "Bcc:"; */ "Subject:" = "Subject:"; /** EditWindowController.m */ /* "Error!" = "Error!"; */ "You must have at least one transport agent defined.\nSee Preferences -> Sending." = "You must have at least one transport agent defined.\nSee Preferences -> Sending."; /* "OK" = "OK"; */ /* "Stop" = "Stop"; */ "Starting the thread for sending the E-Mail..." = "Starting the thread for sending the E-Mail..."; "(no subject)" = "(no subject)"; /* "Closing..." = "Closing..."; */ /* "A mail is currently being sent. Please wait." = "A mail is currently being sent. Please wait."; */ "Would you like to save this message in the Drafts folder?" = "Would you like to save this message in the Drafts folder?"; /* "Cancel" = "Cancel"; */ /* "Yes" = "Yes"; */ /* "No" = "No"; */ "An error occured while attempting to obtain the message store for the Drafts folder." = "An error occured while attempting to obtain the message store for the Drafts folder."; "Remove Cc" = "Remove Cc"; /* "Add Cc" = "Add Cc"; */ "Remove Bcc" = "Remove Bcc"; /* "Add Bcc" = "Add Bcc"; */ /* "An error occured during the authentication with the SMTP server (%@)." = "An error occured during the authentication with the SMTP server (%@)."; */ /* "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences." = "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences."; */ /* "Send" = "Send"; */ "An error occured while attempting to obtain the message store for the Outbox folder.\nThe message nonetheless successfully sent." = "An error occured while attempting to obtain the message store for the Outbox folder.\nThe message nonetheless successfully sent."; "You must define a recipient in the field \"To\"." = "You must define a recipient in the field \"To\"."; /* "Automatic" = "Automatic"; */ "Manual stop of sending thread." = "Manual stop of sending thread."; "Exiting the thread used to send the E-Mail..." = "Exiting the thread used to send the E-Mail..."; "An error occured while decoding %@. Please fix this address." = "An error occured while decoding %@. Please fix this address."; "%0.1fKB (%d characters)" = "%0.1fKB (%d characters)"; /** EditWindowToolbar.m */ /** ExtendedAttachmentCell.m */ "%@ (%d bytes)" = "%@ (%d bytes)"; "%@ (%d KB)" = "%@ (%d KB)"; /** ExtendedCell.m */ /** ExtendedOutlineView.m */ /** ExtendedTableView.m */ /** ExtendedWindow.m */ /** Filter.m */ /** FilterManager.m */ /** FindWindow.m */ "Find:" = "Find:"; "Replace with:" = "Replace with:"; "Find Scope" = "Find Scope"; "Summaries" = "Summaries"; /* "Messages" = "Messages"; */ "Find Options" = "Find Options"; "Ignore Case" = "Ignore Case"; "Regular Expression" = "Regular Expression"; "Find All" = "Find All"; "Replace" = "Replace"; "Replace & Find" = "Replace & Find"; "Previous" = "Previous"; "Next" = "Next"; /** FindWindowController.m */ "Find" = "Find"; "Searching..." = "Searching..."; "Done searching. %d results found." = "Done searching. %d results found."; /** FolderNode.m */ /** FolderNodePopUpItem.m */ /** GNUMail.m */ /* "Error!" = "Error!"; */ "An error occured while attempting to obtain the message store for target filter." = "An error occured while attempting to obtain the message store for target filter."; /* "OK" = "OK"; */ /* "You must have at least one transport agent defined.\nSee Preferences -> Sending." = "You must have at least one transport agent defined.\nSee Preferences -> Sending."; */ "Your Software is up-to-date" = "Your Software is up-to-date"; "You have the most recent version of GNUMail." = "You have the most recent version of GNUMail."; "A New Version is Available" = "A New Version is Available"; "A new version of GNUMail is available (version %@). Would you like to download the new version now?" = "A new version of GNUMail is available (version %@). Would you like to download the new version now?"; /* "Cancel" = "Cancel"; */ "Feature not implemented!" = "Feature not implemented!"; "Sorry, this feature is only available under Mac OS X." = "Sorry, this feature is only available under Mac OS X."; "Compact..." = "Compact..."; "Compacting a mailbox will permanently remove deleted messages.\nDo you want to continue?" = "Compacting a mailbox will permanently remove deleted messages.\nDo you want to continue?"; /* "No" = "No"; */ /* "Yes" = "Yes"; */ "Compacting mailbox, please wait..." = "Compacting mailbox, please wait..."; "Done compacting mailbox %@." = "Done compacting mailbox %@."; "New message..." = "New message..."; "Undelete" = "Undelete"; /* "Delete" = "Delete"; */ "Mark as Unread" = "Mark as Unread"; "Mark as Read" = "Mark as Read"; "Mailbox error!" = "Mailbox error!"; "You must select a valid mailbox to open!" = "You must select a valid mailbox to open!"; "Local" = "Local"; "Information" = "Information"; "Use the same directory (%@) to save all other attachments? (override the files with the same name)." = "Use the same directory (%@) to save all other attachments? (override the files with the same name)."; "Show Filtered Headers" = "Show Filtered Headers"; "Show All Headers" = "Show All Headers"; "Hide Status Bar" = "Hide Status Bar"; "Show Status Bar" = "Show Status Bar"; "Show Normal Display" = "Show Normal Display"; "Show RAW Source" = "Show RAW Source"; "Info" = "Info"; "Mailbox" = "Mailbox"; /* "Message" = "Message"; */ /* "Compose" = "Compose"; */ /* "Edit" = "Edit"; */ "Windows" = "Windows"; "Print" = "Print"; "Services" = "Services"; "Hide" = "Hide"; "Quit" = "Quit"; "Info Panel..." = "Info Panel..."; "Check For Updates" = "Check For Updates"; "Preferences..." = "Preferences..."; "Help..." = "Help..."; "Mailboxes..." = "Mailboxes..."; "Get New Mail" = "Get New Mail"; "Sorting" = "Sorting"; "Sort by Date" = "Sort by Date"; "Sort by Name" = "Sort by Name"; "Sort by Number" = "Sort by Number"; "Sort by Size" = "Sort by Size"; "Sort by Subject" = "Sort by Subject"; "Hide Deleted" = "Hide Deleted"; "Hide Read" = "Hide Read"; "Compact" = "Compact"; "Select All Messages" = "Select All Messages"; "Send to Address Book" = "Send to Address Book"; "Save Attachment" = "Save Attachment"; "Save Text from Message" = "Save Text from Message"; "Text Encodings" = "Text Encodings"; "Bounce..." = "Bounce..."; "Apply Manual Filters" = "Apply Manual Filters"; "New" = "New"; "Reply" = "Reply"; "Reply All" = "Reply All"; "Forward" = "Forward"; "Addresses..." = "Addresses..."; "Drafts" = "Drafts"; "Save in Drafts" = "Save in Drafts"; "Restore Draft" = "Restore Draft"; "Cut" = "Cut"; "Copy" = "Copy"; "Paste" = "Paste"; "Undo" = "Undo"; /* "Find" = "Find"; */ "Spelling..." = "Spelling..."; "Check Spelling" = "Check Spelling"; "Select All" = "Select All"; "Find Panel..." = "Find Panel..."; "Find Next" = "Find Next"; "Find Previous" = "Find Previous"; "Enter Selection" = "Enter Selection"; "Console" = "Console"; "Arrange" = "Arrange"; "Miniaturize" = "Miniaturize"; /* "Close" = "Close"; */ "Setup Printer" = "Setup Printer"; "Important!" = "Important!"; "No configuration found for GNUMail.app" = "No configuration found for GNUMail.app"; "Configure" = "Configure"; "Loaded bundle at path %@" = "Loaded bundle at path %@"; "Failed to initialize bundle at path %@" = "Failed to initialize bundle at path %@"; "Error loading bundle at path %@" = "Error loading bundle at path %@"; "All" = "All"; "Show Deleted" = "Show Deleted"; "Show Read" = "Show Read"; "Default" = "Default"; /** GNUMailConstants.m */ /** Group.m */ /** LabelWidget.m */ /** LocalMailDelivery.m */ /** MailHeaderCell.m */ /** MailWindow.m */ /* "Delete" = "Delete"; */ "Get" = "Get"; /* "Mailboxes" = "Mailboxes"; */ /* "Compose" = "Compose"; */ /* "Reply" = "Reply"; */ /* "Forward" = "Forward"; */ /* "Addresses" = "Addresses"; */ /* "Find" = "Find"; */ /* "Status" = "Status"; */ /* "Id" = "Id"; */ /* "Date" = "Date"; */ /* "From" = "From"; */ /* "Subject" = "Subject"; */ /* "Size" = "Size"; */ /** MailWindowController.m */ /* "New message..." = "New message..."; */ "Local - %@" = "Local - %@"; "IMAP on %@ - %@" = "IMAP on %@ - %@"; "No Messages!" = "No Messages!"; "There are no messages in this Mailbox!" = "There are no messages in this Mailbox!"; /* "OK" = "OK"; */ "< unknown >" = "< unknown >"; /* "Closing..." = "Closing..."; */ "GNUMail.app is currently receiving E-Mails. Please wait." = "GNUMail.app is currently receiving E-Mails. Please wait."; "Would you like to close the connection with the IMAP server?" = "Would you like to close the connection with the IMAP server?"; /* "Cancel" = "Cancel"; */ /* "Yes" = "Yes"; */ /* "No" = "No"; */ "Closed local folder %@." = "Closed local folder %@."; "Closed IMAP folder %@ on %@." = "Closed IMAP folder %@ on %@."; "Closing IMAP connection on %@." = "Closing IMAP connection on %@."; /* "Stop" = "Stop"; */ "Starting the fetching thread for %@.." = "Starting the fetching thread for %@.."; /* "Error!" = "Error!"; */ "Unable to communicate with the POP3 server (%@)." = "Unable to communicate with the POP3 server (%@)."; "Invalid password %@ @ %@." = "Invalid password %@ @ %@."; "An error occured while obtaining the IMAP Store to save the received message.\n%@" = "An error occured while obtaining the IMAP Store to save the received message.\n%@"; "The received message was saved in your local Inbox folder." = "The received message was saved in your local Inbox folder."; "No New Messages..." = "No New Messages..."; "There are no new messages on %@ @ %@." = "There are no new messages on %@ @ %@."; /* "Get" = "Get"; */ "Filtered messages..." = "Filtered messages..."; "%d messages have been transfered to the following folders:\n%@" = "%d messages have been transfered to the following folders:\n%@"; "%d messages (%dKB) - %d unread (%dKB) - %d selected (%0.1fKB) - %d deleted" = "%d messages (%dKB) - %d unread (%dKB) - %d selected (%0.1fKB) - %d deleted"; "IMAP %@ @ %@ - %@" = "IMAP %@ @ %@ - %@"; "No new messages on server %@" = "No new messages on server %@"; "Got a %@ while estabilishing (or closing) the POP3 connection to server %@." = "Got a %@ while estabilishing (or closing) the POP3 connection to server %@."; "Exiting the fetching thread for %@..." = "Exiting the fetching thread for %@..."; "Got a %@ while transferring mails from %@." = "Got a %@ while transferring mails from %@."; /** MailWindowToolbar.m */ /** MailboxManager.m */ "Open this folder on startup" = "Open this folder on startup"; /* "Mailbox" = "Mailbox"; */ /* "Size" = "Size"; */ /* "Messages" = "Messages"; */ /* "Close" = "Close"; */ /** MailboxManagerCache.m */ /** MailboxManagerController.m */ /* "Mailboxes" = "Mailboxes"; */ /* "Mailbox" = "Mailbox"; */ "All Mailboxes" = "All Mailboxes"; /* "Size" = "Size"; */ "%d KB" = "%d KB"; /* "Messages" = "Messages"; */ "%d (%d unread)" = "%d (%d unread)"; /* "Local" = "Local"; */ /* "Closing..." = "Closing..."; */ "Would you like to close the connection with this IMAP server?" = "Would you like to close the connection with this IMAP server?"; /* "No" = "No"; */ /* "Yes" = "Yes"; */ /* "Closing IMAP connection on %@." = "Closing IMAP connection on %@."; */ "Transfer error!" = "Transfer error!"; "You cannot transfer a message inside the same mailbox!" = "You cannot transfer a message inside the same mailbox!"; /* "OK" = "OK"; */ /* "Mailbox error!" = "Mailbox error!"; */ /* "You must select a valid mailbox to open!" = "You must select a valid mailbox to open!"; */ "You must select a valid mailbox\nto transfer this E-Mail to!" = "You must select a valid mailbox\nto transfer this E-Mail to!"; "You cannot transfer E-Mails to this folder!" = "You cannot transfer E-Mails to this folder!"; "You must select a valid root where to create this new mailbox." = "You must select a valid root where to create this new mailbox."; "Please select the mailbox you would like to delete." = "Please select the mailbox you would like to delete."; /* "Delete..." = "Delete..."; */ "Are you sure you want to delete this mailbox?" = "Are you sure you want to delete this mailbox?"; /* "Cancel" = "Cancel"; */ "Error while deleting!" = "Error while deleting!"; "You can't delete an opened mailbox! Close it first." = "You can't delete an opened mailbox! Close it first."; /* "Error!" = "Error!"; */ "The mailbox delete operation failed." = "The mailbox delete operation failed."; "You must select a valid mailbox to rename!" = "You must select a valid mailbox to rename!"; "You can't rename an opened mailbox! Close it first." = "You can't rename an opened mailbox! Close it first."; "Edit Mailbox" = "Edit Mailbox"; "Please enter the new name of the Mailbox:" = "Please enter the new name of the Mailbox:"; "The local mailbox %@ does not exist!" = "The local mailbox %@ does not exist!"; "This folder (%@) holds folders, not messages!" = "This folder (%@) holds folders, not messages!"; "Local folder %@ opened." = "Local folder %@ opened."; "A folder (%@) is already open. Please close it first." = "A folder (%@) is already open. Please close it first."; "Opening IMAP folder %@ on %@..." = "Opening IMAP folder %@ on %@..."; "IMAP folder %@ on %@ opened." = "IMAP folder %@ on %@ opened."; "Connecting to IMAP server %@ using SSL" = "Connecting to IMAP server %@ using SSL"; "Connecting to IMAP server %@" = "Connecting to IMAP server %@"; "Unable to communicate with the IMAP server (%@:%i)." = "Unable to communicate with the IMAP server (%@:%i)."; "Authenticating using %@..." = "Authenticating using %@..."; "Connected to %@!" = "Connected to %@!"; /* "Invalid password %@ @ %@." = "Invalid password %@ @ %@."; */ "A fatal error occured when appending the message to the %@ folder." = "A fatal error occured when appending the message to the %@ folder."; /** MailboxManagerToolbar.m */ /** MessageViewWindow.m */ /* "Delete" = "Delete"; */ /* "Reply" = "Reply"; */ /* "Forward" = "Forward"; */ /* "Show All Headers" = "Show All Headers"; */ /** MessageViewWindowController.m */ /** MessageViewWindowToolbar.m */ /** MimeType.m */ /** MimeTypeManager.m */ /** NSRegEx.m */ /** NSStringExtensions.m */ /** NSUserDefaultsExtensions.m */ /** NewMailboxPanel.m */ "Please enter the name of the new Mailbox:" = "Please enter the name of the new Mailbox:"; /* "Cancel" = "Cancel"; */ /* "OK" = "OK"; */ /** NewMailboxPanelController.m */ "New Mailbox" = "New Mailbox"; /* "Local" = "Local"; */ /* "Error!" = "Error!"; */ "The mailbox rename operation failed." = "The mailbox rename operation failed."; /* "OK" = "OK"; */ "The mailbox create operation failed." = "The mailbox create operation failed."; /** PasswordPanel.m */ "Please enter your password:" = "Please enter your password:"; /* "Cancel" = "Cancel"; */ /* "OK" = "OK"; */ /** PasswordPanelController.m */ /** PreferencesWindow.m */ "Apply" = "Apply"; /* "Cancel" = "Cancel"; */ /* "OK" = "OK"; */ /** PreferencesWindowController.m */ "Preferences Panel" = "Preferences Panel"; "Loading preferences bundle at path %@." = "Loading preferences bundle at path %@."; /** TextEnrichedConsumer.m */ /** Utilities.m */ /* "Error!" = "Error!"; */ "A part of this E-Mail can't be represented. Please report this as a bug." = "A part of this E-Mail can't be represented. Please report this as a bug."; /* "OK" = "OK"; */ "No text/plain part found. Please report this bug since GNUMail.app doesn't support this other kind of parts." = "No text/plain part found. Please report this bug since GNUMail.app doesn't support this other kind of parts."; "Local Mailboxes" = "Local Mailboxes"; "Reply..." = "Reply..."; "Would you like to reply to all recipients?" = "Would you like to reply to all recipients?"; /* "No" = "No"; */ /* "Yes" = "Yes"; */ "Reply to a message..." = "Reply to a message..."; "Forward a message..." = "Forward a message..."; "Save all" = "Save all"; "The external program (%@) for opening this MIME-Type (%@) can't be found." = "The external program (%@) for opening this MIME-Type (%@) can't be found."; GNUMail/Resources/English.lproj/AddressBookPanel.nib/0040755000014600001460000000000010424672357023221 5ustar monotonemonotoneGNUMail/Resources/English.lproj/AddressBookPanel.nib/classes.nib0100644000014600001460000000127510424672357025352 0ustar monotonemonotone{ IBClasses = ( { ACTIONS = { bccClicked = id; ccClicked = id; doubleClicked = id; openClicked = id; selectionInBrowserHasChanged = id; toClicked = id; }; CLASS = AddressBookController; LANGUAGE = ObjC; OUTLETS = {browser = NSBrowser; open = NSButton; tableView = NSTableView; }; SUPERCLASS = NSWindowController; }, {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, {CLASS = StripeTableView; LANGUAGE = ObjC; SUPERCLASS = NSTableView; } ); IBVersion = 1; }GNUMail/Resources/English.lproj/AddressBookPanel.nib/info.nib0100644000014600001460000000060110424672357024640 0ustar monotonemonotone IBDocumentLocation 268 121 356 240 0 0 1280 1002 IBFramework Version 291.0 IBSystem Version 6R73 GNUMail/Resources/English.lproj/AddressBookPanel.nib/keyedobjects.nib0100644000014600001460000001677610424672357026404 0ustar monotonemonotonebplist00nY$archiverX$versionX$objectsT$top_NSKeyedArchiver (,-348<KRjklmqu|4567:=>ADEHLZbcflouvwy}   "$&(5675k89:;<=?Ae\]^_`aebcdefghijkU$null  !"#$%&']NSFontManagerV$classYNSNextOid_NSVisibleWindowsVNSRoot\NSOidsValues_NSClassesValues]NSConnections]NSNamesValues]NSObjectsKeysZNSOidsKeys]NSClassesKeys[NSFramework[NSNamesKeys_NSObjectsValues )*+[NSClassName_AddressBookController./01Z$classnameX$classes^NSCustomObject02XNSObject_IBCocoaFramework 567ZNS.objects./9:\NSMutableSet9;2UNSSet 5=>T?@ABCDEFGHIJ LMNOPQWNSLabel]NSDestinationXNSSource S TUVWXYZ[\]^_`abcdefghi\NSWindowViewYNSWTFlags]NSWindowTitleYNSMinSizeYNSMaxSize\NSWindowRect_NSWindowStyleMask_NSWindowBacking\NSScreenRect]NSWindowClass[NSViewClasspx   _{{330, 455}, {437, 294}}UPanelWNSPanel nopYNS.stringTView./rs_NSMutableStringrt2XNSString vwxyz{_NSNextResponderZNSSubviewsWNSFrame~} 5=}~!kqw vx^^VNSCellXNSvFlagsYNSEnabled[NSSuperview   _{{11, 246}, {36, 37}} ~_NSKeyEquivalentYNSSupport_NSAlternateContents]NSControlView\NSCellFlags2_NSPeriodicDelay^NSButtonFlags2]NSButtonFlags[NSCellFlags]NSNormalImage_NSPeriodicIntervalZNSContentsD@P VNSSizeVNSNameXNSfFlags"AP\LucidaGrande./VNSFont2 )^NSResourceNameWNSImage_AddressBook_32.tiff./_NSCustomResource2_%NSCustomResource no./\NSButtonCell2]%NSButtonCell\NSActionCell./XNSButton2YNSControlVNSView[NSResponder vwx^^\NSIsVerticalj"i 5=ҢԀ#- v_NSMinColumnWidth_NSCellPrototype_NSNumberOfVisibleColumnsYNSBrFlags_NSPathSeparator_NSFirstColumnTitle[NSFrameSize_NSMaxNumberOfVisibleColumns,%@*+$Z{140, 231} )'@& no[BrowserItem "A (./]NSBrowserCell2 noQ/VGroups./YNSBrowser2 vwx     ]NSContentView[NSVScrollerXNSsFlags]NSNextKeyView\NSCornerView\NSScrollAmts[NSHScroller_NSHeaderClipViewh./^g9OA A AAb6 5=  vwxYNScvFlagsYNSBGColorYNSDocView]0 1ZY 5= v) !"#$%&'()*+,-./ 0123_NSBackgroundColorYNSTvFlags_NSIntercellSpacingHeight_NSOriginalClassName\NSHeaderView[NSGridColor^NSTableColumns_NSIntercellSpacingWidth[NSRowHeightXJ2Z@"@354U<"@@"A`_StripeTableView[NSTableViewZ{250, 213} v58 987 vwx;.<.efY{250, 17}./?@_NSTableHeaderView?2 vxB CԀ;:_{{251, 0}, {16, 17}}./FG]_NSCornerViewF2 5=IJK=O MNO5PQRSTUVWXY\NSIsEditableZNSDataCellWNSWidthZNSMinWidthZNSMaxWidth^NSIsResizeable\NSHeaderCellNH"B"B "Dz> [\]^_`a[NSTextColorGA@C?[Person Name de"A0 ghijkWNSWhite\NSColorSpaceBI0.333333./mnWNSColorm2 mpqhirst]NSCatalogName[NSColorNameFDEVSystem_headerTextColor ghixkB0./z{_NSTableHeaderCellz|2_NSTextFieldCell [~)^MK1@IQ9 ghikB1 mpqhirsL_controlTextColor./||2./]NSTableColumn2 MNO5PQRSTXR"C>"BP [\]^_`QUEmail [~)^S\Redwood City./^NSMutableArray2WNSArray mpqhisWVYgridColor ghikD0.5./^NSClassSwapper2_{{1, 17}, {250, 213}} mpqhis\[_controlBackgroundColor ghikI0.666667./ZNSClipView2 vx XNSActionXNSTargetYNSPercenta`_"?yC^_{{251, 17}, {15, 213}}\_doScroller:./ZNSScroller2 vx dc"?}_{{-100, -100}, {250, 15}} 5=¡._{{1, 0}, {250, 17}}_{{149, 0}, {267, 231}}./\NSScrollView2_{{11, 7}, {416, 231}}./[NSSplitView2 vx^^m l_{{391, 246}, {36, 37}} pn )Հo_Address_bcc.tiff no vx^^sr_{{345, 246}, {36, 37}} vt )u_Address_cc.tiff no vx^^yx_{{299, 246}, {36, 37}} |z ){_Address_to.tiff no_{{1, 1}, {437, 294}}./2_{{0, 0}, {1280, 1002}}Z{213, 129}_{3.40282e+38, 3.40282e+38}./_NSWindowTemplate2Xdelegate./_NSNibOutletConnector2^NSNibConnector LMNOӀ LMNO LMNOZdataSource LMNOWbrowser LMNOYtableView LMNO QVwindow LMN ~\openClicked:./_NSNibControlConnector2 LMNO~Topen LMN ZtoClicked: LMN ZccClicked: LMN [bccClicked: 5 !QJ~K^./#2 5 %^^^^^Q 5 'QJ~K 5 )*+,-./01234ZNSButton11ZNSBrowser1\File's OwnerZNSButton12^NSTableColumn1YNSButton1]NSScrollView1 5  5 >* 5 @J@FEIGQAKDCBH~?^J 5 BCDEFGHIJKLMNOPQRSTUVWXYZ[€ÀĀŀƀǀ  ./lm^NSIBObjectDatal2op]IB.objectdata#,5:LQ-;BL_fs  %')AJU^mr{+468:kx   4:BKUW\ew~$&(*,-Ez%02468=?AFKMOQRcjqz| '0=HVclu  & 8 S ] o      $ 2 9 B D K T ^ i         0 2 4 = H q {  & < I U d ~   ! + 4 H Q f h j *,.38=?\hjlnpuw/<?H\gy 46;@B_ag (=?AZgqz@BDIenq1fhjwy)2OQSl7@SXaj $&->@BOXpw%>G^g~<Ez|~qGNUMail/Resources/English.lproj/MailboxInspectorPanel.nib/0040755000014600001460000000000010424672357024303 5ustar monotonemonotoneGNUMail/Resources/English.lproj/MailboxInspectorPanel.nib/classes.nib0100644000014600001460000000100510424672357026423 0ustar monotonemonotone{ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, { ACTIONS = {selectionHasChanged = id; }; CLASS = MailboxInspectorPanelController; LANGUAGE = ObjC; OUTLETS = { box = NSBox; subject = NSTextField; textView = NSTextView; threadArcsView = id; }; SUPERCLASS = NSWindowController; } ); IBVersion = 1; }GNUMail/Resources/English.lproj/MailboxInspectorPanel.nib/info.nib0100644000014600001460000000111410424672357025722 0ustar monotonemonotone IBDocumentLocation 104 101 356 240 0 0 1024 746 IBEditorPositions 16 610 332 253 251 0 0 1024 746 IBFramework Version 291.0 IBOpenObjects 5 16 IBSystem Version 6R73 GNUMail/Resources/English.lproj/MailboxInspectorPanel.nib/keyedobjects.nib0100644000014600001460000001642110424672357027451 0ustar monotonemonotonebplist00fY$archiverX$versionX$objectsT$top_NSKeyedArchiver (,-348<ELdhjlmquvw "$+-689;<?BCDGHJLWY[\]cd^ijnps|}~}p   "$3n456 789:;= TUVWXYZ[\]^_``abcU$null  !"#$%&']NSFontManagerV$classYNSNextOid_NSVisibleWindowsVNSRoot\NSOidsValues_NSClassesValues]NSConnections]NSNamesValues]NSObjectsKeysZNSOidsKeys]NSClassesKeys[NSFramework[NSNamesKeys_NSObjectsValues )*+[NSClassName_MailboxInspectorPanelController./01Z$classnameX$classes^NSCustomObject02XNSObject_IBCocoaFramework 567ZNS.objects./9:\NSMutableSet9;2UNSSet 5=>?@ABCD /Jg FGHIJKWNSLabel]NSDestinationXNSSource MN OPQRSTUVWXYZ[\]^_`abc^Z]NSTransparent_NSNextResponderZNSSubviewsYNSOffsets_NSTitlePosition\NSBorderTypeXNSvFlags]NSContentView[NSTitleCellWNSFrameYNSBoxType[NSSuperview    NOVefgm 5=ia NVXeKkK_{{2, 2}, {260, 427}}./noVNSViewnp2[NSResponder./rs^NSMutableArrayrt2WNSArray_{{0, -7}, {264, 431}}V{0, 0} xyz{|}^~YNSSupport\NSCellFlags2[NSCellFlagsZNSContents YNS.stringSBox./_NSMutableString2XNSString VNSSizeVNSNameXNSfFlags"AP\LucidaGrande./VNSFont2./VNSCell2./UNSBoxnp2Sbox./_NSNibOutletConnector2^NSNibConnector FGHI. NSVXYNSEnabled-! NO)[NSExtension[NSFrameSizeeKdcb_{{20, 178}, {193, 14}} xyz{~_NSBackgroundColor]NSControlView[NSTextColor,$#@)"_Label Font Text "A  WNSColor]NSCatalogName[NSColorName\NSColorSpace('%&VSystem\controlColor _WNSWhiteI0.666667./Ѣ2 ʀ+*_controlTextColor _B0./_NSTextFieldCell2\NSActionCell./[NSTextFieldnp2\%NSTextFieldYNSControlWsubject FGHII0 NSVXYNSTVFlagsZNSDelegateYNSMaxSizeXNSMinize_NSTextContainer\NSSharedDataH1F2G3; NOSVXXNSCursorYNScvFlags]NSNextKeyViewYNSBGColorXNSBoundsYNSDocViewXLNQ ? 7ʀA_selectedTextBackgroundColor :ʀC_selectedTextColor./=>\NSDictionary=2./@A_NSTextViewSharedData@2\{191, 1e+07}X{64, 37}./EFnp2VNSTextXtextView FGHIIf 5=K NOTMNSVXOPQRSTUV[NSVScrollerXNSsFlags[NSHScrolleraMY`] 5=XRV 5=Z_{{1, 1}, {191, 148}}_{{0, 24}, {191, 148}} ^_`abWNSImageYNSHotSpotWSRW{4, -5} )efgh^NSResourceNameVTU]NSIBeamCursor./kl_NSCustomResourcekm2_%NSCustomResource./o2./qrZNSClipViewqnp2 NtSuvVXwxyz{XNSActionXNSTargetZNSCurValue\["?Z_{{-100, -100}, {15, 167}}\_doScroller:./ZNSScrollernp2 NtNSuvVXw yzYNSPercent_^"?rC_{{-100, -100}, {87, 18}}_{{20, 20}, {193, 150}}./\NSScrollViewnp2Z{233, 209} n./\NSCustomViewnp2^threadArcsView FGHIh ZS\NSWindowViewYNSWTFlags]NSWindowTitleYNSMinSize\NSWindowRect_NSWindowStyleMask_NSWindowBacking\NSScreenRect]NSWindowClass[NSViewClasspxji kl_{{340, 184}, {264, 475}}UPanelWNSPanel TView 5=Kn NSVXZZpo_{{17, 436}, {230, 26}} xyz_} } _NSPreferredEdge_NSKeyEquivalent_NSAlternateContents_NSPeriodicDelayZNSMenuItem_NSArrowPosition_NSUsesItemFromMenu_NSAlternateImage]NSButtonFlags]NSAltersState_NSPeriodicIntervalVNSMenu^NSButtonFlags2rqs@AKt  ut ]NSMnemonicLoc\NSMixedImage_NSKeyEquivModMaskWNSStateWNSTitleZNSKeyEquivYNSOnImage{xuzv [NSMenuItems}|_General Information )efgw_NSMenuCheckmark )efgy_NSMenuMixedState__popUpItemAction:./2 ZOtherViews 5=~ ut݀_Access Control List ut݀UQuota ut݀[Thread Arcs./2./_NSPopUpButtonCell2^NSMenuItemCell\NSButtonCell]%NSButtonCell./  ]NSPopUpButton  np2XNSButton_{{1, 1}, {264, 475}}_{{0, 0}, {1024, 746}}Z{213, 129}_{3.40282e+38, 3.40282e+38}./_NSWindowTemplate2Vwindow FGH_selectionHasChanged:./_NSNibControlConnector2 5aZK./tt2 5!KZZ 5#aK 5%&'()*+,-./012]NSScrollView2[NSMenuItem1YPopUpList\File's Owner]NSTextField11[NSMenuItem2 57 57 5<BCDaA@ZK? 5>?@ABCDEFGHIJKLMNOPQRS   ./de^NSIBObjectDatad2gh]IB.objectdata#,5:LQ%,6IP]o}5>IRafoKYkv  )+BKRYen} -4=NU\eglnp}  +579;=?@Yeqsuwy{19GS`bdfhjq~   ! - : G Q Y j l n $ - 7 E O X b d f h j m o q s u     ! . 0 2 ; < E N j       ! # % * , . C E c x z    $ ) V b k w y { }    .7JQens|$MWY[`{ ;HR`jw  "?ACE^':HVkr '138:?ACER^`bdz  468Nwy{'5BKbz')FOT]z '09Box iGNUMail/Resources/French.lproj/0040755000014600001460000000000010424672357017106 5ustar monotonemonotoneGNUMail/Resources/French.lproj/Localizable.strings0100644000014600001460000021657410562042235022743 0ustar monotonemonotone /** Clock.m */ /** ClockController.m */ /** ComposeView.m */ "When replying to an E-Mail, add the signature to the" = "Lors d'une rponse un courriel, ajouter la signature"; "beginning" = "au dbut"; "end" = " la fin"; "of the message." = "du message."; "When forwarding an E-Mail, add the signature to the" = "Lors d'un renvoi d'un courriel, ajouter la signature"; "Wrap lines at" = "Retour automatique "; "characters when sending plain/text messages." = "caractres lors de l'envoi de messages plain/text."; "Default charset used when sending a message:" = "Jeu de charactres utilis par dfaut lors de l'envoie d'un message:"; "Automatic" = "Automatique"; /** ComposeViewController.m */ "Compose" = "Composer"; /* "Automatic" = "Automatique"; */ /** Face.m */ /** FaceController.m */ /** ExtendedFilteringTableView.m */ /** ExtendedTableColumn.m */ /** FilterEditorWindow.m */ "Description:" = "Description:"; "Active" = "Active"; "Filter type:" = "Type de filtre:"; "Incoming" = "Rception"; "Outgoing" = "Envoie"; "External Program" = "Programme externe"; "Process with external program:" = "Traiter avec programme externe:"; "and apply criteria(s)" = "appliquer le(s) critre(s)"; "after" = "aprs"; "before" = "avant"; "program execution." = "l'xcution du programme."; "Criteria" = "Critre"; "To" = "To"; "Cc" = "Cc"; "To or Cc" = "To ou Cc"; "Subject" = "Objet"; "From" = "De"; "Expert..." = "Expert..."; "Contains" = "Contient"; "Is Equal" = "Est identique"; "Has Prefix" = "A le prfixe"; "Has Suffix" = "A le suffixe"; "Match Expression" = "Faire concorder avec l'expression"; "and" = "et"; "or" = "ou"; "(none)" = "(aucun)"; "Action" = "Action"; "Set the color to:" = "Dfinir la couleur :"; "Transfer to mailbox:" = "Transfrer la bote aux lettres:"; "Do..." = "Faire..."; "Delete the message" = "Supprimer le message"; "Blue" = "Bleu"; "Brown" = "Brun"; "Cyan" = "Cyan"; "Dark Gray" = "Gris fonc"; "Green" = "Vert"; "Magenta" = "Magenta"; "Orange" = "Orange"; "Purple" = "Violet"; "Red" = "Rouge"; "White" = "Blanc"; "Yellow" = "Jaune"; "Bounce to:" = "Rediriger vers:"; "Forward to:" = "Transfrer :"; "Reply to:" = "Rpondre :"; "Set message" = "Dfinir le message"; "Cancel" = "Annuler"; "OK" = "Ok"; /** FilterEditorWindowController.m */ "Add a filter" = "Ajouter un filtre"; "Error!" = "Erreur!"; "The selected target folder (%@) holds folders, not messages." = "La bote aux lettres slectionne (%@) contient des botes et non pas des messages."; /* "OK" = "Ok"; */ "Warning!" = "Warning!"; "Defining a Coloring filter that uses an external program is a BAD idea.\nThis will slow down drastically the application." = "Dfinir un filtre de coloration est une mauvaise ide.\nCeci va grandement rduire la performance de l'application."; /* "To" = "To"; */ /* "Cc" = "Cc"; */ /* "To or Cc" = "To ou Cc"; */ /* "From" = "De"; */ "Is in Address Book" = "Est dans le carnet d'adresse"; /** FilterHeaderEditorWindow.m */ "Header" = "En-tte"; "Header:" = "En-tte:"; "Remove" = "Supprimer"; "Add" = "Ajouter"; /* "Cancel" = "Annuler"; */ /* "OK" = "Ok"; */ /** FilterHeaderEditorWindowController.m */ "Add a header" = "Ajouter une en-tte"; /** FilterMessageWindow.m */ "Text to include before original message:" = "Texte insrer avant le message original:"; /* "Cancel" = "Annuler"; */ /* "OK" = "Ok"; */ /** FilterMessageWindowController.m */ /** FilteringView.m */ "Rules" = "Rgles"; /* "Active" = "Active"; */ "Add..." = "Ajouter..."; "Delete" = "Supprimer"; "Edit..." = "diter..."; "Duplicate" = "Dupliquer"; /** FilteringViewController.m */ "Yes" = "Oui"; "No" = "Non"; "Delete..." = "Supprimer..."; "Are you sure you want to delete this filter?" = "tes-vous certain de vouloir supprimer ce filtre?"; /* "Cancel" = "Annuler"; */ "Edit a filter" = "diter un filtre"; "Filtering" = "Filtrage"; /** FontsView.m */ "Font used when displaying a message for:" = "Fontes utilise lors de l'affiche d'un message pour:"; "Header name:" = "Nom en-tte:"; "Size:" = "Taille:"; "Header value:" = "Valeur en-tte:"; "Content of message:" = "Contenu du message:"; "Use fixed-width font for plain text messages" = "Utilisez une fonte fixe pour les messages textes"; "Plain text font:" = "Fonte messages textes:"; /** FontsViewController.m */ "Fonts" = "Fontes"; /** MIMEView.m */ "Mime-Type" = "Type MIME"; "File extension(s)" = "Extension(s) de fichier"; /* "Add..." = "Ajouter..."; */ /* "Delete" = "Supprimer"; */ /* "Edit..." = "diter..."; */ "Import from mailcap" = "Importer du fichier \"mailcap\""; /** MIMEViewController.m */ /* "Delete..." = "Supprimer..."; */ "Are you sure you want to delete this Mime-Type entry?" = "tes-vous sr de vouloir supprimer ce type MIME?"; /* "Cancel" = "Annuler"; */ /* "Yes" = "Oui"; */ "MIME" = "MIME"; /** MailcapParser.m */ /** MailcapWindow.m */ /* "Mime-Type" = "Type MIME"; */ "Command" = "Commande"; /* "Cancel" = "Annuler"; */ "Import" = "Importer"; /** MailcapWindowController.m */ "Import from mailcap file" = "Importer du fichier mailcap"; "Mailcap Import Error!" = "Une erreur est survenue lors de l'importation du fichier mailcap!"; "You must select at least one mailcap item to import!" = "Vous devez slectionner un enregistrement importer!"; /* "OK" = "Ok"; */ /** MimeTypeEditorWindow.m */ "Mime-Type (ex: image/jpeg):" = "Type mime (ex: image/jpeg):"; "File extensions (ex: jpeg,jpg,jpe):" = "Extensions de fichier (ex: jpeg,jpg,jpe):"; /* "Description:" = "Description:"; */ "View:" = "Vue:"; "Display if possible (as icon if it is not possible)" = "Afficher si possible (iconifier sinon)"; "Always display as icon" = "Toujours afficher sous forme d'icne"; "Action:" = "Action:"; "Prompt save panel" = "cran de sauvegarde"; "Open with external program:" = "Ouvrir avec le programme externe:"; "Choose" = "Choisir"; "Needs a terminal for the external program" = "Doit utiliser un terminal pour le programme externe"; "Please choose an icon to represent this Mime-Type (tiff file only):" = "Choisissez une icne pour reprsenter ce type MIME (.tiff uniquement) :"; /* "Cancel" = "Annuler"; */ /* "OK" = "Ok"; */ /** MimeTypeEditorWindowController.m */ "Add a Mime-Type" = "Ajouter un type MIME"; "Edit a Mime-Type" = "diter un type MIME"; /** MailboxesView.m */ "Default mailbox used for:" = "Bote par dfaut utilise pour:"; "Inbox:" = "Inbox:"; "Outbox:" = "Outbox:"; "Drafts:" = "Drafts:"; "Trash:" = "Trash:"; "(If you don't see all your IMAP mailboxes, first open the connection to this IMAP server.)" = "(Si vous ne voyez pas toutes les botes, ouvrez une connexion avec votre serveur IMAP.)"; "Compact mailbox when closing (not recommended)" = "Compacter la bote aux lettres lors de la fermetture (non-recommand)"; "Reuse the mail window when selecting a folder" = "Rutiliser la fentre des messages lors de l'ouverture d'une bote"; /** MailboxesViewController.m */ "Mailboxes" = "Botes"; /** PGPController.m */ "Encrypt" = "Encrypter"; "Sign" = "Signer"; "\nThe supplied passphrase was wrong or not given" = "\nLa phrase clef est incorrecte ou n'a pas t fournie"; "\nWrong passphrase (or something else)" = "\nPhrase clef incorrecte (ou autre chose)"; "\nYour key is expired. You must generate a new one\nbefore trying to send again any signed or encrypted messages." = "\nVotre clef est expiree. Vous devez en gnrer une nouvelle\navant de tente d'envoyer des courriers signs ou encrypts."; "Decryption failed due the following reason(s):\n" = "La dcryption a choue pour les raisons suivantes:\n"; /* "Error!" = "Erreur!"; */ /* "OK" = "Ok"; */ "Encryption failed due the following reason(s):\n" = "L'encryption a choue pour les raisons suivantes:\n"; "Passphrase for %@" = "Phrase clef pour %@"; /** PGPView.m */ "GPG/PGP executable path:" = "Chemin du programme GPG/PGP:"; "User E-Mail address:" = "Adresse E-Mail de l'utilisateur:"; "Use FROM E-Mail address for signing" = "Utiliser l'adresse EMail FROM E-Mail pour signer"; /** PGPViewController.m */ "Version: %@" = "Version: %@"; "PGP" = "PGP"; /** NewPersonalProfilePanel.m */ "Please enter the name of the new profile:" = "Entrez le nom du nouveau profil:"; /* "Cancel" = "Annuler"; */ /* "OK" = "Ok"; */ /** NewPersonalProfilePanelController.m */ "New Personal Profile" = "Nouveau profil personnel"; /** PersonalView.m */ "Available personal profiles:" = "Profils personnels disponibles:"; /* "Add" = "Ajouter"; */ /* "Delete" = "Supprimer"; */ "Set this profile as default" = "Dfinir comme profil par dfaut"; "Your name:" = "Votre nom:"; "Your E-Mail address:" = "Votre adresse E-Mail:"; "Reply-to address:" = "Adresse de rponse:"; "Organization:" = "Organisation:"; "Signature" = "Signature"; "Obtain signature from" = "Obtenir la signature de"; "content of file" = "contenu d'un fichier"; "program's output" = "sortie d'un programme"; /* "Choose" = "Choisir"; */ /** PersonalViewController.m */ /* "Error!" = "Erreur!"; */ "This profile name already exists. Please choose another name." = "Ce nom de profile exist dja. Choisissez un autre nom."; /* "OK" = "Ok"; */ "You must have at least one defined personal profile at any time." = "Vous devez avoir au moins un profil personnel dfini en tout temps."; /* "Delete..." = "Supprimer..."; */ "Are you sure you want to delete the %@ personal profile?" = "tes-vous sr de vouloir supprimer le profil personnel %@?"; /* "Cancel" = "Annuler"; */ /* "Yes" = "Oui"; */ "Personal" = "Personnel"; /** IMAPView.m */ "Check for mail every" = "Relever le courrier toutes les"; "minutes" = "minutes"; "Folders" = "Botes"; "Subscribed" = "Souscris"; "List" = "List"; "Subscribe" = "S'inscrire"; "Unsubscribe" = "Annuler l'inscription"; /** IMAPViewController.m */ "All Folders" = "Toutes les botes"; "Y" = "O"; /* "Error!" = "Erreur!"; */ "Authentication error with the IMAP server." = "Erreur d'authentification avec le serveur IMAP."; /* "OK" = "Ok"; */ "An error occured while listing the folders on this IMAP server." = "Une erreur est survenue lors de l'numeration des dossiers sur ce serveur IMAP."; "You are already subscribed to this IMAP folder." = "Vous tes dja inscrit ce dossier IMAP."; "You cannot subscribe to this folder." = "Vous ne pouvez pas vous inscrire ce dossier IMAP."; "An error occured while subscribing to folder:\n%@." = "Une erreur est survenue lors de l'inscription au dossier:\n%@."; "You are already unsubscribed from this IMAP folder." = "Vous tes dja non-inscrit ce dossier IMAP."; "An error occured while unsubscribing to folder:\n%@." = "Une erreur est survenue lors de la dinscription au dossier:\n%@."; /** POP3View.m */ "Leave messages on server for" = "Laisser les messages sur le serveur durant"; "days" = "jours"; "Use APOP (if possible)" = "Utiliser APOP (si possible)"; "Download messages from this server into mailbox:" = "Tlcharger les messages de ce serveur dans cette bote:"; "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)" = "(Si vous ne voyez pas toutes les botes, ouvrez une connexion avec votre serveur IMAP.)"; /** POP3ViewController.m */ /** ReceivingView.m */ "Retrieve mail (for POP3 accounts and local mail spool file)" = "Relever le courrier (pour les comptes POP3 et le fichier local du spooler de courrier)"; "Manually" = "Manuellement"; "Automatically every" = "Automatiquement toutes les"; /* "minutes" = "minutes"; */ "Incoming mail servers" = "Serveurs de courrier entrants"; "Incoming Servers" = "Serveurs entrants"; /* "Add" = "Ajouter"; */ "Edit" = "dition"; /* "Delete" = "Supprimer"; */ "Show alert panel for received and transferred messages" = "Afficher le panneau d'alert pour les messages recus et transferrs"; "Show No New Messages panel" = "Show No New Messages panel"; /** ReceivingViewController.m */ "POP3" = "POP3"; "IMAP" = "IMAP"; "%@ [UNIX]" = "%@ [UNIX]"; /* "Error!" = "Erreur!"; */ "To edit this account, you must first close the connection with the server." = "Pour modifier ce compte, vous devez fermer la connexion avec le serveur."; /* "OK" = "Ok"; */ "To delete this account, you must first close the connection with the server." = "Pour supprimer ce compte, vous devez fermer la connexion avec le serveur."; /* "Delete..." = "Supprimer..."; */ "Are you sure you want to delete this receiving server entry?" = "tes-vous sr de vouloir supprimer ce compte?"; /* "Cancel" = "Annuler"; */ /* "Yes" = "Oui"; */ "Receiving" = "Rception"; /** ReceivingWindow.m */ "Server type:" = "Type du serveur:"; /* "POP3" = "POP3"; */ /* "IMAP" = "IMAP"; */ "UNIX" = "UNIX"; "Server name:" = "Nom du serveur:"; "Port:" = "Port:"; "Username:" = "Code utilisateur:"; "Password:" = "Mot de passe:"; "Remember password" = "Mmoriser le mot de passe"; "Verify for new mail on startup" = "Vrifier pour les nouveaux messages au dmarrage"; "Use secure connection (SSL)" = "Utiliser un connexion scure (SSL)"; "General" = "Gnral"; /* "Cancel" = "Annuler"; */ /* "OK" = "Ok"; */ /** ReceivingWindowController.m */ "Receiving preferences" = "Mthode de rception"; /* "IMAP" = "IMAP"; */ /* "POP3" = "POP3"; */ /* "UNIX" = "UNIX"; */ /** UNIXView.m */ "Mail spool file:" = "Fichier spool de courrier:"; /* "Choose" = "Choisir"; */ "Download messages from this spool file into mailbox:" = "Download messages from this spool file into mailbox:"; /* "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)" = "(Si vous ne voyez pas toutes les botes, ouvrez une connexion avec votre serveur IMAP.)"; */ /** UNIXViewController.m */ /** SendingView.m */ "Delivery methods" = "Mthode d'envoi"; "Method" = "Mthode"; "Value" = "Valeur"; /* "Add" = "Ajouter"; */ /* "Edit" = "dition"; */ /* "Remove" = "Supprimer"; */ "Additional Outgoing Headers" = "En-ttes sortants supplmentaires"; "Key" = "Cl"; "Key:" = "Cl:"; "Value:" = "Valeur:"; /** SendingViewController.m */ "SMTP" = "SMTP"; "Mailer" = "\"Mailer\""; /* "Delete..." = "Supprimer..."; */ "Are you sure you want to delete this transport method?" = "tes-vous sr de vouloir supprimer cet agent de transport?"; /* "Cancel" = "Annuler"; */ /* "Yes" = "Oui"; */ "Sending" = "Envoi"; /** TransportMethodEditorWindow.m */ "Transport method:" = "Mthod d'envoi:"; /* "Mailer" = "\"Mailer\""; */ /* "SMTP" = "SMTP"; */ "Mailer:" = "Mailer:"; "Host:" = "Hte:"; /* "Port:" = "Port:"; */ "Authenticate using" = "Authentification utilisant"; "Most secure" = "Plus scuritaire"; "Supported mechanisms" = "Mchanismes supports"; /* "Username:" = "Code utilisateur:"; */ /* "Password:" = "Mot de passe:"; */ /* "Remember password" = "Mmoriser le mot de passe"; */ "Associated personal profile:" = "Profil personnel associ:"; /* "Cancel" = "Annuler"; */ /* "OK" = "Ok"; */ /** TransportMethodEditorWindowController.m */ "Add a transport method" = "Ajouter une mthode d'envoi"; "Edit a transport method" = "diter une mthode d'envoi"; /** ViewingView.m */ "Messages" = "Messages"; "Hide deleted messages on startup" = "Cacher les messages effacs au dmarrage"; "Hide read messages on startup" = "Cacher les messages lus au dmarrage"; "Highlight URLs in message content" = "Surligner les URLs dans le contenu du message"; "Table columns" = "Colonnes de la table"; "Status" = "Statut"; "Id" = "Id"; "Date" = "Date"; /* "From" = "De"; */ /* "Subject" = "Objet"; */ "Size" = "Taille"; "Shown headers while viewing a mail" = "En-ttes affichs lors de la visualisation de messages"; "Show all headers" = "Afficher toutes les en-ttes"; /* "Remove" = "Supprimer"; */ /* "Add" = "Ajouter"; */ "Defaults" = "Standards"; /* "Key:" = "Cl:"; */ "Shown Headers" = "Afficher les en-ttes"; "Double-clicking in message list:" = "Double-cliquer sur un message dans la liste:"; "Opens reply editor" = "Ouvre le message en rponse"; "Opens message in new window" = "Ouvre le message dans une nouvelle fentre"; /** ViewingViewController.m */ "Viewing" = "Affichage"; /** Address.m */ /** AddressBook.m */ /* "General" = "Gnral"; */ /** AddressBookController.m */ "Address Book" = "Carnet d'adresses"; "Add Group" = "Nouveau groupe"; "Delete Group" = "Effacer groupe"; /* "General" = "Gnral"; */ /* "Error!" = "Erreur!"; */ "This group already exist! Please choose an other name." = "Ce groupe est dja prsent! Choisissez un autre nom."; /* "OK" = "Ok"; */ /* "Delete..." = "Supprimer..."; */ "Are you sure you want to delete this address?" = "tes-vous sur de vouloir supprimer cette adresse?"; /* "No" = "Non"; */ /* "Yes" = "Oui"; */ "Are you sure you want to delete this group?" = "tes-vous sur de vouloir supprimer ce groupe?"; "You must select a group to import the addresses in." = "Vous devez choisir un groupe valide pour l'importation."; "< no address >" = "< aucune adresse >"; "Add Address" = "Ajouter Adresse"; "Delete Address" = "Effacer Adresse"; "Enter the contact's E-Mail address here" = "Entrez l'adresse E-Mail du contact dans ce champ."; "Groups" = "Groupes"; "Move to:" = "Dplacer dans:"; /** AddressBookWindow.m */ /* "Groups" = "Groupes"; */ "Name:" = "Nom:"; "Modify" = "Modifier"; "Import from:" = "Importer de:"; "OPENSTEP Mail.app" = "OPENSTEP Mail.app"; "LDIF" = "LDIF"; "Close" = "Fermer"; /** BounceWindow.m */ "Send" = "Envoyer"; "Addresses" = "Adresses"; "From:" = "De:"; "Using:" = "Avec:"; "To:" = ":"; "Cc:" = "Cc:"; "Bcc:" = "Tc:"; /** BounceWindowController.m */ "Bounce a message" = "Rediriger un message"; /* "Error!" = "Erreur!"; */ "Unable to create a valid bounced message.\nPlease, report this as a bug." = "Impossible de crer un message pour la redirection. Ceci est un bogue."; /* "OK" = "Ok"; */ "Please, verify that the To/Cc/Bcc fields are correct. Also, you MUST have at least one\nvalid E-Mail address in the To field." = "Vrifiez que les champs /Cc/Tc sont corrects. Vous devez avoir au moins une adresse email\nvalide dans le champ \"\"."; "Stop" = "Stop"; "Starting the thread for bouncing the E-Mail..." = "Dmarrage de la thread pour la redirection du E-Mail..."; "Closing..." = "Fermeture..."; "A mail is currently being sent. Please wait." = "Un message est en cour d'envoie. Patientez."; "An error occured during the authentication with the SMTP server (%@)." = "Une erreur est survenue lors de l'authentification avec le serveur SMTP (%@)."; "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences." = "Une erreur est survenue lors de l'envoie du courriel. Cela peut tre d un problme de rseau\nou une erreur de configuration dans vos prfrences d'envoie."; /* "Send" = "Envoyer"; */ "Manual stop of bouncing thread." = "Arrt manuel de la thread de redirection."; "Exiting the thread used to bounce the E-Mail..." = "Sortie de la thread de redirection du E-Mail..."; /** BounceWindowToolbar.m */ /** ConsoleWindow.m */ /* "Date" = "Date"; */ "Message" = "Message"; /** ConsoleWindowController.m */ /* "Date" = "Date"; */ "%H:%M:%S.%F" = "%H:%M:%S.%F"; /** EditWindow.m */ /* "Send" = "Envoyer"; */ "Attach" = "Attacher"; "Add Cc" = "Ajouter un Cc"; "Add Bcc" = "Ajouter un Tc"; /* "Addresses" = "Adresses"; */ /* "From:" = "De:"; */ /* "Using:" = "Avec:"; */ "Charset:" = "Charset:"; /* "Automatic" = "Automatique"; */ /* "To:" = ":"; */ /* "Cc:" = "Cc:"; */ /* "Bcc:" = "Tc:"; */ "Subject:" = "Objet:"; /** EditWindowController.m */ /* "Error!" = "Erreur!"; */ "You must have at least one transport agent defined.\nSee Preferences -> Sending." = "Vous devez avoir au moins un agent de transport dfini.\nVoir Prfrences -> Envoi."; /* "OK" = "Ok"; */ /* "Stop" = "Stop"; */ "Starting the thread for sending the E-Mail..." = "Dmarrage de la thread pour l'envoi du E-Mail..."; "(no subject)" = "(aucun objet)"; /* "Closing..." = "Fermeture..."; */ /* "A mail is currently being sent. Please wait." = "Un message est en cour d'envoie. Patientez."; */ "Would you like to save this message in the Drafts folder?" = "Voulez-vous sauvegarder ce message dans la bote Drafts?"; /* "Cancel" = "Annuler"; */ /* "Yes" = "Oui"; */ /* "No" = "Non"; */ "An error occured while attempting to obtain the message store for the Drafts folder." = "Une erreur est survenue lors de l'obtention du store pour la bote Drafts."; "Remove Cc" = "Supprimer le Cc"; /* "Add Cc" = "Ajouter un Cc"; */ "Remove Bcc" = "Supprimer le Tc"; /* "Add Bcc" = "Ajouter un Tc"; */ /* "An error occured during the authentication with the SMTP server (%@)." = "Une erreur est survenue lors de l'authentification avec le serveur SMTP (%@)."; */ /* "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences." = "Une erreur est survenue lors de l'envoie du courriel. Cela peut tre d un problme de rseau\nou une erreur de configuration dans vos prfrences d'envoie."; */ /* "Send" = "Envoyer"; */ "An error occured while attempting to obtain the message store for the Outbox folder.\nThe message nonetheless successfully sent." = "Une erreur est survenue lors de l'obtention du store pour la bote Outbox.\nToutefois, le message a t envoy."; "You must define a recipient in the field \"To\"." = "Vous devez dfinir un destinataire dans le champ \"\"."; /* "Automatic" = "Automatique"; */ "Manual stop of sending thread." = "Arrt manuel de la thread d'envoie"; "Exiting the thread used to send the E-Mail..." = "Sortie de la thread d'envoie du E-Mail..."; "An error occured while decoding %@. Please fix this address." = "Une erreur est survenue lors du dcodage de %@. Corrigez cette adresse."; "%0.1fKB (%d characters)" = "%0.1fKB (%d charactres)"; /** EditWindowToolbar.m */ /** ExtendedAttachmentCell.m */ "%@ (%d bytes)" = "%@ (%d octets)"; "%@ (%d KB)" = "%@ (%d Ko)"; /** ExtendedCell.m */ /** ExtendedOutlineView.m */ /** ExtendedTableView.m */ /** ExtendedWindow.m */ /** Filter.m */ /** FilterManager.m */ /** FindWindow.m */ "Find:" = "Chercher :"; "Replace with:" = "Remplacer par:"; "Find Scope" = "Domaine de recherche"; "Summaries" = "Rsums"; /* "Messages" = "Messages"; */ "Find Options" = "Options de recherche"; "Ignore Case" = "Ignorer la casse"; "Regular Expression" = "Expression rgulire"; "Find All" = "Tout rechercher"; "Replace" = "Remplacer"; "Replace & Find" = "Remplacer & chercher"; "Previous" = "Prcdent"; "Next" = "Suivant"; /** FindWindowController.m */ "Find" = "Rechercher"; "Searching..." = "Searching..."; "Done searching. %d results found." = "Fin de la recherche. %d rsultats trouvs."; /** FolderNode.m */ /** FolderNodePopUpItem.m */ /** GNUMail.m */ /* "Error!" = "Erreur!"; */ "An error occured while attempting to obtain the message store for target filter." = "Une erreur est survenue lors de l'obtention du store pour le filtre."; /* "OK" = "Ok"; */ /* "You must have at least one transport agent defined.\nSee Preferences -> Sending." = "Vous devez avoir au moins un agent de transport dfini.\nVoir Prfrences -> Envoi."; */ "Your Software is up-to-date" = "Votre logiciel est jour."; "You have the most recent version of GNUMail." = "Vous avez la version la plus rcente de GNUMail."; "A New Version is Available" = "Une nouvelle version est disponible"; "A new version of GNUMail is available (version %@). Would you like to download the new version now?" = "Une nouvelle version est disponible (version %@). Voulez-vous la tlcharger maintenant?"; /* "Cancel" = "Annuler"; */ "Feature not implemented!" = "Cette caractristique n'est pas encore dveloppe!"; "Sorry, this feature is only available under Mac OS X." = "Dsol, cette fonctionnalit n'est disponible que sous Mac OS X."; "Compact..." = "Compacter..."; "Compacting a mailbox will permanently remove deleted messages.\nDo you want to continue?" = "Compacter la bote-aux-lettres dtruira de faon permanente les messages effacs.\nVoulez-vous continuer?"; /* "No" = "Non"; */ /* "Yes" = "Oui"; */ "Compacting mailbox, please wait..." = "Compactage en cours, patentiez..."; "Done compacting mailbox %@." = "Fin du compactage de la bote %@."; "New message..." = "Nouveau message..."; "Undelete" = "Restaurer"; /* "Delete" = "Supprimer"; */ "Mark as Unread" = "Marquer comme non-lu"; "Mark as Read" = "Marquer comme lu"; "Mailbox error!" = "Erreur dans une bote aux lettres!"; "You must select a valid mailbox to open!" = "Vous devez slectionner une bote aux lettres valide!"; "Local" = "Local"; "Information" = "Information"; "Use the same directory (%@) to save all other attachments? (override the files with the same name)." = "Utilisez le meme rpertoire pour sauvegarder les autres fichiers attachs?"; "Show Filtered Headers" = "Montrer les en-ttes filtrs"; "Show All Headers" = "Montrer toutes les en-ttes"; "Hide Status Bar" = "Cacher la barre d'tat"; "Show Status Bar" = "Afficher la bare d'tat"; "Show Normal Display" = "Afficher normalement le message"; "Show RAW Source" = "Afficher la source du message"; "Info" = "Informations"; "Mailbox" = "Bote aux lettres"; /* "Message" = "Message"; */ /* "Compose" = "Composer"; */ /* "Edit" = "dition"; */ "Windows" = "Fentres"; "Print" = "Imprimer"; "Services" = "Services"; "Hide" = "Cacher"; "Quit" = "Quitter"; "Info Panel..." = "Panneau d'informations"; "Check For Updates" = "Vrifier pour les mise--jours"; "Preferences..." = "Prfrences..."; "Help..." = "Aide..."; "Mailboxes..." = "Botes aux lettres..."; "Get New Mail" = "Relever les nouveaux messages"; "Sorting" = "Tri"; "Sort by Date" = "Tri par date"; "Sort by Name" = "Tri par nom"; "Sort by Number" = "Tri par numro"; "Sort by Size" = "Tri par taille"; "Sort by Subject" = "Tri par objet"; "Hide Deleted" = "Cacher effacs"; "Hide Read" = "Cacher lus"; "Compact" = "Compacter"; "Select All Messages" = "Slectionner tous les messages"; "Send to Address Book" = "Envoyer au carnet d'adresses"; "Save Attachment" = "Sauvegarder le fichier joint"; "Save Text from Message" = "Sauvegarder le texte du message"; "Text Encodings" = "Encodage du texte"; "Bounce..." = "Rediriger..."; "Apply Manual Filters" = "Appliquer les filtres manuellement"; "New" = "Nouveau"; "Reply" = "Rpondre"; "Reply All" = "Rpondre tous"; "Forward" = "Transferrer"; "Addresses..." = "Adresses..."; "Drafts" = "Brouillons"; "Save in Drafts" = "Sauvegarder dans la bote Drafts"; "Restore Draft" = "Restaurer le brouillon"; "Cut" = "Couper"; "Copy" = "Copier"; "Paste" = "Coller"; "Undo" = "Annuler"; /* "Find" = "Rechercher"; */ "Spelling..." = "Orthographe..."; "Check Spelling" = "Vrifier l'orthographe"; "Select All" = "Tout slectionner"; "Find Panel..." = "Fentre de recherche..."; "Find Next" = "Trouver le suivant"; "Find Previous" = "Trouver le prcdent"; "Enter Selection" = "Entrer la slection"; "Console" = "Console"; "Arrange" = "Arranger"; "Miniaturize" = "Miniaturiser"; /* "Close" = "Fermer"; */ "Setup Printer" = "Configuration de l'imprimante"; "Important!" = "Important!"; "No configuration found for GNUMail.app" = "Aucune configuration trouve pour GNUMail.app"; "Configure" = "Configurer"; "Loaded bundle at path %@" = "Bundle %@ charg"; "Failed to initialize bundle at path %@" = "L'initialisation du bundle au chemin %@ a choue"; "Error loading bundle at path %@" = "Le chargement du bundel au chemin %@ a chou"; "All" = "Tous"; "Show Deleted" = "Montrer effacs"; "Show Read" = "Affiche lus"; "Default" = "Dfaut"; /** GNUMailConstants.m */ /** Group.m */ /** LabelWidget.m */ /** LocalMailDelivery.m */ /** MailHeaderCell.m */ /** MailWindow.m */ /* "Delete" = "Supprimer"; */ "Get" = "Relever"; /* "Mailboxes" = "Botes"; */ /* "Compose" = "Composer"; */ /* "Reply" = "Rpondre"; */ /* "Forward" = "Transferrer"; */ /* "Addresses" = "Adresses"; */ /* "Find" = "Rechercher"; */ /* "Status" = "Statut"; */ /* "Id" = "Id"; */ /* "Date" = "Date"; */ /* "From" = "De"; */ /* "Subject" = "Objet"; */ /* "Size" = "Taille"; */ /** MailWindowController.m */ /* "New message..." = "Nouveau message..."; */ "Local - %@" = "Local - %@"; "IMAP on %@ - %@" = "IMAP sur %@ - %@"; "No Messages!" = "Pas de messages!"; "There are no messages in this Mailbox!" = "Il n'y a aucun message dans cette bote aux lettres!"; /* "OK" = "Ok"; */ "< unknown >" = "< inconnu >"; /* "Closing..." = "Fermeture..."; */ "GNUMail.app is currently receiving E-Mails. Please wait." = "GNUMail.app reoit prsentement des courriels. Patientez."; "Would you like to close the connection with the IMAP server?" = "Voulez-vous fermer la connexion avec ce serveur IMAP?"; /* "Cancel" = "Annuler"; */ /* "Yes" = "Oui"; */ /* "No" = "Non"; */ "Closed local folder %@." = "Bote locale %@ ferme."; "Closed IMAP folder %@ on %@." = "Bote IMAP %@ sur %@ ferme."; "Closing IMAP connection on %@." = "Fermeture de la connexion IMAP sur %@."; /* "Stop" = "Stop"; */ "Starting the fetching thread for %@.." = "Dmarrage de la thread de rception pour %@.."; /* "Error!" = "Erreur!"; */ "Unable to communicate with the POP3 server (%@)." = "Impossible de communiquer avec le serveur POP3 (%@)."; "Invalid password %@ @ %@." = "Mot de passe incorrect %@ @ %@."; "An error occured while obtaining the IMAP Store to save the received message.\n%@" = "Une erreur est survenue lors de l'obtention du store IMAP pour sauvegarder le message recu.\n%@"; "The received message was saved in your local Inbox folder." = "Le message recu a t sauvegard dans votre bote locale Inbox."; "No New Messages..." = "Pas de nouveaux messages..."; "There are no new messages on %@ @ %@." = "Il n'y a aucun nouveau message sur %@ @ %@."; /* "Get" = "Relever"; */ "Filtered messages..." = "Messages filtrs..."; "%d messages have been transfered to the following folders:\n%@" = "%d messages ont t transfrrs dans les botes suivantes:\n%@"; "%d messages (%dKB) - %d unread (%dKB) - %d selected (%0.1fKB) - %d deleted" = "%d messages (%dKo) - %d non-lus (%dKo) - %d slectionns (%0.1fKo) - %d effacs"; "IMAP %@ @ %@ - %@" = "IMAP %@ @ %@ - %@"; "No new messages on server %@" = "Aucun nouveau message sur %@"; "Got a %@ while estabilishing (or closing) the POP3 connection to server %@." = "Obtenu une %@ lors de la connexion (ou deconnexion) au serveur %@."; "Exiting the fetching thread for %@..." = "Sortie de la thread de rception pour %@..."; "Got a %@ while transferring mails from %@." = "Obtenu une %@ lors du transfert de courriels de %@."; /** MailWindowToolbar.m */ /** MailboxManager.m */ "Open this folder on startup" = "Ouvrir cette bote au dmarrage"; /* "Mailbox" = "Bote aux lettres"; */ /* "Size" = "Taille"; */ /* "Messages" = "Messages"; */ /* "Close" = "Fermer"; */ /** MailboxManagerCache.m */ /** MailboxManagerController.m */ /* "Mailboxes" = "Botes"; */ /* "Mailbox" = "Bote aux lettres"; */ "All Mailboxes" = "Botes"; /* "Size" = "Taille"; */ "%d KB" = "%d Ko"; /* "Messages" = "Messages"; */ "%d (%d unread)" = "%d (%d non-lus)"; /* "Local" = "Local"; */ /* "Closing..." = "Fermeture..."; */ "Would you like to close the connection with this IMAP server?" = "Voulez-vous fermer la connexion avec ce serveur IMAP?"; /* "No" = "Non"; */ /* "Yes" = "Oui"; */ /* "Closing IMAP connection on %@." = "Fermetture de la connexion IMAP sur %@."; */ "Transfer error!" = "Erreur de transfert!"; "You cannot transfer a message inside the same mailbox!" = "Vous ne pouvez pas transfrer un message l'intrieur d'une mme bote aux lettres!"; /* "OK" = "Ok"; */ /* "Mailbox error!" = "Erreur dans une bote aux lettres!"; */ /* "You must select a valid mailbox to open!" = "Vous devez slectionner une bote aux lettres valide!"; */ "You must select a valid mailbox\nto transfer this E-Mail to!" = "Vous devez slectionner une bote aux lettres valide\npour transfrer ce courrier"; "You cannot transfer E-Mails to this folder!" = "Vous ne pouvez pas transfrrer de courriels dans ce dossier!"; "You must select a valid root where to create this new mailbox." = "Vous devez slectionner un rpertoire valide pour crer cette nouvelle bote."; "Please select the mailbox you would like to delete." = "Slectionnez la bote aux lettres que vous souhaitez supprimer."; /* "Delete..." = "Supprimer..."; */ "Are you sure you want to delete this mailbox?" = "tes-vous sr de vouloir supprimer cette bote aux lettres?"; /* "Cancel" = "Annuler"; */ "Error while deleting!" = "Erreur rencontre lors de la suppression!"; "You can't delete an opened mailbox! Close it first." = "Vous ne pouvez pas supprimer une bote ouverte! Vous devez la fermer avant."; /* "Error!" = "Erreur!"; */ "The mailbox delete operation failed." = "L'opration de suppression de la bote aux lettres a choue."; "You must select a valid mailbox to rename!" = "Vous devez slectionner une bote aux lettres valide renommer!"; "You can't rename an opened mailbox! Close it first." = "Vous ne pouvez renommer une bote ouverte! Vous devez la fermer avant."; "Edit Mailbox" = "Modifier bote"; "Please enter the new name of the Mailbox:" = "Entrez le nouveau nom de la bote:"; "The local mailbox %@ does not exist!" = "Cette bote locale %@ n'existe pas!"; "This folder (%@) holds folders, not messages!" = "Cette bote (%@) contient d'autres botes et non pas des messages!"; "Local folder %@ opened." = "Bote locale %@ ouverte."; "A folder (%@) is already open. Please close it first." = "Une bote (%@) est dja ouvert. Veuillez la fermer."; "Opening IMAP folder %@ on %@..." = "Ouverture de la bote IMAP %@ sur %@..."; "IMAP folder %@ on %@ opened." = "Bote IMAP %@ sur %@ ouverte."; "Connecting to IMAP server %@ using SSL" = "Connexion au serveur IMAP %@ utilisant SSL"; "Connecting to IMAP server %@" = "Connexion au serveur IMAP %@"; "Unable to communicate with the IMAP server (%@:%i)." = "Impossible de communiquer avec le serveur IMAP (%@:%i)."; "Authenticating using %@..." = "Autentification utilisant %@..."; "Connected to %@!" = "Connect %@!"; /* "Invalid password %@ @ %@." = "Mot de passe incorrect %@ @ %@."; */ "A fatal error occured when appending the message to the %@ folder." = "Une erreur fatale est survenue lors de l'ajout d'un mesasge la bote %@"; /** MailboxManagerToolbar.m */ /** MessageViewWindow.m */ /* "Delete" = "Supprimer"; */ /* "Reply" = "Rpondre"; */ /* "Forward" = "Transferrer"; */ /* "Show All Headers" = "Montrer toutes les en-ttes"; */ /** MessageViewWindowController.m */ /** MessageViewWindowToolbar.m */ /** MimeType.m */ /** MimeTypeManager.m */ /** NSRegEx.m */ /** NSStringExtensions.m */ /** NSUserDefaultsExtensions.m */ /** NewMailboxPanel.m */ "Please enter the name of the new Mailbox:" = "Entrez le nom de cette nouvelle bote aux lettres:"; /* "Cancel" = "Annuler"; */ /* "OK" = "Ok"; */ /** NewMailboxPanelController.m */ "New Mailbox" = "Nouvelle bote"; /* "Local" = "Local"; */ /* "Error!" = "Erreur!"; */ "The mailbox rename operation failed." = "L'opration pour renommer la bote aux lettres a choue."; /* "OK" = "Ok"; */ "The mailbox create operation failed." = "L'opration de cration de bote aux lettres a choue."; /** PasswordPanel.m */ "Please enter your password:" = "Entrez votre mot de passe:"; /* "Cancel" = "Annuler"; */ /* "OK" = "Ok"; */ /** PasswordPanelController.m */ /** PreferencesWindow.m */ "Apply" = "Appliquer"; /* "Cancel" = "Annuler"; */ /* "OK" = "Ok"; */ /** PreferencesWindowController.m */ "Preferences Panel" = "Panneau des prfrences"; "Loading preferences bundle at path %@." = "Chargement du bundle de prfrence au chemin %@."; /** TextEnrichedConsumer.m */ /** Utilities.m */ /* "Error!" = "Erreur!"; */ "A part of this E-Mail can't be represented. Please report this as a bug." = "Une partie de ce E-Mail ne peut pas tre reprsente. Ceci est un bogue."; /* "OK" = "Ok"; */ "No text/plain part found. Please report this bug since GNUMail.app doesn't support this other kind of parts." = "Aucune partie text/plain trouve. Rapportez ce bug."; "Local Mailboxes" = "Botes locales"; "Reply..." = "Rpondre..."; "Would you like to reply to all recipients?" = "Voulez-vous rpondre tout le monde?"; /* "No" = "Non"; */ /* "Yes" = "Oui"; */ "Reply to a message..." = "Rpondre un message..."; "Forward a message..." = "Transfrer un message..."; "Save all" = "Save all"; "The external program (%@) for opening this MIME-Type (%@) can't be found." = "Le programme externe (%@) pour ouvrir ce type MIME (%@) est introuvable."; /* Other strings */ "To" = "";GNUMail/Resources/German.lproj/0040755000014600001460000000000010424672357017112 5ustar monotonemonotoneGNUMail/Resources/German.lproj/Localizable.strings0100644000014600001460000077332210562042235022746 0ustar monotonemonotone/*** German.lproj/Localizable.strings updated by make_strings 2004-03-29 16:59:13 +0200 add comments above this one ***/ /*** Keys found in multiple places ***/ /* File: AddressBook.m:90 */ /* Flag: unmatched */ /* File: AddressBookController.m:138 */ /* Flag: unmatched */ /* File: AddressBookController.m:149 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingWindow.m:158 */ /* Flag: unmatched */ "General" = "Allgemein"; /* File: AddressBookController.m:236 */ /* Flag: unmatched */ /* File: BounceWindowController.m:149 */ /* Flag: unmatched */ /* File: BounceWindowController.m:180 */ /* Flag: unmatched */ /* File: BounceWindowController.m:383 */ /* Flag: unmatched */ /* File: BounceWindowController.m:413 */ /* Flag: unmatched */ /* File: Bundles/PGP/PGPController.m:750 */ /* Flag: unmatched */ /* File: Bundles/PGP/PGPController.m:1095 */ /* Flag: unmatched */ /* File: Bundles/Personal/PersonalViewController.m:123 */ /* Flag: unmatched */ /* File: Bundles/Personal/PersonalViewController.m:255 */ /* Flag: unmatched */ /* File: Bundles/Receiving/IMAPViewController.m:278 */ /* Flag: unmatched */ /* File: Bundles/Receiving/IMAPViewController.m:298 */ /* Flag: unmatched */ /* File: Bundles/Receiving/IMAPViewController.m:340 */ /* Flag: unmatched */ /* File: Bundles/Receiving/IMAPViewController.m:355 */ /* Flag: unmatched */ /* File: Bundles/Receiving/IMAPViewController.m:371 */ /* Flag: unmatched */ /* File: Bundles/Receiving/IMAPViewController.m:401 */ /* Flag: unmatched */ /* File: Bundles/Receiving/IMAPViewController.m:433 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingViewController.m:185 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingViewController.m:231 */ /* Flag: unmatched */ /* File: EditWindowController.m:69 */ /* File: EditWindowController.m:150 */ /* File: EditWindowController.m:525 */ /* File: EditWindowController.m:1713 */ /* Flag: unmatched */ /* File: EditWindowController.m:2098 */ /* File: GNUMail.m:228 */ /* File: GNUMail.m:279 */ /* Flag: untranslated */ /* File: GNUMail.m:2309 */ /* Flag: untranslated */ /* File: LocalInboxWindowController.m:281 */ /* Flag: unmatched */ /* File: LocalInboxWindowController.m:292 */ /* Flag: unmatched */ /* File: MailWindowController.m:1040 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:1321 */ /* File: MailboxManagerController.m:1338 */ /* File: MailboxManagerController.m:1705 */ /* File: MailboxManagerController.m:1952 */ /* Flag: untranslated */ /* File: MailboxManagerController.m:2163 */ /* Flag: untranslated */ /* File: MailboxManagerController.m:2480 */ /* Flag: untranslated */ /* File: NewMailboxPanelController.m:147 */ /* Flag: unmatched */ /* File: NewMailboxPanelController.m:169 */ /* Flag: unmatched */ /* File: TaskManager.m:635 */ /* Flag: untranslated */ /* File: TaskManager.m:833 */ /* Flag: untranslated */ /* File: TaskManager.m:1006 */ /* Flag: untranslated */ /* File: Utilities.m:1814 */ /* File: Utilities.m:2059 */ /* Flag: untranslated */ "Error!" = "Fehler!"; /* File: AddressBookController.m:238 */ /* Flag: unmatched */ /* File: BounceWindowController.m:151 */ /* Flag: unmatched */ /* File: BounceWindowController.m:182 */ /* Flag: unmatched */ /* File: BounceWindowController.m:294 */ /* Flag: unmatched */ /* File: BounceWindowController.m:385 */ /* Flag: unmatched */ /* File: BounceWindowController.m:415 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:343 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindowController.m:202 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterHeaderEditorWindow.m:108 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterMessageWindow.m:80 */ /* Flag: unmatched */ /* File: Bundles/MIME/MailcapWindowController.m:111 */ /* Flag: unmatched */ /* File: Bundles/MIME/MimeTypeEditorWindow.m:179 */ /* Flag: unmatched */ /* File: Bundles/PGP/PGPController.m:752 */ /* Flag: unmatched */ /* File: Bundles/PGP/PGPController.m:1097 */ /* Flag: unmatched */ /* File: Bundles/Personal/NewPersonalProfilePanel.m:81 */ /* Flag: unmatched */ /* File: Bundles/Personal/PersonalViewController.m:125 */ /* Flag: unmatched */ /* File: Bundles/Personal/PersonalViewController.m:257 */ /* Flag: unmatched */ /* File: Bundles/Receiving/IMAPView.m:128 */ /* Flag: unmatched */ /* File: Bundles/Receiving/IMAPView.m:139 */ /* Flag: unmatched */ /* File: Bundles/Receiving/IMAPViewController.m:280 */ /* Flag: unmatched */ /* File: Bundles/Receiving/IMAPViewController.m:300 */ /* Flag: unmatched */ /* File: Bundles/Receiving/IMAPViewController.m:342 */ /* Flag: unmatched */ /* File: Bundles/Receiving/IMAPViewController.m:357 */ /* Flag: unmatched */ /* File: Bundles/Receiving/IMAPViewController.m:373 */ /* Flag: unmatched */ /* File: Bundles/Receiving/IMAPViewController.m:403 */ /* Flag: unmatched */ /* File: Bundles/Receiving/IMAPViewController.m:435 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingViewController.m:187 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingViewController.m:233 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingWindow.m:185 */ /* Flag: unmatched */ /* File: Bundles/Sending/TransportMethodEditorWindow.m:180 */ /* Flag: unmatched */ /* File: ConsoleWindowController.m:243 */ /* Flag: untranslated */ /* File: ConsoleWindowController.m:280 */ /* Flag: untranslated */ /* File: EditWindowController.m:71 */ /* File: EditWindowController.m:152 */ /* File: EditWindowController.m:527 */ /* File: EditWindowController.m:884 */ /* Flag: unmatched */ /* File: EditWindowController.m:1715 */ /* Flag: unmatched */ /* File: EditWindowController.m:2100 */ /* File: GNUMail.m:230 */ /* File: GNUMail.m:281 */ /* File: GNUMail.m:496 */ /* File: GNUMail.m:1194 */ /* Flag: untranslated */ /* File: GNUMail.m:2311 */ /* Flag: untranslated */ /* File: GNUMail.m:4393 */ /* Flag: untranslated */ /* File: LocalInboxWindowController.m:283 */ /* Flag: unmatched */ /* File: LocalInboxWindowController.m:294 */ /* Flag: unmatched */ /* File: LocalInboxWindowController.m:335 */ /* Flag: unmatched */ /* File: LocalInboxWindowController.m:349 */ /* Flag: unmatched */ /* File: LocalInboxWindowController.m:437 */ /* Flag: unmatched */ /* File: MailWindowController.m:1042 */ /* Flag: unmatched */ /* File: MailWindowController.m:1563 */ /* File: MailboxManagerController.m:684 */ /* File: MailboxManagerController.m:840 */ /* File: MailboxManagerController.m:919 */ /* File: MailboxManagerController.m:966 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:1017 */ /* File: MailboxManagerController.m:1047 */ /* File: MailboxManagerController.m:1075 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:1149 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:1323 */ /* File: MailboxManagerController.m:1340 */ /* File: MailboxManagerController.m:1707 */ /* File: MailboxManagerController.m:1954 */ /* File: MailboxManagerController.m:2165 */ /* File: MailboxManagerController.m:2257 */ /* File: MailboxManagerController.m:2415 */ /* File: MailboxManagerController.m:2482 */ /* File: MailboxManagerController.m:2505 */ /* File: NewMailboxPanel.m:89 */ /* File: NewMailboxPanelController.m:149 */ /* Flag: unmatched */ /* File: NewMailboxPanelController.m:171 */ /* Flag: unmatched */ /* File: PasswordPanel.m:87 */ /* File: PreferencesWindow.m:108 */ /* File: TaskManager.m:418 */ /* Flag: untranslated */ /* File: TaskManager.m:637 */ /* Flag: untranslated */ /* File: TaskManager.m:786 */ /* Flag: untranslated */ /* File: TaskManager.m:835 */ /* Flag: untranslated */ /* File: TaskManager.m:1008 */ /* Flag: untranslated */ /* File: Utilities.m:1816 */ /* File: Utilities.m:2061 */ /* Flag: untranslated */ "OK" = "OK"; /* File: AddressBookController.m:274 */ /* Flag: unmatched */ /* File: AddressBookController.m:322 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilteringViewController.m:387 */ /* Flag: unmatched */ /* File: Bundles/MIME/MIMEViewController.m:159 */ /* Flag: unmatched */ /* File: Bundles/Personal/PersonalViewController.m:266 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingViewController.m:240 */ /* Flag: unmatched */ /* File: Bundles/Sending/SendingViewController.m:350 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:1026 */ "Delete..." = "Lschen..."; /* File: AddressBookController.m:276 */ /* Flag: unmatched */ /* File: AddressBookController.m:324 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilteringViewController.m:168 */ /* Flag: unmatched */ /* File: EditWindowController.m:824 */ /* File: EditWindowController.m:840 */ /* Flag: untranslated */ /* File: GNUMail.m:1663 */ /* File: MailWindowController.m:1581 */ /* File: MailboxManagerController.m:525 */ /* Flag: untranslated */ /* File: Utilities.m:1405 */ /* Flag: untranslated */ "No" = "Nein"; /* File: AddressBookController.m:277 */ /* Flag: unmatched */ /* File: AddressBookController.m:325 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilteringViewController.m:168 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilteringViewController.m:390 */ /* Flag: unmatched */ /* File: Bundles/MIME/MIMEViewController.m:162 */ /* Flag: unmatched */ /* File: Bundles/Personal/PersonalViewController.m:269 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingViewController.m:243 */ /* Flag: unmatched */ /* File: Bundles/Sending/SendingViewController.m:353 */ /* Flag: unmatched */ /* File: EditWindowController.m:458 */ /* Flag: unmatched */ /* File: GNUMail.m:1662 */ /* File: MailWindowController.m:1580 */ /* File: MailboxManagerController.m:775 */ /* Flag: unmatched */ /* File: Utilities.m:1406 */ /* Flag: untranslated */ "Yes" = "Ja"; /* File: AddressBookController.m:912 */ /* Flag: unmatched */ /* File: AddressBookWindow.m:64 */ /* Flag: unmatched */ "Groups" = "Gruppen"; /* File: AddressBookWindow.m:132 */ /* Flag: unmatched */ /* File: Bundles/MIME/MailcapWindow.m:93 */ /* Flag: unmatched */ "Import" = "Importieren"; /* File: AddressBookWindow.m:139 */ /* Flag: unmatched */ /* File: GNUMail.m:2890 */ /* File: MailboxManager.m:143 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:524 */ /* Flag: untranslated */ "Close" = "Schlieen"; /* File: BounceWindow.m:63 */ /* Flag: unmatched */ /* File: EditWindow.m:76 */ /* File: EditWindowToolbar.m:1 */ /* Flag: untranslated */ "Send" = "Senden"; /* File: BounceWindow.m:73 */ /* Flag: unmatched */ /* File: EditWindow.m:116 */ /* File: EditWindowToolbar.m:1 */ /* Flag: untranslated */ /* File: MailWindow.m:144 */ /* File: MailWindowToolbar.m:141 */ /* Flag: untranslated */ /* File: MailWindowToolbar.m:142 */ /* Flag: untranslated */ "Addresses" = "Adressen"; /* File: BounceWindow.m:83 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:331 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterHeaderEditorWindow.m:96 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterMessageWindow.m:73 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilteringViewController.m:389 */ /* Flag: unmatched */ /* File: Bundles/MIME/MIMEViewController.m:161 */ /* Flag: unmatched */ /* File: Bundles/MIME/MailcapWindow.m:86 */ /* Flag: unmatched */ /* File: Bundles/MIME/MimeTypeEditorWindow.m:166 */ /* Flag: unmatched */ /* File: Bundles/Personal/NewPersonalProfilePanel.m:69 */ /* Flag: unmatched */ /* File: Bundles/Personal/PersonalViewController.m:268 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingViewController.m:242 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingWindow.m:172 */ /* Flag: unmatched */ /* File: Bundles/Sending/SendingViewController.m:352 */ /* Flag: unmatched */ /* File: Bundles/Sending/TransportMethodEditorWindow.m:169 */ /* Flag: unmatched */ /* File: EditWindow.m:134 */ /* Flag: unmatched */ /* File: EditWindowController.m:822 */ /* File: EditWindowController.m:838 */ /* Flag: untranslated */ /* File: GNUMail.m:536 */ /* File: GNUMail.m:2333 */ /* Flag: untranslated */ /* File: GNUMail.m:3065 */ /* Flag: untranslated */ /* File: MailWindowController.m:1579 */ /* Flag: untranslated */ /* File: MailboxManagerController.m:1029 */ /* File: NewMailboxPanel.m:76 */ /* File: PasswordPanel.m:75 */ /* File: PreferencesWindow.m:95 */ "Cancel" = "Abbrechen"; /* File: BounceWindow.m:95 */ /* Flag: unmatched */ /* File: EditWindow.m:127 */ "From:" = "Von:"; /* File: BounceWindow.m:107 */ /* Flag: unmatched */ /* File: EditWindow.m:139 */ "Using:" = "Mit:"; /* File: BounceWindow.m:119 */ /* Flag: unmatched */ /* File: EditWindow.m:151 */ "To:" = "An:"; /* File: BounceWindow.m:130 */ /* Flag: unmatched */ /* File: EditWindow.m:162 */ "Cc:" = "Cc:"; /* File: BounceWindow.m:141 */ /* Flag: unmatched */ /* File: EditWindow.m:173 */ "Bcc:" = "Bcc:"; /* File: BounceWindowController.m:187 */ /* Flag: unmatched */ /* File: EditWindowController.m:364 */ /* Flag: unmatched */ /* File: LocalInboxWindowController.m:246 */ /* Flag: unmatched */ /* File: MailWindowController.m:1107 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:976 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:1103 */ /* Flag: unmatched */ "Please wait..." = "Bitte warten..."; /* File: BounceWindowController.m:414 */ /* Flag: unmatched */ /* File: EditWindowController.m:810 */ /* Flag: unmatched */ "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences." = "Beim Versenden der EMail trat ein Fehler auf. Es knnte sich um ein\nNetzwerkproblem oder einen Fehler in Ihren Versand-Einstellungen handeln."; /* File: EditWindow.m:96 */ /* File: EditWindowController.m:1036 */ /* File: EditWindowController.m:1041 */ /* Flag: untranslated */ /* File: EditWindowToolbar.m:1 */ /* Flag: untranslated */ "Add Cc" = "Cc einfgen"; /* File: EditWindow.m:106 */ /* File: EditWindowController.m:1087 */ /* File: EditWindowController.m:1092 */ /* Flag: untranslated */ /* File: EditWindowToolbar.m:1 */ /* Flag: untranslated */ "Add Bcc" = "Bcc einfgen"; /* File: EditWindowController.m:67 */ /* Flag: unmatched */ /* File: GNUMail.m:136 */ /* Flag: unmatched */ "You must have at least one transport agent defined.\nSee Preferences -> Account." = "Sie mssen mindestens einen Transportagenten definiert haben.\nSiehe Grundeinstellungen -> Konto"; /* File: FindWindowController.m:79 */ /* File: GNUMail.m:2498 */ /* File: GNUMail.m:2732 */ /* Flag: untranslated */ /* File: MailWindow.m:154 */ /* File: MailWindowToolbar.m:150 */ /* Flag: untranslated */ "Find" = "Suchen"; /* File: GNUMail+Services.m:143 */ /* Flag: untranslated */ /* File: GNUMail+Services.m:192 */ /* Flag: untranslated */ /* File: GNUMail.m:576 */ /* File: GNUMail.m:1516 */ /* File: GNUMail.m:2271 */ /* Flag: unmatched */ /* File: GNUMail.m:4195 */ /* File: MailWindowController.m:396 */ /* Flag: unmatched */ /* File: MessageComposition.m:768 */ /* Flag: untranslated */ "New message..." = "Neue Nachricht..."; /* File: Bundles/Filtering/FilteringView.m:113 */ /* Flag: unmatched */ /* File: Bundles/MIME/MIMEView.m:99 */ /* Flag: unmatched */ /* File: Bundles/Personal/PersonalView.m:90 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingView.m:144 */ /* Flag: unmatched */ /* File: ConsoleWindow.m:142 */ /* Flag: untranslated */ /* File: GNUMail.m:814 */ /* File: GNUMail.m:2150 */ /* Flag: unmatched */ /* File: GNUMail.m:3992 */ /* File: MailWindow.m:82 */ /* File: MailWindowToolbar.m:84 */ /* Flag: untranslated */ /* File: MailboxManagerController.m:482 */ /* Flag: untranslated */ /* File: MailboxManagerController.m:752 */ /* Flag: untranslated */ /* File: MailboxManagerController.m:1028 */ /* Flag: untranslated */ /* File: MessageViewWindow.m:81 */ /* Flag: untranslated */ /* File: MessageViewWindowToolbar.m:44 */ /* Flag: untranslated */ "Delete" = "Lschen"; /* File: Bundles/Compose/ComposeViewController.m:99 */ /* Flag: unmatched */ /* File: GNUMail.m:1246 */ /* Flag: unmatched */ /* File: GNUMail.m:2552 */ /* File: MailWindow.m:113 */ /* File: MailWindowToolbar.m:113 */ /* Flag: untranslated */ "Compose" = "Erstellen"; /* File: Bundles/Receiving/ReceivingView.m:137 */ /* Flag: unmatched */ /* File: Bundles/Sending/SendingView.m:92 */ /* Flag: unmatched */ /* File: GNUMail.m:2495 */ /* File: GNUMail.m:2696 */ "Edit" = "Bearbeiten"; /* File: GNUMail.m:2555 */ /* File: MailWindow.m:123 */ /* File: MailWindowController.m:1842 */ /* Flag: untranslated */ /* File: MailWindowToolbar.m:122 */ /* Flag: untranslated */ /* File: MessageViewWindow.m:91 */ /* Flag: untranslated */ /* File: MessageViewWindowToolbar.m:53 */ /* Flag: untranslated */ "Reply" = "Antworten"; /* File: GNUMail.m:2567 */ /* File: MailWindow.m:134 */ /* File: MailWindowController.m:1860 */ /* Flag: untranslated */ /* File: MailWindowToolbar.m:132 */ /* Flag: untranslated */ /* File: MessageViewWindow.m:102 */ /* Flag: untranslated */ /* File: MessageViewWindowToolbar.m:63 */ /* Flag: untranslated */ "Forward" = "Weiterleiten"; /* File: GNUMail.m:2701 */ /* File: MailboxManager.m:84 */ /* Flag: unmatched */ "Copy" = "Kopieren"; /* File: GNUMail.m:1192 */ /* File: GNUMail.m:2050 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:838 */ /* File: MailboxManagerController.m:917 */ /* File: MailboxManagerController.m:964 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:1015 */ /* File: MailboxManagerController.m:2255 */ /* File: MailboxManagerController.m:2413 */ /* File: MailboxManagerController.m:2503 */ "Mailbox error!" = "Mailbox-Fehler!"; /* File: GNUMail.m:2051 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:352 */ /* Flag: unmatched */ "This mailbox is already open!" = "Dieses Postfach ist bereits offen!"; /* File: IMAPMailWindow.m:81 */ /* Flag: unmatched */ /* File: LocalInboxWindow.m:86 */ /* Flag: unmatched */ /* File: MailWindow.m:93 */ /* Flag: untranslated */ /* File: MailWindowToolbar.m:94 */ /* Flag: untranslated */ "Get" = "Abrufen"; /* File: LocalInboxWindowController.m:293 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:1148 */ /* Flag: unmatched */ "Invalid password %@ @ %@." = "Ungltiges Passwort %@ @ %@."; /* File: Bundles/Mailboxes/MailboxesViewController.m:128 */ /* Flag: unmatched */ /* File: MailWindow.m:103 */ /* File: MailWindowToolbar.m:104 */ /* Flag: untranslated */ /* File: MailboxManagerController.m:114 */ "Mailboxes" = "Postfcher"; /* File: Bundles/Filtering/FilterEditorWindow.m:169 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:204 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:239 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindowController.m:364 */ /* Flag: unmatched */ /* File: Bundles/Viewing/ViewingView.m:119 */ /* Flag: unmatched */ /* File: FindWindow.m:94 */ /* Flag: untranslated */ /* File: GNUMail.m:2782 */ /* Flag: untranslated */ /* File: MailWindow.m:249 */ /* Flag: unmatched */ /* File: MailWindowController.m:172 */ /* Flag: untranslated */ /* File: MailWindowController.m:935 */ /* Flag: untranslated */ "From" = "Von"; /* File: Bundles/Filtering/FilterEditorWindow.m:168 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:203 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:238 */ /* Flag: unmatched */ /* File: Bundles/Viewing/ViewingView.m:123 */ /* Flag: unmatched */ /* File: FindWindow.m:102 */ /* Flag: untranslated */ /* File: GNUMail.m:2794 */ /* Flag: untranslated */ /* File: MailWindow.m:256 */ /* Flag: unmatched */ /* File: MailWindowController.m:184 */ /* Flag: untranslated */ "Subject" = "Betreff"; /* File: MailboxManagerController.m:563 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:709 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:763 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:858 */ /* Flag: unmatched */ "Feature not implemented!" = "Funktion nicht implemententiert!"; /* File: MailboxManagerController.m:564 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:710 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:764 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:859 */ /* Flag: unmatched */ "This feature is going to be implemented soon." = "Diese Funktion wird bald implementiert."; /* File: Bundles/Filtering/FilterEditorWindow.m:87 */ /* Flag: unmatched */ /* File: Bundles/MIME/MimeTypeEditorWindow.m:70 */ /* Flag: unmatched */ "Description:" = "Beschreibung:"; /* File: Bundles/Filtering/FilterEditorWindow.m:96 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilteringView.m:82 */ /* Flag: unmatched */ "Active" = "Aktiv"; /* File: Bundles/Filtering/FilterHeaderEditorWindow.m:81 */ /* Flag: unmatched */ /* File: Bundles/Sending/SendingView.m:99 */ /* Flag: unmatched */ /* File: Bundles/Sending/SendingView.m:168 */ /* Flag: unmatched */ /* File: Bundles/Viewing/ViewingView.m:152 */ /* Flag: unmatched */ "Remove" = "Entfernen"; /* File: Bundles/Filtering/FilterHeaderEditorWindow.m:88 */ /* Flag: unmatched */ /* File: Bundles/Personal/PersonalView.m:83 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingView.m:130 */ /* Flag: unmatched */ /* File: Bundles/Sending/SendingView.m:85 */ /* Flag: unmatched */ /* File: Bundles/Sending/SendingView.m:161 */ /* Flag: unmatched */ /* File: Bundles/Viewing/ViewingView.m:159 */ /* Flag: unmatched */ "Add" = "Einfgen"; /* File: Bundles/Filtering/FilteringView.m:106 */ /* Flag: unmatched */ /* File: Bundles/MIME/MIMEView.m:92 */ /* Flag: unmatched */ "Add..." = "Einfgen..."; /* File: Bundles/Filtering/FilteringView.m:120 */ /* Flag: unmatched */ /* File: Bundles/MIME/MIMEView.m:106 */ /* Flag: unmatched */ "Edit..." = "Bearbeiten..."; /* File: Bundles/MIME/MIMEView.m:62 */ /* Flag: unmatched */ /* File: Bundles/MIME/MailcapWindow.m:56 */ /* Flag: unmatched */ "Mime-Type" = "Mime-Typ"; /* File: Bundles/Account/AccountEditorWindowController.m:994 */ /* Flag: unmatched */ /* File: Bundles/Account/PersonalView.m:183 */ /* Flag: unmatched */ /* File: Bundles/Account/UNIXView.m:82 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:338 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingView.m:114 */ /* Flag: unmatched */ "Choose file" = "Datei whlen"; /* File: Bundles/Receiving/IMAPView.m:60 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingView.m:93 */ /* Flag: unmatched */ "minutes" = "Minuten"; /* File: Bundles/Receiving/ReceivingViewController.m:133 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingWindow.m:72 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingWindowController.m:131 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingWindowController.m:366 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingWindowController.m:385 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingWindowController.m:389 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingWindowController.m:467 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingWindowController.m:645 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingWindowController.m:702 */ /* Flag: unmatched */ /* File: TaskManager.m:624 */ /* Flag: untranslated */ /* File: TaskManager.m:822 */ /* Flag: untranslated */ "POP3" = "POP3"; /* File: Bundles/Receiving/ReceivingViewController.m:133 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingWindow.m:73 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingWindowController.m:127 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingWindowController.m:405 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingWindowController.m:409 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingWindowController.m:483 */ /* Flag: unmatched */ /* File: TaskManager.m:628 */ /* Flag: untranslated */ /* File: TaskManager.m:826 */ /* Flag: untranslated */ "IMAP" = "IMAP"; /* File: Bundles/Receiving/ReceivingWindow.m:106 */ /* Flag: unmatched */ /* File: Bundles/Sending/TransportMethodEditorWindow.m:134 */ /* Flag: unmatched */ "Username:" = "Benutzer:"; /* File: Bundles/Receiving/ReceivingWindow.m:118 */ /* Flag: unmatched */ /* File: Bundles/Sending/TransportMethodEditorWindow.m:141 */ /* Flag: unmatched */ "Password:" = "Passwort:"; /* File: Bundles/Sending/SendingView.m:143 */ /* Flag: unmatched */ /* File: Bundles/Viewing/ViewingView.m:193 */ /* Flag: unmatched */ "Key:" = "Schlssel:"; /* File: Bundles/Sending/SendingViewController.m:120 */ /* Flag: unmatched */ /* File: Bundles/Sending/TransportMethodEditorWindow.m:75 */ /* Flag: unmatched */ /* File: Bundles/Sending/TransportMethodEditorWindow.m:96 */ /* Flag: unmatched */ /* File: TaskManager.m:632 */ /* Flag: untranslated */ /* File: TaskManager.m:830 */ /* Flag: untranslated */ "SMTP" = "SMTP"; /* File: Bundles/Sending/SendingViewController.m:120 */ /* Flag: unmatched */ /* File: Bundles/Sending/TransportMethodEditorWindow.m:74 */ /* Flag: unmatched */ /* File: Bundles/Sending/TransportMethodEditorWindow.m:82 */ /* Flag: unmatched */ "Mailer" = "Mailer"; /* File: Bundles/Compose/ComposeView.m:77 */ /* Flag: unmatched */ /* File: Bundles/Quoting/QuotingView.m:54 */ /* Flag: unmatched */ "Wrap lines at" = "Umbruch bei"; /* File: Bundles/Compose/ComposeView.m:84 */ /* Flag: unmatched */ /* File: Bundles/Quoting/QuotingView.m:61 */ /* Flag: unmatched */ "characters when sending plain/text messages." = "Zeichen bei einfachen/Text-Nachrichten"; /* File: BounceWindowController.m:292 */ /* Flag: unmatched */ /* File: EditWindowController.m:821 */ /* File: EditWindowController.m:836 */ /* File: LocalInboxWindowController.m:435 */ /* Flag: unmatched */ /* File: MailWindowController.m:1550 */ /* Flag: untranslated */ /* File: MailWindowController.m:1561 */ /* Flag: untranslated */ "Closing..." = "Schliee..."; /* File: Bundles/Viewing/ViewingView.m:59 */ /* Flag: unmatched */ /* File: ConsoleWindow.m:216 */ /* Flag: untranslated */ /* File: FindWindow.m:97 */ /* Flag: unmatched */ /* File: MailWindowController.m:1781 */ /* Flag: untranslated */ /* File: MailboxManager.m:97 */ /* File: MailboxManagerController.m:282 */ "Messages" = "Nachrichten"; /* File: GNUMail.m:2492 */ /* File: GNUMail.m:2666 */ /* File: MailWindowController.m:1773 */ /* Flag: untranslated */ /* File: MailboxManager.m:92 */ /* File: MailboxManagerController.m:256 */ /* File: MailboxManagerController.m:373 */ /* Flag: untranslated */ /* File: MailboxManagerController.m:448 */ /* Flag: untranslated */ /* File: NewMailboxPanelController.m:77 */ /* Flag: untranslated */ "Mailbox" = "Postfach"; /* File: Bundles/Viewing/ViewingView.m:127 */ /* Flag: unmatched */ /* File: GNUMail.m:2788 */ /* Flag: untranslated */ /* File: MailWindow.m:263 */ /* Flag: unmatched */ /* File: MailWindowController.m:195 */ /* Flag: untranslated */ /* File: MailboxManager.m:111 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:254 */ /* Flag: unmatched */ "Size" = "Gre"; /* File: GNUMail.m:1206 */ /* Flag: untranslated */ /* File: MailWindowController.m:2019 */ /* Flag: untranslated */ /* File: MailboxManagerController.m:269 */ /* File: MailboxManagerController.m:862 */ /* File: MailboxManagerController.m:1173 */ /* File: MailboxManagerController.m:1499 */ /* File: MailboxManagerController.m:2208 */ /* File: MailboxManagerController.m:2362 */ /* File: MailboxManagerController.m:2364 */ /* File: MailboxManagerController.m:2566 */ /* File: MailboxManagerController.m:2820 */ /* Flag: untranslated */ /* File: MailboxManagerController.m:2878 */ /* Flag: untranslated */ /* File: TaskManager.m:439 */ /* Flag: untranslated */ /* File: Utilities.m:749 */ /* Flag: untranslated */ "Local" = "Lokal"; /* File: BounceWindowController.m:293 */ /* Flag: unmatched */ /* File: EditWindowController.m:443 */ /* Flag: unmatched */ "A mail is currently being sent. Please wait." = "Eine Mail wird gerade versandt. Bitte warten."; /* File: Bundles/Fonts/FontsView.m:54 */ /* Flag: unmatched */ /* File: Bundles/Fonts/FontsView.m:69 */ /* Flag: unmatched */ /* File: Bundles/Fonts/FontsView.m:84 */ /* Flag: unmatched */ "Browse..." = "Auswhlen..."; /* File: Bundles/Receiving/ReceivingWindow.m:132 */ /* Flag: unmatched */ /* File: Bundles/Sending/TransportMethodEditorWindow.m:150 */ /* Flag: unmatched */ "Remember password" = "Passwort merken"; /* File: Bundles/Viewing/ViewingView.m:115 */ /* Flag: unmatched */ /* File: ConsoleWindow.m:185 */ /* Flag: untranslated */ /* File: ConsoleWindowController.m:464 */ /* Flag: untranslated */ /* File: GNUMail.m:2776 */ /* Flag: untranslated */ /* File: MailWindow.m:241 */ /* Flag: unmatched */ /* File: MailWindowController.m:165 */ /* Flag: untranslated */ "Date" = "Datum"; /* File: Bundles/Viewing/ViewingView.m:111 */ /* Flag: unmatched */ /* File: MailWindow.m:234 */ /* Flag: unmatched */ "Id" = "Nr"; /* File: Bundles/Viewing/ViewingView.m:107 */ /* Flag: unmatched */ /* File: ConsoleWindow.m:93 */ /* Flag: untranslated */ /* File: ConsoleWindowController.m:419 */ /* Flag: untranslated */ /* File: ConsoleWindowController.m:504 */ /* Flag: untranslated */ /* File: GNUMail.m:2791 */ /* Flag: untranslated */ /* File: MailWindow.m:227 */ /* Flag: unmatched */ /* File: MailWindowController.m:151 */ /* Flag: untranslated */ "Status" = "Status"; /* File: BounceWindowController.m:384 */ /* Flag: unmatched */ /* File: EditWindowController.m:789 */ /* Flag: unmatched */ "An error occured during the authentication with the SMTP server (%@)." = "Ein Fehler trat whrend der Authentifizierung mit dem SMTP-Server auf (%@)."; /* File: AddressBookController.m:90 */ /* Flag: unmatched */ /* File: AddressBookController.m:866 */ /* Flag: unmatched */ "Add Group" = "Gruppe einfgen"; /* File: AddressBookController.m:93 */ /* Flag: unmatched */ /* File: AddressBookController.m:869 */ /* Flag: unmatched */ "Delete Group" = "Gruppe lschen"; /* File: Bundles/Filtering/FilterEditorWindow.m:166 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:201 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:236 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindowController.m:362 */ /* Flag: unmatched */ "Cc" = "Cc"; /* File: Bundles/Filtering/FilterEditorWindow.m:165 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:200 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:235 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindowController.m:361 */ /* Flag: unmatched */ /* File: FindWindow.m:98 */ /* Flag: untranslated */ /* File: MailWindowController.m:930 */ /* Flag: untranslated */ "To" = "An"; /* File: Bundles/Filtering/FilterEditorWindow.m:167 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:202 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:237 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindowController.m:363 */ /* Flag: unmatched */ "To or Cc" = "An oder Cc"; /* File: Bundles/Fonts/FontsView.m:65 */ /* Flag: unmatched */ /* File: Bundles/Fonts/FontsView.m:88 */ /* Flag: unmatched */ /* File: Bundles/Fonts/FontsView.m:111 */ /* Flag: unmatched */ "Set..." = "Setzen..."; /* File: Bundles/Mailboxes/MailboxesView.m:137 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingView.m:172 */ /* Flag: unmatched */ "Compact mailbox when closing (not recommended)" = "Postfach beim Schlieen verdichten (nicht empfohlen)"; /* File: Bundles/Receiving/ReceivingView.m:154 */ /* Flag: unmatched */ /* File: Bundles/Receiving/UNIXView.m:54 */ /* Flag: unmatched */ "Mail spool file:" = "Mailspool-Datei:"; /* File: Bundles/Receiving/ReceivingWindow.m:94 */ /* Flag: unmatched */ /* File: Bundles/Sending/TransportMethodEditorWindow.m:106 */ /* Flag: unmatched */ "Port:" = "Port:"; /* File: GNUMail.m:919 */ /* Flag: unmatched */ /* File: GNUMail.m:1159 */ /* Flag: unmatched */ "Hide Sizes" = "Gre ausblenden"; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: GNUMail.m:2486 */ /* File: GNUMail.m:2530 */ "Info" = "Info"; /* File: ConsoleWindow.m:178 */ /* Flag: untranslated */ /* File: GNUMail.m:2489 */ /* File: GNUMail.m:2550 */ "Message" = "Nachricht"; /* File: GNUMail.m:1088 */ /* Flag: unmatched */ /* File: GNUMail.m:1356 */ /* Flag: unmatched */ /* File: GNUMail.m:1357 */ /* Flag: unmatched */ "Print" = "Drucken"; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: GNUMail.m:2646 */ /* Flag: untranslated */ "Print..." = "Drucken..."; /* File: GNUMail.m:1199 */ /* Flag: unmatched */ /* File: GNUMail.m:1205 */ /* Flag: unmatched */ "Save Attachment" = "Anhang speichern"; /* File: GNUMail.m:1190 */ /* Flag: unmatched */ /* File: GNUMail.m:1196 */ /* Flag: unmatched */ "Send to Address Book" = "An Addressbuch senden"; /* File: GNUMail.m:840 */ /* Flag: unmatched */ /* File: GNUMail.m:1180 */ /* Flag: unmatched */ /* File: MessageViewWindow.m:112 */ /* Flag: untranslated */ /* File: MessageViewWindowToolbar.m:72 */ /* Flag: untranslated */ "Show All Headers" = "Alle Kopfzeilen anzeigen"; /* File: MailWindowController.m:493 */ /* Flag: unmatched */ /* File: MailWindowController.m:533 */ /* Flag: unmatched */ /* File: Utilities.m:1424 */ /* Flag: untranslated */ "Reply to a message..." = "Auf eine Nachricht antworten..."; /* File: Bundles/Compose/ComposeView.m:94 */ /* Flag: unmatched */ /* File: Bundles/Compose/ComposeViewController.m:128 */ /* Flag: unmatched */ "Automatic" = "Automatisch"; /* File: Bundles/Filtering/FilterEditorWindow.m:194 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:229 */ /* Flag: unmatched */ "and" = "und"; /* File: Bundles/Filtering/FilterEditorWindow.m:195 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:230 */ /* Flag: unmatched */ "or" = "oder"; /* File: Bundles/Filtering/FilterEditorWindow.m:199 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:234 */ /* Flag: unmatched */ "(none)" = "(keine)"; /* File: Bundles/Filtering/FilterEditorWindowController.m:366 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindowController.m:368 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindowController.m:373 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindowController.m:380 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindowController.m:382 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindowController.m:599 */ /* Flag: unmatched */ "Is in Address Book" = "Ist im Adressbuch"; /* File: Bundles/Fonts/FontsView.m:63 */ /* Flag: unmatched */ /* File: Bundles/Fonts/FontsView.m:99 */ /* Flag: unmatched */ /* File: Bundles/Fonts/FontsView.m:134 */ /* Flag: unmatched */ /* File: Bundles/Fonts/FontsView.m:175 */ /* Flag: unmatched */ "Size:" = "Gre:"; /* File: Bundles/Receiving/ReceivingWindow.m:74 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingWindowController.m:135 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceivingWindowController.m:429 */ /* Flag: unmatched */ "UNIX" = "UNIX"; /* File: AddressBookController.m:225 */ /* File: GNUMail.m:2878 */ /* Flag: untranslated */ "Address Book" = "Adressbuch"; /* File: BounceWindowController.m:64 */ /* Flag: unmatched */ /* File: EditWindowController.m:151 */ /* Flag: untranslated */ "You must have at least one transport agent defined and enabled.\nSee Preferences -> Account." = "Sie mssen mindestens einen Transportagenten definiert und aktiviert haben.\nSiehe Grundeinstellungen -> Konto"; /* File: Bundles/Filtering/FilterEditorWindowController.m:200 */ /* Flag: unmatched */ /* File: GNUMail.m:3062 */ /* Flag: untranslated */ "Warning!" = "Warnung!"; /* File: Bundles/PGP/PGPController.m:913 */ /* Flag: unmatched */ /* File: Bundles/PGP/PGPController.m:1284 */ /* Flag: unmatched */ /* File: Bundles/PGP/PGPController.m:1562 */ /* Flag: unmatched */ "The file %@ does not exist or is not executable" = "Die Datei %@ existiert nicht oder ist nicht ausfhrbar"; /* File: Bundles/Account/POP3View.m:55 */ /* Flag: unmatched */ /* File: Bundles/Account/POP3View.m:74 */ /* Flag: unmatched */ "Leave messages on server for" = "Nachrichten auf Server lassen f"; /* File: EditWindow.m:86 */ /* File: EditWindowToolbar.m:1 */ /* Flag: untranslated */ "Attach" = "Anhngen"; /* File: EditWindowController.m:830 */ /* File: EditWindowController.m:837 */ /* Flag: untranslated */ "Would you like to save this message in the Drafts folder?" = "Mchten Sie diese Nachricht im Entwurfsordner (Drafts) speichern?"; /* File: EditWindowController.m:1023 */ /* File: EditWindowController.m:1028 */ /* Flag: untranslated */ "Remove Cc" = "Cc entfernen"; /* File: EditWindowController.m:1074 */ /* File: EditWindowController.m:1079 */ /* Flag: untranslated */ "Remove Bcc" = "Bcc entfernen"; /* File: ExtendedAttachmentCell.m:45 */ /* Flag: unmatched */ /* File: ExtendedTextAttachmentCell.m:47 */ /* Flag: untranslated */ "%@ (%d bytes)" = "%@ (%d Bytes)"; /* File: ExtendedAttachmentCell.m:49 */ /* Flag: unmatched */ /* File: ExtendedTextAttachmentCell.m:51 */ /* Flag: untranslated */ "%@ (%d KB)" = "%@ (%d KB)"; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: FindWindow.m:106 */ /* Flag: untranslated */ "Content" = "Inhalt"; /* File: GNUMail.m:2329 */ /* File: GNUMail.m:2522 */ /* Flag: untranslated */ "Quit" = "Verlassen"; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: GNUMail.m:2531 */ /* Flag: untranslated */ "About GNUMail.app..." = "ber GNUMail.app..."; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: GNUMail.m:2534 */ /* Flag: untranslated */ "Check for Updates..." = "Auf Updates prfen..."; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: GNUMail.m:2682 */ /* Flag: untranslated */ "Import Mailboxes..." = "Postfcher importieren..."; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: GNUMail.m:2575 */ /* Flag: untranslated */ "Deliver" = "Absenden"; /* File: GNUMail.m:2639 */ /* File: GNUMail.m:2643 */ /* Flag: untranslated */ "Apply Manual Filters" = "Manuelle Filter anwenden"; /* File: GNUMail.m:2563 */ /* File: MailWindowController.m:1854 */ /* Flag: untranslated */ "Reply All" = "Allen antworten"; /* File: GNUMail.m:2613 */ /* File: GNUMail.m:2628 */ /* Flag: untranslated */ /* File: MailboxManagerController.m:2083 */ /* Flag: untranslated */ "Drafts" = "Entwrfe (Drafts)"; /* File: ConsoleWindow.m:157 */ /* Flag: untranslated */ /* File: EditWindowController.m:823 */ /* Flag: untranslated */ /* File: EditWindowController.m:839 */ /* Flag: untranslated */ /* File: GNUMail.m:2619 */ "Save in Drafts" = "In Entwrfen (Drafts) speichern"; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: GNUMail.m:2631 */ /* Flag: untranslated */ /* File: GNUMail.m:2636 */ /* Flag: untranslated */ "Text Encodings" = "Text-Kodierungen"; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: GNUMail.m:2707 */ /* Flag: untranslated */ "Paste As Quoted Text" = "Als Zitat einfgen"; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: GNUMail.m:2737 */ /* Flag: untranslated */ "Find Text..." = "Text suchen"; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: GNUMail.m:2740 */ /* Flag: untranslated */ "Find Next" = "Weiter suchen"; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: GNUMail.m:2501 */ /* Flag: untranslated */ /* File: GNUMail.m:2759 */ /* Flag: untranslated */ "View" = "Ansehen"; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: GNUMail.m:2762 */ /* Flag: untranslated */ /* File: GNUMail.m:4100 */ /* Flag: untranslated */ "Thread Messages" = "Nachrichten in Threads anzeigen"; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: GNUMail.m:4105 */ /* Flag: untranslated */ "Unthread Messages" = "Nachrichten linear anzeigen"; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: GNUMail.m:2839 */ /* Flag: untranslated */ /* File: GNUMail.m:4046 */ /* Flag: untranslated */ "Hide Read" = "Gelesene Nachrichten verstecken"; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: MessageViewWindowToolbar.m:83 */ /* Flag: untranslated */ "Show Raw Source" = "Reinen Quelltext anzeigen"; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: GNUMail.m:2861 */ /* Flag: untranslated */ /* File: GNUMail.m:2864 */ /* Flag: untranslated */ "Previous Unread" = "Vorige ungelesene"; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: GNUMail.m:2866 */ /* Flag: untranslated */ /* File: GNUMail.m:2869 */ /* Flag: untranslated */ "Next Unread" = "Nchste ungelesene"; /* File: GNUMail.m:2214 */ /* File: GNUMail.m:2219 */ /* Flag: untranslated */ /* File: GNUMail.m:2223 */ /* Flag: untranslated */ /* File: GNUMail.m:3461 */ /* Flag: untranslated */ /* File: GNUMail.m:3579 */ /* Flag: untranslated */ "Normal Display" = "Normale Anzeige"; /* File: GNUMail.m:2232 */ /* File: GNUMail.m:2237 */ /* Flag: untranslated */ /* File: GNUMail.m:2241 */ /* Flag: untranslated */ /* File: GNUMail.m:2855 */ /* Flag: untranslated */ /* File: GNUMail.m:3442 */ /* Flag: untranslated */ /* File: GNUMail.m:3465 */ /* Flag: untranslated */ /* File: GNUMail.m:3575 */ /* Flag: untranslated */ /* File: MessageViewWindow.m:123 */ /* Flag: untranslated */ /* File: MessageViewWindowToolbar.m:82 */ /* Flag: untranslated */ "Raw Source" = "Reinen Quelltext anzeigen"; /* File: AddressBookController.m:568 */ /* Flag: untranslated */ /* File: GNUMail.m:3846 */ /* File: GNUMail.m:3948 */ /* Flag: untranslated */ "All" = "Alle"; /* File: LocalInboxWindowController.m:282 */ /* Flag: unmatched */ /* File: TaskManager.m:468 */ /* Flag: unmatched */ "Unable to communicate with the POP3 server (%@)." = "Kann nicht mit POP3-Server kommunizieren (%@)."; /* File: LocalInboxWindowController.m:333 */ /* Flag: unmatched */ /* File: TaskManager.m:416 */ /* Flag: untranslated */ "Filtered messages..." = "Gefilterte Nachrichten..."; /* File: LocalInboxWindowController.m:347 */ /* Flag: unmatched */ /* File: TaskManager.m:784 */ /* Flag: untranslated */ "No New Messages..." = "Keine neuen Nachrichten..."; /* File: LocalInboxWindowController.m:436 */ /* Flag: unmatched */ /* File: MailWindowController.m:1562 */ /* Flag: untranslated */ "GNUMail.app is currently receiving E-Mails. Please wait." = "GNUMail.app empfngt zur Zeit EMails. Bitte warten."; /* File: MailWindowController.m:432 */ /* Flag: unmatched */ /* File: Utilities.m:1525 */ /* Flag: untranslated */ "Forward a message..." = "Eine Nachricht weiterleiten..."; /* File: MailWindowController.m:468 */ /* Flag: unmatched */ /* File: Utilities.m:1403 */ /* Flag: untranslated */ "Reply..." = "Antworten..."; /* File: MailWindowController.m:469 */ /* Flag: unmatched */ /* File: Utilities.m:1404 */ /* Flag: untranslated */ "Would you like to reply to all recipients?" = "Mchten Sie allen Empfngern antworten?"; /* File: AddressBookController.m:180 */ /* Flag: untranslated */ /* File: MailWindowController.m:804 */ /* Flag: unmatched */ "< unknown >" = "< unbekannt >"; /* File: MailWindowController.m:1041 */ /* Flag: unmatched */ /* File: Utilities.m:1815 */ /* Flag: untranslated */ "The external program (%@) for opening this MIME-Type (%@) can't be found." = "Das externe Programm (%@) zum ffnen dieses MIME-Typs (%@) kann nicht gefunden werden."; /* File: GNUMail.m:1193 */ /* Flag: untranslated */ /* File: MailboxManagerController.m:839 */ /* File: MailboxManagerController.m:2504 */ /* Flag: untranslated */ "You must select a valid mailbox to open!" = "Sie mssen ein gltiges Postfach zum ffnen auswhlen!"; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: MailWindowController.m:1577 */ /* Flag: untranslated */ /* File: MailboxManagerController.m:522 */ /* Flag: untranslated */ "Closing connection on %@ @ %@..." = "Beenden der Verbindung zu %@ @ %@..."; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: MailWindowController.m:1732 */ /* Flag: untranslated */ /* File: MailboxManagerController.m:568 */ /* Flag: untranslated */ "Closing IMAP connection on %@." = "Beenden der IMAP Verbindung zu %@."; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: MailWindowController.m:1578 */ /* Flag: untranslated */ "Would you like to close the connection with the IMAP server?" = "Mchten Sie die Verbindung mit dem IMAP Server beenden?"; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: MailboxManagerController.m:523 */ /* Flag: untranslated */ "Would you like to close the connection with this IMAP server?" = "Mchten Sie die Verbindung mit diesem IMAP Server beenden?"; /* File: MailboxManagerController.m:1953 */ /* File: MailboxManagerController.m:2481 */ /* Flag: untranslated */ "The connection was lost to the %@ IMAP server." = "Die Verbindung zum IMAP Server %@ ging verloren."; /* File: PreferencesWindow.m:82 */ /* Flag: untranslated */ /* File: PreferencesWindowController.m:409 */ "Expert" = "Experte"; /* File: Utilities.m:896 */ /* File: Utilities.m:967 */ /* Flag: untranslated */ /* File: Utilities.m:1207 */ /* Flag: untranslated */ "Local Mailboxes" = "Lokale Postfcher"; /* File: NSAttributedString+Extensions.m:814 */ /* Flag: untranslated */ /* File: Utilities.m:3248 */ /* Flag: unmatched */ "No text part found. Please report this bug since GNUMail.app doesn't support this kind of part." = "Kein Text Teil gefunden. Bitte melden Sie diesen Fehler, da GNUMail.app diese Art von Teil nicht untersttzt."; /* File: Bundles/Account/AccountEditorWindowController.m:217 */ /* Flag: unmatched */ /* File: Bundles/Account/AccountEditorWindowController.m:1078 */ /* Flag: unmatched */ "None" = "Keiner"; /* File: Bundles/Account/AccountEditorWindowController.m:995 */ /* Flag: unmatched */ /* File: Bundles/Account/AccountView.m:189 */ /* Flag: unmatched */ "File location:" = "Datei-Pfad:"; /* File: Bundles/Compose/ComposeView.m:78 */ /* Flag: unmatched */ /* File: Bundles/Compose/ComposeView.m:94 */ /* Flag: unmatched */ "beginning" = "Anfang"; /* File: Bundles/Compose/ComposeView.m:79 */ /* Flag: unmatched */ /* File: Bundles/Compose/ComposeView.m:95 */ /* Flag: unmatched */ "end" = "Ende"; /* File: Bundles/Compose/ComposeView.m:83 */ /* Flag: unmatched */ /* File: Bundles/Compose/ComposeView.m:99 */ /* Flag: unmatched */ "of the message." = "der Nachricht einfgen."; /* File: Bundles/Filtering/FilterEditorWindow.m:177 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:212 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:247 */ /* Flag: unmatched */ "Contains" = "enthlt"; /* File: Bundles/Filtering/FilterEditorWindow.m:170 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:205 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:240 */ /* Flag: unmatched */ "Expert..." = "Experte..."; /* File: Bundles/Filtering/FilterEditorWindow.m:179 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:214 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:249 */ /* Flag: unmatched */ "Has Prefix" = "hat Prefix"; /* File: Bundles/Filtering/FilterEditorWindow.m:180 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:215 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:250 */ /* Flag: unmatched */ "Has Suffix" = "hat Suffix"; /* File: Bundles/Filtering/FilterEditorWindow.m:178 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:213 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:248 */ /* Flag: unmatched */ "Is Equal" = "ist gleich"; /* File: Bundles/Filtering/FilterEditorWindow.m:181 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:216 */ /* Flag: unmatched */ /* File: Bundles/Filtering/FilterEditorWindow.m:251 */ /* Flag: unmatched */ "Match Expression" = "trifft auf Ausdruck zu"; /* File: Bundles/Fonts/FontsView.m:244 */ /* Flag: unmatched */ /* File: Bundles/Fonts/FontsViewController.m:128 */ /* Flag: unmatched */ "Font preview for the header name:" = "Schrift-Vorschau fr Kopfzeilenname:"; /* File: Bundles/Account/IMAPView.m:144 */ /* Flag: unmatched */ /* File: Utilities.m:1375 */ /* Flag: untranslated */ "List" = "Liste"; /* File: Bundles/Account/SendView.m:188 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceiveView.m:102 */ /* Flag: unmatched */ "Server name:" = "Servername:"; /* File: Bundles/Account/SendView.m:196 */ /* Flag: unmatched */ /* File: Bundles/Receiving/ReceiveView.m:115 */ /* Flag: unmatched */ "Server port:" = "Serverport:"; /* File: Bundles/Sending/SendingView.m:59 */ /* Flag: unmatched */ /* File: Bundles/Sending/SendingView.m:121 */ /* Flag: unmatched */ "Value" = "Wert"; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: AddressBookPanel.m:81 */ /* Flag: untranslated */ "Any" = "Irgendeine"; /* File: <dummy>:0 */ /* Flag: unmatched */ /* File: AddressBookPanel.m:62 */ /* Flag: untranslated */ "Preferred Address Type:" = "Bevorzugter Adresstyp:"; /* File: Bundles/Advanced/AdvancedView.m:42 */ /* Flag: unmatched */ /* File: Bundles/Advanced/AdvancedViewController.m:70 */ /* Flag: unmatched */ "Open the Mailboxes window on startup" = "Postfcher-Fenster beim Start ffnen"; /* File: ConsoleWindowController.m:201 */ /* Flag: unmatched */ /* File: ConsoleWindowController.m:264 */ /* Flag: unmatched */ "Suspend error!" = "Fehler beim Unterbrechen!"; /* File: GNUMail+Extensions.m:70 */ /* File: GNUMail+Extensions.m:116 */ /* Flag: untranslated */ /* File: GNUMail.m:2937 */ /* Flag: untranslated */ /* File: GNUMail.m:2952 */ /* Flag: untranslated */ /* File: GNUMail.m:3241 */ /* Flag: untranslated */ "Fatal error!" = "Fataler Fehler!"; /* File: MailWindowController.m:2750 */ /* Flag: untranslated */ /* File: TaskManager.m:1357 */ "Local - %@" = "Lokal - %@"; /* File: ConsoleWindow.m:86 */ /* Flag: untranslated */ /* File: ConsoleWindowController.m:395 */ /* Flag: untranslated */ "Activity" = "Aktivitt"; /* File: ConsoleWindow.m:101 */ /* Flag: untranslated */ /* File: ConsoleWindowController.m:488 */ /* Flag: untranslated */ "Operation" = "Operation"; /* File: ConsoleWindow.m:137 */ /* Flag: untranslated */ /* File: ConsoleWindowController.m:576 */ /* Flag: untranslated */ /* File: ConsoleWindowController.m:625 */ /* Flag: untranslated */ "Stop" = "Stop"; /* File: ConsoleWindowController.m:581 */ /* Flag: untranslated */ /* File: ConsoleWindowController.m:636 */ /* Flag: untranslated */ "Start" = "Start"; /* File: GNUMail.m:229 */ /* Flag: untranslated */ /* File: GNUMail.m:280 */ /* Flag: untranslated */ "An error occured while attempting to obtain the message store for target filter." = "Ein Fehler trat bei dem Versuch den Nachrichtenspeicher fr den Zielfilter zu erhalten auf."; /* File: GNUMail.m:1007 */ /* Flag: untranslated */ /* File: GNUMail.m:4010 */ /* Flag: untranslated */ "Mark as Unflagged" = "Markierung aufheben"; /* File: GNUMail.m:1012 */ /* Flag: untranslated */ /* File: GNUMail.m:2589 */ /* Flag: untranslated */ /* File: GNUMail.m:4015 */ /* Flag: untranslated */ "Mark as Flagged" = "Markierung setzen"; /* File: GNUMail.m:1947 */ /* Flag: untranslated */ /* File: GNUMail.m:1951 */ /* Flag: untranslated */ /* File: GNUMail.m:3450 */ /* Flag: untranslated */ "Filtered Headers" = "Gefilterte Kopfzeilen"; /* File: GNUMail.m:1964 */ /* Flag: untranslated */ /* File: GNUMail.m:1968 */ /* Flag: untranslated */ /* File: GNUMail.m:2847 */ /* Flag: untranslated */ /* File: GNUMail.m:3440 */ /* Flag: untranslated */ /* File: GNUMail.m:3455 */ /* Flag: untranslated */ "All Headers" = "Alle Kopfzeilen"; /* File: GNUMail.m:2312 */ /* Flag: untranslated */ /* File: GNUMail.m:2332 */ /* Flag: untranslated */ "Quit Anyway" = "Trotzdem beenden"; /* File: GNUMail.m:2511 */ /* Flag: untranslated */ /* File: GNUMail.m:2898 */ /* Flag: untranslated */ "Scripting" = "Scripting"; /* File: GNUMail.m:2559 */ /* Flag: untranslated */ /* File: MailWindowController.m:1848 */ /* Flag: untranslated */ "Reply Simple" = "Leere Antwort"; /* File: GNUMail.m:2570 */ /* Flag: untranslated */ /* File: MailWindowController.m:1865 */ /* Flag: untranslated */ "Redirect" = "Umlenken"; /* File: GNUMail.m:2602 */ /* Flag: untranslated */ /* File: GNUMail.m:2607 */ /* Flag: untranslated */ "Save" = "Speichern"; /* File: MailboxManagerController.m:483 */ /* Flag: untranslated */ /* File: MailboxManagerController.m:762 */ /* Flag: untranslated */ "Rename" = "Umbenennen"; /* File: MailboxManagerController.m:487 */ /* Flag: untranslated */ /* File: MailboxManagerController.m:757 */ /* Flag: untranslated */ "Create" = "Erstellen"; /* File: MailWindowController.m:907 */ /* Flag: untranslated */ /* File: MailWindowController.m:2746 */ /* Flag: untranslated */ "No mailbox selected" = "Kein Postfach ausgewhlt"; /* File: MailWindowToolbar.m:85 */ /* Flag: untranslated */ /* File: MessageViewWindowToolbar.m:45 */ /* Flag: untranslated */ "Delete Message" = "Nachricht lschen"; /* File: MailWindowToolbar.m:123 */ /* Flag: untranslated */ /* File: MessageViewWindowToolbar.m:54 */ /* Flag: untranslated */ "Reply To Message" = "Nachricht beantworten"; /* File: MailWindowToolbar.m:133 */ /* Flag: untranslated */ /* File: MessageViewWindowToolbar.m:64 */ /* Flag: untranslated */ "Forward Message" = "Nachricht weiterleiten"; /* File: NSAttributedString+Extensions.m:362 */ /* Flag: untranslated */ /* File: Utilities.m:1703 */ /* Flag: untranslated */ "Loading message..." = "Nachricht wird geladen..."; /*** Unmatched/untranslated keys ***/ /* File: <dummy>:0 */ /* Flag: unmatched */ "Please choose the directory that\ncontains the mbox files you would\nlike to import. GNUMail.app will\nfilter the files in the directory to only\nshow mailboxes that can be\nimported." = "Bitte whlen Sie den Ordner, der die\nmbox Dateien enthlt, die Sie importieren\nmchten. GNUMail.app wird die Dateien\nim Ordner filtern, so da nur Postfcher\nangezeigt werden, die importiert werden\nknnen."; /* File: <dummy>:0 */ /* Flag: unmatched */ "Password" = "Passwort"; /* File: <dummy>:0 */ /* Flag: unmatched */ "Open with Workspace" = "Mit Workspace ffnen"; /* File: <dummy>:0 */ /* Flag: unmatched */ "Please export the mailboxes you\nwant from Entourage by dragging\nthem on the Desktop. Then, choose\nthe created files for importation\nby clicking on the button below." = "Bitte exportieren Sie die Postfcher, die\nSie von Entourage mchten, durch\nZiehen auf den Desktop. Dann whlen\nSie die Dateien zum Importieren durch\nAnklicken der Schaltflche unten."; /* File: <dummy>:0 */ /* Flag: unmatched */ "Choose the mailboxes to import:" = "Postfcher zum Importieren whlen:"; /* File: <dummy>:0 */ /* Flag: unmatched */ "Choose Directory..." = "Ordner whlen..."; /* File: <dummy>:0 */ /* Flag: unmatched */ "Choose File..." = "Datei whlen..."; /* File: <dummy>:0 */ /* Flag: unmatched */ "Open this mailbox on startup" = "Postfach beim Starten ffnen"; /* File: <dummy>:0 */ /* Flag: unmatched */ "Open" = "ffnen"; /* File: <dummy>:0 */ /* Flag: unmatched */ "Done" = "Fertig"; /* File: <dummy>:0 */ /* Flag: unmatched */ "MIME type" = "MIME Typ"; /* File: <dummy>:0 */ /* Flag: unmatched */ "Open in New Window" = "In neuem Fenster ffnen"; /* File: <dummy>:0 */ /* Flag: unmatched */ "Import Mailboxes" = "Postfcher importieren"; /* File: <dummy>:0 */ /* Flag: unmatched */ "Bounce..." = "Ablehnen..."; /* File: <dummy>:0 */ /* Flag: unmatched */ "Authentication:" = "Authentifizierung:"; /* File: <dummy>:0 */ /* Flag: unmatched */ "Please choose the type of mailbox\nyou want to import:" = "Bitte whlen Sie den Postfach-Typ,\nden Sie importieren mchten:"; /* File: <dummy>:0 */ /* Flag: unmatched */ "Account Name" = "Name des Kontos"; /* File: AboutPanel.m:107 */ /* Flag: untranslated */ "GNUMail.app Version %@ - http://www.collaboration-world.com/gnumail" = "GNUMail.app Version %@ - http://www.collaboration-world.com/gnumail"; /* File: AboutPanel.m:113 */ /* Flag: untranslated */ "(c) 1998-2004 Ludovic Marcotte and contributors." = "(c) 1998-2004 Ludovic Marcotte and contributors."; /* File: AboutPanel.m:124 */ /* Flag: unmatched */ "(c) 1998, 1999, 2001, 2002, 2003 Ludovic Marcotte and contributors." = "(c) 1998, 1999, 2001, 2002, 2003 Ludovic Marcotte und Mitwirkende."; /* File: AboutPanelController.m:104 */ /* Flag: untranslated */ "GNUMail.app Version %@ - http://www.collaboration-world.com/gnumail" = "GNUMail.app Version %@ - http://www.collaboration-world.com/gnumail"; /* File: AddressBookController.m:237 */ /* Flag: unmatched */ "This group already exist! Please choose an other name." = "Diese Gruppe existiert bereits! Bitte whlen Sie einen anderen Namen."; /* File: AddressBookController.m:275 */ /* Flag: unmatched */ "Are you sure you want to delete this address?" = "Sind Sie sicher, dass Sie diese Adresse lschen mchten?"; /* File: AddressBookController.m:323 */ /* Flag: unmatched */ "Are you sure you want to delete this group?" = "Sind Sie sicher, dass Sie diese Gruppe lschen mchten?"; /* File: AddressBookController.m:835 */ /* Flag: unmatched */ "< no address >" = "< keine Addresse >"; /* File: AddressBookController.m:885 */ /* Flag: unmatched */ "Add Address" = "Neue Adresse"; /* File: AddressBookController.m:888 */ /* Flag: unmatched */ "Delete Address" = "Adresse lschen"; /* File: AddressBookController.m:896 */ /* Flag: unmatched */ "Enter the contact's E-Mail address here" = "EMailadresse des Kontaktes hier eingeben"; /* File: AddressBookController.m:1175 */ /* Flag: unmatched */ "Move to:" = "Verschieben:"; /* File: AddressBookWindow.m:77 */ /* Flag: unmatched */ "Name:" = "Name:"; /* File: AddressBookWindow.m:95 */ /* Flag: unmatched */ "Modify" = "ndern"; /* File: AddressBookWindow.m:140 */ /* Flag: unmatched */ "Import from:" = "Importieren von:"; /* File: BounceWindowController.m:101 */ /* Flag: unmatched */ "Bounce a message" = "Nachricht ablehnen"; /* File: BounceWindowController.m:150 */ /* Flag: unmatched */ "Unable to create a valid bounced message.\nPlease, report this as a bug." = "Kann keine gltige abgelehnte Nachricht erstellen.\nBitte melden Sie dies als Fehler."; /* File: BounceWindowController.m:181 */ /* Flag: unmatched */ "Please, verify that the To/Cc/Bcc fields are correct. Also, you MUST have at least one\nvalid E-Mail address in the To field." = "Bitte stellen Sie sicher, dass die An/Cc/Bcc-Felder korrekt sind. Zudem MSSEN Sie mindestens eine\ngltige E-Mail-Adresse im \"An\"-Feld haben."; /* File: BounceWindowController.m:187 */ /* Flag: unmatched */ "Sending the bounced message. Please wait." = "Verschicke abgelehnte Nachricht. Bitte warten."; /* File: Bundles/Account/AccountEditorWindow.m:60 */ /* Flag: unmatched */ "Receive" = "Empfangen"; /* File: Bundles/Account/AccountEditorWindow.m:64 */ /* Flag: unmatched */ "Receive options" = "Empfangsoptionen"; /* File: Bundles/Account/AccountEditorWindowController.m:61 */ /* Flag: unmatched */ "You must select a valid %@ in the Mailboxes tab." = "Sie mssen einen gltigen %@ in der Postfcher-Rubrik auswhlen."; /* File: Bundles/Account/AccountEditorWindowController.m:999 */ /* Flag: unmatched */ "Choose program" = "Programm whlen"; /* File: Bundles/Account/AccountEditorWindowController.m:1229 */ /* Flag: unmatched */ "Primary mailbox on this server (always \"INBOX\" for IMAP):" = "Primres Postfach auf diesem Server (immer \"INBOX\" fr IMAP)"; /* File: Bundles/Account/AccountEditorWindowController.m:1420 */ /* Flag: unmatched */ "Add an Account..." = "Neues Konto..."; /* File: Bundles/Account/AccountEditorWindowController.m:1424 */ /* Flag: unmatched */ "<Specify the account name here>" = "<Den Namen des Kontos hier angeben>"; /* File: Bundles/Account/AccountEditorWindowController.m:1431 */ /* Flag: unmatched */ "Edit the %@ account..." = "Konto %@ bearbeiten..."; /* File: Bundles/Account/AccountView.m:67 */ /* Flag: unmatched */ "Please specify your account information. You need to add at least\none account in order to use GNUMail.app properly." = "Bitte spezifizieren Sie Ihre Konto-Angaben. Sie bentigen wenigstens\nein Konto zum ordnungsgemen Arbeiten mit GNUMail.app."; /* File: Bundles/Account/AccountViewController.m:180 */ /* Flag: unmatched */ "Enabled" = "Aktiviert"; /* File: Bundles/Account/AccountViewController.m:349 */ /* Flag: unmatched */ "Are you sure you want to delete this account?" = "Sind Sie sicher, da Sie dieses Konto lschen mchten?"; /* File: Bundles/Account/AccountViewController.m:616 */ /* Flag: unmatched */ "Account" = "Konto"; /* File: Bundles/Account/IMAPView.m:77 */ /* Flag: unmatched */ "In this panel, you can subscribe or unsubscribe to\nmailboxes on your IMAP server. To connect and list the\navailable mailboxes, click on the List button." = "In diesem Feld knnen Sie Postfcher auf Ihrem IMAP Server\nabonnieren oder abbestellen. Um die verfgbaren Postfcher\nanzeigen zu lassen, klicken Sie \"Liste\"."; /* File: Bundles/Account/IMAPView.m:81 */ /* Flag: unmatched */ "Show which mailboxes?" = "Postfcher zeigen ..."; /* File: Bundles/Account/IMAPView.m:99 */ /* Flag: unmatched */ "all" = "alle"; /* File: Bundles/Account/IMAPView.m:103 */ /* Flag: unmatched */ "subscribed only" = "nur abonnierte"; /* File: Bundles/Account/IMAPView.m:114 */ /* Flag: unmatched */ "Subscribed" = "Abonniert"; /* File: Bundles/Account/IMAPView.m:152 */ /* Flag: unmatched */ "Subscribe" = "Abonnieren"; /* File: Bundles/Account/IMAPView.m:160 */ /* Flag: unmatched */ "Unsubscribe" = "Abbestellen"; /* File: Bundles/Account/MailboxesView.m:77 */ /* Flag: unmatched */ "Save messages received from this account in this mailbox:" = "Speichere von diesem Konto empfangene Nachrichten in:"; /* File: Bundles/Account/MailboxesView.m:82 */ /* Flag: unmatched */ "Inbox:" = "Eingang:"; /* File: Bundles/Account/MailboxesView.m:96 */ /* Flag: unmatched */ "Save messages sent from this account in this mailbox:" = "Speichere von diesem Konto verschickte Nachrichten in:"; /* File: Bundles/Account/MailboxesView.m:100 */ /* Flag: unmatched */ "Sent:" = "Ausgang:"; /* File: Bundles/Account/MailboxesView.m:113 */ /* Flag: unmatched */ "Save composed but unsent messages in this mailbox:" = "Speichere entworfene, aber noch nicht verschickte Nachrichten in:"; /* File: Bundles/Account/MailboxesView.m:117 */ /* Flag: unmatched */ "Drafts:" = "Entwrfe:"; /* File: Bundles/Account/MailboxesView.m:130 */ /* Flag: unmatched */ "Save deleted messages in this mailbox:" = "Speichere gelschte Nachrichten in diesem Ordner:"; /* File: Bundles/Account/MailboxesView.m:134 */ /* Flag: unmatched */ "Trash:" = "Papierkorb:"; /* File: Bundles/Account/MailboxesView.m:147 */ /* Flag: unmatched */ "If you don't see all your IMAP mailboxes, first open a connection to this server.\nTo update the list immediately, click on the Refresh button." = "Falls nicht alle IMAP-Ordner zu sehen sind, mu zuerst zum Server verbunden\nwerden. Um die Liste sofort zu aktualisieren, auf Laden klicken."; /* File: Bundles/Account/MailboxesView.m:156 */ /* Flag: unmatched */ "Refresh" = "Laden"; /* File: Bundles/Account/POP3View.m:64 */ /* Flag: unmatched */ "days" = "Tage"; /* File: Bundles/Account/POP3View.m:72 */ /* Flag: unmatched */ "Use APOP (if possible)" = "Benutze APOP (wenn mglich)"; /* File: Bundles/Account/PersonalView.m:74 */ /* Flag: unmatched */ "Available personal profiles:" = "Verfgbare Personenprofile:"; /* File: Bundles/Account/PersonalView.m:76 */ /* Flag: unmatched */ "Account name:" = "Konten-Name:"; /* File: Bundles/Account/PersonalView.m:88 */ /* Flag: unmatched */ "Please specify your personal information. You need to\nspecify at least your name and your E-Mail address. You can\nleave the other fields blank." = "Bitte spezifizieren Sie Ihre persnlichen Angaben. Sie bentigen\nwenigstens Ihren Namen und Ihre EMail Adresse. Die anderen\nFelder knnen Sie leer lassen."; /* File: Bundles/Account/PersonalView.m:99 */ /* Flag: unmatched */ "Set this profile as default" = "Als Standardprofil setzen"; /* File: Bundles/Account/PersonalView.m:101 */ /* Flag: unmatched */ "(Ex: Bob Smith)" = "(Bsp: Hans Schmidt)"; /* File: Bundles/Account/PersonalView.m:111 */ /* Flag: unmatched */ "Your name:" = "Ihr Name:"; /* File: Bundles/Account/PersonalView.m:119 */ /* Flag: unmatched */ "Your E-Mail address:" = "Ihre E-Mail-Adresse:"; /* File: Bundles/Account/PersonalView.m:120 */ /* Flag: unmatched */ "(Ex: bob@smith.com)" = "(Bsp: hans@schmidt.de)"; /* File: Bundles/Account/PersonalView.m:128 */ /* Flag: unmatched */ "Reply-to address:" = "Antwort-Adresse:"; /* File: Bundles/Account/PersonalView.m:134 */ /* Flag: unmatched */ "Reply-To address:" = "Antwort-Adresse:"; /* File: Bundles/Account/PersonalView.m:137 */ /* Flag: unmatched */ "Organization:" = "Organisation:"; /* File: Bundles/Account/PersonalView.m:151 */ /* Flag: unmatched */ "Signature" = "Signatur"; /* File: Bundles/Account/PersonalView.m:152 */ /* Flag: unmatched */ "(Ex: ACME inc.)" = "(Bsp: MEGA GmbH)"; /* File: Bundles/Account/PersonalView.m:156 */ /* Flag: unmatched */ "Obtain signature from" = "Signatur beziehen aus"; /* File: Bundles/Account/PersonalView.m:161 */ /* Flag: unmatched */ "content of file" = "Dateiinhalt"; /* File: Bundles/Account/PersonalView.m:162 */ /* Flag: unmatched */ "program's output" = "Programm Ausgabe"; /* File: Bundles/Account/PersonalView.m:166 */ /* Flag: unmatched */ "The signature will be appended at the end of your message." = "Die Signatur wird am Ende Ihrer Nachricht angehngt."; /* File: Bundles/Account/PersonalView.m:170 */ /* Flag: unmatched */ "Obtain signature from:" = "Signatur beziehen von:"; /* File: Bundles/Account/ReceiveView.m:0 */ /* Flag: unmatched */ "Never check for new mail" = "Nie nach neuer Mail sehen"; /* File: Bundles/Account/ReceiveView.m:166 */ /* Flag: unmatched */ "Check for new mail on startup" = "Beim Start nach neuer Mail sehen"; /* File: Bundles/Account/ReceiveView.m:202 */ /* Flag: unmatched */ "Check for new mail manually" = "Manuell nach neuer Mail sehen"; /* File: Bundles/Account/ReceiveView.m:206 */ /* Flag: unmatched */ "Check for new mail automatically every" = "Automatisch nach neuer Mail sehen, alle"; /* File: Bundles/Account/SendView.m:67 */ /* Flag: unmatched */ "Usually in this panel, you would want to add the information\nrelated to your outgoing mail server (most of the time,\nSMTP)." = "Normalerweise werden Sie in diesem Feld Informationen ber\nIhren Ausgangs-Mailserver (meist SMTP), eingeben."; /* File: Bundles/Account/SendView.m:80 */ /* Flag: unmatched */ "Usually in this panel, you would want to add the information\nrelated to your incoming mail server (often POP3)." = "Normalerweise werden Sie in diesem Feld Informationen ber\nIhren Eingangs-Mailserver (hufig POP3), eingeben."; /* File: Bundles/Account/SendView.m:221 */ /* Flag: unmatched */ "Use SMTP authentication" = "SMTP Authentifizierung benutzen"; /* File: Bundles/Account/SendView.m:227 */ /* Flag: unmatched */ "Mechanism:" = "Auth.-Mechanismus:"; /* File: Bundles/Account/SendView.m:235 */ /* Flag: unmatched */ "Check supported" = "Untersttzte prfen"; /* File: Bundles/Advanced/AdvancedView.m:70 */ /* Flag: unmatched */ "In this panel, you can set advanced options for GNUMail.app.\nGenerally, most users will simply ignore those advanced options.\nSee the User Manual for documentation on them." = "In diesem Feld knnen Sie erweiterte Einstellungen fr GNUMail.app setzen.\nIm Allgemeinen werden die meisten Benutzer diese erweiterten Einstellungen\neinfach ignorieren. Dokumentation dazu finden Sie im Benutzer Handbuch."; /* File: Bundles/Advanced/AdvancedView.m:76 */ /* Flag: unmatched */ "Options" = "Einstellungen"; /* File: Bundles/Advanced/AdvancedViewController.m:65 */ /* Flag: unmatched */ "Compact mailbox when closing" = "Postfach beim Schlieen verdichten"; /* File: Bundles/Advanced/AdvancedViewController.m:66 */ /* Flag: unmatched */ "Prompt before compacting a mailbox" = "Nachfragen vor dem Verdichten eines Postfachs"; /* File: Bundles/Advanced/AdvancedViewController.m:67 */ /* Flag: unmatched */ "Repeat the message's subject (message threading)" = "Betreff wiederholen (Thread-Anzeige)"; /* File: Bundles/Advanced/AdvancedViewController.m:68 */ /* Flag: unmatched */ "Automatically expand threads (message threading)" = "Threads automatisch expandieren (Thread-Anzeige)"; /* File: Bundles/Advanced/AdvancedViewController.m:69 */ /* Flag: unmatched */ "Open the Console window on startup" = "Konsole beim Start ffnen"; /* File: Bundles/Advanced/AdvancedViewController.m:71 */ /* Flag: unmatched */ "Enable continuous spell checking" = "Stndige Rechtschreibprfung"; /* File: Bundles/Advanced/AdvancedViewController.m:143 */ /* Flag: unmatched */ "Advanced" = "Erweitert"; /* File: Bundles/Colors/ColorsView.m:68 */ /* Flag: unmatched */ "In this panel, you can set the colors used by GNUMail.app. For\nexample, you can set the colors used for the various quoting levels." = "In diesem Feld knnen Sie die von GNUMail.app benutzten Farben setzen.\nZ.B. knnen Sie die Farben fr die verschiedenen Zitat-Ebenen angeben."; /* File: Bundles/Colors/ColorsView.m:77 */ /* Flag: unmatched */ "Color quoted text" = "Zitierten Text einfrben"; /* File: Bundles/Colors/ColorsView.m:86 */ /* Flag: unmatched */ "Level One" = "Ebene Eins"; /* File: Bundles/Colors/ColorsView.m:97 */ /* Flag: unmatched */ "Level Two" = "Ebene Zwei"; /* File: Bundles/Colors/ColorsView.m:109 */ /* Flag: unmatched */ "Level Three" = "Ebene Drei"; /* File: Bundles/Colors/ColorsView.m:121 */ /* Flag: unmatched */ "Level Four" = "Ebene Vier"; /* File: Bundles/Colors/ColorsView.m:133 */ /* Flag: unmatched */ "Color used in the message headers cell" = "Farbe fr das Kopfzeilen-Element"; /* File: Bundles/Colors/ColorsViewController.m:110 */ /* Flag: unmatched */ "Colors" = "Farben"; /* File: Bundles/Compose/ComposeView.m:45 */ /* Flag: unmatched */ "When replying to an E-Mail, add signature to the" = "Beim Beantworten von Mails, Signatur einfgen"; /* File: Bundles/Compose/ComposeView.m:62 */ /* Flag: unmatched */ "When forwarding an E-Mail, add signature to the" = "Beim Weiterleiten von Mail, Signatur einfgen"; /* File: Bundles/Compose/ComposeView.m:68 */ /* Flag: unmatched */ "In this panel, you can specify where you want GNUMail.app to\nautomatically add your signature when replying to a mail or when\nforwarding a mail." = "In diesem Feld knnen Sie angeben, wo GNUMail.app Ihre Signatur\neinfgen soll, wenn Sie eine Nachricht beantworten oder weiterleiten."; /* File: Bundles/Compose/ComposeView.m:73 */ /* Flag: unmatched */ "When replying to an E-Mail, add the signature to the" = "Beim Beantworten von Nachrichten, Signatur am"; /* File: Bundles/Compose/ComposeView.m:89 */ /* Flag: unmatched */ "Default charset used when sending a message:" = "Standardzeichensatz beim Senden einer Nachricht:"; /* File: Bundles/Compose/ComposeView.m:89 */ /* Flag: unmatched */ "When forwarding an E-Mail, add the signature to the" = "Beim Weiterleiten von Nachrichten, Signatur am"; /* File: Bundles/Filtering/FilterEditorWindow.m:102 */ /* Flag: unmatched */ "Filter type:" = "Filtertyp:"; /* File: Bundles/Filtering/FilterEditorWindow.m:120 */ /* Flag: unmatched */ "Incoming" = "Posteingang"; /* File: Bundles/Filtering/FilterEditorWindow.m:121 */ /* Flag: unmatched */ "Outgoing" = "Postausgang"; /* File: Bundles/Filtering/FilterEditorWindow.m:127 */ /* Flag: unmatched */ "External Program" = "Externes Programm"; /* File: Bundles/Filtering/FilterEditorWindow.m:132 */ /* Flag: unmatched */ "Process with external program:" = "Mit externem Programm bearbeiten:"; /* File: Bundles/Filtering/FilterEditorWindow.m:139 */ /* Flag: unmatched */ "and apply criteria(s)" = "und Kriterien anwenden"; /* File: Bundles/Filtering/FilterEditorWindow.m:144 */ /* Flag: unmatched */ "after" = "nach"; /* File: Bundles/Filtering/FilterEditorWindow.m:145 */ /* Flag: unmatched */ "before" = "vor"; /* File: Bundles/Filtering/FilterEditorWindow.m:149 */ /* Flag: unmatched */ "program execution." = "Programmaufruf."; /* File: Bundles/Filtering/FilterEditorWindow.m:159 */ /* Flag: unmatched */ "Criteria" = "Kriterien"; /* File: Bundles/Filtering/FilterEditorWindow.m:266 */ /* Flag: unmatched */ "Action" = "Aktion"; /* File: Bundles/Filtering/FilterEditorWindow.m:284 */ /* Flag: unmatched */ "Set the color to:" = "Farbe setzen auf:"; /* File: Bundles/Filtering/FilterEditorWindow.m:285 */ /* Flag: unmatched */ "Transfer to mailbox:" = "In Ordner schieben:"; /* File: Bundles/Filtering/FilterEditorWindow.m:286 */ /* Flag: unmatched */ "Do..." = "Tue..."; /* File: Bundles/Filtering/FilterEditorWindow.m:287 */ /* Flag: unmatched */ "Delete the message" = "Nachricht lschen"; /* File: Bundles/Filtering/FilterEditorWindow.m:292 */ /* Flag: unmatched */ "Play Sound" = "Klang abspielen"; /* File: Bundles/Filtering/FilterEditorWindow.m:292 */ /* Flag: unmatched */ "Blue" = "Blau"; /* File: Bundles/Filtering/FilterEditorWindow.m:293 */ /* Flag: unmatched */ "Brown" = "Braun"; /* File: Bundles/Filtering/FilterEditorWindow.m:294 */ /* Flag: unmatched */ "Cyan" = "Cyan"; /* File: Bundles/Filtering/FilterEditorWindow.m:295 */ /* Flag: unmatched */ "Dark Gray" = "Dunkelgrau"; /* File: Bundles/Filtering/FilterEditorWindow.m:296 */ /* Flag: unmatched */ "Green" = "Grn"; /* File: Bundles/Filtering/FilterEditorWindow.m:297 */ /* Flag: unmatched */ "Magenta" = "Magenta"; /* File: Bundles/Filtering/FilterEditorWindow.m:298 */ /* Flag: unmatched */ "Orange" = "Orange"; /* File: Bundles/Filtering/FilterEditorWindow.m:299 */ /* Flag: unmatched */ "Purple" = "Lila"; /* File: Bundles/Filtering/FilterEditorWindow.m:300 */ /* Flag: unmatched */ "Red" = "Rot"; /* File: Bundles/Filtering/FilterEditorWindow.m:301 */ /* Flag: unmatched */ "White" = "Wei"; /* File: Bundles/Filtering/FilterEditorWindow.m:302 */ /* Flag: unmatched */ "Yellow" = "Gelb"; /* File: Bundles/Filtering/FilterEditorWindow.m:310 */ /* Flag: unmatched */ "Bounce to:" = "Ablehnen und zurckschicken an:"; /* File: Bundles/Filtering/FilterEditorWindow.m:311 */ /* Flag: unmatched */ "Forward to:" = "Weiterleiten an:"; /* File: Bundles/Filtering/FilterEditorWindow.m:312 */ /* Flag: unmatched */ "Reply to:" = "Antworten an:"; /* File: Bundles/Filtering/FilterEditorWindow.m:321 */ /* Flag: unmatched */ "Set message" = "Nachricht setzen"; /* File: Bundles/Filtering/FilterEditorWindowController.m:108 */ /* Flag: unmatched */ "Add a filter" = "Neuer Filter"; /* File: Bundles/Filtering/FilterEditorWindowController.m:201 */ /* Flag: unmatched */ "Defining a Coloring filter that uses an external program is a BAD idea.\nThis will slow down drastically the application." = "Einen Farbfilter zu definieren, der ein externes Programm benutzt ist\n keine gute Idee, da dies die Anwendung erheblich verlangsamt."; /* File: Bundles/Filtering/FilterHeaderEditorWindow.m:51 */ /* Flag: unmatched */ "Header" = "Kopfzeile"; /* File: Bundles/Filtering/FilterHeaderEditorWindow.m:72 */ /* Flag: unmatched */ "Header:" = "Kopfzeile:"; /* File: Bundles/Filtering/FilterHeaderEditorWindowController.m:65 */ /* Flag: unmatched */ "Add a header" = "Kopfzeile hinzufgen"; /* File: Bundles/Filtering/FilterMessageWindow.m:45 */ /* Flag: unmatched */ "Text to include before original message:" = "Text vor original Nachricht einfgen:"; /* File: Bundles/Filtering/FilteringView.m:68 */ /* Flag: unmatched */ "In this panel, you can add Filters used by GNUMail.app to perform\nactions when sending or receiving mails." = "In diesem Feld knnen Sie Filter hinzufgen, die GNUMail.app beim\nVersenden oder Empfangen von Nachrichten bercksichtigt."; /* File: Bundles/Filtering/FilteringView.m:73 */ /* Flag: unmatched */ "Rules" = "Regeln"; /* File: Bundles/Filtering/FilteringView.m:134 */ /* Flag: unmatched */ "Duplicate" = "Duplizieren"; /* File: Bundles/Filtering/FilteringViewController.m:388 */ /* Flag: unmatched */ "Are you sure you want to delete this filter?" = "Sind Sie sicher, dass Sie diesen Filter lschen mchten?"; /* File: Bundles/Filtering/FilteringViewController.m:447 */ /* Flag: unmatched */ "Edit a filter" = "Bearbeiten eines Filters"; /* File: Bundles/Filtering/FilteringViewController.m:543 */ /* Flag: unmatched */ "Filtering" = "Filterung"; /* File: Bundles/Fonts/FontsView.m:45 */ /* Flag: unmatched */ "Tag font" = "Etikettschrift"; /* File: Bundles/Fonts/FontsView.m:46 */ /* Flag: unmatched */ "Font used when displaying a message for:" = "Benutzte Schrift beim Anzeigen von Mails fr:"; /* File: Bundles/Fonts/FontsView.m:53 */ /* Flag: unmatched */ "Header name:" = "Kopfzeilenname:"; /* File: Bundles/Fonts/FontsView.m:60 */ /* Flag: unmatched */ "Header font" = "Kopfzeilenschrift"; /* File: Bundles/Fonts/FontsView.m:75 */ /* Flag: unmatched */ "Message font" = "Nachrichtenschrift"; /* File: Bundles/Fonts/FontsView.m:90 */ /* Flag: unmatched */ "Header value:" = "Kopfzeilenwert:"; /* File: Bundles/Fonts/FontsView.m:124 */ /* Flag: unmatched */ "Content of message:" = "Inhalt der Nachricht:"; /* File: Bundles/Fonts/FontsView.m:159 */ /* Flag: unmatched */ "Use fixed-width font for plain text messages" = "Schrift mit fester Breite fr Textnachrichten verwenden"; /* File: Bundles/Fonts/FontsView.m:165 */ /* Flag: unmatched */ "Plain text font:" = "Einfache Textschrift:"; /* File: Bundles/Fonts/FontsView.m:248 */ /* Flag: unmatched */ "This is an example..." = "Dies ist ein Beispiel..."; /* File: Bundles/Fonts/FontsViewController.m:123 */ /* Flag: unmatched */ "Fonts" = "Schriften"; /* File: Bundles/Fonts/FontsViewController.m:135 */ /* Flag: unmatched */ "Font preview for the header value:" = "Schrift-Vorschau fr Kopfzeilenwert:"; /* File: Bundles/Fonts/FontsViewController.m:142 */ /* Flag: unmatched */ "Font preview for the content of message:" = "Schrift-Vorschau fr Nachrichteninhalt:"; /* File: Bundles/Fonts/FontsViewController.m:150 */ /* Flag: unmatched */ "Font preview for the message list:" = "Schrift-Vorschau fr Nachrichtenliste:"; /* File: Bundles/Fonts/FontsViewController.m:158 */ /* Flag: unmatched */ "Font preview for the plain text:" = "Schrift-Vorschau fr einfachen Text:"; /* File: Bundles/MIME/MIMEView.m:65 */ /* Flag: unmatched */ "In this panel, you can add MIME types used by GNUMail.app to view\nor perform actions on attachments based on their Content-Type." = "Hier knnen Sie MIME Typen hinzufgen, die GNUMail.app benutzt, um\nAnhnge darzustellen oder sie gem ihres \"Content-Type\" zu bearbeiten."; /* File: Bundles/MIME/MIMEView.m:67 */ /* Flag: unmatched */ "File extension(s)" = "Dateiendung(en)"; /* File: Bundles/MIME/MIMEView.m:113 */ /* Flag: unmatched */ "Import from mailcap" = "Import aus mailcap"; /* File: Bundles/MIME/MIMEViewController.m:160 */ /* Flag: unmatched */ "Are you sure you want to delete this MIME type entry?" = "Sind Sie sicher, da Sie diesen MIME-Typ Eintrag lschen wollen?"; /* File: Bundles/MIME/MIMEViewController.m:273 */ /* Flag: unmatched */ "MIME" = "MIME"; /* File: Bundles/MIME/MailcapWindow.m:62 */ /* Flag: unmatched */ "Command" = "Kommando"; /* File: Bundles/MIME/MailcapWindowController.m:66 */ /* Flag: unmatched */ "Import from mailcap file" = "Aus mailcap-Datei importieren"; /* File: Bundles/MIME/MailcapWindowController.m:109 */ /* Flag: unmatched */ "Mailcap Import Error!" = "Mailcap-Importfehler!"; /* File: Bundles/MIME/MailcapWindowController.m:110 */ /* Flag: unmatched */ "You must select at least one mailcap item to import!" = "Sie mssen mind. einen Eintrag zum Import auswhlen!"; /* File: Bundles/MIME/MimeTypeEditorWindow.m:56 */ /* Flag: unmatched */ "MIME type (ex: image/jpeg):" = "MIME-Typ (z.B.: image/jpeg):"; /* File: Bundles/MIME/MimeTypeEditorWindow.m:63 */ /* Flag: unmatched */ "File extensions (ex: jpeg,jpg):" = "Dateiendungen (z.B.: jpeg,jpg):"; /* File: Bundles/MIME/MimeTypeEditorWindow.m:77 */ /* Flag: unmatched */ "View:" = "Ansicht:"; /* File: Bundles/MIME/MimeTypeEditorWindow.m:97 */ /* Flag: unmatched */ "Display if possible (as icon if it is not possible)" = "Anzeigen, falls mglich (als Symbol, wenn nicht)"; /* File: Bundles/MIME/MimeTypeEditorWindow.m:100 */ /* Flag: unmatched */ "Always display as icon" = "Immer als Symbol anzeigen"; /* File: Bundles/MIME/MimeTypeEditorWindow.m:105 */ /* Flag: unmatched */ "Action:" = "Aktion:"; /* File: Bundles/MIME/MimeTypeEditorWindow.m:126 */ /* Flag: unmatched */ "Prompt save panel" = "Speichern-Dialog aufrufen"; /* File: Bundles/MIME/MimeTypeEditorWindow.m:130 */ /* Flag: unmatched */ "Open with external program:" = "Mit externem Programm ffnen:"; /* File: Bundles/MIME/MimeTypeEditorWindow.m:140 */ /* Flag: unmatched */ "Choose" = "Whlen"; /* File: Bundles/MIME/MimeTypeEditorWindow.m:148 */ /* Flag: unmatched */ "Needs a terminal for the external program" = "Bentigt ein Terminal fr das externe Programm"; /* File: Bundles/MIME/MimeTypeEditorWindow.m:152 */ /* Flag: unmatched */ "Please choose an icon to represent this MIME type (tiff file only):" = "Bitte ordnen Sie diesem MIME-Typ ein Symbol zu (Tiff-Datei):"; /* File: Bundles/MIME/MimeTypeEditorWindowController.m:74 */ /* Flag: unmatched */ "Add a MIME type" = "MIME-Typ hinzufgen"; /* File: Bundles/MIME/MimeTypeEditorWindowController.m:256 */ /* Flag: unmatched */ "Edit a MIME type" = "MIME-Typ bearbeiten"; /* File: Bundles/Mailboxes/MailboxesView.m:147 */ /* Flag: unmatched */ "Reuse the mail window when selecting a folder" = "Postfenster bei Ordnerauswahl weiterverwenden."; /* File: Bundles/PGP/PGPController.m:197 */ /* Flag: unmatched */ "Encrypt" = "Verschlsseln"; /* File: Bundles/PGP/PGPController.m:222 */ /* Flag: unmatched */ "Sign" = "Signieren"; /* File: Bundles/PGP/PGPController.m:545 */ /* Flag: unmatched */ "\nThe supplied passphrase was wrong or not given" = "\nDas bermittelte Mantra war falsch oder nicht angegeben"; /* File: Bundles/PGP/PGPController.m:551 */ /* Flag: unmatched */ "\nWrong passphrase (or something else)" = "\nFalsches Mantra (oder etwas anderes)"; /* File: Bundles/PGP/PGPController.m:781 */ /* Flag: unmatched */ "\nYour key is expired. You must generate a new one\nbefore trying to send again any signed or encrypted messages." = "\nIhr Schlssel ist abgelaufen. Sie mssen einen neuen generieren,\n bevor Sie signierte oder verschlsstele Nachrichten verschicken wollen."; /* File: Bundles/PGP/PGPController.m:788 */ /* Flag: unmatched */ "\nIt was NOT possible to CHECK the signature.\nThis may be caused by a missing public key or an unsupported algorithm." = "\nDie Signature konnte NICHT BERPRFT werden.\nDie Ursache knnte ein fehlender Public Key oder ein nicht untersttzter Algorithmus sein."; /* File: Bundles/PGP/PGPController.m:788 */ /* Flag: unmatched */ "\nThe signature has NOT been VERIFIED okay." = "\nDie Signatur konnte NICHT VERIFIZIERT werden."; /* File: Bundles/PGP/PGPController.m:974 */ /* Flag: unmatched */ "Decryption failed due the following reason(s):\n" = "Entschlsselung fehlgeschlagen wegen folgender Grnde:\n"; /* File: Bundles/PGP/PGPController.m:1369 */ /* Flag: unmatched */ "Authentication failed due the following reason(s):\n" = "Authentifizierung fehlgeschlagen wegen folgender Grnde:\n"; /* File: Bundles/PGP/PGPController.m:1778 */ /* Flag: unmatched */ "Encryption failed due the following reason(s):\n" = "Verschlsselung fehlgeschlagen wegen folgender Grnde:\n"; /* File: Bundles/PGP/PGPController.m:1984 */ /* Flag: unmatched */ "Passphrase for %@" = "Mantra fr %@"; /* File: Bundles/PGP/PGPView.m:75 */ /* Flag: unmatched */ "GPG/PGP executable path:" = "GPG/PGP-Programmpfad:"; /* File: Bundles/PGP/PGPView.m:86 */ /* Flag: unmatched */ "User E-Mail address:" = "Benutzer-EMailadresse:"; /* File: Bundles/PGP/PGPView.m:99 */ /* Flag: unmatched */ "Use FROM E-Mail address for signing" = "\"Von:\" EMailadresse zum signieren benutzen"; /* File: Bundles/PGP/PGPView.m:113 */ /* Flag: unmatched */ "Always use Multipart PGP style" = "Immer Multipart PGP benutzen"; /* File: Bundles/PGP/PGPView.m:123 */ /* Flag: unmatched */ "Remove passphrase from cache after" = "Mantra aus Cache entfernen nach"; /* File: Bundles/PGP/PGPViewController.m:69 */ /* Flag: unmatched */ "Version: %@" = "Version: %@"; /* File: Bundles/PGP/PGPViewController.m:113 */ /* Flag: unmatched */ "PGP" = "PGP"; /* File: Bundles/Personal/NewPersonalProfilePanel.m:59 */ /* Flag: unmatched */ "Please enter the name of the new profile:" = "Name des neuen Profils:"; /* File: Bundles/Personal/NewPersonalProfilePanelController.m:60 */ /* Flag: unmatched */ "New Personal Profile" = "Neues Persnlichkeitsprofil"; /* File: Bundles/Personal/PersonalView.m:183 */ /* Flag: unmatched */ "Show Wait Panels (this might slow down the application)" = "Wartetafeln anzeigen (mgliche Programmverlangsamung)"; /* File: Bundles/Personal/PersonalViewController.m:124 */ /* Flag: unmatched */ "This profile name already exists. Please choose another name." = "Dieser Profilname existiert bereits. Bitte whlen Sie einen anderen Namen."; /* File: Bundles/Personal/PersonalViewController.m:256 */ /* Flag: unmatched */ "You must have at least one defined personal profile at any time." = "Sie mssen immer mindestens ein Personenprofil behalten."; /* File: Bundles/Personal/PersonalViewController.m:267 */ /* Flag: unmatched */ "Are you sure you want to delete the %@ personal profile?" = "Sind Sie sicher, dass Sie das Personenprofil %@ lschen wollen?"; /* File: Bundles/Personal/PersonalViewController.m:356 */ /* Flag: unmatched */ "Personal" = "Persnliches"; /* File: Bundles/Quoting/QuotingViewController.m:92 */ /* Flag: unmatched */ "Quoting" = "Zitieren"; /* File: Bundles/Receiving/IMAPViewController.m:49 */ /* Flag: unmatched */ "All Folders" = "Alle Ordner"; /* File: Bundles/Receiving/IMAPViewController.m:179 */ /* Flag: unmatched */ "Y" = "J"; /* File: Bundles/Receiving/IMAPViewController.m:279 */ /* Flag: unmatched */ "Authentication error with the IMAP server." = "Authentifizierungsfehler mit dem IMAP-Server."; /* File: Bundles/Receiving/IMAPViewController.m:299 */ /* Flag: unmatched */ "An error occured while listing the folders on this IMAP server." = "Ein Fehler trat beim Auflisten der Ordner auf diesem IMAP-Server auf."; /* File: Bundles/Receiving/IMAPViewController.m:341 */ /* Flag: unmatched */ "You are already subscribed to this IMAP folder." = "Sie haben diesen IMAP-Ordner bereits abonniert."; /* File: Bundles/Receiving/IMAPViewController.m:356 */ /* Flag: unmatched */ "You cannot subscribe to this folder." = "Sie knnen diesen Ordner nicht abonnieren."; /* File: Bundles/Receiving/IMAPViewController.m:372 */ /* Flag: unmatched */ "An error occured while subscribing to folder:\n%@." = "Beim Abonnieren des Ordners trat ein Fehler auf:\n%@."; /* File: Bundles/Receiving/IMAPViewController.m:402 */ /* Flag: unmatched */ "You are already unsubscribed from this IMAP folder." = "Diesen IMAP-Ordner haben Sie bereits abbestellt."; /* File: Bundles/Receiving/IMAPViewController.m:434 */ /* Flag: unmatched */ "An error occured while unsubscribing to folder:\n%@." = "Beim Beenden des Ordnerabonnements trat ein Fehler auf:\n%@."; /* File: Bundles/Receiving/POP3View.m:78 */ /* Flag: unmatched */ "Download messages from this server into mailbox:" = "Nachrichten von diesem Server in Postfach herunterladen:"; /* File: Bundles/Receiving/ReceiveView.m:85 */ /* Flag: unmatched */ "Server type:" = "Servertyp:"; /* File: Bundles/Receiving/ReceivingView.m:58 */ /* Flag: unmatched */ "Retrieve mail (for POP3 accounts and local mail spool file)" = "Mail abrufen (fr POP3-Konten und lokale Mailspool-Datei)"; /* File: Bundles/Receiving/ReceivingView.m:75 */ /* Flag: unmatched */ "In this panel, you can configure parameters activated (or not) when\nreceiving new mails. For example, you can play a sound of your\nchoice when a new mail is received." = "In diesem Feld knnen Sie Parameter fr den Empfang von Nachrichten\naktivieren oder deaktivieren. Zum Beispiel knnen Sie einen Klang Ihrer\nWahl abspielen, wenn eine neue Nachricht empfangen wird."; /* File: Bundles/Receiving/ReceivingView.m:77 */ /* Flag: unmatched */ "Manually" = "Manuell"; /* File: Bundles/Receiving/ReceivingView.m:81 */ /* Flag: unmatched */ "Automatically every" = "Automatisch alle"; /* File: Bundles/Receiving/ReceivingView.m:81 */ /* Flag: unmatched */ "Show alert panel for received and transferred messages" = "Meldetafel fr empfangene und bertragene Nachrichten anzeigen"; /* File: Bundles/Receiving/ReceivingView.m:87 */ /* Flag: unmatched */ "Show No new messages alert panel" = "'Neue Nachrichten'-Tafel nicht anzeigen"; /* File: Bundles/Receiving/ReceivingView.m:93 */ /* Flag: unmatched */ "Automatically open mailboxes for received and transferred messages" = "Automatisch Ordner ffnen fr empfangene und bertrag. Nachrichten"; /* File: Bundles/Receiving/ReceivingView.m:102 */ /* Flag: unmatched */ "Incoming mail servers" = "Eingehende Mailserver"; /* File: Bundles/Receiving/ReceivingView.m:103 */ /* Flag: unmatched */ "Play sound" = "Klang spielen"; /* File: Bundles/Receiving/ReceivingView.m:107 */ /* Flag: unmatched */ "Incoming Servers" = "Eingehende Server"; /* File: Bundles/Receiving/ReceivingView.m:148 */ /* Flag: unmatched */ "Transfer from mail spool file" = "Aus Mailspool-Datei bertragen"; /* File: Bundles/Receiving/ReceivingView.m:181 */ /* Flag: unmatched */ "Show Filter alert panel (for received and transferred messages)" = "Filter-Report anzeigen (fr empfangene und bertragene Nachrichten)"; /* File: Bundles/Receiving/ReceivingViewController.m:137 */ /* Flag: unmatched */ "%@ [UNIX]" = "%@ [UNIX]"; /* File: Bundles/Receiving/ReceivingViewController.m:186 */ /* Flag: unmatched */ "To edit this account, you must first close the connection with the server." = "Um dieses Konto zu bearbeiten, mssen Sie zuerst die Verbindung zu diesem Server beenden."; /* File: Bundles/Receiving/ReceivingViewController.m:232 */ /* Flag: unmatched */ "To delete this account, you must first close the connection with the server." = "Um dieses Konto zu lschen, versuchen Sie zuerst die Verbindung zu diesem Server zu beenden."; /* File: Bundles/Receiving/ReceivingViewController.m:241 */ /* Flag: unmatched */ "Are you sure you want to delete this receiving server entry?" = "Sind Sie sicher, dass Sie diesen eingehenden Server-Eintrag lschen wollen?"; /* File: Bundles/Receiving/ReceivingViewController.m:312 */ /* Flag: unmatched */ "Receiving" = "Empfang"; /* File: Bundles/Receiving/ReceivingWindow.m:141 */ /* Flag: unmatched */ "Verify for new mail on startup" = "Beim Starten auf neue Mails prfen"; /* File: Bundles/Receiving/ReceivingWindow.m:150 */ /* Flag: unmatched */ "Use secure connection (SSL)" = "Sichere Verbindung (SSL) verwenden"; /* File: Bundles/Receiving/ReceivingWindowController.m:88 */ /* Flag: unmatched */ "Receiving preferences" = "Empfangseinstellungen"; /* File: Bundles/Receiving/UNIXView.m:73 */ /* Flag: unmatched */ "Download messages from this spool file into mailbox:" = "Nachrichten aus dieser Spooldatei in Postfach laden:"; /* File: Bundles/Sending/SendingView.m:49 */ /* Flag: unmatched */ "Delivery methods" = "Versandarten"; /* File: Bundles/Sending/SendingView.m:54 */ /* Flag: unmatched */ "Method" = "Methode"; /* File: Bundles/Sending/SendingView.m:75 */ /* Flag: unmatched */ "In this panel, you can specify which messages headers will be\nautomatically added when sending mails. Usually, most users will\nignore this feature." = "In diesem Feld knnen Sie die Kopfzeilen angeben, die beim\nNachrichtenversand automatisch hinzugefgt werden. Im Normalfall\nwerden die meisten Benutzer dieses Feature ignorieren."; /* File: Bundles/Sending/SendingView.m:111 */ /* Flag: unmatched */ "Additional Outgoing Headers" = "Zustzliche ausgehende Kopfzeilen"; /* File: Bundles/Sending/SendingView.m:116 */ /* Flag: unmatched */ "Key" = "Schlssel"; /* File: Bundles/Sending/SendingView.m:152 */ /* Flag: unmatched */ "Value:" = "Wert:"; /* File: Bundles/Sending/SendingViewController.m:351 */ /* Flag: unmatched */ "Are you sure you want to delete this transport method?" = "Sind Sie sicher, dass Sie diese Transportmethode lschen mchten?"; /* File: Bundles/Sending/SendingViewController.m:387 */ /* Flag: unmatched */ "Sending" = "Versand"; /* File: Bundles/Sending/TransportMethodEditorWindow.m:70 */ /* Flag: unmatched */ "Transport method:" = "Transportmethode:"; /* File: Bundles/Sending/TransportMethodEditorWindow.m:85 */ /* Flag: unmatched */ "Mailer:" = "Mailer:"; /* File: Bundles/Sending/TransportMethodEditorWindow.m:99 */ /* Flag: unmatched */ "Host:" = "Host:"; /* File: Bundles/Sending/TransportMethodEditorWindow.m:117 */ /* Flag: unmatched */ "Authenticate using" = "Authentifizieren mit"; /* File: Bundles/Sending/TransportMethodEditorWindow.m:124 */ /* Flag: unmatched */ "Most secure" = "Am sichersten"; /* File: Bundles/Sending/TransportMethodEditorWindow.m:128 */ /* Flag: unmatched */ "Supported mechanisms" = "Untersttzte Mechanismen"; /* File: Bundles/Sending/TransportMethodEditorWindow.m:159 */ /* Flag: unmatched */ "Associated personal profile:" = "Zugewiesenes Profil:"; /* File: Bundles/Sending/TransportMethodEditorWindowController.m:80 */ /* Flag: unmatched */ "Add a transport method" = "Neue Transportmethode"; /* File: Bundles/Sending/TransportMethodEditorWindowController.m:328 */ /* Flag: unmatched */ "Edit a transport method" = "Transportmethode bearbeiten"; /* File: Bundles/Viewing/ViewingView.m:65 */ /* Flag: unmatched */ "Hide deleted messages on startup" = "Gelschte Mails beim Start ausblenden"; /* File: Bundles/Viewing/ViewingView.m:71 */ /* Flag: unmatched */ "Hide read messages on startup" = "Gelesene Mails beim Start ausblenden"; /* File: Bundles/Viewing/ViewingView.m:74 */ /* Flag: unmatched */ "In this panel, you can specify some message viewing options and\nalso which table colums you want to see in the message list." = "In diesem Feld k\u0f6nnen Sie Optionen fr die Nachrichtenansicht setzen und\nauch die Tabellenspalten, die Sie in der Nachrichtenliste sehen wollen."; /* File: Bundles/Viewing/ViewingView.m:77 */ /* Flag: unmatched */ "Highlight URLs in message content" = "URLs in Nachrichten hervorheben"; /* File: Bundles/Viewing/ViewingView.m:90 */ /* Flag: unmatched */ "Table columns" = "Tabellenspalten"; /* File: Bundles/Viewing/ViewingView.m:142 */ /* Flag: unmatched */ "Shown headers while viewing a mail" = "Gezeigte Kopfzeilen beim Lesen von Nachrichten"; /* File: Bundles/Viewing/ViewingView.m:148 */ /* Flag: unmatched */ "Show all headers" = "Alle Kopfzeilen anzeigen"; /* File: Bundles/Viewing/ViewingView.m:164 */ /* Flag: unmatched */ "To specify the list of visible headers when viewing a message, click here" = "Zur Festlegung sichtbarer Kopfzeilen bei der Mail-Ansicht, klicke"; /* File: Bundles/Viewing/ViewingView.m:166 */ /* Flag: unmatched */ "Defaults" = "Standard"; /* File: Bundles/Viewing/ViewingView.m:179 */ /* Flag: unmatched */ "Double-clicking in message list opens" = "Doppelklicken in Nachr.-Liste"; /* File: Bundles/Viewing/ViewingView.m:184 */ /* Flag: unmatched */ "opens reply editor" = "ffnet Antwortfenster"; /* File: Bundles/Viewing/ViewingView.m:185 */ /* Flag: unmatched */ "opens message in new window" = "ffnet die Nachricht in neuem Fenster"; /* File: Bundles/Viewing/ViewingView.m:186 */ /* Flag: unmatched */ "does nothing" = "tut nichts"; /* File: Bundles/Viewing/ViewingView.m:202 */ /* Flag: unmatched */ "Shown Headers" = "Gezeigte Kopfzeilen"; /* File: Bundles/Viewing/ViewingViewController.m:363 */ /* Flag: unmatched */ "Viewing" = "Ansicht"; /* File: ConsoleWindow.m:79 */ /* Flag: untranslated */ "Current Activities" = "Current Activities"; /* File: ConsoleWindow.m:129 */ /* Flag: unmatched */ "Task Queue" = "Auftrags-Warteschlange"; /* File: ConsoleWindow.m:136 */ /* Flag: unmatched */ "Description" = "Beschreibung"; /* File: ConsoleWindow.m:165 */ /* Flag: untranslated */ "Activities" = "Activities"; /* File: ConsoleWindow.m:177 */ /* Flag: unmatched */ "Run now" = "Starten"; /* File: ConsoleWindow.m:211 */ /* Flag: unmatched */ "Tasks" = "Auftrge"; /* File: ConsoleWindowController.m:73 */ /* Flag: unmatched */ "No task" = "Kein Auftrag"; /* File: ConsoleWindowController.m:161 */ /* Flag: unmatched */ "Run error!" = "Fehler im Ablauf!"; /* File: ConsoleWindowController.m:162 */ /* Flag: unmatched */ "The task is already running!" = "Der Auftrag luft bereits!"; /* File: ConsoleWindowController.m:265 */ /* Flag: unmatched */ "You can't suspend a running task. Stop it first." = "Ein laufender Auftrag kann nicht unterbrochen werden. Bitte zuerst stoppen."; /* File: ConsoleWindowController.m:278 */ /* Flag: untranslated */ "Save error!" = "Save error!"; /* File: ConsoleWindowController.m:362 */ /* Flag: unmatched */ "Sending - %@ - %@..." = "Sende - %@ - %@..."; /* File: ConsoleWindowController.m:366 */ /* Flag: unmatched */ "In queue - Send - %@ - %@" = "In Sende-Warteschlange - %@ - %@"; /* File: ConsoleWindowController.m:373 */ /* Flag: unmatched */ "Receiving %@..." = "Empfange %@..."; /* File: ConsoleWindowController.m:377 */ /* Flag: unmatched */ "In queue - Receive - %@" = "In Empfangs-Warteschlange - %@"; /* File: ConsoleWindowController.m:400 */ /* Flag: untranslated */ "IMAP - %@" = "IMAP - %@"; /* File: ConsoleWindowController.m:404 */ /* Flag: untranslated */ "POP3 - %@" = "POP3 - %@"; /* File: ConsoleWindowController.m:408 */ /* Flag: untranslated */ "Mailer - %@" = "Mailer - %@"; /* File: ConsoleWindowController.m:413 */ /* Flag: untranslated */ "SMTP - %@" = "SMTP - %@"; /* File: ConsoleWindowController.m:427 */ /* Flag: untranslated */ "Received message %d of %d" = "Received message %d of %d"; /* File: ConsoleWindowController.m:432 */ /* Flag: untranslated */ "Got status for mailbox %d of %d" = "Got status for mailbox %d of %d"; /* File: ConsoleWindowController.m:436 */ /* Flag: untranslated */ "Completed %0.1fKB of %0.1fKB." = "Completed %0.1fKB of %0.1fKB."; /* File: ConsoleWindowController.m:441 */ /* Flag: untranslated */ "Suspended - Scheduled to run at %@" = "Suspended - Scheduled to run at %@"; /* File: ConsoleWindowController.m:466 */ /* Flag: untranslated */ "%H:%M:%S.%F" = "%H:%M:%S.%F"; /* File: EditWindowController.m:364 */ /* Flag: unmatched */ "Sending the message. Please wait." = "Verschicke Nachricht. Bitte warten."; /* File: EditWindowController.m:526 */ /* Flag: untranslated */ "Unable to create a valid message for redirection.\nYou have to specify at least one To recipient." = "Unable to create a valid message for redirection.\nYou have to specify at least one To recipient."; /* File: EditWindowController.m:723 */ /* Flag: untranslated */ "(no subject)" = "(no subject)"; /* File: EditWindowController.m:883 */ /* Flag: unmatched */ "You must define a recipient in the field \"To\"." = "Sie mssen mindestens einen Empfnger im Feld \"An\" eintragen."; /* File: EditWindowController.m:2099 */ /* Flag: untranslated */ "The file %@ is not readable and has not been attached to this E-Mail." = "The file %@ is not readable and has not been attached to this E-Mail."; /* File: EditWindowController.m:2549 */ /* Flag: untranslated */ "Redirecting the following message...." = "Redirecting the following message...."; /* File: EditWindowToolbar.m:1 */ /* Flag: untranslated */ "Send Message" = "Send Message"; /* File: EditWindowToolbar.m:1 */ /* Flag: untranslated */ "Insert Attachment" = "Insert Attachment"; /* File: EditWindowToolbar.m:1 */ /* Flag: untranslated */ "Add Bcc Field" = "Add Bcc Field"; /* File: EditWindowToolbar.m:1 */ /* Flag: untranslated */ "Add Cc Field" = "Add Cc Field"; /* File: FindWindow.m:62 */ /* Flag: unmatched */ "Replace with:" = "Ersetzen durch:"; /* File: FindWindow.m:94 */ /* Flag: unmatched */ "Summaries" = "Zusammenfassungen"; /* File: FindWindow.m:134 */ /* Flag: unmatched */ "Replace" = "Ersetzen"; /* File: FindWindow.m:139 */ /* Flag: unmatched */ "Replace & Find" = "Ersetzen & Finden"; /* File: FindWindowController.m:120 */ /* Flag: untranslated */ "Searching for %@..." = "Searching for %@..."; /* File: GNUMail+TaskManager.m:127 */ /* Flag: unmatched */ "%@ authentication failed for %@." = "%@ Authentifizierung fr %@ ist fehlgeschlagen."; /* File: GNUMail.m:486 */ /* Flag: untranslated */ "Unable to check for new software." = "Unable to check for new software."; /* File: GNUMail.m:487 */ /* Flag: untranslated */ "Check failed due to the following reason:\n%@" = "Check failed due to the following reason:\n%@"; /* File: GNUMail.m:834 */ /* Flag: unmatched */ "Show Filtered Headers" = "Gefilterte Kopfzeilen anzeigen"; /* File: GNUMail.m:925 */ /* Flag: unmatched */ "Show Sizes" = "Gre zeigen"; /* File: GNUMail.m:1104 */ /* Flag: unmatched */ "Info Panel..." = "Kurzinformationen..."; /* File: GNUMail.m:1175 */ /* Flag: unmatched */ "Select All Messages" = "Alle Nachrichten auswhlen"; /* File: GNUMail.m:1186 */ /* Flag: unmatched */ "Show RAW Source" = "PUREN Quelltext anzeigen"; /* File: GNUMail.m:1208 */ /* Flag: unmatched */ "Save Text from Message" = "Text der Nachricht speichern"; /* File: GNUMail.m:1230 */ /* Flag: unmatched */ "Bounce" = "Ablehnen"; /* File: GNUMail.m:1247 */ /* Flag: unmatched */ "New" = "Neu"; /* File: GNUMail.m:1259 */ /* Flag: unmatched */ "Addresses..." = "Adressen..."; /* File: GNUMail.m:1322 */ /* Flag: unmatched */ "Find Panel..." = "Suchen..."; /* File: GNUMail.m:1360 */ /* Flag: unmatched */ "Setup Printer" = "Drucker einrichten"; /* File: GNUMail.m:1552 */ /* Flag: unmatched */ "Important!" = "Wichtig!"; /* File: GNUMail.m:1660 */ /* Flag: untranslated */ "Information" = "Information"; /* File: GNUMail.m:1661 */ /* Flag: untranslated */ "Use the same directory (%@) to save all other attachments? (override the files with the same name)." = "Benutze das selbe Verzeichnis (%@) um alle anderen Anhnge zu sichern ? (berschreibe Dateien mit gleichem Namen)."; /* File: GNUMail.m:2027 */ /* Flag: unmatched */ "Show Normal Display" = "Normale Anzeige"; /* File: GNUMail.m:2037 */ /* Flag: unmatched */ "The inbox does not exist!" = "Posteingang (Inbox) existiert nicht!"; /* File: GNUMail.m:2330 */ /* Flag: untranslated */ "There are unsent Compose window." = "There are unsent Compose window."; /* File: GNUMail.m:2331 */ /* Flag: untranslated */ "Review Unsent" = "Review Unsent"; /* File: GNUMail.m:2608 */ /* Flag: untranslated */ "Text from Message" = "Text aus Nachricht"; /* File: GNUMail.m:2678 */ /* Flag: untranslated */ "New Viewer Window" = "Neues Anzeigefenster"; /* File: GNUMail.m:2769 */ /* Flag: untranslated */ "Columns" = "Spalten"; /* File: GNUMail.m:2779 */ /* Flag: untranslated */ "Flags" = "Flags"; /* File: GNUMail.m:2785 */ /* Flag: untranslated */ "Number" = "Nummer"; /* File: GNUMail.m:2938 */ /* Flag: untranslated */ "%@ exists but it is a file not a directory.\nThe application will now terminate." = "%@ existiert, ist jedoch eine Datei und kein Verzeichnis.\nDie Anwendung wird beendet."; /* File: GNUMail.m:2953 */ /* Flag: untranslated */ "Could not create directory: %@\nThe application will now terminate." = "Konnte Verzeichnis nicht erstellen: %@\nDie Anwendung wird beendet."; /* File: GNUMail.m:3175 */ /* Flag: untranslated */ "Your name" = "Dein Name"; /* File: GNUMail.m:3176 */ /* Flag: untranslated */ "Your E-Mail address" = "Deine E-Mail Adresse"; /* File: GNUMail.m:3460 */ /* Flag: unmatched */ "Failed to initialize bundle at path %@" = "Fehler beim Initialisieren des Bundles %@"; /* File: GNUMail.m:3897 */ /* Flag: untranslated */ "%d unread messages" = "%d ungelesene Nachrichten"; /* File: GNUMail.m:3904 */ /* Flag: untranslated */ "%d deleted messages" = "%d gelschte Nachrichten"; /* File: GNUMail.m:3913 */ /* Flag: untranslated */ "New Message" = "Neue Nachricht"; /* File: GNUMail.m:4051 */ /* Flag: untranslated */ "Show Read" = "Zeige gelesene"; /* File: GNUMail.m:4068 */ /* Flag: untranslated */ "Default" = "Vorgabe"; /* File: GNUMail.m:4388 */ /* Flag: untranslated */ "Update now" = "Jetzt aktualisieren"; /* File: GNUMail.m:4389 */ /* Flag: untranslated */ "Update later" = "Spter aktualisieren"; /* File: LocalInboxWindowController.m:247 */ /* Flag: unmatched */ "Fetching messages from the server. Please wait." = "Rufe Nachrichten vom Server ab. Bitte warten."; /* File: LocalInboxWindowController.m:334 */ /* Flag: unmatched */ "%d messages have been transfered to the following folders by filters:\n%@" = "%d Nachrichten wurden von Filtern in die folgenden Ordner bertragen:\n%@"; /* File: LocalInboxWindowController.m:348 */ /* Flag: unmatched */ "There are no new messages on %@." = "Keine neuen Nachrichten auf %@."; /* File: MailWindowController.m:143 */ /* Flag: untranslated */ "F" = "F"; /* File: MailWindowController.m:690 */ /* Flag: unmatched */ "No Messages!" = "Keine Nachrichten!"; /* File: MailWindowController.m:691 */ /* Flag: unmatched */ "There are no messages in this Mailbox!" = "Keine Nachrichten in diesem Postfach!"; /* File: MailWindowController.m:912 */ /* Flag: untranslated */ "Opening the mailbox..." = "ffne Postfach..."; /* File: MailWindowController.m:1107 */ /* Flag: unmatched */ "Closing the mailbox. Please wait." = "Schliee Postfach. Bitte warten."; /* File: MailWindowController.m:1559 */ /* Flag: untranslated */ "GNUMail.app is currently receiving E-Mails.\nPlease wait." = "GNUMail.app empfngt zur Zeit E-Mails\nBitte warten."; /* File: MailWindowController.m:1701 */ /* Flag: untranslated */ "Closed local folder %@." = "Lokalen Ordner %@ geschlossen."; /* File: MailWindowController.m:1705 */ /* Flag: untranslated */ "Closed IMAP folder %@ on %@." = "IMAP Ordner %@ auf %@."; /* File: MailWindowController.m:1878 */ /* Flag: untranslated */ "Copy To" = "Kopieren nach"; /* File: MailWindowController.m:1892 */ /* Flag: untranslated */ "Move To" = "Verschieben nach"; /* File: MailWindowController.m:2760 */ /* Flag: untranslated */ "Virtual Folder - %@" = "Virtueller Ordner - %@"; /* File: MailWindowToolbar.m:95 */ /* Flag: untranslated */ "Get New Messages" = "Neue Nachrichten abholen"; /* File: MailWindowToolbar.m:105 */ /* Flag: untranslated */ "Show Mailboxes" = "Postfcher anzeigen"; /* File: MailWindowToolbar.m:114 */ /* Flag: untranslated */ "Compose New Message" = "Neue Nachricht erstellen"; /* File: MailWindowToolbar.m:151 */ /* Flag: untranslated */ "Find Messages" = "Nachrichten suchen"; /* File: MailboxManager.m:83 */ /* Flag: unmatched */ "Move" = "Verschieben"; /* File: MailboxManager.m:91 */ /* Flag: unmatched */ "the selected message" = "der ausgewhlten Mail"; /* File: MailboxManager.m:98 */ /* Flag: unmatched */ "Open this folder on startup" = "Ordner beim Starten ffnen"; /* File: MailboxManagerController.m:217 */ /* Flag: unmatched */ "All Mailboxes" = "Alle Postfcher"; /* File: MailboxManagerController.m:284 */ /* Flag: untranslated */ "%d (%d unread)" = "%d (%d unread)"; /* File: MailboxManagerController.m:551 */ /* Flag: unmatched */ "You must select a valid mailbox to transfer this E-Mail to!" = "Sie mssen ein gltiges Postfach auswhlen, um diese EMail dorthin zu transferieren"; /* File: MailboxManagerController.m:788 */ /* Flag: unmatched */ "You can't delete an opened mailbox! Close it first." = "Sie knnen keinen offenes Postfach lschen! Bitte zuerst schlieen."; /* File: MailboxManagerController.m:808 */ /* Flag: unmatched */ "The mailbox delete operation failed." = "Das Lschen des Postfachs schlug fehl."; /* File: MailboxManagerController.m:846 */ /* Flag: unmatched */ "You must select a valid mailbox to rename!" = "Sie mssen ein gltiges Postfach zum Umbenennen auswhlen!"; /* File: MailboxManagerController.m:873 */ /* Flag: unmatched */ "Error while renaming!" = "Fehler beim Umbenennen!"; /* File: MailboxManagerController.m:874 */ /* Flag: unmatched */ "You can't rename an opened mailbox! Close it first." = "Sie knnen kein geffnetes Postfach umbenennen! Bitte zuerst schlieen."; /* File: MailboxManagerController.m:965 */ /* Flag: unmatched */ "This local mailbox (%@) is already open!" = "Das lokale Postfach (%@) ist bereits geffnet!"; /* File: MailboxManagerController.m:977 */ /* Flag: unmatched */ "Opening the mailbox. Please wait." = "ffne Postfach. Bitte warten."; /* File: MailboxManagerController.m:1046 */ /* Flag: untranslated */ "You can't delete your default %@ mailbox. Use the Mailboxes tab in the\nAccount Preferences panel to change it before trying again." = "Du kannst das Vorgabepostfach %@ nicht lschen. ndere das Vorgabe Postfach in den Kontoeinstellungen, bevor Du es noch einmal versuchst."; /* File: MailboxManagerController.m:1104 */ /* Flag: unmatched */ "Connecting to the IMAP server. Please wait." = "Verbinde zum IMAP Server. Bitte warten."; /* File: MailboxManagerController.m:1115 */ /* Flag: unmatched */ "You cannot transfer messages inside the same mailbox!" = "Sie knnen keine Nachrichten innerhalb des selben Postfachs transferieren!"; /* File: MailboxManagerController.m:1136 */ /* Flag: unmatched */ "You cannot transfer messages inside this mailbox!" = "Sie knnen keine Nachrichten innerhalb dseses Postfachs transferieren!"; /* File: MailboxManagerController.m:1620 */ /* Flag: unmatched */ "Please enter the new name of the Mailbox:" = "Neuer Name des Postfachs:"; /* File: MailboxManagerController.m:2073 */ /* Flag: untranslated */ "Inbox" = "Posteingang"; /* File: MailboxManagerController.m:2078 */ /* Flag: untranslated */ "Sent" = "Postausgang"; /* File: MailboxManagerController.m:2088 */ /* Flag: untranslated */ "Trash" = "Abfall"; /* File: MailboxManagerController.m:2359 */ /* Flag: untranslated */ "Local folder %@ opened." = "Lokaler Ordner %@ geffnet."; /* File: MailboxManagerController.m:2414 */ /* Flag: untranslated */ "A folder (%@) is already open. Please close it first." = "Ein Ordner (%@) ist bereits offen. Schliee ihn bitte erst."; /* File: MailboxManagerController.m:2453 */ /* Flag: untranslated */ "Opening IMAP folder %@ on %@..." = "ffne IMAP Ordner %@ auf %@..."; /* File: MailboxManagerController.m:2532 */ /* Flag: untranslated */ "IMAP folder %@ on %@ opened." = "IMAP Ordner %@ auf %@ geeffnet."; /* File: MessageViewWindowToolbar.m:73 */ /* Flag: untranslated */ "Show All Message Headers" = "Zeige alle Kopfzeilen"; /* File: MessageViewWindowToolbar.m:93 */ /* Flag: untranslated */ "Navigation" = "Navigation"; /* File: NSAttributedString+Extensions.m:689 */ /* Flag: untranslated */ "(Decoded Apple file follows...)" = "(Dekodierte Apple Datei folgt...)"; /* File: NewMailboxPanelController.m:78 */ /* Flag: untranslated */ "Maildir" = "Maildir"; /* File: NewMailboxPanelController.m:79 */ /* Flag: untranslated */ "Folder" = "Ordner"; /* File: NewMailboxPanelController.m:148 */ /* Flag: unmatched */ "The mailbox rename operation failed." = "Umbenennen des Postfachs schlug fehl."; /* File: NewMailboxPanelController.m:170 */ /* Flag: unmatched */ "The mailbox create operation failed." = "Anlegen des neuen Postfachs schlug fehl."; /* File: PreferencesWindowController.m:405 */ /* Flag: untranslated */ "Standard" = "Standard"; /* File: RAWSourceWindowController.m:60 */ /* Flag: unmatched */ "RAW Source" = "PURER Quelltext"; /* File: TaskManager.m:76 */ /* Flag: unmatched */ "An error occured while sending the E-Mail. It might be a\nnetwork problem or an error in your sending preferences.\nLast response received from the server:\n\n(%d) %@" = "Beim Versenden der EMail trat ein Fehler auf. Es knnte sich um ein Netz-\nwerkproblem oder einen Fehler in Ihren Versand-Einstellungen handeln.\nLetzter Response-Code des Servers:\n\n(%d) %@"; /* File: TaskManager.m:417 */ /* Flag: untranslated */ "%d messages have been transfered to the following folders:\n%@" = "%d Nachrichten wurden in das folgende Verzeichnis bertragen :\n%@"; /* File: TaskManager.m:450 */ /* Flag: unmatched */ "Connecting using SSL to %@..." = "Verbinde mit SSL zu %@..."; /* File: TaskManager.m:452 */ /* Flag: untranslated */ "IMAP " = "IMAP "; /* File: TaskManager.m:456 */ /* Flag: unmatched */ "Connecting to %@..." = "Verbinde zu %@..."; /* File: TaskManager.m:510 */ /* Flag: unmatched */ "Got a %@ while transferring mails from %@." = "%@ erhalten beim bertragen von Nachrichten von %@."; /* File: TaskManager.m:541 */ /* Flag: unmatched */ "Expunging the folder..." = "Lsche den Ordner..."; /* File: TaskManager.m:554 */ /* Flag: untranslated */ "SMTP - Authenticated! Sending the message..." = "SMTP - Authentifziert! Nachricht wird bertragen..."; /* File: TaskManager.m:567 */ /* Flag: unmatched */ "Got a %@ while estabilishing (or closing) the POP3 connection to server %@." = "%@ erhalten beim Aufbau (oder Abbau) einer POP3 Verbindung zum Server %@."; /* File: TaskManager.m:571 */ /* Flag: untranslated */ "POP3 - Authenticated! Transferring messages..." = "POP3 - Authentifiziert! Nachrichten werden bertragen..."; /* File: TaskManager.m:579 */ /* Flag: untranslated */ "IMAP - Authenticated!" = "IMAP - Authentifiziert!"; /* File: TaskManager.m:636 */ /* Flag: untranslated */ "%@ authentication failed for account %@." = "%@ Authentifzierung fehlgeschlagen fr Konto %@."; /* File: TaskManager.m:729 */ /* Flag: untranslated */ "POP3 - Connected to %@!" = "POP3 - verbunden zu %@!"; /* File: TaskManager.m:738 */ /* Flag: untranslated */ "IMAP - Connected to %@!" = "IMAP - verbunden zu %@!"; /* File: TaskManager.m:814 */ /* Flag: unmatched */ "SMTP - Authenticated!" = "SMTP - Authentifiziert!"; /* File: TaskManager.m:830 */ /* Flag: unmatched */ "SMTP - Sending message..." = "SMTP - Sende Nachricht..."; /* File: TaskManager.m:834 */ /* Flag: untranslated */ "Unable to communicate with the %@ server (%@)." = "Kommunikation mit dem Server %@ fehlgeschlagen (%@)."; /* File: TaskManager.m:838 */ /* Flag: unmatched */ "Manual stop of sending thread." = "Sende-Thread manuell angehalten."; /* File: TaskManager.m:954 */ /* Flag: unmatched */ "Downloading message %d of %d..." = "Lade Nachricht %d von %d herunter..."; /* File: TaskManager.m:982 */ /* Flag: unmatched */ "Ignoring old message %d of %d..." = "Ignoriere alte Nachricht %d von %d..."; /* File: TaskManager.m:999 */ /* Flag: untranslated */ "An error occured while sending the E-Mail. It might be a\nnetwork problem or an error in your sending preferences.\nLast response received from the server:\n\n(%d) %@\n\nTo save this E-Mail in the Drafts folder, open the Console window\nfrom the Windows menu and click on the \"Save in Drafts\" button." = "Ein Fehler trat beim Senden der E-Mail auf. Es knnte sich dabei um ein Problem bei der Netzwerkkonfiguration oder in den Versandeinstellungen handeln.\nLetzte Antwort des Servers:\n\n(%d) %@\n\n."; /* File: TaskManager.m:1238 */ /* Flag: untranslated */ "Done searching. %d results found." = "Suche beendet. %d Treffer."; /* File: TaskManager.m:1361 */ /* Flag: untranslated */ "IMAP %@@%@ - %@" = "IMAP %@@%@ - %@"; /* File: TaskManager.m:1687 */ /* Flag: untranslated */ "NOOPing IMAP server %@." = "NOOPing IMAP server %@."; /* File: ThreadArcsCell.m:55 */ /* Flag: untranslated */ "Thread" = "Diskussionsfaden"; /* File: Utilities.m:606 */ /* Flag: unmatched */ "A part of this E-Mail can't be represented. Please report this as a bug." = "Ein Teil dieser EMail kann nicht angezeigt werden. Bitte melden Sie dies als Fehler."; /* File: Utilities.m:1374 */ /* Flag: untranslated */ "To whom would you like to reply?" = "An wen willst Du antworten?"; /* File: Utilities.m:1376 */ /* Flag: untranslated */ "Everyone" = "An Jeden"; /* File: Utilities.m:1377 */ /* Flag: untranslated */ "Sender" = "Absender"; /* File: Utilities.m:1661 */ /* Flag: untranslated */ "All Attachments" = "Alle Anhnge"; /* File: Utilities.m:2320 */ /* Flag: unmatched */ "Would you like to reply to the mailing list only?" = "Mchten Sie nur der Mailing Liste antworten?"; /*** Strings from AboutPanel.m ***/ /* File: AboutPanel.m:78 */ "Contributors:" = "Mitwirkende:"; /* File: AboutPanel.m:64 */ "Main author:" = "Autor:"; /* File: AboutPanel.m:93 */ "Special thanks:" = "Besonderer Dank an:"; /*** Strings from AboutPanelController.m ***/ /* File: AboutPanelController.m:62 */ "About GNUMail.app" = "ber GNUMail.app"; /*** Strings from ConsoleWindow.m ***/ /* File: ConsoleWindow.m:149 */ "Suspend" = "Unterbrechen"; /*** Strings from ConsoleWindowController.m ***/ /* File: ConsoleWindowController.m:241 */ "Delete error!" = "Fehler beim Lschen!"; /* File: ConsoleWindowController.m:184 */ "GNUMail.app Console" = "GNUMail.app Konsole"; /* File: ConsoleWindowController.m:242 */ "You can't delete a running task. Stop it first." = "Ein laufender Auftrag kann nicht gelscht werden. Bitte zuerst stoppen."; /* File: ConsoleWindowController.m:279 */ "You can't save the message in Drafts if the task is running. Stop it first." = "Die Nachricht kann nicht im Entwurfs-Ordner gespeichert werden, wenn der Auftrag luft. Bitte zuerst stoppen."; /*** Strings from EditWindow.m ***/ /* File: EditWindow.m:184 */ "Subject:" = "Betreff:"; /*** Strings from EditWindowController.m ***/ /* File: EditWindowController.m:2567 */ "%0.1fKB (%d characters)" = "%0.1fKB (%d Zeichen)"; /* File: EditWindowController.m:2562 */ "%0.1fKB (%d characters) - %d characters per line are shown" = "%0.1fKB (%d Zeichen) - %d Zeichen pro Zeile werden angezeigt"; /* File: EditWindowController.m:70 */ "An error occured while decoding %@. Please fix this address." = "Beim Decoden von %@ trat ein Fehler auf. Bitte korrigieren Sie diese Adresse."; /*** Strings from FilterManager.m ***/ /* File: FilterManager.m:595 */ "Unable to write the raw source of the message to %@. Aborting." = "Unformatierter Quelltext der Nachricht kann nicht nach %@ geschrieben werden.Abbruch."; /*** Strings from FindWindow.m ***/ /* File: FindWindow.m:136 */ "Find All" = "Alle finden"; /* File: FindWindow.m:115 */ "Find Options" = "Such-Optionen"; /* File: FindWindow.m:69 */ "Find Scope" = "Such-Fokus"; /* File: FindWindow.m:54 */ "Find:" = "Finden:"; /* File: FindWindow.m:123 */ "Ignore Case" = "Gr-/Kl.schr. ignorieren"; /* File: FindWindow.m:152 */ "Next" = "Nchstes"; /* File: FindWindow.m:144 */ "Previous" = "Vorheriges"; /* File: FindWindow.m:130 */ "Regular Expression" = "Regulrer Ausdruck"; /*** Strings from GNUMail+Extensions.m ***/ /* File: GNUMail+Extensions.m:71 */ "%@ exists but it is a file not a directory.\nThe application will now terminate.\nRemove this file before trying again to start GNUMail.app." = "%@ existiert, ist aber eine Datei, kein Ordner.\nDie Anwendung beendet sich jetzt.\nEntfernen Sie diese Datei, bevor Sie erneut versuchen, GNUMail.app zu starten"; /* File: GNUMail+Extensions.m:117 */ "A fatal error occured when moving the directory %@ to %@.\nThe application will now terminate." = "Ein fataler Fehler ist beim Verschieben des Ordners %@ nach %@\naufgetreten. Die Anwendung beendet sich jetzt."; /*** Strings from GNUMail.m ***/ /* File: GNUMail.m:4397 */ "A new version of GNUMail.app is now available." = "Eine neue Version von GNUMail.app ist verfgbar."; /* File: GNUMail.m:2884 */ "Arrange" = "Arrangieren"; /* File: GNUMail.m:4391 */ "Check < %@ > for more details." = "Konsultieren Sie < %@ > fr weitere Details."; /* File: GNUMail.m:2718 */ "Check Spelling" = "Rechtschreibung prfen"; /* File: GNUMail.m:535 */ "Compact" = "Zusammenfhren"; /* File: GNUMail.m:533 */ /* File: GNUMail.m:2686 */ "Compact..." = "Verdichten..."; /* File: GNUMail.m:534 */ "Compacting a mailbox will permanently remove deleted messages.\nDo you want to continue?" = "Das Verdichten von Postfchern wird gelschte\n Nachrichten dauerhaft entfernen. Mchten Sie fortfahren?"; /* File: GNUMail.m:542 */ "Compacting mailbox, please wait..." = "Verdichte Postfach, bitte warten..."; /* File: GNUMail.m:3064 */ "Configure" = "Konfigurieren"; /* File: GNUMail.m:2881 */ "Console" = "Konsole"; /* File: GNUMail.m:3236 */ "Could not open the Local Store.\nThat means GNUMail.app is not properly configured.\nTo fix this problem, do the following commands:\n\n%% mkdir ~/Library/GNUMail/Mailboxes\n%% touch ~/Library/GNUMail/Mailboxes/Inbox\n%% touch ~/Library/GNUMail/Mailboxes/Sent\n%% touch ~/Library/GNUMail/Mailboxes/Trash\n%% touch ~/Library/GNUMail/Mailboxes/Drafts\n\nand restart GNUMail.app after that! You can also remove the ~/Library/Preferences/com.collaboration-world.GNUMail.plist file instead of doing the commands mentionned above." = "Der lokale Speicher konnte nicht geffnet werden.\nDas heit GNUMail.app ist nicht sauber konfiguriert,\nZur Lsung des Problems folgende Kommandos ausfhren;\n\n%% mkdir ~/Library/GNUMail/Mailboxes\n%% touch ~/Library/GNUMail/Mailboxes/Inbox\n%% touch ~/Library/GNUMail/Mailboxes/Sent\n%% touch ~/Library/GNUMail/Mailboxes/Trash\n%% touch ~/Library/GNUMail/Mailboxes/Drafts\n\ndanach GNUMail.app neu starten! Sie knnen statt der obigen Anweisungen auch die Datei ~/Library/Preferences/com.collaboration-world.GNUMail.plist lschen."; /* File: GNUMail.m:3238 */ "Could not open the Local Store.\nThat means GNUMail.app is not properly configured.\nTo fix this problem, do the following commands:\n\n%% mkdir ~/Mailboxes\n%% touch ~/Mailboxes/Inbox\n%% touch ~/Mailboxes/Sent\n%% touch ~/Mailboxes/Trash\n%% touch ~/Mailboxes/Drafts\n\nand restart GNUMail.app after that!" = "Der lokale Speicher konnte nicht geffnet werden.\nDas heit GNUMail.app ist nicht sauber konfiguriert,\nZur Lsung des Problems folgende Kommandos ausfhren;\n\n%% mkdir ~/Mailboxes\n%% touch ~/Mailboxes/Inbox\n%% touch ~/Mailboxes/Sent\n%% touch ~/Mailboxes/Trash\n%% touch ~/Mailboxes/Drafts\n\ndanach GNUMail.app neu starten!"; /* File: GNUMail.m:2698 */ "Cut" = "Ausschneiden"; /* File: GNUMail.m:548 */ "Done compacting mailbox %@." = "Postfach %@ wurde verdichtet."; /* File: GNUMail.m:2747 */ "Enter Selection" = "Auswahl eingeben"; /* File: GNUMail.m:3742 */ "Error loading bundle at path %@" = "Fehler beim Laden des Bundles %@"; /* File: GNUMail.m:2734 */ "Find Messages..." = "Nachrichten suchen"; /* File: GNUMail.m:2743 */ "Find Previous" = "Rckwrts suchen"; /* File: GNUMail.m:2672 */ "Get New Mail" = "Neue Mail abrufen"; /* File: GNUMail.m:2540 */ "Help..." = "Hilfe..."; /* File: GNUMail.m:2519 */ "Hide" = "Ausblenden"; /* File: GNUMail.m:4028 */ /* File: GNUMail.m:2831 */ "Hide Deleted" = "Gelschte Nachrichten ausblenden"; /* File: GNUMail.m:3733 */ "Loaded bundle at path %@" = "Bundle von %@ geladen"; /* File: GNUMail.m:2667 */ "Mailboxes..." = "Postfcher..."; /* File: GNUMail.m:4004 */ /* File: GNUMail.m:2582 */ /* File: GNUMail.m:1081 */ "Mark as Read" = "Als gelesen markieren"; /* File: GNUMail.m:3999 */ /* File: GNUMail.m:1076 */ "Mark as Unread" = "Als ungelesen markieren"; /* File: GNUMail.m:2887 */ "Miniaturize" = "Miniaturisieren"; /* File: GNUMail.m:3063 */ "No configuration found for GNUMail.app" = "Keine Konfiguration fr GNUMail.app gefunden"; /* File: GNUMail.m:2310 */ "Not all tasks finished their execution. You must wait before quitting the application.\nOpen the Console (Windows -> Console) if you want to manage those tasks." = "Es gibt unbeendete Auftrge. Sie mssen vor dem Verlassen der Anwendung warten.\nffnen Sie die Konsole (Fenster -> Konsole), wenn Sie diese Auftrge verwalten wollen."; /* File: GNUMail.m:2704 */ "Paste" = "Einfgen"; /* File: GNUMail.m:2537 */ "Preferences..." = "Grundeinstellungen..."; /* File: GNUMail.m:2625 */ "Restore Draft" = "Entwurf wiederherstellen"; /* File: GNUMail.m:2722 */ "Select All" = "Alles auswhlen"; /* File: GNUMail.m:2903 */ /* File: GNUMail.m:2516 */ "Services" = "Dienste"; /* File: GNUMail.m:4033 */ "Show Deleted" = "Gelschte Nachrichten zeigen"; /* File: GNUMail.m:2813 */ "Sort by Date" = "Nach Datum sortieren"; /* File: GNUMail.m:2816 */ "Sort by Name" = "Nach Name sortieren"; /* File: GNUMail.m:2819 */ "Sort by Number" = "Nach Nummer sortieren"; /* File: GNUMail.m:2822 */ "Sort by Size" = "Nach Gre sortieren"; /* File: GNUMail.m:2825 */ "Sort by Subject" = "Nach Betreff sortieren"; /* File: GNUMail.m:2806 */ "Sorting" = "Sortierung"; /* File: GNUMail.m:2714 */ "Spelling..." = "Rechtschreibung..."; /* File: GNUMail.m:4378 */ "The latest version of GNUMail.app is %@.\n" = "Die letzte Version von GNUMail.app ist %@."; /* File: GNUMail.m:478 */ "There is no new version of %@ available." = "Es ist keine neue Version von %@ verfgbar."; /* File: GNUMail.m:4337 */ "Unable to retrieve software information." = "Software Information kann nicht abgerufen werden."; /* File: GNUMail.m:3987 */ /* File: GNUMail.m:2596 */ /* File: GNUMail.m:809 */ "Undelete" = "Wiederherstellen"; /* File: GNUMail.m:2710 */ "Undo" = "Rckgangig"; /* File: GNUMail.m:2504 */ /* File: GNUMail.m:2877 */ "Windows" = "Fenster"; /* File: GNUMail.m:4386 */ "Would you like to download the new version now?" = "Mchten Sie die neue Version jetzt herunterladen?"; /*** Strings from MailWindowController.m ***/ /* File: MailWindowController.m:2693 */ "%d messages (%dKB) - %d unread (%dKB) - %d selected (%0.1fKB) - %d deleted (%0.1fKB)" = "%d Nachrichten (%dKB) - %d ungelesen (%dKB) - %d ausgewhlt (%0.1fKB) - %d gelscht (%0.1fKB)"; /* File: MailWindowController.m:2755 */ "IMAP on %@ - %@" = "IMAP auf %@ - %@"; /*** Strings from MailboxManagerController.m ***/ /* File: MailboxManagerController.m:1706 */ "A fatal error occured when appending the message to the %@ folder." = "Beim Anhngen der Nachricht an den Ordner %@ trat ein fataler Fehler auf."; /* File: MailboxManagerController.m:1339 */ "An error occured while adding the message to the %@ folder." = "Beim Hinzufgen der Nachricht zum Ordner %@ trat ein Fehler auf."; /* File: MailboxManagerController.m:1322 */ "An error occured while attempting to obtain the message store for the %@ folder." = ""; /* File: MailboxManagerController.m:1027 */ "Are you sure you want to delete this mailbox?" = "Sind Sie sicher, dass Sie dieses Postfach lschen wollen?"; /* File: MailboxManagerController.m:2176 */ "Connecting to IMAP server %@" = "Verbinde zum IMAP Server %@"; /* File: MailboxManagerController.m:2159 */ "Connecting to IMAP server %@ using SSL" = "ffne SSL-Verbindung zum IMAP Server %@"; /* File: MailboxManagerController.m:1045 */ "Error while deleting!" = "Fehler beim Lschen!"; /* File: MailboxManagerController.m:1016 */ "Please select the mailbox you would like to delete." = "Bitte whlen Sie das Postfach aus, das Sie lschen mchten."; /* File: MailboxManagerController.m:2256 */ "The local mailbox %@ does not exist!" = "Das lokale Postfach %@ existiert nicht!"; /* File: MailboxManagerController.m:682 */ "Transfer error!" = "Transferfehler!"; /* File: MailboxManagerController.m:2164 */ "Unable to communicate with the IMAP server (%@:%i)." = "Kann nicht mit IMAP-Server kommunizieren (%@:%i)."; /* File: MailboxManagerController.m:683 */ "You cannot transfer a message inside the same mailbox!" = "Sie knnen keine Nachrichten innerhalb des selben Postfachs transferieren!"; /* File: MailboxManagerController.m:918 */ "You must select a valid root where to create this new mailbox." = "Sie mssen einen gltigen Ursprung whlen, um dort ein Postfach anzulegen."; /*** Strings from NewMailboxPanel.m ***/ /* File: NewMailboxPanel.m:59 */ "Please enter the name of the new Mailbox:" = "Name des neuen Postfachs:"; /*** Strings from NewMailboxPanelController.m ***/ /* File: NewMailboxPanelController.m:73 */ "New Mailbox" = "Neues Postfach"; /*** Strings from PasswordPanel.m ***/ /* File: PasswordPanel.m:62 */ "Please enter your password:" = "Bitte geben Sie Ihr Passwort ein:"; /*** Strings from PreferencesWindow.m ***/ /* File: PreferencesWindow.m:88 */ "Apply" = "Anwenden"; /*** Strings from PreferencesWindowController.m ***/ /* File: PreferencesWindowController.m:534 */ "Loading preferences bundle at path %@." = "Lade Bundle fr Grundeinstellungen von %@."; /* File: PreferencesWindowController.m:80 */ "Preferences Panel" = "Grundeinstellungen"; /*** Strings from TaskManager.m ***/ /* File: TaskManager.m:1003 */ "An error occured while sending the E-Mail. The path to the\nmailer might be incorrect in your sending preferences." = "Beim Versenden der EMail trat ein Fehler auf. Der Pfad zum\nMailer in Ihren Sende-Einstellungen knnte falsch sein."; /* File: TaskManager.m:793 */ "No new messages on server %@" = "Keine neuen Nachrichten auf Server %@"; /* File: TaskManager.m:693 */ "SMTP - Authenticating to %@ using %@..." = "SMTP - Authentifiziere gegen %@ mit %@..."; /* File: TaskManager.m:684 */ "SMTP - Connected to %@!" = "SMTP - verbunden mit %@!"; /* File: TaskManager.m:1033 */ "SMTP - Sent!" = "SMTP - Abgesendet!"; /* File: TaskManager.m:1636 */ "SMTP - connecting to %@..." = "SMTP - verbinde zu %@..."; /* File: TaskManager.m:1627 */ "SMTP - connecting using SSL to %@..." = "SMTP - verbinde mit SSL zu %@..."; /* File: TaskManager.m:785 */ "There are no new messages on %@ @ %@." = "Keine neuen Nachrichten auf %@ @ %@."; /*** Strings from Utilities.m ***/ /* File: Utilities.m:1373 */ "List Reply..." = "Liste beantworten..."; /* File: Utilities.m:2060 */ "There was an error launching the external program (%@) for opening this attachment (%@)!\nException: %@" = "Beim Starten des externen Programms (%@), um diesen Anhang (%@) zu ffnen, trat ein Fehler auf!\nAusnahme: %@"; GNUMail/Resources/Russian.lproj/0040755000014600001460000000000010424672357017325 5ustar monotonemonotoneGNUMail/Resources/Russian.lproj/Localizable.strings0100644000014600001460000021331210562042235023145 0ustar monotonemonotone /** Clock.m */ /** ClockController.m */ /** ComposeView.m */ "When replying to an E-Mail, add the signature to the" = "@8 >B25B5 =0 ?8AL<> 4>102;OBL ?>4?8AL 2"; "beginning" = "=0G0;>"; "end" = ":>=5F"; "of the message." = "?8AL<0."; "When forwarding an E-Mail, add the signature to the" = "@8 ?5@5AK;:5 ?8AL<0 4>102;OBL ?>4?8AL 2"; "Wrap lines at" = "5@5=>A8BL AB@>:8 =0"; "characters when sending plain/text messages." = "A8<2>;5 ?@8 >BAK;:5 A>>1I5=89 2 plain/text."; "Default charset used when sending a message:" = ">48@>2:0 ?>-C<>;G0=8N ?@8 >BAK;:5 A>>1I5=8O:"; "Automatic" = "2B><0B8G5A:8"; /** ComposeViewController.m */ "Compose" = "!>AB02;5=85"; /* "Automatic" = "2B><0B8G5A:8"; */ /** Face.m */ /** FaceController.m */ /** ExtendedFilteringTableView.m */ /** ExtendedTableColumn.m */ /** FilterEditorWindow.m */ "Description:" = "?8A0=85:"; "Active" = ":B82=K9"; "Filter type:" = ""8? D8;LB@0:"; "Incoming" = "0 2E>4OI85"; "Outgoing" = "0 8AE>4OI85"; "External Program" = "=5H=OO ?@>3@0<<0"; "Process with external program:" = "1@010BK20BL 2=5H=59 ?@>3@0<<>9:"; "and apply criteria(s)" = "8 ?@8<5=8BL :@8B5@88"; "after" = "?>A;5"; "before" = "?5@54"; "program execution." = "2K?>;=5=85< ?@>3@0<<K."; "Criteria" = "@8B5@88"; "To" = "><C"; "Cc" = ">?8O"; "To or Cc" = "><C 8;8 :>?8O"; "Subject" = ""5<0"; "From" = "B"; "Expert..." = "-:A?5@B..."; "Contains" = "!>45@68B"; "Is Equal" = " 02=>"; "Has Prefix" = "<55B ?@5D8:A"; "Has Suffix" = "<55B ACDD8:A"; "Match Expression" = "#4>2;. 2K@065=8N"; "and" = "8"; "or" = "8;8"; "(none)" = "(=5B)"; "Action" = "59AB285"; "Set the color to:" = "#AB0=>28BL F25B:"; "Transfer to mailbox:" = "5@5<5AB8BL 2 ?>GB>2K9 OI8::"; "Do..." = "K?>;=8BL..."; "Delete the message" = "#40;8BL A>>1I5=85"; "Blue" = "!8=89"; "Brown" = ">@8G=52K9"; "Cyan" = "0A8;L:>2K9"; "Dark Gray" = ""5<=>-A5@K9"; "Green" = "5;5=K9"; "Magenta" = "$C:A8="; "Orange" = "@0=652K9"; "Purple" = "C@?C@=K9"; "Red" = "@0A=K9"; "White" = "5;K9"; "Yellow" = "5;BK9"; "Bounce to:" = "Bounce to:"; "Forward to:" = "5@5A;0BL =0:"; "Reply to:" = "B25B8BL =0:"; "Set message" = "!>>1I5=85..."; "Cancel" = "B<5=0"; "OK" = "OK"; /** FilterEditorWindowController.m */ "Add a filter" = ">1028BL D8;LB@"; "Error!" = "H81:0!"; "The selected target folder (%@) holds folders, not messages." = "K1@0==0O ?0?:0 (%@) A>45@68B ?0?:8, 0 =5 A>>1I5=8O."; /* "OK" = "OK"; */ "Warning!" = "@54C?@5645=85!"; "Defining a Coloring filter that uses an external program is a BAD idea.\nThis will slow down drastically the application." = "#AB0=>2:0 D8;LB@0 @0A:@0A:8, 8A?>;L7CNI53> 2=5H=CNN ?@>3@0<<C - \n#'/ 845O, B.:. MB> A8;L=> 70<54;8B @01>BC ?@8;>65=8O."; /* "To" = "><C"; */ /* "Cc" = ">?8O"; */ /* "To or Cc" = "><C 8;8 >?8O"; */ /* "From" = "B"; */ "Is in Address Book" = " 04@5A=>9 :=835"; /** FilterHeaderEditorWindow.m */ "Header" = "03>;>2>:"; "Header:" = "03>;>2>::"; "Remove" = "#40;8BL"; "Add" = ">1028BL"; /* "Cancel" = "B<5=0"; */ /* "OK" = "OK"; */ /** FilterHeaderEditorWindowController.m */ "Add a header" = ">102;5=85 703>;>2:0"; /** FilterMessageWindow.m */ "Text to include before original message:" = ""5:AB 4;O 2:;NG5=8O ?5@54 8AE>4=K< A>>1I5=85<:"; /* "Cancel" = "B<5=0"; */ /* "OK" = "OK"; */ /** FilterMessageWindowController.m */ /** FilteringView.m */ "Rules" = "@028;0"; /* "Active" = ":B825="; */ "Add..." = ">1028BL..."; "Delete" = "#40;8BL"; "Edit..." = "@028BL..."; "Duplicate" = "C1;8@>20BL"; /** FilteringViewController.m */ "Yes" = "0"; "No" = "5B"; "Delete..." = "#40;5=85..."; "Are you sure you want to delete this filter?" = "K C25@5=K GB> E>B8B5 C40;8BL MB>B D8;LB@?"; /* "Cancel" = "B<5=0"; */ "Edit a filter" = " 540:B8@>20BL D8;LB@"; "Filtering" = "$8;LB@0F8O"; /** FontsView.m */ "Font used when displaying a message for:" = "(@8DB, 8A?>;L7C5<K9 ?@8 ?>:075 A>>1I5=8O 4;O:"; "Header name:" = "<5=8 703>;>2:0:"; "Size:" = " 07<5@:"; "Header value:" = "=0G5=8O 703>;>2:0:"; "Content of message:" = "!>45@68<>3> A>>1I5=8O:"; "Use fixed-width font for plain text messages" = "A?>;L7>20BL <>=>H8@8==K9 H@8DB 4;O A>>1I5=89 2 plain text"; "Plain text font:" = "(@8DB plain text:"; /** FontsViewController.m */ "Fonts" = "(@8DBK"; /** MIMEView.m */ "Mime-Type" = "Mime-Type"; "File extension(s)" = " 0AH8@5=8O D09;>2"; /* "Add..." = ">1028BL..."; */ /* "Delete" = "#40;8BL"; */ /* "Edit..." = " 540:B8@>20BL..."; */ "Import from mailcap" = "<?>@B8@>20BL 87 mailcap"; /** MIMEViewController.m */ /* "Delete..." = "#40;8BL..."; */ "Are you sure you want to delete this Mime-Type entry?" = "K C25@5=K GB> E>B8B5 C40;8BL MB>B B8? MIME?"; /* "Cancel" = "B<5=0"; */ /* "Yes" = "0"; */ "MIME" = "MIME"; /** MailcapParser.m */ /** MailcapWindow.m */ /* "Mime-Type" = ""8? MIME"; */ "Command" = "Command"; /* "Cancel" = "B<5=0"; */ "Import" = "<?>@B8@>20BL"; /** MailcapWindowController.m */ "Import from mailcap file" = "<?>@B 87 D09;0 mailcap"; "Mailcap Import Error!" = "H81:0 8<?>@B0 87 Mailcap!"; "You must select at least one mailcap item to import!" = "K 4>;6=K 2K1@0BL E>BO 1K >48= >1J5:B mailcap 4;O 8<?>@B0!"; /* "OK" = "OK"; */ /** MimeTypeEditorWindow.m */ "Mime-Type (ex: image/jpeg):" = ""8? MIME (=0?@8<5@: image/jpeg):"; "File extensions (ex: jpeg,jpg,jpe):" = " 0AH8@5=8O D09;>2 (=0?@8<5@: jpeg,jpg,jpe):"; /* "Description:" = "?8A0=85:"; */ "View:" = "@>A<>B@:"; "Display if possible (as icon if it is not possible)" = ">:07K20BL, 5A;8 <>6=> (2 2845 8:>=:8, 5A;8 =5;L7O)"; "Always display as icon" = "A5340 ?>:07K20BL 2 2845 8:>=:8"; "Action:" = "59AB285:"; "Prompt save panel" = "0=5;L A>E@0=5=8O"; "Open with external program:" = "B:@KBL 2> 2=5H=59 ?@>3@0<<5:"; "Choose" = "K1@0BL"; "Needs a terminal for the external program" = "C65= B5@<8=0; 4;O 2=5H=59 ?@>3@0<<K"; "Please choose an icon to represent this Mime-Type (tiff file only):" = ">60;C9AB0 2K15@8B5 8:>=:C 4;O MB>3> B8?0 MIME (B>;L:> D09;K tiff):"; /* "Cancel" = "B<5=0"; */ /* "OK" = "OK"; */ /** MimeTypeEditorWindowController.m */ "Add a Mime-Type" = ">102;5=85 B8?0 MIME"; "Edit a Mime-Type" = "@02:0 B8?0 MIME"; /** MailboxesView.m */ "Default mailbox used for:" = ">GB>2K9 OI8: ?>-C<>;G0=8N 4;O:"; "Inbox:" = "E>4OI85:"; "Outbox:" = "AE>4OI85:"; "Drafts:" = "'5@=>28:8:"; "Trash:" = ">@78=0:"; "(If you don't see all your IMAP mailboxes, first open the connection to this IMAP server.)" = "(A;8 2K =5 2848B5 2A5 20H8 ?>GB>2K5 OI8:8 IMAP, A=0G0;0 >B:@>9B5 A>548=5=85 A B@51C5<K< A5@25@>< IMAP.)"; "Compact mailbox when closing (not recommended)" = "!68<0BL ?>GB>2K5 OI8:8 ?@8 70:@KB88 (=5 @5:><5=4C5BAO)"; "Reuse the mail window when selecting a folder" = ">2B>@=> 70459AB2>20BL >:=> ?>GBK ?@8 2K1>@5 ?0?:8"; /** MailboxesViewController.m */ "Mailboxes" = ">GB>2K5 OI8:8"; /** PGPController.m */ "Encrypt" = "(8D@>20BL"; "Sign" = ">4?8A0BL"; "\nThe supplied passphrase was wrong or not given" = "\nThe supplied passphrase was wrong or not given"; "\nWrong passphrase (or something else)" = "\nWrong passphrase (or something else)"; "\nYour key is expired. You must generate a new one\nbefore trying to send again any signed or encrypted messages." = "\n0H :;NG CAB0@5;. K 4>;6=K A35=5@8@>20BL =>2K9 ?@5645\nG5< ?KB0BLAO >B>A;0BL ;N1K5 ?>4?8A0==K5 8;8 H8D@>20==K5 A>>1I5=8O."; "Decryption failed due the following reason(s):\n" = " 0AH8D@>2:0 7025@H8;0AL =5C40G59 ?> A;5C4NI59 ?@8G8=5 (-0<):\n"; /* "Error!" = "H81:0!"; */ /* "OK" = "OK"; */ "Encryption failed due the following reason(s):\n" = "(8D@>20=85 7025@H8;0AL =5C40G59 ?> A;5C4NI59 ?@8G8=5 (-0<):\n"; "Passphrase for %@" = "Passphrase for %@"; /** PGPView.m */ "GPG/PGP executable path:" = "CBL : ?@>3@0<<5 GPG/PGP:"; "User E-Mail address:" = "4@5A M;.?>GBK ?>;L7>20B5;O:"; "Use FROM E-Mail address for signing" = "A?>;L7>20BL 04@5A 87 ?>;O \"B\" 4;O ?>4?8A8"; /** PGPViewController.m */ "Version: %@" = "5@A8O: %@"; "PGP" = "PGP"; /** NewPersonalProfilePanel.m */ "Please enter the name of the new profile:" = ">60;C9AB0 22548B5 8<O 4;O =>2>3> ?@>D8;O:"; /* "Cancel" = "B<5=0"; */ /* "OK" = "OK"; */ /** NewPersonalProfilePanelController.m */ "New Personal Profile" = ">2K9 ?5@A>=0;L=K9 ?@>D8;L"; /** PersonalView.m */ "Available personal profiles:" = "<5NI85AO ?@>D8;8:"; /* "Add" = ">1028BL"; */ /* "Delete" = "#40;8BL"; */ "Set this profile as default" = "!45;0BL ?@>D8;5< ?>-C<>;G0=8N"; "Your name:" = "0H5 8<O:"; "Your E-Mail address:" = "0H 04@5A M;5:B@>==>9 ?>GBK:"; "Reply-to address:" = "4@5A 4;O >B25B0:"; "Organization:" = "@30=8708O:"; "Signature" = ">4?8AL"; "Obtain signature from" = ">;CG0BL ?>4?8AL 87"; "content of file" = "!>45@68<>3> D09;0"; "program's output" = "2K2>40 ?@>3@0<<K"; /* "Choose" = "K1@0BL"; */ /** PersonalViewController.m */ /* "Error!" = "H81:0!"; */ "This profile name already exists. Please choose another name." = "-B> 8<O ?@>D8;O C65 ACI5AB2C5B. >60;C9AB0, 2K15@8B5 4@C3>5."; /* "OK" = "OK"; */ "You must have at least one defined personal profile at any time." = "# 20A 4>;65= 1KBL >?@545;5= E>BO 1K >48= ?5@A>=0;L=K9 ?@>D8;L."; /* "Delete..." = "#40;8BL..."; */ "Are you sure you want to delete the %@ personal profile?" = "K C25@5=K GB> E>B8B5 C40;8BL ?5@A>=0;L=K9 ?@>D8;L %@ ?"; /* "Cancel" = "B<5=0"; */ /* "Yes" = "0"; */ "Personal" = "Personal"; /** IMAPView.m */ "Check for mail every" = "@>25@OBL ?>GBC :064K5"; "minutes" = "<8=CB(K)"; "Folders" = "0?:8"; "Subscribed" = ">4?8A0=>"; "List" = "List"; "Subscribe" = ">4?8A0BLAO"; "Unsubscribe" = "B?8A0BLAO"; /** IMAPViewController.m */ "All Folders" = "A5 ?0?:8"; "Y" = "Y"; /* "Error!" = "H81:0!"; */ "Authentication error with the IMAP server." = "H81:0 0CB5=B8D8:0F88 =0 A5@25@5 IMAP."; /* "OK" = "OK"; */ "An error occured while listing the folders on this IMAP server." = ">7=8:;0 >H81:0 ?@8 ?5@51>@5 ?0?>: =0 MB>< A5@25@5 IMAP."; "You are already subscribed to this IMAP folder." = "K C65 ?>4?8A0=K =0 MBC ?0?:C IMAP."; "You cannot subscribe to this folder." = "K =5 <>65B5 ?>4?8A0BLAO =0 MBC ?0?:C."; "An error occured while subscribing to folder:\n%@." = ">7=8:;0 >H81:0 ?@8 ?>4?8A:5 =0 ?0?:C:\n%@."; "You are already unsubscribed from this IMAP folder." = "K C65 >B?8A0;8AL >B MB>9 ?0?:8 IMAP."; "An error occured while unsubscribing to folder:\n%@." = ">7=8:;0 >H81:0 ?@8 >B?8A:5 >B ?0?:8:\n%@."; /** POP3View.m */ "Leave messages on server for" = "%@0=8BL A>>1I5=8O =0 A5@25@5"; "days" = "4=59"; "Use APOP (if possible)" = "A?>;L7>20BL APOP (5A;8 2>7<>6=>)"; "Download messages from this server into mailbox:" = "!:0G820BL A>>1I5=8O A MB>3> A5@25@0 2 ?>GB>2K9 OI8::"; "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)" = "(A;8 2K =5 2848B5 2A5 A2>8 ?>GB>2K5 OI8:8 IMAP, A=0G0;0 >B:@>9B5 A>548=5=85\nA B@51C5<K< A5@25@>< IMAP.)"; /** POP3ViewController.m */ /** ReceivingView.m */ "Retrieve mail (for POP3 accounts and local mail spool file)" = ">;CG0BL ?>GBC (4;O 0:0C=B>2 POP3 8 ;>:0;L=>3> spool-D09;0 ?>GBK)"; "Manually" = "@CG=CN"; "Automatically every" = "2B><0B8G5A:8 :064K5"; /* "minutes" = "<8=CB(K)"; */ "Incoming mail servers" = "!5@25@0 2E>4OI59 ?>GBK"; "Incoming Servers" = "!5@25@0"; /* "Add" = ">1028BL"; */ "Edit" = "@028BL"; /* "Delete" = "#40;8BL"; */ "Show alert panel for received and transferred messages" = ">:07K20BL ?0=5;L ?@54C?@5645=8O 4;O ?>;CG5==KE 8 ?5@5A;0==KE A>>1I5=89"; "Show No New Messages panel" = ">:07K20BL ?0=5;L >BACBAB28O =>2KE A>>1I5=89"; /** ReceivingViewController.m */ "POP3" = "POP3"; "IMAP" = "IMAP"; "%@ [UNIX]" = "%@ [UNIX]"; /* "Error!" = "Error!"; */ "To edit this account, you must first close the connection with the server." = "'B>1K @540:B8@>20BL MB>B 0::0C=B, =C6=> A=0G0;0 70:@KBL A>548=5=85 A A5@25@><."; /* "OK" = "OK"; */ "To delete this account, you must first close the connection with the server." = "'B>1K C40;8BL MB>B 0::0C=B, =C6=> A=0G0;0 70:@KBL A>548=5=85 A A5@25@><."; /* "Delete..." = "#40;8BL..."; */ "Are you sure you want to delete this receiving server entry?" = "K C25@5=K GB> E>B8B5 C40;8BL MB>B A5@25@?"; /* "Cancel" = "B<5=0"; */ /* "Yes" = "0"; */ "Receiving" = ">;CG5=85"; /** ReceivingWindow.m */ "Server type:" = ""8? A5@25@0:"; /* "POP3" = "POP3"; */ /* "IMAP" = "IMAP"; */ "UNIX" = "UNIX"; "Server name:" = "<O A5@25@0:"; "Port:" = ">@B:"; "Username:" = ">;L7>20B5;L:"; "Password:" = "0@>;L:"; "Remember password" = "0?><=8BL ?0@>;L"; "Verify for new mail on startup" = "@>25@OBL =0;8G85 =>2>9 ?>GBK ?@8 AB0@B5"; "Use secure connection (SSL)" = "A?>;L7>20BL 70I8I5==>5 A>548=5=85 (SSL)"; "General" = "1I85"; /* "Cancel" = "B<5=0"; */ /* "OK" = "OK"; */ /** ReceivingWindowController.m */ "Receiving preferences" = "0AB@>9:0 ?@85<0"; /* "IMAP" = "IMAP"; */ /* "POP3" = "POP3"; */ /* "UNIX" = "UNIX"; */ /** UNIXView.m */ "Mail spool file:" = "Spool-D09; ?>GBK:"; /* "Choose" = "Choose"; */ "Download messages from this spool file into mailbox:" = "!:0G820BL A>>1I5=8O 87 MB>3> spool-D09;0 2 ?>GB>2K9 OI8::"; /* "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)" = "(A;8 2K =5 2848B5 2A5 A2>8 ?>GB>2K5 OI8:8 IMAP, A=0G0;0 >B:@>9B5 A>548=5=85\nA B@51C5<K< A5@25@>< IMAP.)"; */ /** UNIXViewController.m */ /** SendingView.m */ "Delivery methods" = "5B>4K 4>AB02:8"; "Method" = "5B>4"; "Value" = "=0G5=85"; /* "Add" = ">1028BL"; */ /* "Edit" = " 540:B8@>20BL"; */ /* "Remove" = "#40;8BL"; */ "Additional Outgoing Headers" = ">?>;=8B5;L=K5 703>;>2:8 8AE>4OI8E"; "Key" = ";NG"; "Key:" = ";NG:"; "Value:" = "=0G5=85:"; /** SendingViewController.m */ "SMTP" = "SMTP"; "Mailer" = ">GB>20O ?@>3@0<<0"; /* "Delete..." = "#40;8BL..."; */ "Are you sure you want to delete this transport method?" = "K C25@5=K GB> E>B8B5 C40;8BL MB>B <5B>4 ?5@540G8?"; /* "Cancel" = "B<5=0"; */ /* "Yes" = "0"; */ "Sending" = "BAK;:0"; /** TransportMethodEditorWindow.m */ "Transport method:" = "5B>4 ?5@540G8:"; /* "Mailer" = ">GB>20O ?@>3@0<<0"; */ /* "SMTP" = "SMTP"; */ "Mailer:" = ">GB>20O ?@>3@0<<0:"; "Host:" = "%>AB:"; /* "Port:" = ">@B:"; */ "Authenticate using" = "CB5=B8D8F8@>20BL 8A?>;L7CO"; "Most secure" = "0:A8<0;L=0O 70I8B0"; "Supported mechanisms" = ">445@68205<K5 <5E0=87<K"; /* "Username:" = "<O ?>;L7>20B5;O:"; */ /* "Password:" = "0@>;L:"; */ /* "Remember password" = "0?><=8BL ?0@>;L"; */ "Associated personal profile:" = "AA>F88@C5<K9 ?5@A>=0;L=K9 ?@>D8;L:"; /* "Cancel" = "B<5=0"; */ /* "OK" = "OK"; */ /** TransportMethodEditorWindowController.m */ "Add a transport method" = ">1028BL <5B>4 ?5@540G8"; "Edit a transport method" = "@028BL <5B>4 ?5@540G8"; /** ViewingView.m */ "Messages" = "!>>1I5=8O"; "Hide deleted messages on startup" = "@OB0BL C40;5==K5 A>>1I5=8O ?@8 70?CA:5"; "Hide read messages on startup" = "@OB0BL ?@>GB5==K5 A>>1I5=8O ?@8 70?CA:5"; "Highlight URLs in message content" = ">4A25G820BL 04@5A0 (URL) 2 A>45@68<>< A>>1I5=89"; "Table columns" = "!B>;1FK B01;8FK"; "Status" = "!B0BCA"; "Id" = "45=B8D8:0B>@ (Id)"; "Date" = "0B0"; /* "From" = "B"; */ /* "Subject" = ""5<0"; */ "Size" = " 07<5@"; "Shown headers while viewing a mail" = ">:07K20BL 703>;>2:8 ?@8 ?@>A<>B@5 ?>GBK"; "Show all headers" = ">:07K20BL 2A5 703>;>2:8"; /* "Remove" = "#40;8BL"; */ /* "Add" = ">1028BL"; */ "Defaults" = ">-C<>;G0=8N"; /* "Key:" = "Key:"; */ "Shown Headers" = ">:07K20BL 703>;>2:8"; "Double-clicking in message list:" = "2>9=>9 I5;G>: 2 A?8A:5 ?8A5<:"; "Opens reply editor" = "B:@K205B @540:B>@ >B25B>2"; "Opens message in new window" = "B:@K205B A>>1I5=85 2 =>2>< >:=5"; /** ViewingViewController.m */ "Viewing" = "@>A<>B@"; /** Address.m */ /** AddressBook.m */ /* "General" = "1I85"; */ /** AddressBookController.m */ "Address Book" = "4@5A=0O :=830"; "Add Group" = ">1028BL 3@C??C"; "Delete Group" = "#40;8BL 3@C??C"; /* "General" = "1I85"; */ /* "Error!" = "H81:0!"; */ "This group already exist! Please choose an other name." = ""0:0O 3@C??0 C65 5ABL! >60;C9AB0 2K15@8B5 4@C3>5 8<O."; /* "OK" = "OK"; */ /* "Delete..." = "#40;8BL..."; */ "Are you sure you want to delete this address?" = "K C25@5=K GB> E>B8B5 C40;8BL MB>B 04@5A?"; /* "No" = "5B"; */ /* "Yes" = "0"; */ "Are you sure you want to delete this group?" = "K C25@5=K GB> E>B8B5 C40;8BL MBC 3@C??C?"; "You must select a group to import the addresses in." = "K 4>;6=K 2K1@0BL 3@C??C, GB>1K 8<?>@B8@>20BL 2 =55 04@5A0."; "< no address >" = "< =5B 04@5A0 >"; "Add Address" = ">1028BL 04@5A"; "Delete Address" = "#40;8BL 04@5A"; "Enter the contact's E-Mail address here" = "2548B5 745AL 04@5A M;5:B@>==>9 ?>GBK :>=B0:B0"; "Groups" = "@C??K"; "Move to:" = "5@5<5AB8BL 2:"; /** AddressBookWindow.m */ /* "Groups" = "@C??K"; */ "Name:" = "<O:"; "Modify" = "7<5=8BL"; "Import from:" = "<?>@B8@>20BL 87:"; "OPENSTEP Mail.app" = "OPENSTEP Mail.app"; "LDIF" = "LDIF"; "Close" = "0:@KBL"; /** BounceWindow.m */ "Send" = ">A;0BL"; "Addresses" = "4@5A0"; "From:" = "B:"; "Using:" = "Using:"; "To:" = "><C:"; "Cc:" = ">?8O:"; "Bcc:" = "!:@KB0O :>?8O:"; /** BounceWindowController.m */ "Bounce a message" = "Bounce a message"; /* "Error!" = "H81:0!"; */ "Unable to create a valid bounced message.\nPlease, report this as a bug." = "Unable to create a valid bounced message.\nPlease, report this as a bug."; /* "OK" = "OK"; */ "Please, verify that the To/Cc/Bcc fields are correct. Also, you MUST have at least one\nvalid E-Mail address in the To field." = ">60;C9AB0, ?@>25@LB5 7=0G5=8O ?>;59 ><C/>?8O/!:@KB0O :>?8O. "0:65 2K + 8<5BL\nE>BO 1K >48= 4>?CAB8<K9 04@5A M;5:B@>==>9 ?>GBK 2 ?>;5 ><C."; "Stop" = "!B>?"; "Starting the thread for bouncing the E-Mail..." = "Starting the thread for bouncing the E-Mail..."; "Closing..." = "0:@KB85..."; "A mail is currently being sent. Please wait." = ">GB0 >BAK;05BAO. >60;C9AB0 ?>4>648B5."; "An error occured during the authentication with the SMTP server (%@)." = ">7=8:;0 >H81:0 ?@8 0CB5=B8D8:0F88 =0 SMTP-A5@25@5 (%@)."; "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences." = ">7=8:;0 >H81:0 ?@8 >BAK;:5 ?8AL<0. -B> <>65B 1KBL ?@>1;5<>9\nA5B8 8;8 >H81:>9 2 =0AB@>9:0E >BAK;:8."; /* "Send" = ">A;0BL"; */ "Manual stop of bouncing thread." = "Manual stop of bouncing thread."; "Exiting the thread used to bounce the E-Mail..." = "Exiting the thread used to bounce the E-Mail..."; /** BounceWindowToolbar.m */ /** ConsoleWindow.m */ /* "Date" = "0B0"; */ "Message" = "!>>1I5=85"; /** ConsoleWindowController.m */ /* "Date" = "0B0"; */ "%H:%M:%S.%F" = "%H:%M:%S.%F"; /** EditWindow.m */ /* "Send" = ">A;0BL"; */ "Attach" = ";>68BL"; "Add Cc" = ">1028BL >?8N"; "Add Bcc" = ">1028BL !:@KBCN >?8N"; /* "Addresses" = "4@5A0"; */ /* "From:" = "B:"; */ /* "Using:" = "Using:"; */ "Charset:" = ">48@>2:0:"; /* "Automatic" = "2B><0B8G5A:8"; */ /* "To:" = "><C:"; */ /* "Cc:" = ">?8O:"; */ /* "Bcc:" = "!:@KB0O :>?8O:"; */ "Subject:" = ""5<0:"; /** EditWindowController.m */ /* "Error!" = "H81:0!"; */ "You must have at least one transport agent defined.\nSee Preferences -> Sending." = "K 4>;6=K >?@545;8BL E>BO 1K >48= 035=B B@0=A?>@B8@>2:8.\n!<. 0AB@>9:0 -> BAK;:0."; /* "OK" = "OK"; */ /* "Stop" = "!B>?"; */ "Starting the thread for sending the E-Mail..." = "0?CA:0N ?>B>: 4;O >BAK;:8 ?8AL<0..."; "(no subject)" = "(=5B B5<K)"; /* "Closing..." = "0:@K20N..."; */ /* "A mail is currently being sent. Please wait." = ">GB0 >BAK;05BAO. >60;C9AB0 ?>4>648B5."; */ "Would you like to save this message in the Drafts folder?" = "%>B8B5 A>E@0=8BL MB> A>>1I5=8O 2 ?0?:5 '5@=>28:8?"; /* "Cancel" = "Cancel"; */ /* "Yes" = "Yes"; */ /* "No" = "No"; */ "An error occured while attempting to obtain the message store for the Drafts folder." = ">7=8:;0 >H81:0 ?@8 ?>?KB:5 A>E@0=8BL A>>1I5=85 2 ?0?:5 '5@=>28:8."; "Remove Cc" = "#40;8BL >?8N"; /* "Add Cc" = "Add Cc"; */ "Remove Bcc" = "#40;8BL !:@KBCN :>?8N"; /* "Add Bcc" = "Add Bcc"; */ /* "An error occured during the authentication with the SMTP server (%@)." = "An error occured during the authentication with the SMTP server (%@)."; */ /* "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences." = "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences."; */ /* "Send" = "Send"; */ "An error occured while attempting to obtain the message store for the Outbox folder.\nThe message nonetheless successfully sent." = "An error occured while attempting to obtain the message store for the Outbox folder.\nThe message nonetheless successfully sent."; "You must define a recipient in the field \"To\"." = "K 4>;6=K C:070BL ?>;CG0B5;O 2 ?>;5 \"><C\"."; /* "Automatic" = "Automatic"; */ "Manual stop of sending thread." = " CG=0O >AB0=>2:0 ?>B>:0 >BAK;:8."; "Exiting the thread used to send the E-Mail..." = "025@H0N ?>B>: >BAK;:8 ?8AL<0..."; "An error occured while decoding %@. Please fix this address." = ">7=8:;0 >H81:0 ?@8 45:>48@>20=88 %@. >60;C9AB0, 8A?@02LB5 04@5A."; "%0.1fKB (%d characters)" = "%0.1fKB (%d A8<2>;>2)"; /** EditWindowToolbar.m */ /** ExtendedAttachmentCell.m */ "%@ (%d bytes)" = "%@ (%d 109B)"; "%@ (%d KB)" = "%@ (%d KB)"; /** ExtendedCell.m */ /** ExtendedOutlineView.m */ /** ExtendedTableView.m */ /** ExtendedWindow.m */ /** Filter.m */ /** FilterManager.m */ /** FindWindow.m */ "Find:" = "09B8:"; "Replace with:" = "0<5=8BL =0:"; "Find Scope" = ">=B5:AB ?>8A:0"; "Summaries" = "Summaries"; /* "Messages" = "!>>1I5=8O"; */ "Find Options" = "0@0<5B@K ?>8A:0"; "Ignore Case" = "3=>@8@>20BL @538AB@"; "Regular Expression" = " 53C;O@=>5 2K@065=85"; "Find All" = "09B8 2A5"; "Replace" = "0<5=8BL"; "Replace & Find" = "0<5=8BL 8 =09B8"; "Previous" = "@54K4CI89"; "Next" = "!;54CNI89"; /** FindWindowController.m */ "Find" = "09B8"; "Searching..." = "IC..."; "Done searching. %d results found." = ">8A: 7025@H5=. 0945=> @57C;LB0B>2: %d ."; /** FolderNode.m */ /** FolderNodePopUpItem.m */ /** GNUMail.m */ /* "Error!" = "Error!"; */ "An error occured while attempting to obtain the message store for target filter." = "An error occured while attempting to obtain the message store for target filter."; /* "OK" = "OK"; */ /* "You must have at least one transport agent defined.\nSee Preferences -> Sending." = "You must have at least one transport agent defined.\nSee Preferences -> Sending."; */ "Your Software is up-to-date" = "# 0A =>259H55 ?@>3@0<<=>5 >15A?5G5=85"; "You have the most recent version of GNUMail." = "# 20A A0<0O A2560O 25@A8O GNUMail."; "A New Version is Available" = ">ABC?=0 =>20O 25@A8O"; "A new version of GNUMail is available (version %@). Would you like to download the new version now?" = ">ABC?=0 =>20O 25@A8O GNUMail (25@A8O %@). %>B8B5 A:0G0BL 55 ?@O<> A59G0A?"; /* "Cancel" = "Cancel"; */ "Feature not implemented!" = ">7<>6=>ABL =5 @50;87>20=0!"; "Sorry, this feature is only available under Mac OS X." = "728=8B5, MB0 2>7<>6=>ABL 4>ABC?=0 B>;L:> ?>4 Mac OS X."; "Compact..." = "!60BL..."; "Compacting a mailbox will permanently remove deleted messages.\nDo you want to continue?" = "@8 A60B88 ?>GB>2>3> OI8:0 C40;5==K5 A>>1I5=8O 1572>72@0B=> 8AG57=CB.\n%>B8B5 ?@>4>;68BL?"; /* "No" = "No"; */ /* "Yes" = "Yes"; */ "Compacting mailbox, please wait..." = "!68<0N ?>GB>2K9 OI8:, ?>60;C9AB0 ?>4>648B5..."; "Done compacting mailbox %@." = "025@H5=> A60B85 ?>GB>2>3> OI8:0 %@."; "New message..." = ">2>5 A>>1I5=85..."; "Undelete" = "5@=CBL C40;5==>5"; /* "Delete" = "Delete"; */ "Mark as Unread" = "B<5B8BL :0: =5?@>G8B0==K5"; "Mark as Read" = "B<5B8BL :0: =5?@>G8B0==K5"; "Mailbox error!" = "H81:0 ?@8 @01>B5 A ?>GB>2K< OI8:><!"; "You must select a valid mailbox to open!" = "K 4>;6=K 2K1@0BL 4>?CAB8<K9 ?>GB>2K9 OI8: 4;O >B:@KB8O!"; "Local" = ">:0;L=K5"; "Information" = "=D>@<0F8O"; "Use the same directory (%@) to save all other attachments? (override the files with the same name)." = "A?>;L7>20BL B>B 65 :0B0;>3 (%@) 4;O A>E=0=5=8O >AB0;L=KE 2;>65=89? (70<5I0O D09;K ?@8 A>2?045=88 8<5=)."; "Show Filtered Headers" = ">:070BL >BD8;LB@>20==K5 703>;>2:8"; "Show All Headers" = ">:070BL 2A5 703>;>2:8"; "Hide Status Bar" = "!:@KBL ?0=5;L AB0BCA0"; "Show Status Bar" = ">:070BL ?0=5;L AB0BCA0"; "Show Normal Display" = ">:070BL =>@<0;L=>5 >B>1@065=85"; "Show RAW Source" = ">:070BL 8AE>4=K9 B5:AB"; "Info" = "=D>"; "Mailbox" = ">GB>2K9 OI8:"; /* "Message" = "Message"; */ /* "Compose" = "Compose"; */ /* "Edit" = "Edit"; */ "Windows" = ":=0"; "Print" = "5G0BL"; "Services" = "!5@28AK"; "Hide" = "!:@KBL"; "Quit" = "KE>4"; "Info Panel..." = "0=5;L =D>..."; "Check For Updates" = "@>25@8BL >1=>2;5=8O"; "Preferences..." = "0AB@>9:0..."; "Help..." = "!?@02:0..."; "Mailboxes..." = ">GB>2K5 OI8:8..."; "Get New Mail" = ">;CG8BL =>2CN ?>GBC"; "Sorting" = "!>@B8@>2:0"; "Sort by Date" = "!>@B8@>20BL ?> 40B5"; "Sort by Name" = "!>@B8@>20BL ?> 8<5=8"; "Sort by Number" = "!>@B8@>20BL ?> =><5@C"; "Sort by Size" = "!>@B8@>20BL ?> @07<5@C"; "Sort by Subject" = "!>@B8@>20BL ?> "5<5"; "Hide Deleted" = "!:@KBL C40;5==K5"; "Hide Read" = "!:@KBL ?@>GB5==K5"; "Compact" = "!60BL"; "Select All Messages" = "K1@0BL 2A5 A>>1I5=8O"; "Send to Address Book" = "B?@028BL 2 04@5A=CN :=83C"; "Save Attachment" = "!>E@0=8BL 2;>65=85"; "Save Text from Message" = "!>E@0=8BL B5:AB 87 A>>1I5=8O"; "Text Encodings" = ">48@>2:8 B5:AB0"; "Bounce..." = "Bounce..."; "Apply Manual Filters" = "@8<5=8BL @CG=K5 D8;LB@K"; "New" = ">2>5"; "Reply" = "B25B8BL"; "Reply All" = "B25B8BL 2A5<"; "Forward" = "5@5A;0BL"; "Addresses..." = "4@5A0..."; "Drafts" = "'5@=>28:8"; "Save in Drafts" = "!>E@0=8BL 2 '5@=>28:8"; "Restore Draft" = ">AAB0=>28BL G5@=>28:"; "Cut" = "K@570BL"; "Copy" = ">?8@>20BL"; "Paste" = "AB028BL"; "Undo" = "B:0B"; /* "Find" = "Find"; */ "Spelling..." = "@02>?8A0=85..."; "Check Spelling" = "@>25@8BL ?@02>?8A0=85"; "Select All" = "K1@0BL 2A5"; "Find Panel..." = "0=5;L ?>8A:0..."; "Find Next" = "09B8 A;54CNI55"; "Find Previous" = "09B8 ?@54K4CI55"; "Enter Selection" = "25AB8 2K1>@"; "Console" = ">=A>;L"; "Arrange" = "KAB@>8BL"; "Miniaturize" = "8=8<878@>20BL"; /* "Close" = "Close"; */ "Setup Printer" = "0AB@>8BL ?@8=B5@"; "Important!" = "06=>!"; "No configuration found for GNUMail.app" = "5 =0945=0 :>=D83C@0F8O 4;O GNUMail.app"; "Configure" = "0AB@>8BL"; "Loaded bundle at path %@" = "Loaded bundle at path %@"; "Failed to initialize bundle at path %@" = "Failed to initialize bundle at path %@"; "Error loading bundle at path %@" = "Error loading bundle at path %@"; "All" = "All"; "Show Deleted" = "Show Deleted"; "Show Read" = "Show Read"; "Default" = "Default"; /** GNUMailConstants.m */ /** Group.m */ /** LabelWidget.m */ /** LocalMailDelivery.m */ /** MailHeaderCell.m */ /** MailWindow.m */ /* "Delete" = "#40;8BL"; */ "Get" = ">;CG8BL"; /* "Mailboxes" = "Mailboxes"; */ /* "Compose" = "Compose"; */ /* "Reply" = "Reply"; */ /* "Forward" = "Forward"; */ /* "Addresses" = "Addresses"; */ /* "Find" = "Find"; */ /* "Status" = "Status"; */ /* "Id" = "Id"; */ /* "Date" = "Date"; */ /* "From" = "From"; */ /* "Subject" = "Subject"; */ /* "Size" = "Size"; */ /** MailWindowController.m */ /* "New message..." = ">2>5 A>>1I5=85..."; */ "Local - %@" = ">:0;L=K5 - %@"; "IMAP on %@ - %@" = "IMAP =0 %@ - %@"; "No Messages!" = "5B A>>1I5=89!"; "There are no messages in this Mailbox!" = " MB>< ?>GB>2>< OI8:5 =5B A>>1I5=89!"; /* "OK" = "OK"; */ "< unknown >" = "< unknown >"; /* "Closing..." = "Closing..."; */ "GNUMail.app is currently receiving E-Mails. Please wait." = "GNUMail.app ?>;CG05B ?>GBC. >60;C9AB0, ?>4>648B5."; "Would you like to close the connection with the IMAP server?" = "K E>B8B5 70:@KBL A>548=5=85 A A5@25@>< IMAP?"; /* "Cancel" = "B<5=0"; */ /* "Yes" = "0"; */ /* "No" = "5B"; */ "Closed local folder %@." = "0:@KB0 ;>:0;L=0O ?0?:0 %@."; "Closed IMAP folder %@ on %@." = "0:@KB0 ?0?:0 IMAP %@ =0 %@."; "Closing IMAP connection on %@." = "0:@KB85 A>548=5=8O IMAP =0 %@."; /* "Stop" = "!B>?"; */ "Starting the fetching thread for %@.." = "0?CA: ?>B>:0 ?>;CG5=8O ?>GBK 4;O %@.."; /* "Error!" = "Error!"; */ "Unable to communicate with the POP3 server (%@)." = "5 C405BAO =0;048BL A2O7L A POP3-A5@25@>< (%@)."; "Invalid password %@ @ %@." = "525@=K9 ?0@>;L %@ @ %@."; "An error occured while obtaining the IMAP Store to save the received message.\n%@" = "An error occured while obtaining the IMAP Store to save the received message.\n%@"; "The received message was saved in your local Inbox folder." = ">;CG5=>5 A>>1I5=85 A>E@0=5=> 2 ;>:0;L=>9 ?0?:5 E>4OI85."; "No New Messages..." = "5B =>2KE A>>1I5=89..."; "There are no new messages on %@ @ %@." = "5B =>2KE A>>1I5=89 =0 %@ @ %@."; /* "Get" = "Get"; */ "Filtered messages..." = "BD8;LB@>20==K5 A>>1I5=8O..."; "%d messages have been transfered to the following folders:\n%@" = "%d A>>1I5=89 ?5@5A;0=K 2 A;54CNI85 ?0?:8:\n%@"; "%d messages (%dKB) - %d unread (%dKB) - %d selected (%0.1fKB) - %d deleted" = "%d A>>1I5=89 (%dKB) - %d =5?@>G8B0=> (%dKB) - %d 2K1@0=> (%0.1fKB) - %d C40;5=>"; "IMAP %@ @ %@ - %@" = "IMAP %@ @ %@ - %@"; "No new messages on server %@" = "5B =>2KE A>>1I5=89 =0 A5@25@5 %@"; "Got a %@ while estabilishing (or closing) the POP3 connection to server %@." = ">;CG5=> %@ 2 E>45 CAB0=>2;5=8O (8;8 70:@KB8O) A>548=5=8O POP3 A A5@25@>< %@."; "Exiting the fetching thread for %@..." = "025@H5=85 ?>B>:0 ?>;CG5=8O ?>GBK 4;O %@..."; "Got a %@ while transferring mails from %@." = ">;CG5=> %@ 2 E>45 ?5@5AK;:8 ?>GBK 87 %@."; /** MailWindowToolbar.m */ /** MailboxManager.m */ "Open this folder on startup" = "B:@K20BL MBC ?0?:C ?@8 70?CA:5"; /* "Mailbox" = ">GB>2K9 OI8:"; */ /* "Size" = " 07<5@"; */ /* "Messages" = "!>>1I5=8O"; */ /* "Close" = "0:@KBL"; */ /** MailboxManagerCache.m */ /** MailboxManagerController.m */ /* "Mailboxes" = ">GB>2K5 OI8:8"; */ /* "Mailbox" = ">GB>2K9 OI8:"; */ "All Mailboxes" = "A5 ?>GB>2K5 OI8:8"; /* "Size" = " 07<5@"; */ "%d KB" = "%d KB"; /* "Messages" = "!>>1I5=8O"; */ "%d (%d unread)" = "%d (%d =5?@>G8B0==KE)"; /* "Local" = ">:0;L=K5"; */ /* "Closing..." = "0:@K20N..."; */ "Would you like to close the connection with this IMAP server?" = "K E>B8B5 70:@KBL A>548=5=85 A MB8< A5@25@>< IMAP?"; /* "No" = "5B"; */ /* "Yes" = "0"; */ /* "Closing IMAP connection on %@." = "0:@K20N A>548=5=85 IMAP =0 %@."; */ "Transfer error!" = "H81:0 ?5@5AK;:8!"; "You cannot transfer a message inside the same mailbox!" = "K =5 <>65B5 ?5@5A;0BL A>>1I5=85 2=CB@8 B>3> 65 ?>GB>2>3> OI8:0!"; /* "OK" = "OK"; */ /* "Mailbox error!" = "H81:0 ?>GB>2>3> OI8:0!"; */ /* "You must select a valid mailbox to open!" = "K 4>;6=K 2K1@0BL 4>?CAB8<K9 ?>GB>2K9 OI8: 4;O >B:@KB8O!"; */ "You must select a valid mailbox\nto transfer this E-Mail to!" = "K 4>;6=K 2K1@0BL 4>?CAB8<K9 ?>GB>2K9\n OI8: 4;O ?5AK;:8 MB>3> ?8AL<0!"; "You cannot transfer E-Mails to this folder!" = "K =5 <>65B5 ?5@5A;0BL ?8AL<0 2 MBC ?0?:C!"; "You must select a valid root where to create this new mailbox." = "K 4>;6=K 2K1@0BL 4>?CAB8<K9 :>@=52>9 :0B0;>3 4;O A>740=8O ?>GB>2>3> OI8:0."; "Please select the mailbox you would like to delete." = ">60;C9AB0, 2K15@8B5 ?>GB>2K9 OI8: :>B>@K9 2K E>B8B5 C40;8BL."; /* "Delete..." = "#40;8BL..."; */ "Are you sure you want to delete this mailbox?" = "K C25@5=K GB> E>B8B5 C40;8BL MB>B ?>GB>2K9 OI8:?"; /* "Cancel" = "B<5=0"; */ "Error while deleting!" = "H81:0 ?@8 C40;5=88!"; "You can't delete an opened mailbox! Close it first." = "K =5 <>65B5 C40;8BL >B:@KBK9 ?>GB>2K9 OI8:! !=0G0;0 70:@>9B5 53>."; /* "Error!" = "H81:0!"; */ "The mailbox delete operation failed." = "?5@0F8O C40;5=8O ?>GB>2>3> OI8:0 70:>=G8;0AL =5C40G59."; "You must select a valid mailbox to rename!" = "K 4>;6=K 2K1@0BL 4>?CAB8<K9 ?>GB>2K9 OI8: 4;O ?5@58<5=>20=8O!"; "You can't rename an opened mailbox! Close it first." = "K =5 <>65B5 ?5@58<5=>20BL >B:@KBK9 ?>GB>2K9 OI8:! !=0G0;0 70:@>9B5 53>."; "Edit Mailbox" = "@02:0 ?>GB>2>3> OI8:0"; "Please enter the new name of the Mailbox:" = ">60;C9AB0, 22548B5 =>2>5 8<O ?>GB>2>3> OI8:0:"; "The local mailbox %@ does not exist!" = ">:0;L=K9 ?>GB>2K9 OI8: %@ =5 ACI5AB2C5B!"; "This folder (%@) holds folders, not messages!" = " MB>9 ?0?:5 (%@) A>45@60BAO ?0?:8, 0 =5 A>>1I5=8O!"; "Local folder %@ opened." = ">:0;L=0O ?0?:0 %@ >B:@KB0."; "A folder (%@) is already open. Please close it first." = "0?:0 (%@) C65 >B:@KB0. >60;C9AB0 A=0G0;0 70:@>9B5 55."; "Opening IMAP folder %@ on %@..." = "B:@K20N ?0?:C IMAP %@ =0 %@..."; "IMAP folder %@ on %@ opened." = "0?:0 IMAP %@ =0 %@ >B:@KB0."; "Connecting to IMAP server %@ using SSL" = "!2O7K20NAL A A5@25@>< IMAP %@ ?> SSL"; "Connecting to IMAP server %@" = "!2O7K20NAL A A5@25@>< IMAP %@"; "Unable to communicate with the IMAP server (%@:%i)." = "5 C405BAO A2O70BLAO A A5@25@>< IMAP (%@:%i)."; "Authenticating using %@..." = "@>E>6C 0CB5=B8D8:0F8N A ?><>ILN %@..."; "Connected to %@!" = "#AB0=>2;5=> A>548=5=85 A %@!"; /* "Invalid password %@ @ %@." = "525@=K9 ?0@>;L %@ @ %@."; */ "A fatal error occured when appending the message to the %@ folder." = "5CAB@0=8<0O >H81:0 ?@>87>H;0 ?@8 4>102;5=88 A>>1I5=8O : ?0?:5 %@ ."; /** MailboxManagerToolbar.m */ /** MessageViewWindow.m */ /* "Delete" = "#40;8BL"; */ /* "Reply" = "B25B8BL"; */ /* "Forward" = "5@5A;0BL"; */ /* "Show All Headers" = ">:070BL 2A5 703>;>2:8"; */ /** MessageViewWindowController.m */ /** MessageViewWindowToolbar.m */ /** MimeType.m */ /** MimeTypeManager.m */ /** NSRegEx.m */ /** NSStringExtensions.m */ /** NSUserDefaultsExtensions.m */ /** NewMailboxPanel.m */ "Please enter the name of the new Mailbox:" = ">609;C9AB0 22548B5 8<O =>2>3> ?>GB>2>3> OI8:0:"; /* "Cancel" = "B<5=0"; */ /* "OK" = "OK"; */ /** NewMailboxPanelController.m */ "New Mailbox" = ">2K9 ?>GB>2K9 OI8:"; /* "Local" = "Local"; */ /* "Error!" = "H81:0!"; */ "The mailbox rename operation failed." = "?5@0F8O ?5@58<5=>20=8O ?>GB>2>3> OI8:0 7025@H8;0AL =5C40G59."; /* "OK" = "OK"; */ "The mailbox create operation failed." = "?5@0F8O A>740=8O ?>GB>2>3> OI8:0 7025@H8;0AL =5C40G59."; /** PasswordPanel.m */ "Please enter your password:" = ">60;C9AB0 22548B5 A2>9 ?0@>;L:"; /* "Cancel" = "B<5=0"; */ /* "OK" = "OK"; */ /** PasswordPanelController.m */ /** PreferencesWindow.m */ "Apply" = "@8<5=8BL"; /* "Cancel" = "B<5=0"; */ /* "OK" = "OK"; */ /** PreferencesWindowController.m */ "Preferences Panel" = "0=5;L =0AB@9:8"; "Loading preferences bundle at path %@." = "03@C605BAO =01>@ =0AB@>5: 87 %@."; /** TextEnrichedConsumer.m */ /** Utilities.m */ /* "Error!" = "H81:0!"; */ "A part of this E-Mail can't be represented. Please report this as a bug." = "'0ABL MB>3> ?8AL<0 =5 <>65B 1KBL >B>1@065=0. >60;C9AB0, A>>1I8B5 >1 MB>< :0: > 1035."; /* "OK" = "OK"; */ "No text/plain part found. Please report this bug since GNUMail.app doesn't support this other kind of parts." = "5 =0945=0 G0ABL text/plain. >60;C9AB0 A>>1I8B5 >1 MB>< 1035, B.:. GNUMail.app =5 ?>445@68205B G0AB8 4@C38E B8?>2."; "Local Mailboxes" = ">:0;L=K5 ?>GB>2K5 OI8:8"; "Reply..." = "B25B8BL..."; "Would you like to reply to all recipients?" = "B25B8BL 2A5< ?>;CG0B5;O<?"; /* "No" = "5B"; */ /* "Yes" = "0"; */ "Reply to a message..." = "B25B8BL =0 A>>1I5=85..."; "Forward a message..." = "5@5A;0BL A>>1I5=85..."; "Save all" = "!>E@0=8BL 2A5"; "The external program (%@) for opening this MIME-Type (%@) can't be found." = "5 =0945=0 2=5H=OO ?@>3@0<<0 (%@) 4;O >B:@KB8O MB>3> B8?0 MIME (%@)."; GNUMail/Resources/Spanish.lproj/0040755000014600001460000000000010424672357017306 5ustar monotonemonotoneGNUMail/Resources/Spanish.lproj/Localizable.strings0100644000014600001460000021756010562042235023137 0ustar monotonemonotone/* Traduccin: Quique - http://sindominio.net/quique */ /** Clock.m */ /** ClockController.m */ /** ComposeView.m */ "When replying to an E-Mail, add the signature to the" = "Al responder un mensaje de correo, poner la firma al"; "beginning" = "principio"; "end" = "final"; "of the message." = "del mensaje."; "When forwarding an E-Mail, add the signature to the" = "Al reenviar un correo, poner la firma al"; "Wrap lines at" = "Cortar las lneas a"; "characters when sending plain/text messages." = "caracteres cuando se envan mensajes de texto/plano."; "Default charset used when sending a message:" = "Juego de caracteres a usar por defecto al enviar mensajes:"; "Automatic" = "Automtico"; /** ComposeViewController.m */ "Compose" = "Redactar"; /* "Automatic" = "Automatic"; */ /** Face.m */ /** FaceController.m */ /** ExtendedFilteringTableView.m */ /** ExtendedTableColumn.m */ /** FilterEditorWindow.m */ "Description:" = "Descripcin:"; "Active" = "Activo"; "Filter type:" = "Tipo de filtro:"; "Incoming" = "Entrantes"; "Outgoing" = "Salientes"; "External Program" = "Programa externo"; "Process with external program:" = "Procesar con un programa externo:"; "and apply criteria(s)" = "y aplicar criterio(s)"; "after" = "despus"; "before" = "antes"; "program execution." = "de ejecutar el programa."; "Criteria" = "Criterios"; "To" = "Para"; "Cc" = "Cc"; "To or Cc" = "Para o Cc"; "Subject" = "Asunto"; "From" = "De"; "Expert..." = "Experto..."; "Contains" = "Contiene"; "Is Equal" = "Es igual"; "Has Prefix" = "Tiene el prefijo"; "Has Suffix" = "Tiene el sufijo"; "Match Expression" = "Encuentra la expresin"; "and" = "y"; "or" = "o"; "(none)" = "(ninguno)"; "Action" = "Accin"; "Set the color to:" = "Poner de color:"; "Transfer to mailbox:" = "Transferir al buzn:"; "Do..." = "Hacer..."; "Delete the message" = "Borrar el mensaje"; "Blue" = "Azul"; "Brown" = "Marrn"; "Cyan" = "Azul celeste"; "Dark Gray" = "Gris oscuro"; "Green" = "Verde"; "Magenta" = "Fucsia"; "Orange" = "Naranja"; "Purple" = "Morado"; "Red" = "Rojo"; "White" = "Blanco"; "Yellow" = "Amarillo"; "Bounce to:" = "Redirigir a:"; "Forward to:" = "Reenviar a:"; "Reply to:" = "Responder a:"; "Set message" = "Fijar mensaje"; "Cancel" = "Cancelar"; "OK" = "Aceptar"; /** FilterEditorWindowController.m */ "Add a filter" = "Aadir un filtro"; "Error!" = "Error!"; "The selected target folder (%@) holds folders, not messages." = "La carpeta de destino seleccionada (%@) contiene carpetas, no mensajes)."; /* "OK" = "Aceptar"; */ "Warning!" = "Adevertencia!"; "Defining a Coloring filter that uses an external program is a BAD idea.\nThis will slow down drastically the application." = "Definir un filtro de coloreado que usa un programa externo es una MALA idea.\nEsto ralentizar drsticamente la aplicacin."; /* "To" = "Para"; */ /* "Cc" = "Cc"; */ /* "To or Cc" = "Para o Cc"; */ /* "From" = "De"; */ "Is in Address Book" = "Est en la Libreta de direcciones"; /** FilterHeaderEditorWindow.m */ "Header" = "Cabecera"; "Header:" = "Cabecera:"; "Remove" = "Eliminar"; "Add" = "Aadir"; /* "Cancel" = "Cancelar"; */ /* "OK" = "Aceptar"; */ /** FilterHeaderEditorWindowController.m */ "Add a header" = "Aadir una cabecera"; /** FilterMessageWindow.m */ "Text to include before original message:" = "Texto a incluir antes del mensaje original:"; /* "Cancel" = "Cancelar"; */ /* "OK" = "Aceptar"; */ /** FilterMessageWindowController.m */ /** FilteringView.m */ "Rules" = "Reglas"; /* "Active" = "Activo"; */ "Add..." = "Aadir..."; "Delete" = "Borrar"; "Edit..." = "Editar..."; "Duplicate" = "Duplicar"; /** FilteringViewController.m */ "Yes" = "S"; "No" = "No"; "Delete..." = "Borrar..."; "Are you sure you want to delete this filter?" = "Est seguro de que quiere borrar este filtro?"; /* "Cancel" = "Cancelar"; */ "Edit a filter" = "Editar un filtro"; "Filtering" = "Filtrando"; /** FontsView.m */ "Font used when displaying a message for:" = "Tipo de letra a usar al mostrar un mensaje para:"; "Header name:" = "Nombre de la cabecera:"; "Size:" = "Tamao:"; "Header value:" = "Valor de la cabecera:"; "Content of message:" = "Contenido del mensaje:"; "Use fixed-width font for plain text messages" = "Usa un tipo de letra monoespaciada para los mensajes de texto puro"; "Plain text font:" = "Tipo de letra para el texto puro:"; /** FontsViewController.m */ "Fonts" = "Tipos de letra"; /** MIMEView.m */ "Mime-Type" = "Tipo-Mime"; "File extension(s)" = "Extensin(es) de ficheros"; /* "Add..." = "adir..."; */ /* "Delete" = "Borrar"; */ /* "Edit..." = "Editar..."; */ "Import from mailcap" = "Importar de mailcap"; /** MIMEViewController.m */ /* "Delete..." = "Borrar..."; */ "Are you sure you want to delete this Mime-Type entry?" = "Est seguro de que quiere borrar este Tipo-Mime?"; /* "Cancel" = "Cancelar"; */ /* "Yes" = "S"; */ "MIME" = "MIME"; /** MailcapParser.m */ /** MailcapWindow.m */ /* "Mime-Type" = "Tipo-Mime"; */ "Command" = "Orden"; /* "Cancel" = "Cancelar"; */ "Import" = "Importar"; /** MailcapWindowController.m */ "Import from mailcap file" = "Importar de un archivo mailcap"; "Mailcap Import Error!" = "Error al importar de mailcap!"; "You must select at least one mailcap item to import!" = "Debe seleccionar al menos un elemento de mailcap que importar!"; /* "OK" = "Aceptar"; */ /** MimeTypeEditorWindow.m */ "Mime-Type (ex: image/jpeg):" = "Tipo-Mime (ej: image/jpeg):"; "File extensions (ex: jpeg,jpg,jpe):" = "Extensiones de ficheros (ej: jpeg,jpg,jpe):"; /* "Description:" = "Descripcin:"; */ "View:" = "Ver:"; "Display if possible (as icon if it is not possible)" = "Mostrar si es posible (como icono si no es posible)"; "Always display as icon" = "Mostrar siempre como icono"; "Action:" = "Accin:"; "Prompt save panel" = "Abrir el panel de guardar"; "Open with external program:" = "Abrir con un programa externo:"; "Choose" = "Escoger"; "Needs a terminal for the external program" = "Necesita una terminal para el programa externo"; "Please choose an icon to represent this Mime-Type (tiff file only):" = "Por favor, escoja un icono para representar este Tipo-MIME (slo ficheros tiff):"; /* "Cancel" = "Cancelar"; */ /* "OK" = "Aceptar"; */ /** MimeTypeEditorWindowController.m */ "Add a Mime-Type" = "Aadir un Tipo-MIME"; "Edit a Mime-Type" = "Editar un Tipo-MIME"; /** MailboxesView.m */ "Default mailbox used for:" = "Buzn por defecto a usar para:"; "Inbox:" = "Entrada:"; "Outbox:" = "Salida:"; "Drafts:" = "Borradores:"; "Trash:" = "Basura:"; "(If you don't see all your IMAP mailboxes, first open the connection to this IMAP server.)" = "(Si no ve todos sus buzones IMAP, abra antes la conexin a este servidor IMAP.)"; "Compact mailbox when closing (not recommended)" = "Compactar buzn al cerrar (no recomendado)"; "Reuse the mail window when selecting a folder" = "Reusar la ventana de correo al seleccionar una carpeta"; /** MailboxesViewController.m */ "Mailboxes" = "Buzones"; /** PGPController.m */ "Encrypt" = "Cifrar"; "Sign" = "Firmar"; "\nThe supplied passphrase was wrong or not given" = "\nLa frase de paso era incorrecta o no se ha proporcionado"; "\nWrong passphrase (or something else)" = "\nFrase de paso incorrecta (o alguna otra cosa)"; "\nYour key is expired. You must generate a new one\nbefore trying to send again any signed or encrypted messages." = "\nSu clave ha expirado. Debe generar una nueva\nantes de intentar enviar de nuevo algn mensaje firmado o cifrado."; "Decryption failed due the following reason(s):\n" = "El descifrado ha fallado debido a la(s) siguiente(s) razn(es):\n"; /* "Error!" = "Error!"; */ /* "OK" = "Aceptar"; */ "Encryption failed due the following reason(s):\n" = "El cifrado ha fallado debido a la(s) siguiente(s) razn(es):\n"; "Passphrase for %@" = "Frase de paso para %@"; /** PGPView.m */ "GPG/PGP executable path:" = "ruta del ejecutable GPG/PG:"; "User E-Mail address:" = "Direccin de correo electrnico del usuario:"; "Use FROM E-Mail address for signing" = "Usar la direccin de correo electrnico del campo DE para firmar"; /** PGPViewController.m */ "Version: %@" = "Versin: %@"; "PGP" = "PGP"; /** NewPersonalProfilePanel.m */ "Please enter the name of the new profile:" = "Por favor, introduzca el nombre del nuevo perfil:"; /* "Cancel" = "Cancelar"; */ /* "OK" = "Aceptar"; */ /** NewPersonalProfilePanelController.m */ "New Personal Profile" = "Nuevo perfil personal"; /** PersonalView.m */ "Available personal profiles:" = "Perfiles personales disponibles:"; /* "Add" = "Aadir"; */ /* "Delete" = "Borrar"; */ "Set this profile as default" = "Establecer este perfil como predeterminado"; "Your name:" = "Nombre:"; "Your E-Mail address:" = "Direccin de correo electrnico:"; "Reply-to address:" = "Responder a la direccin:"; "Organization:" = "Organizacin:"; "Signature" = "Firma"; "Obtain signature from" = "Obtener la firma de"; "content of file" = "contenido de fichero"; "program's output" = "salida de programa"; /* "Choose" = "Escoger"; */ /** PersonalViewController.m */ /* "Error!" = "Error!"; */ "This profile name already exists. Please choose another name." = "Este nombre de perfil ya existe. Por favor, elija otro."; /* "OK" = "Aceptar"; */ "You must have at least one defined personal profile at any time." = "Debe tener al menos un perfil personal definido en cualquier momento."; /* "Delete..." = "Borrar..."; */ "Are you sure you want to delete the %@ personal profile?" = "Est seguro de que quiere borrar el perfil personal %@?"; /* "Cancel" = "Cancelar"; */ /* "Yes" = "S"; */ "Personal" = "Personal"; /** IMAPView.m */ "Check for mail every" = "Bajar mensajes cada"; "minutes" = "minutos"; "Folders" = "Carpetas"; "Subscribed" = "Suscritas"; "List" = "Lista"; "Subscribe" = "Suscribir"; "Unsubscribe" = "Cancelar suscripcin"; /** IMAPViewController.m */ "All Folders" = "Todas las carpetas"; "Y" = "S"; /* "Error!" = "Error!"; */ "Authentication error with the IMAP server." = "Error de autenticacin con el servidor IMAP."; /* "OK" = "Aceptar"; */ "An error occured while listing the folders on this IMAP server." = "Se ha producido un error mientras se listaban las carpetas en este servidor IMAP."; "You are already subscribed to this IMAP folder." = "Ya est suscrito a esta carpeta IMAP."; "You cannot subscribe to this folder." = "No puede suscribirse a esta carpeta."; "An error occured while subscribing to folder:\n%@." = "Se ha producido un error mientras se le suscriba a la carpeta:\n%@."; "You are already unsubscribed from this IMAP folder." = "Ya ha cancelado su suscripcin a esta carpeta IMAP."; "An error occured while unsubscribing to folder:\n%@." = "Se ha producido un error mientras se cancelaba su suscripcin a la carpeta:\n%@."; /** POP3View.m */ "Leave messages on server for" = "Dejar los mensajes en el servidor durante"; "days" = "das"; "Use APOP (if possible)" = "Usar APOP (si es posible)"; "Download messages from this server into mailbox:" = "Descargar los mensajes de este servidor en el buzn:"; "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)" = "(Si no ve todos sus buzones IMAP, abra antes la conexin\na este servidor IMAP.)"; /** POP3ViewController.m */ /** ReceivingView.m */ "Retrieve mail (for POP3 accounts and local mail spool file)" = "Descargar el correo (de las cuentas POP3 y el fichero de cola de correo local)"; "Manually" = "Manualmente"; "Automatically every" = "Automticamente cada"; /* "minutes" = "minutos"; */ "Incoming mail servers" = "Servidores de correo entrante"; "Incoming Servers" = "Servidores de recepcin"; /* "Add" = "Aadir"; */ "Edit" = "Editar"; /* "Delete" = "Borrar"; */ "Show alert panel for received and transferred messages" = "Mostrar panel de alerta para mensajes recibidos y transferidos"; "Show No New Messages panel" = "MOstrar el panel de No hay mensajes nuevos"; /** ReceivingViewController.m */ "POP3" = "POP3"; "IMAP" = "IMAP"; "%@ [UNIX]" = "%@ [UNIX]"; /* "Error!" = "Error!"; */ "To edit this account, you must first close the connection with the server." = "Para editar esta cuenta, antes debe cerrar la conexin con el servidor."; /* "OK" = "Aceptar"; */ "To delete this account, you must first close the connection with the server." = "Para borrar esta cuenta, antes debe cerrar la conexin con el servidor."; /* "Delete..." = "Borrar..."; */ "Are you sure you want to delete this receiving server entry?" = "Est seguro de que que quiere borrar la entrada de este servidor de recepcin?"; /* "Cancel" = "Cancelar"; */ /* "Yes" = "S"; */ "Receiving" = "Recepcin"; /** ReceivingWindow.m */ "Server type:" = "Tipo de servidor:"; /* "POP3" = "POP3"; */ /* "IMAP" = "IMAP"; */ "UNIX" = "UNIX"; "Server name:" = "Nombre del servidor:"; "Port:" = "Puerto:"; "Username:" = "Nombre de usuario:"; "Password:" = "Contrasea:"; "Remember password" = "Recordar la contrasea"; "Verify for new mail on startup" = "Comprobar si hay correo nuevo al arrancar"; "Use secure connection (SSL)" = "Usar conexin segura (SSL)"; "General" = "General"; /* "Cancel" = "Cancelar"; */ /* "OK" = "Aceptar"; */ /** ReceivingWindowController.m */ "Receiving preferences" = "Preferencias de recepcin"; /* "IMAP" = "IMAP"; */ /* "POP3" = "POP3"; */ /* "UNIX" = "UNIX"; */ /** UNIXView.m */ "Mail spool file:" = "Fichero de cola de correo:"; /* "Choose" = "Escoger"; */ "Download messages from this spool file into mailbox:" = "Descargar los mensajes de esta fichero de cola en el buzn:"; /* "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)" = "(Si no ve todos sus buzones IMAP, abra antes la conexin\na este servidor IMAP.)"; */ /** UNIXViewController.m */ /** SendingView.m */ "Delivery methods" = "Mtodos de entrega"; "Method" = "Mtodo"; "Value" = "Valor"; /* "Add" = "Aadir"; */ /* "Edit" = "Editar"; */ /* "Remove" = "Eliminar"; */ "Additional Outgoing Headers" = "Cabeceras adicionales de salida"; "Key" = "Clave"; "Key:" = "Clave:"; "Value:" = "Valor:"; /** SendingViewController.m */ "SMTP" = "SMTP"; "Mailer" = "Mailer"; /* "Delete..." = "Borrar..."; */ "Are you sure you want to delete this transport method?" = "Est seguro de que quiere borrar este mtodo de transporte?"; /* "Cancel" = "Cancelar"; */ /* "Yes" = "S"; */ "Sending" = "Envo"; /** TransportMethodEditorWindow.m */ "Transport method:" = "Mtodo de transporte:"; /* "Mailer" = "Mailer"; */ /* "SMTP" = "SMTP"; */ "Mailer:" = "Mailer:"; "Host:" = "Host:"; /* "Port:" = "Puerto:"; */ "Authenticate using" = "Autenticar usando"; "Most secure" = "El ms seguro"; "Supported mechanisms" = "Mecanismos admitidos"; /* "Username:" = "Nombre de usuario:"; */ /* "Password:" = "Contrasea:"; */ /* "Remember password" = "Recordar la contrasea"; */ "Associated personal profile:" = "Perfil personal asociado:"; /* "Cancel" = "Cancelar"; */ /* "OK" = "Aceptar"; */ /** TransportMethodEditorWindowController.m */ "Add a transport method" = "Aadir mtodo de trasporte"; "Edit a transport method" = "Editar mtodo de trasporte"; /** ViewingView.m */ "Messages" = "Mensajes"; "Hide deleted messages on startup" = "Ocultar los mensajes borrados al arrancar"; "Hide read messages on startup" = "Ocultar los mensajes ledos al arrancar"; "Highlight URLs in message content" = "Resaltar los URL en el contenido del mensaje"; "Table columns" = "Columnas de tabla"; "Status" = "Estado"; "Id" = "Identificacin"; "Date" = "Fecha"; /* "From" = "De"; */ /* "Subject" = "Asunto"; */ "Size" = "Tamao"; "Shown headers while viewing a mail" = "Cabeceras a mostrar al ver el correo"; "Show all headers" = "Mostrar todas las cabeceras"; /* "Remove" = "Eliminar"; */ /* "Add" = "Aadir"; */ "Defaults" = "Predeterminados"; /* "Key:" = "Clave:"; */ "Shown Headers" = "Mostrar cabeceras"; "Double-clicking in message list:" = "Hacer doble-click en la lista de mensajes:"; "Opens reply editor" = "Abre el editor de respuestas"; "Opens message in new window" = "Abre el mensaje en una ventana nueva"; /** ViewingViewController.m */ "Viewing" = "Ver"; /** Address.m */ /** AddressBook.m */ /* "General" = "General"; */ /** AddressBookController.m */ "Address Book" = "Libreta de direcciones"; "Add Group" = "Aadir grupo"; "Delete Group" = "Borrar grupo"; /* "General" = "General"; */ /* "Error!" = "Error!"; */ "This group already exist! Please choose an other name." = "Este grupo ya existe! Por favor, escoja otro nombre."; /* "OK" = "Aceptar"; */ /* "Delete..." = "Borrar..."; */ "Are you sure you want to delete this address?" = "Est seguro de que quiere borrar esta direccin?"; /* "No" = "No"; */ /* "Yes" = "S"; */ "Are you sure you want to delete this group?" = "Est seguro de que quiere borrar este grupo?"; "You must select a group to import the addresses in." = "Debe seleccionar un grupo al que importar las direcciones."; "< no address >" = "< sin direccin >"; "Add Address" = "Aadir direccin"; "Delete Address" = "Borrar direccin"; "Enter the contact's E-Mail address here" = "Introduzca la direccin de correo electrnico del contacto aqu"; "Groups" = "Grupos"; "Move to:" = "Mover a:"; /** AddressBookWindow.m */ /* "Groups" = "Grupos"; */ "Name:" = "Nombre:"; "Modify" = "Modificar"; "Import from:" = "Importar de:"; "OPENSTEP Mail.app" = "OPENSTEP Mail.app"; "LDIF" = "LDIF"; "Close" = "Cerrar"; /** BounceWindow.m */ "Send" = "Enviar"; "Addresses" = "Direcciones"; "From:" = "De:"; "Using:" = "Usando:"; "To:" = "Para:"; "Cc:" = "Cc:"; "Bcc:" = "Bcc:"; /** BounceWindowController.m */ "Bounce a message" = "Redirigir un mensaje"; /* "Error!" = "Error!"; */ "Unable to create a valid bounced message.\nPlease, report this as a bug." = "No se ha podido crear un mensaje redirigido vlido.\nPor favor, informe de este error.."; /* "OK" = "Aceptar"; */ "Please, verify that the To/Cc/Bcc fields are correct. Also, you MUST have at least one\nvalid E-Mail address in the To field." = "Por favor, verifique que los campos Para/Cc/Bcc sean correctos, \nas como que haya al menos una direccin de correo electrnico vlida en al campo \"Para\"."; "Stop" = "Detener"; "Starting the thread for bouncing the E-Mail..." = "Comenzando el hilo para redirigir el correo electrnico..."; "Closing..." = "Cerrando..."; "A mail is currently being sent. Please wait." = "Se est enviando un correo en este momento. Por favor, espere."; "An error occured during the authentication with the SMTP server (%@)." = "Se ha producido un error durante la autenticacin con el servidor SMTP (%@)."; "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences." = "Se ha producido un error al enviar el correo electrnico. \n Puede ser un problema de red o un error en sus preferencias de envo."; /* "Send" = "Enviar"; */ "Manual stop of bouncing thread." = "Detencin manual del hilo de redireccin."; "Exiting the thread used to bounce the E-Mail..." = "Saliendo del hilo usado para redirigir el correo electrnico..."; /** BounceWindowToolbar.m */ /** ConsoleWindow.m */ /* "Date" = "Fecha"; */ "Message" = "Mensaje"; /** ConsoleWindowController.m */ /* "Date" = "Fecha"; */ "%H:%M:%S.%F" = "%H:%M:%S.%F"; /** EditWindow.m */ /* "Send" = "Enviar"; */ "Attach" = "Adjuntar"; "Add Cc" = "Aadir Cc"; "Add Bcc" = "Aadir Bcc"; /* "Addresses" = "Direcciones"; */ /* "From:" = "De:"; */ /* "Using:" = "Usando:"; */ "Charset:" = "Juego de caracteres:"; /* "Automatic" = "Automtico"; */ /* "To:" = "Para:"; */ /* "Cc:" = "Cc:"; */ /* "Bcc:" = "Bcc:"; */ "Subject:" = "Asunto:"; /** EditWindowController.m */ /* "Error!" = "Error!"; */ "You must have at least one transport agent defined.\nSee Preferences -> Sending." = "Debe tener al menos un agente de transporte definido en sus preferencias. \nVea Preferencias -> Envo"; /* "OK" = "Aceptar"; */ /* "Stop" = "Detener"; */ "Starting the thread for sending the E-Mail..." = "Empezando el hilo para enviar el correo electrnico..."; "(no subject)" = "(sin asunto)"; /* "Closing..." = "Cerrando..."; */ /* "A mail is currently being sent. Please wait." = "Se est enviando un correo en este momento. Por favor, espere."; */ "Would you like to save this message in the Drafts folder?" = "Desea guardar este mensaje en la carpeta de Borradores?"; /* "Cancel" = "Cancelar"; */ /* "Yes" = "S"; */ /* "No" = "No"; */ "An error occured while attempting to obtain the message store for the Drafts folder." = "Se ha producido un error mientrar se intentaba almacenar el mensaje en la carpeta de Borradores."; "Remove Cc" = "Quitar Cc"; /* "Add Cc" = "Aadir Cc"; */ "Remove Bcc" = "Quitar Bcc"; /* "Add Bcc" = "Aadir Bcc"; */ /* "An error occured during the authentication with the SMTP server (%@)." = "Se ha producido un error durante la autenticacin con el servidor SMTP (%@)."; */ /* "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences." = "Se ha producido un error al enviar el correo electrnico. \n Puede ser un problema de red o un error en sus preferencias de envo."; */ /* "Send" = "Enviar"; */ "An error occured while attempting to obtain the message store for the Outbox folder.\nThe message nonetheless successfully sent." = "Se ha producido un error mientras se intentaba almacenar el mensaje en la carpeta de Salida.\nNo obstante el mensaje se ha enviado con xito."; "You must define a recipient in the field \"To\"." = "Debe definir un destinatario en el campo \"Para\"."; /* "Automatic" = "Automtico"; */ "Manual stop of sending thread." = "Detencin manual del hilo de envo."; "Exiting the thread used to send the E-Mail..." = "Saliendo del hio usando para enviar el corro electrnico..."; "An error occured while decoding %@. Please fix this address." = "Se ha producido un error mientras se decodificaba %@. Por favor, compruebe esta direccin."; "%0.1fKB (%d characters)" = "%0.1fKB (%d caracteres)"; /** EditWindowToolbar.m */ /** ExtendedAttachmentCell.m */ "%@ (%d bytes)" = "%@ (%d bytes)"; "%@ (%d KB)" = "%@ (%d KB)"; /** ExtendedCell.m */ /** ExtendedOutlineView.m */ /** ExtendedTableView.m */ /** ExtendedWindow.m */ /** Filter.m */ /** FilterManager.m */ /** FindWindow.m */ "Find:" = "Buscar:"; "Replace with:" = "Reemplazar con:"; "Find Scope" = "Alcance de la bsqueda"; "Summaries" = "Resmenes"; /* "Messages" = "Mensajes"; */ "Find Options" = "Opciones de bsqueda"; "Ignore Case" = "No diferenciar entre maysculas y minsculas"; "Regular Expression" = "Expresin regular"; "Find All" = "Encontrar todos"; "Replace" = "Reemplazar"; "Replace & Find" = "Buscar y reemplazar"; "Previous" = "Anterior"; "Next" = "Siguiente"; /** FindWindowController.m */ "Find" = "Buscar"; "Searching..." = "Buscando..."; "Done searching. %d results found." = "Bsqueda finalizada. Se han encontrado %d resultados."; /** FolderNode.m */ /** FolderNodePopUpItem.m */ /** GNUMail.m */ /* "Error!" = "Error!"; */ "An error occured while attempting to obtain the message store for target filter." = "Se ha producido un error mientras se intentaba almacena el mensaje para el filtro objetivo."; /* "OK" = "Aceptar"; */ /* "You must have at least one transport agent defined.\nSee Preferences -> Sending." = "Debe tener al menos un agente de transporte definido en sus preferencias. \nVea Preferencias -> Envo"; */ "Your Software is up-to-date" = "Su programa est al da"; "You have the most recent version of GNUMail." = "Tiene la versin ms reciente de GNUMail."; "A New Version is Available" = "Est disponible una nueva versin"; "A new version of GNUMail is available (version %@). Would you like to download the new version now?" = "Est disponible una nueva versin de GNUMail (versin %@). Le gustara descargar la nueva versin ahora?"; /* "Cancel" = "Cancelar"; */ "Feature not implemented!" = "Funcionalidad no implementada!"; "Sorry, this feature is only available under Mac OS X." = "Disculpe, esta funcionalidad slo est disponible sobre Mac OS X."; "Compact..." = "Compactar..."; "Compacting a mailbox will permanently remove deleted messages.\nDo you want to continue?" = "Al compactar un buzn se eliminarn definitivamente los mensajes borrados.\nQuiere continuar?"; /* "No" = "No"; */ /* "Yes" = "S"; */ "Compacting mailbox, please wait..." = "Compactando buzn. Por favor, espere..."; "Done compacting mailbox %@." = "El buzn %@ ha sido compactado."; "New message..." = "Nuevo mensaje..."; "Undelete" = "Recuperar borrado"; /* "Delete" = "Borrar"; */ "Mark as Unread" = "Marcar como No ledo"; "Mark as Read" = "Marcar como Ledo"; "Mailbox error!" = "Error en en buzn!"; "You must select a valid mailbox to open!" = "Debe seleccionar un buzon vlido a abrir!"; "Local" = "Local"; "Information" = "Informacin"; "Use the same directory (%@) to save all other attachments? (override the files with the same name)." = "Usar el mismo directorio (%@) para guardar todos los dems ficheros adjuntos? (ignorar los ficheros con el mismo nombre)."; "Show Filtered Headers" = "Mostrar cabeceras filtradas"; "Show All Headers" = "Mostrar todas las cabeceras"; "Hide Status Bar" = "Ocultar la barra de estado"; "Show Status Bar" = "Mostrar la barra de estado"; "Show Normal Display" = "Mostrar la presentacin normal"; "Show RAW Source" = "Mostrar la fuente completa"; "Info" = "Informacin"; "Mailbox" = "Buzn"; /* "Message" = "Mensaje"; */ /* "Compose" = "Redactar"; */ /* "Edit" = "Editar"; */ "Windows" = "Ventanas"; "Print" = "Imprimir"; "Services" = "Servicios"; "Hide" = "Ocultar"; "Quit" = "Salir"; "Info Panel..." = "Panel de Informacin..."; "Check For Updates" = "Comprobar si hay actualizaciones"; "Preferences..." = "Preferencias..."; "Help..." = "Ayuda..."; "Mailboxes..." = "Buzones..."; "Get New Mail" = "Recibir correo nuevo"; "Sorting" = "Ordenar"; "Sort by Date" = "Ordenar por Fecha"; "Sort by Name" = "Ordenar por Nombre"; "Sort by Number" = "Ordenar por Nmero"; "Sort by Size" = "Ordenar por Tamao"; "Sort by Subject" = "Ordenar por Asunto"; "Hide Deleted" = "Ocultar Borrados"; "Hide Read" = "Ocultar Ledos"; "Compact" = "Compactar"; "Select All Messages" = "Seleccionar todos los mensajes"; "Send to Address Book" = "Enviar a la Libreta de direcciones"; "Save Attachment" = "Guardar el documento adjunto"; "Save Text from Message" = "Guardar el texto del mensaje"; "Text Encodings" = "Codificaciones del texto"; "Bounce..." = "Redirigir..."; "Apply Manual Filters" = "Aplicar filtros manuales"; "New" = "Nuevo"; "Reply" = "Responder"; "Reply All" = "Responder a todos"; "Forward" = "Reenviar"; "Addresses..." = "Direcciones..."; "Drafts" = "Borradores"; "Save in Drafts" = "Guardar en Borradores"; "Restore Draft" = "Recuperar borrador"; "Cut" = "Cortar"; "Copy" = "Copiar"; "Paste" = "Pegar"; "Undo" = "Deshacer"; /* "Find" = "Buscar"; */ "Spelling..." = "Ortografa..."; "Check Spelling" = "Comprobar ortografa"; "Select All" = "Seleccionar todo"; "Find Panel..." = "Panel de bsqueda..."; "Find Next" = "Buscar siguiente"; "Find Previous" = "Buscar anterior"; "Enter Selection" = "Introducir seleccin"; "Console" = "Consola"; "Arrange" = "Ordenar"; "Miniaturize" = "Minimizar"; /* "Close" = "Cerrar"; */ "Setup Printer" = "Configurar impresora"; "Important!" = "Importante!"; "No configuration found for GNUMail.app" = "No se encontr la configuracin de GNUMail.app"; "Configure" = "Configurar"; "Loaded bundle at path %@" = "Cargado el conjunto en la ruta %@"; "Failed to initialize bundle at path %@" = "No se ha podido inicalizar el conjunto en la ruta %@"; "Error loading bundle at path %@" = "Error al cargar el conjunto en la ruta %@"; "All" = "Todos"; "Show Deleted" = "Mostrar Borrados"; "Show Read" = "Mostrar Ledos"; "Default" = "Predeterminado"; /** GNUMailConstants.m */ /** Group.m */ /** LabelWidget.m */ /** LocalMailDelivery.m */ /** MailHeaderCell.m */ /** MailWindow.m */ /* "Delete" = "Borrar"; */ "Get" = "Obtener"; /* "Mailboxes" = "Buzones"; */ /* "Compose" = "Redactar"; */ /* "Reply" = "Responder"; */ /* "Forward" = "Reenviar"; */ /* "Addresses" = "Direcciones"; */ /* "Find" = "Buscar"; */ /* "Status" = "Estado"; */ /* "Id" = "Identificacin"; */ /* "Date" = "Fecha"; */ /* "From" = "De"; */ /* "Subject" = "Asunto"; */ /* "Size" = "Tamao"; */ /** MailWindowController.m */ /* "New message..." = "Nuevo mensaje..."; */ "Local - %@" = "Local - %@"; "IMAP on %@ - %@" = "IMAP en %@ - %@"; "No Messages!" = "No hay mensajes!"; "There are no messages in this Mailbox!" = "No hay mensajes en este buzn!"; /* "OK" = "Aceptar"; */ "< unknown >" = "< desconocido >"; /* "Closing..." = "Cerrando..."; */ "GNUMail.app is currently receiving E-Mails. Please wait." = "GNUMail.app est recibiendo correos en este momento. Por favor, espere."; "Would you like to close the connection with the IMAP server?" = "Le gustara cerrar la conexin con el servidor IMAP?"; /* "Cancel" = "Cancelar"; */ /* "Yes" = "S"; */ /* "No" = "No"; */ "Closed local folder %@." = "Carpeta local %@ cerrada."; "Closed IMAP folder %@ on %@." = "Carptea IMAP %@ en %@ cerrada."; "Closing IMAP connection on %@." = "Cerrado la conexin IMAP a %@."; /* "Stop" = "Detener"; */ "Starting the fetching thread for %@.." = "Iniciando el hilo de recepcin para %@.."; /* "Error!" = "Error!"; */ "Unable to communicate with the POP3 server (%@)." = "No se pudo establecer la comunicacin con el servidor POP3 (%@)."; "Invalid password %@ @ %@." = "Contrasea incorrecta %@ @ %@."; "An error occured while obtaining the IMAP Store to save the received message.\n%@" = "An error occured while obtaining the IMAP Store to save the received message.\n%@"; "The received message was saved in your local Inbox folder." = "El mensaje recibido se ha guardado en su carpeta de Entrada local."; "No New Messages..." = "No hay mensajes nuevos..."; "There are no new messages on %@ @ %@." = "No hay mensajes nuevos en %@ @ %@."; /* "Get" = "Obtener"; */ "Filtered messages..." = "Mensajes filtrados..."; "%d messages have been transfered to the following folders:\n%@" = "%d mensajes se han transferido a las siguientes carpetas:\n%@"; "%d messages (%dKB) - %d unread (%dKB) - %d selected (%0.1fKB) - %d deleted" = "%d mensajes (%dKB) - %d no ledos (%dKB) - %d seleccionados (%0.1fKB) - %d borrados"; "IMAP %@ @ %@ - %@" = "IMAP %@ @ %@ - %@"; "No new messages on server %@" = "No hay mensajes nuevos en el servidor %@"; "Got a %@ while estabilishing (or closing) the POP3 connection to server %@." = "Se ha recibido un %@ mientras se estableca (o cerraba) la conexin POP al servidor %@."; "Exiting the fetching thread for %@..." = "Saliendo del hilo de recepcin de %@..."; "Got a %@ while transferring mails from %@." = "Se ha recibido un %@ mientras se transferan mensajes de %@."; /** MailWindowToolbar.m */ /** MailboxManager.m */ "Open this folder on startup" = "Abrir esta carpeta al arrrancar"; /* "Mailbox" = "Buzn"; */ /* "Size" = "Tamao"; */ /* "Messages" = "Mensajes"; */ /* "Close" = "Cerrar"; */ /** MailboxManagerCache.m */ /** MailboxManagerController.m */ /* "Mailboxes" = "Buzones"; */ /* "Mailbox" = "Buzn"; */ "All Mailboxes" = "Todos los buzones"; /* "Size" = "Tamao"; */ "%d KB" = "%d KB"; /* "Messages" = "Mensajes"; */ "%d (%d unread)" = "%d (%d no ledos)"; /* "Local" = "Local"; */ /* "Closing..." = "Cerrando..."; */ "Would you like to close the connection with this IMAP server?" = "Desea cerrar la conexin con este servidor IMAP"; /* "No" = "No"; */ /* "Yes" = "S"; */ /* "Closing IMAP connection on %@." = "Cerrando la conexin IMAP a %@."; */ "Transfer error!" = "Error de transferencia!"; "You cannot transfer a message inside the same mailbox!" = "No puede transferir un mensaje dentro del mismo buzn!"; /* "OK" = "Aceptar"; */ /* "Mailbox error!" = "Error en en buzn!"; */ /* "You must select a valid mailbox to open!" = "Debe seleccionar un buzon vlido a abrir!"; */ "You must select a valid mailbox\nto transfer this E-Mail to!" = "Debe seleccionar un buzn vlido\nal que transferir este correo electrnico!"; "You cannot transfer E-Mails to this folder!" = "No puede tranferir correos a esta carpeta!"; "You must select a valid root where to create this new mailbox." = "Debe seleccionar una raz vlida donde crear el nuevo buzn."; "Please select the mailbox you would like to delete." = "Por favor, seleccione el buzn que quiere borrar."; /* "Delete..." = "Borrar..."; */ "Are you sure you want to delete this mailbox?" = "Est seguro de que quiere borrar este buzn?"; /* "Cancel" = "Cancelar"; */ "Error while deleting!" = "Error al borrar!"; "You can't delete an opened mailbox! Close it first." = "No se puede borrar un buzn abierto! Hay que cerrarlo primero."; /* "Error!" = "Error!"; */ "The mailbox delete operation failed." = "No se ha podido borrar el buzn."; "You must select a valid mailbox to rename!" = "Debe seleccionar un buzn vlido a renombrar!"; "You can't rename an opened mailbox! Close it first." = "No se puede renombrar un buzn abierto! Hay que cerrarlo primero."; "Edit Mailbox" = "Editar Buzn"; "Please enter the new name of the Mailbox:" = "Por favor, introduzca el nuevo nombre del Buzn:"; "The local mailbox %@ does not exist!" = "El buzn local %@ no existe!"; "This folder (%@) holds folders, not messages!" = "Este buzn (%@) contiene carpetas, no mensajes!"; "Local folder %@ opened." = "Abierta carpeta local %@."; "A folder (%@) is already open. Please close it first." = "Ya hay una carpeta abierta (%@). Por favor, cirrela primero."; "Opening IMAP folder %@ on %@..." = "Abriendo carpeta IMAP %@ en %@..."; "IMAP folder %@ on %@ opened." = "Abierta carpeta IMAP %@ en %@."; "Connecting to IMAP server %@ using SSL" = "Conectando al servidor IMAP %@ usando SSL"; "Connecting to IMAP server %@" = "Conectando al servidor IMAP %@"; "Unable to communicate with the IMAP server (%@:%i)." = "No se ha podido establecer la comunicacin con el servidor IMAP (%@:%i)."; "Authenticating using %@..." = "Autenticando usando %@..."; "Connected to %@!" = "Conectado a %@!"; /* "Invalid password %@ @ %@." = "Contrasea incorrecta %@ @ %@."; */ "A fatal error occured when appending the message to the %@ folder." = "Se ha producido un error fatal cuando se agregaba el mensaje a la carpeta %@."; /** MailboxManagerToolbar.m */ /** MessageViewWindow.m */ /* "Delete" = "Borrar"; */ /* "Reply" = "Responder"; */ /* "Forward" = "Reenviar"; */ /* "Show All Headers" = "Mostrar todas las cabeceras"; */ /** MessageViewWindowController.m */ /** MessageViewWindowToolbar.m */ /** MimeType.m */ /** MimeTypeManager.m */ /** NSRegEx.m */ /** NSStringExtensions.m */ /** NSUserDefaultsExtensions.m */ /** NewMailboxPanel.m */ "Please enter the name of the new Mailbox:" = "Introduzca el nombre del nuevo buzn:"; /* "Cancel" = "Cancelar"; */ /* "OK" = "Aceptar"; */ /** NewMailboxPanelController.m */ "New Mailbox" = "Nuevo buzn"; /* "Local" = "Local"; */ /* "Error!" = "Error!"; */ "The mailbox rename operation failed." = "No se ha podido cambiar el nombre del buzn."; /* "OK" = "Aceptar"; */ "The mailbox create operation failed." = "No se ha podido crear el buzn."; /** PasswordPanel.m */ "Please enter your password:" = "Introduzca su contrasea:"; /* "Cancel" = "Cancelar"; */ /* "OK" = "Aceptar"; */ /** PasswordPanelController.m */ /** PreferencesWindow.m */ "Apply" = "Aplicar"; /* "Cancel" = "Cancelar"; */ /* "OK" = "Aceptar"; */ /** PreferencesWindowController.m */ "Preferences Panel" = "Panel de preferencias"; "Loading preferences bundle at path %@." = "Cargando el conjunto de preferencias en la ruta %@."; /** TextEnrichedConsumer.m */ /** Utilities.m */ /* "Error!" = "Error!"; */ "A part of this E-Mail can't be represented. Please report this as a bug." = "No se puede presentar una parte de este correo electrnico. Por favor, informe de este error del programa."; /* "OK" = "Aceptar"; */ "No text/plain part found. Please report this bug since GNUMail.app doesn't support this other kind of parts." = "No se ha encontrado ninguna parte text/plain. Por favor informe de este error del programa, pues GNUMail.app no admite esta clase de partes."; "Local Mailboxes" = "Buzones locales"; "Reply..." = "Responder..."; "Would you like to reply to all recipients?" = "Desea responder a todos los destinatarios?"; /* "No" = "No"; */ /* "Yes" = "S"; */ "Reply to a message..." = "Responder un mensaje..."; "Forward a message..." = "Reenviar un mensaje..."; "Save all" = "Guardar todo"; "The external program (%@) for opening this MIME-Type (%@) can't be found." = "No se encontr el programa externo (%@) para abrir el Tipo-MIME (%@)."; GNUMail/Resources/Swedish.lproj/0040755000014600001460000000000010424672357017307 5ustar monotonemonotoneGNUMail/Resources/Swedish.lproj/Localizable.strings0100644000014600001460000020744210562042235023136 0ustar monotonemonotone /** Clock.m */ /** ClockController.m */ /** ComposeView.m */ "When replying to an E-Mail, add the signature to the" = "Nr ett svarsbrev skrivs, lgg till signaturen i"; "beginning" = "brjan"; "end" = "slutet"; "of the message." = "av meddelandet."; "When forwarding an E-Mail, add the signature to the" = "Nr ett brev vidarebefordras, lgg till signaturen i"; "Wrap lines at" = "Byt rad vid"; "characters when sending plain/text messages." = "tecken nr plain/text meddelanden skickas."; "Default charset used when sending a message:" = "Default charset used when sending a message:"; "Automatic" = "Automatic"; /** ComposeViewController.m */ "Compose" = "Skriv"; /* "Automatic" = "Automatic"; */ /** Face.m */ /** FaceController.m */ /** ExtendedFilteringTableView.m */ /** ExtendedTableColumn.m */ /** FilterEditorWindow.m */ "Description:" = "Beskrivning:"; "Active" = "Aktivt"; "Filter type:" = "Filter type:"; "Incoming" = "Incoming"; "Outgoing" = "Outgoing"; "External Program" = "External Program"; "Process with external program:" = "Process with external program:"; "and apply criteria(s)" = "and apply criteria(s)"; "after" = "after"; "before" = "before"; "program execution." = "program execution."; "Criteria" = "Kriterium"; "To" = "To"; "Cc" = "Cc"; "To or Cc" = "Till eller Cc"; "Subject" = "mne"; "From" = "Frn"; "Expert..." = "Expert..."; "Contains" = "Innehller"; "Is Equal" = "r lika med"; "Has Prefix" = "Har prefixet"; "Has Suffix" = "Har suffixet"; "Match Expression" = "Matcha uttryck"; "and" = "and"; "or" = "or"; "(none)" = "(none)"; "Action" = "Handling"; "Set the color to:" = "ndra frg till:"; "Transfer to mailbox:" = "Flytta till brevlda:"; "Do..." = "Utfr..."; "Delete the message" = "Radera meddelandet"; "Blue" = "Bl"; "Brown" = "Brun"; "Cyan" = "Cyan"; "Dark Gray" = "Mrkgr"; "Green" = "Grn"; "Magenta" = "Magenta"; "Orange" = "Orange"; "Purple" = "Lila"; "Red" = "Rd"; "White" = "Vit"; "Yellow" = "Gul"; "Bounce to:" = "Studsa till:"; "Forward to:" = "Vidarebeforda till:"; "Reply to:" = "Svara till:"; "Set message" = "Vlj meddelande"; "Cancel" = "Avbryt"; "OK" = "Ok"; /** FilterEditorWindowController.m */ "Add a filter" = "Lgg till ett filter"; "Error!" = "Fel!"; "The selected target folder (%@) holds folders, not messages." = "The selected target folder (%@) holds folders, not messages."; /* "OK" = "Ok"; */ "Warning!" = "Warning!"; "Defining a Coloring filter that uses an external program is a BAD idea.\nThis will slow down drastically the application." = "Defining a Coloring filter that uses an external program is a BAD idea.\nThis will slow down drastically the application."; /* "To" = "To"; */ /* "Cc" = "Cc"; */ /* "To or Cc" = "Till eller Cc"; */ /* "From" = "Frn"; */ "Is in Address Book" = "Is in Address Book"; /** FilterHeaderEditorWindow.m */ "Header" = "Huvud"; "Header:" = "Huvud:"; "Remove" = "Ta bort"; "Add" = "Lgg till"; /* "Cancel" = "Avbryt"; */ /* "OK" = "Ok"; */ /** FilterHeaderEditorWindowController.m */ "Add a header" = "Lgg till huvud"; /** FilterMessageWindow.m */ "Text to include before original message:" = "Text att inkludera fre orginalmeddelandet:"; /* "Cancel" = "Avbryt"; */ /* "OK" = "Ok"; */ /** FilterMessageWindowController.m */ /** FilteringView.m */ "Rules" = "Regler"; /* "Active" = "Aktivt"; */ "Add..." = "Lgg till..."; "Delete" = "Ta bort"; "Edit..." = "ndra..."; "Duplicate" = "Duplicera"; /** FilteringViewController.m */ "Yes" = "Ja"; "No" = "Nej"; "Delete..." = "Ta bort..."; "Are you sure you want to delete this filter?" = "r du sker att du vill ta bort det hr filtret?"; /* "Cancel" = "Avbryt"; */ "Edit a filter" = "Redigera ett filter"; "Filtering" = "Filtering"; /** FontsView.m */ "Font used when displaying a message for:" = "Typsnitt som anvnds fr att visa:"; "Header name:" = "Huvud namn:"; "Size:" = "Size:"; "Header value:" = "Huvud innehll:"; "Content of message:" = "Meddelandets innehll:"; "Use fixed-width font for plain text messages" = "Use fixed-width font for plain text messages"; "Plain text font:" = "Plain text font:"; /** FontsViewController.m */ "Fonts" = "Typsnitt"; /** MIMEView.m */ "Mime-Type" = "Mime-typ"; "File extension(s)" = "Filndelse(r)"; /* "Add..." = "Lgg till..."; */ /* "Delete" = "Ta bort"; */ /* "Edit..." = "ndra..."; */ "Import from mailcap" = "Importera frn mailcap"; /** MIMEViewController.m */ /* "Delete..." = "Ta bort..."; */ "Are you sure you want to delete this Mime-Type entry?" = "r du sker att du vill ta bort den hr Mime-typen?"; /* "Cancel" = "Avbryt"; */ /* "Yes" = "Ja"; */ "MIME" = "MIME"; /** MailcapParser.m */ /** MailcapWindow.m */ /* "Mime-Type" = "Mime-typ"; */ "Command" = "Kommando"; /* "Cancel" = "Avbryt"; */ "Import" = "Importera"; /** MailcapWindowController.m */ "Import from mailcap file" = "Importera frn mailcap fil"; "Mailcap Import Error!" = "Mailcap importeringsfel!"; "You must select at least one mailcap item to import!" = "Du mste vlja minst ett mailcap freml att importera!"; /* "OK" = "Ok"; */ /** MimeTypeEditorWindow.m */ "Mime-Type (ex: image/jpeg):" = "Mime-typ (t.ex: image/jpeg):"; "File extensions (ex: jpeg,jpg,jpe):" = "Filndelser (t.ex: jpeg,jpg,jpe):"; /* "Description:" = "Beskrivning:"; */ "View:" = "Visa:"; "Display if possible (as icon if it is not possible)" = "Visa om mjligt (som ikon om inte mjligt)"; "Always display as icon" = "Visa alltid som ikon"; "Action:" = "tgrd:"; "Prompt save panel" = "ppna sparningspanel"; "Open with external program:" = "ppna med externt program:"; "Choose" = "Vlj"; "Needs a terminal for the external program" = "En terminal kvvs fr det externa programmet"; "Please choose an icon to represent this Mime-Type (tiff file only):" = "Var god vlj en ikon fr att representera denna Mime-typ (endast tiff bilder):"; /* "Cancel" = "Avbryt"; */ /* "OK" = "Ok"; */ /** MimeTypeEditorWindowController.m */ "Add a Mime-Type" = "Lgg till en Mime-typ"; "Edit a Mime-Type" = "ndra p en Mime-typ"; /** MailboxesView.m */ "Default mailbox used for:" = "Default mailbox used for:"; "Inbox:" = "Inbox:"; "Outbox:" = "Outbox:"; "Drafts:" = "Drafts:"; "Trash:" = "Trash:"; "(If you don't see all your IMAP mailboxes, first open the connection to this IMAP server.)" = "(If you don't see all your IMAP mailboxes, first open the connection to this IMAP server.)"; "Compact mailbox when closing (not recommended)" = "Rensa brevldor nr dom stngs (inte rekommenderat)"; "Reuse the mail window when selecting a folder" = "Reuse the mail window when selecting a folder"; /** MailboxesViewController.m */ "Mailboxes" = "Brevldor"; /** PGPController.m */ "Encrypt" = "Encrypt"; "Sign" = "Sign"; "\nThe supplied passphrase was wrong or not given" = "\nThe supplied passphrase was wrong or not given"; "\nWrong passphrase (or something else)" = "\nWrong passphrase (or something else)"; "\nYour key is expired. You must generate a new one\nbefore trying to send again any signed or encrypted messages." = "\nYour key is expired. You must generate a new one\nbefore trying to send again any signed or encrypted messages."; "Decryption failed due the following reason(s):\n" = "Decryption failed due the following reason(s):\n"; /* "Error!" = "Fel!"; */ /* "OK" = "Ok"; */ "Encryption failed due the following reason(s):\n" = "Encryption failed due the following reason(s):\n"; "Passphrase for %@" = "Passphrase for %@"; /** PGPView.m */ "GPG/PGP executable path:" = "GPG/PGP executable path:"; "User E-Mail address:" = "User E-Mail address:"; "Use FROM E-Mail address for signing" = "Use FROM E-Mail address for signing"; /** PGPViewController.m */ "Version: %@" = "Version: %@"; "PGP" = "PGP"; /** NewPersonalProfilePanel.m */ "Please enter the name of the new profile:" = "Skriv in namnet p den nya profilen:"; /* "Cancel" = "Avbryt"; */ /* "OK" = "Ok"; */ /** NewPersonalProfilePanelController.m */ "New Personal Profile" = "Ny personlig profil"; /** PersonalView.m */ "Available personal profiles:" = "Tillgngliga personliga profiler:"; /* "Add" = "Lgg till"; */ /* "Delete" = "Ta bort"; */ "Set this profile as default" = "Anvnd den hr profilen som standard"; "Your name:" = "Ditt namn:"; "Your E-Mail address:" = "Din epostadress:"; "Reply-to address:" = "Svarsadress:"; "Organization:" = "Organisation:"; "Signature" = "Signatur"; "Obtain signature from" = "Erhll signatur frn"; "content of file" = "innehll av fil"; "program's output" = "programs utskrift"; /* "Choose" = "Vlj"; */ /** PersonalViewController.m */ /* "Error!" = "Fel!"; */ "This profile name already exists. Please choose another name." = "Det finns redan en profil med det hr namnet. Var god vlj ett annat namn."; /* "OK" = "Ok"; */ "You must have at least one defined personal profile at any time." = "Du mste ha minst en personlig profil."; /* "Delete..." = "Ta bort..."; */ "Are you sure you want to delete the %@ personal profile?" = "r du sker att du vill ta bort profilen %@?"; /* "Cancel" = "Avbryt"; */ /* "Yes" = "Ja"; */ "Personal" = "Personligt"; /** IMAPView.m */ "Check for mail every" = "Hmta ny epost med"; "minutes" = "minut"; "Folders" = "Folders"; "Subscribed" = "Subscribed"; "List" = "List"; "Subscribe" = "Anslut"; "Unsubscribe" = "Ta bort anslutning"; /** IMAPViewController.m */ "All Folders" = "All Folders"; "Y" = "Y"; /* "Error!" = "Fel!"; */ "Authentication error with the IMAP server." = "Authentication error with the IMAP server."; /* "OK" = "Ok"; */ "An error occured while listing the folders on this IMAP server." = "An error occured while listing the folders on this IMAP server."; "You are already subscribed to this IMAP folder." = "You are already subscribed to this IMAP folder."; "You cannot subscribe to this folder." = "You cannot subscribe to this folder."; "An error occured while subscribing to folder:\n%@." = "An error occured while subscribing to folder:\n%@."; "You are already unsubscribed from this IMAP folder." = "You are already unsubscribed from this IMAP folder."; "An error occured while unsubscribing to folder:\n%@." = "An error occured while unsubscribing to folder:\n%@."; /** POP3View.m */ "Leave messages on server for" = "Lmna meddelanden p server i"; "days" = "dagar"; "Use APOP (if possible)" = "Anvnd APOP (om mjligt)"; "Download messages from this server into mailbox:" = "Download messages from this server into mailbox:"; "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)" = "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)"; /** POP3ViewController.m */ /** ReceivingView.m */ "Retrieve mail (for POP3 accounts and local mail spool file)" = "Hmta post (fr POP3 konton och lokal post)"; "Manually" = "Manuellt"; "Automatically every" = "Automatiskt var"; /* "minutes" = "minut"; */ "Incoming mail servers" = "Inkommande postservrar"; "Incoming Servers" = "Inkommande servrar"; /* "Add" = "Lgg till"; */ "Edit" = "Redigera"; /* "Delete" = "Ta bort"; */ "Show alert panel for received and transferred messages" = "Show alert panel for received and transferred messages"; "Show No New Messages panel" = "Show No New Messages panel"; /** ReceivingViewController.m */ "POP3" = "POP3"; "IMAP" = "IMAP"; "%@ [UNIX]" = "%@ [UNIX]"; /* "Error!" = "Fel!"; */ "To edit this account, you must first close the connection with the server." = "To edit this account, you must first close the connection with the server."; /* "OK" = "Ok"; */ "To delete this account, you must first close the connection with the server." = "To delete this account, you must first close the connection with the server."; /* "Delete..." = "Ta bort..."; */ "Are you sure you want to delete this receiving server entry?" = "r du sker att du vill ta bort den hr inkommande servern?"; /* "Cancel" = "Avbryt"; */ /* "Yes" = "Ja"; */ "Receiving" = "Ta emot"; /** ReceivingWindow.m */ "Server type:" = "Servertyp:"; /* "POP3" = "POP3"; */ /* "IMAP" = "IMAP"; */ "UNIX" = "UNIX"; "Server name:" = "Servernamn:"; "Port:" = "Port:"; "Username:" = "Anvndarnamn:"; "Password:" = "Lsenord:"; "Remember password" = "Spara lsenord"; "Verify for new mail on startup" = "Verify for new mail on startup"; "Use secure connection (SSL)" = "Use secure connection (SSL)"; "General" = "Allmnt"; /* "Cancel" = "Avbryt"; */ /* "OK" = "Ok"; */ /** ReceivingWindowController.m */ "Receiving preferences" = "Mottagningsinstllningar"; /* "IMAP" = "IMAP"; */ /* "POP3" = "POP3"; */ /* "UNIX" = "UNIX"; */ /** UNIXView.m */ "Mail spool file:" = "Lokal postfil:"; /* "Choose" = "Vlj"; */ "Download messages from this spool file into mailbox:" = "Download messages from this spool file into mailbox:"; /* "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)" = "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)"; */ /** UNIXViewController.m */ /** SendingView.m */ "Delivery methods" = "Leveransmetoder"; "Method" = "Metod"; "Value" = "Vrde"; /* "Add" = "Lgg till"; */ /* "Edit" = "Redigera"; */ /* "Remove" = "Ta bort"; */ "Additional Outgoing Headers" = "Extra utgende huvuden"; "Key" = "Nyckel"; "Key:" = "Nyckel:"; "Value:" = "Vrde:"; /** SendingViewController.m */ "SMTP" = "SMTP"; "Mailer" = "Postskickare"; /* "Delete..." = "Ta bort..."; */ "Are you sure you want to delete this transport method?" = "r du sker att du vill ta bort denna leveransmetod?"; /* "Cancel" = "Avbryt"; */ /* "Yes" = "Ja"; */ "Sending" = "Skicka"; /** TransportMethodEditorWindow.m */ "Transport method:" = "Leveransmetod:"; /* "Mailer" = "Postskickare"; */ /* "SMTP" = "SMTP"; */ "Mailer:" = "Postskickare:"; "Host:" = "Vrd:"; /* "Port:" = "Port:"; */ "Authenticate using" = "Anslut med"; "Most secure" = "Skraste"; "Supported mechanisms" = "Stdda metoder"; /* "Username:" = "Anvndarnamn:"; */ /* "Password:" = "Lsenord:"; */ /* "Remember password" = "Spara lsenord"; */ "Associated personal profile:" = "Associerad personlig profil:"; /* "Cancel" = "Avbryt"; */ /* "OK" = "Ok"; */ /** TransportMethodEditorWindowController.m */ "Add a transport method" = "Lgg till en leveransmetod"; "Edit a transport method" = "Redigera en leveransmetod"; /** ViewingView.m */ "Messages" = "Meddelanden"; "Hide deleted messages on startup" = "Gm raderade meddelanden vid uppstart"; "Hide read messages on startup" = "Hide read messages on startup"; "Highlight URLs in message content" = "Frglgg URLer i meddelanden"; "Table columns" = "Tabell kolumner"; "Status" = "Status"; "Id" = "Nr"; "Date" = "Datum"; /* "From" = "Frn"; */ /* "Subject" = "mne"; */ "Size" = "Storlek"; "Shown headers while viewing a mail" = "Visade huvuden nr brev visas"; "Show all headers" = "Visa alla huvuden"; /* "Remove" = "Ta bort"; */ /* "Add" = "Lgg till"; */ "Defaults" = "terstll"; /* "Key:" = "Nyckel:"; */ "Shown Headers" = "Visade huvuden"; "Double-clicking in message list:" = "Double-clicking in message list:"; "Opens reply editor" = "Opens reply editor"; "Opens message in new window" = "Opens message in new window"; /** ViewingViewController.m */ "Viewing" = "Visning"; /** Address.m */ /** AddressBook.m */ /* "General" = "Allmnt"; */ /** AddressBookController.m */ "Address Book" = "Adressbok"; "Add Group" = "Ny grupp"; "Delete Group" = "Ta bort grupp"; /* "General" = "Allmnt"; */ /* "Error!" = "Fel!"; */ "This group already exist! Please choose an other name." = "Denna grupp finns redan! Var god vlj ett annat namn."; /* "OK" = "Ok"; */ /* "Delete..." = "Ta bort..."; */ "Are you sure you want to delete this address?" = "r du sker p att du vill ta bort den hr adressen?"; /* "No" = "Nej"; */ /* "Yes" = "Ja"; */ "Are you sure you want to delete this group?" = "r du sker p att du vill ta bort den hr gruppen?"; "You must select a group to import the addresses in." = "You must select a group to import the addresses in."; "< no address >" = "< ingen adress >"; "Add Address" = "Lgg till adress"; "Delete Address" = "Ta bort adress"; "Enter the contact's E-Mail address here" = "Skriv kontaktens e-post adress hr"; "Groups" = "Grupper"; "Move to:" = "Flytta till:"; /** AddressBookWindow.m */ /* "Groups" = "Grupper"; */ "Name:" = "Namn:"; "Modify" = "ndra"; "Import from:" = "Import from:"; "OPENSTEP Mail.app" = "OPENSTEP Mail.app"; "LDIF" = "LDIF"; "Close" = "Stng"; /** BounceWindow.m */ "Send" = "Skicka"; "Addresses" = "Adressbok"; "From:" = "Frn:"; "Using:" = "Genom:"; "To:" = "Till:"; "Cc:" = "Cc:"; "Bcc:" = "Bcc:"; /** BounceWindowController.m */ "Bounce a message" = "Studsa ett meddelande"; /* "Error!" = "Fel!"; */ "Unable to create a valid bounced message.\nPlease, report this as a bug." = "Kunde inte skapa ett korrekt studsat meddelande.\nVar god rapportera detta som en bug."; /* "OK" = "Ok"; */ "Please, verify that the To/Cc/Bcc fields are correct. Also, you MUST have at least one\nvalid E-Mail address in the To field." = "Var god verifiera att Till/Cc/Bcc-flten r korrekta. Du mste ocks ha minst en\ngiltig epostadress i Till fltet."; "Stop" = "Stop"; "Starting the thread for bouncing the E-Mail..." = "Starting the thread for bouncing the E-Mail..."; "Closing..." = "Stnger..."; "A mail is currently being sent. Please wait." = "Ett brev skickas. Var god vnta."; "An error occured during the authentication with the SMTP server (%@)." = "Ett fel uppstod nr SMTP servern kontaktades (%@)."; "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences." = "Ett fel uppstod nr brevet skickades. Det kan vara ett\nntverksproblem eller ett fel i dina sndningsinstllningar."; /* "Send" = "Skicka"; */ "Manual stop of bouncing thread." = "Manual stop of bouncing thread."; "Exiting the thread used to bounce the E-Mail..." = "Exiting the thread used to bounce the E-Mail..."; /** BounceWindowToolbar.m */ /** ConsoleWindow.m */ /* "Date" = "Datum"; */ "Message" = "Meddelande"; /** ConsoleWindowController.m */ /* "Date" = "Datum"; */ "%H:%M:%S.%F" = "%H:%M:%S.%F"; /** EditWindow.m */ /* "Send" = "Skicka"; */ "Attach" = "Bifoga"; "Add Cc" = "Lgg till Cc"; "Add Bcc" = "Lgg till Bcc"; /* "Addresses" = "Adressbok"; */ /* "From:" = "Frn:"; */ /* "Using:" = "Genom:"; */ "Charset:" = "Charset:"; /* "Automatic" = "Automatic"; */ /* "To:" = "Till:"; */ /* "Cc:" = "Cc:"; */ /* "Bcc:" = "Bcc:"; */ "Subject:" = "mne:"; /** EditWindowController.m */ /* "Error!" = "Fel!"; */ "You must have at least one transport agent defined.\nSee Preferences -> Sending." = "Du mste definiera minst en leveransmetod.\nSe Instllningar -> Skicka."; /* "OK" = "Ok"; */ /* "Stop" = "Stop"; */ "Starting the thread for sending the E-Mail..." = "Starting the thread for sending the E-Mail..."; "(no subject)" = "(no subject)"; /* "Closing..." = "Stnger..."; */ /* "A mail is currently being sent. Please wait." = "Ett brev skickas. Var god vnta."; */ "Would you like to save this message in the Drafts folder?" = "Vill du spara det hr meddelandet i Utkast brevldan?"; /* "Cancel" = "Avbryt"; */ /* "Yes" = "Ja"; */ /* "No" = "Nej"; */ "An error occured while attempting to obtain the message store for the Drafts folder." = "An error occured while attempting to obtain the message store for the Drafts folder."; "Remove Cc" = "Ta bort Cc"; /* "Add Cc" = "Lgg till Cc"; */ "Remove Bcc" = "Ta bort Bcc"; /* "Add Bcc" = "Lgg till Bcc"; */ /* "An error occured during the authentication with the SMTP server (%@)." = "Ett fel uppstod nr SMTP servern kontaktades (%@)."; */ /* "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences." = "Ett fel uppstod nr brevet skickades. Det kan vara ett\nntverksproblem eller ett fel i dina sndningsinstllningar."; */ /* "Send" = "Skicka"; */ "An error occured while attempting to obtain the message store for the Outbox folder.\nThe message nonetheless successfully sent." = "An error occured while attempting to obtain the message store for the Outbox folder.\nThe message nonetheless successfully sent."; "You must define a recipient in the field \"To\"." = "Du mste skriva in en mottagare i fltet \"Till\"."; /* "Automatic" = "Automatic"; */ "Manual stop of sending thread." = "Manual stop of sending thread."; "Exiting the thread used to send the E-Mail..." = "Exiting the thread used to send the E-Mail..."; "An error occured while decoding %@. Please fix this address." = "Ett fel uppstod nr adressen %@ avlstes. Var god rtta till adressen."; "%0.1fKB (%d characters)" = "%0.1fKB (%d characters)"; /** EditWindowToolbar.m */ /** ExtendedAttachmentCell.m */ "%@ (%d bytes)" = "%@ (%d byte)"; "%@ (%d KB)" = "%@ (%d KB)"; /** ExtendedCell.m */ /** ExtendedOutlineView.m */ /** ExtendedTableView.m */ /** ExtendedWindow.m */ /** Filter.m */ /** FilterManager.m */ /** FindWindow.m */ "Find:" = "Sk:"; "Replace with:" = "Erstt med:"; "Find Scope" = "Skvidd"; "Summaries" = "Sammanfattningar"; /* "Messages" = "Meddelanden"; */ "Find Options" = "Skningsalternativ"; "Ignore Case" = "Ignorera gemener/VERSALER"; "Regular Expression" = "Regular Expression"; "Find All" = "Hitta alla"; "Replace" = "Erstt"; "Replace & Find" = "Sk & erstt"; "Previous" = "Fregende"; "Next" = "Nsta"; /** FindWindowController.m */ "Find" = "Sk"; "Searching..." = "Searching..."; "Done searching. %d results found." = "Done searching. %d results found."; /** FolderNode.m */ /** FolderNodePopUpItem.m */ /** GNUMail.m */ /* "Error!" = "Fel!"; */ "An error occured while attempting to obtain the message store for target filter." = "An error occured while attempting to obtain the message store for target filter."; /* "OK" = "Ok"; */ /* "You must have at least one transport agent defined.\nSee Preferences -> Sending." = "Du mste definiera minst en leveransmetod.\nSe Instllningar -> Skicka."; */ "Your Software is up-to-date" = "Your Software is up-to-date"; "You have the most recent version of GNUMail." = "You have the most recent version of GNUMail."; "A New Version is Available" = "A New Version is Available"; "A new version of GNUMail is available (version %@). Would you like to download the new version now?" = "A new version of GNUMail is available (version %@). Would you like to download the new version now?"; /* "Cancel" = "Avbryt"; */ "Feature not implemented!" = "Funktionen r inte implementerad!"; "Sorry, this feature is only available under Mac OS X." = "Sorry, this feature is only available under Mac OS X."; "Compact..." = "Rensa..."; "Compacting a mailbox will permanently remove deleted messages.\nDo you want to continue?" = "Om du rensar brevldan kommer raderade meddelanden permanent tas bort.\nVill du fortstta?"; /* "No" = "Nej"; */ /* "Yes" = "Ja"; */ "Compacting mailbox, please wait..." = "Compacting mailbox, please wait..."; "Done compacting mailbox %@." = "Done compacting mailbox %@."; "New message..." = "Nytt meddelande..."; "Undelete" = "terstll"; /* "Delete" = "Ta bort"; */ "Mark as Unread" = "Markera som olst"; "Mark as Read" = "Markera som lst"; "Mailbox error!" = "Brevldefel!"; "You must select a valid mailbox to open!" = "Du mste vlja en giltig brevlda att ppna!"; "Local" = "Lokalt"; "Information" = "Information"; "Use the same directory (%@) to save all other attachments? (override the files with the same name)." = "Use the same directory (%@) to save all other attachments? (override the files with the same name)."; "Show Filtered Headers" = "Visa filtrerade huvuden"; "Show All Headers" = "Visa alla huvuden"; "Hide Status Bar" = "Hide Status Bar"; "Show Status Bar" = "Show Status Bar"; "Show Normal Display" = "Show Normal Display"; "Show RAW Source" = "Visa rdata"; "Info" = "Info"; "Mailbox" = "Brevlda"; /* "Message" = "Meddelande"; */ /* "Compose" = "Skriv"; */ /* "Edit" = "Redigera"; */ "Windows" = "Fnster"; "Print" = "Utskrift"; "Services" = "Tjnster"; "Hide" = "Gm"; "Quit" = "Avsluta"; "Info Panel..." = "Infopanel..."; "Check For Updates" = "Check For Updates"; "Preferences..." = "Instllningar..."; "Help..." = "Hjlp..."; "Mailboxes..." = "Brevldor..."; "Get New Mail" = "Hmta ny post"; "Sorting" = "Sortering"; "Sort by Date" = "Sortera efter datum"; "Sort by Name" = "Sortera efter namn"; "Sort by Number" = "Sortera efter nummer"; "Sort by Size" = "Sortera efter storlek"; "Sort by Subject" = "Sortera efter mne"; "Hide Deleted" = "Gm raderade"; "Hide Read" = "Hide Read"; "Compact" = "Rensa"; "Select All Messages" = "Markera alla meddelanden"; "Send to Address Book" = "Spara i adressboken"; "Save Attachment" = "Spara bifogad fil"; "Save Text from Message" = "Spara texten frn meddelandet"; "Text Encodings" = "Text Encodings"; "Bounce..." = "Studsa..."; "Apply Manual Filters" = "Applicera filter manuellt"; "New" = "Nytt"; "Reply" = "Svara"; "Reply All" = "Svara alla"; "Forward" = "Vidarebefordra"; "Addresses..." = "Adresser..."; "Drafts" = "Utkast"; "Save in Drafts" = "Spara i Utkast"; "Restore Draft" = "Fortstt utkast"; "Cut" = "Klipp ut"; "Copy" = "Kopiera"; "Paste" = "Klistra in"; "Undo" = "ngra"; /* "Find" = "Sk"; */ "Spelling..." = "Stavning..."; "Check Spelling" = "Kolla stavning"; "Select All" = "Markera allt"; "Find Panel..." = "Skpanel..."; "Find Next" = "Hitta nsta"; "Find Previous" = "Hitta fregende"; "Enter Selection" = "Anvnd markering"; "Console" = "Console"; "Arrange" = "Sida vid sida"; "Miniaturize" = "Minimera"; /* "Close" = "Stng"; */ "Setup Printer" = "Skrivarinstllningar"; "Important!" = "Viktigt!"; "No configuration found for GNUMail.app" = "Inga instllningar funna fr GNUMail.app"; "Configure" = "Instllningar"; "Loaded bundle at path %@" = "Loaded bundle at path %@"; "Failed to initialize bundle at path %@" = "Failed to initialize bundle at path %@"; "Error loading bundle at path %@" = "Error loading bundle at path %@"; "All" = "Alla"; "Show Deleted" = "Visa raderade"; "Show Read" = "Show Read"; "Default" = "Default"; /** GNUMailConstants.m */ /** Group.m */ /** LabelWidget.m */ /** LocalMailDelivery.m */ /** MailHeaderCell.m */ /** MailWindow.m */ /* "Delete" = "Ta bort"; */ "Get" = "Hmta"; /* "Mailboxes" = "Brevldor"; */ /* "Compose" = "Skriv"; */ /* "Reply" = "Svara"; */ /* "Forward" = "Vidarebefordra"; */ /* "Addresses" = "Adressbok"; */ /* "Find" = "Sk"; */ /* "Status" = "Status"; */ /* "Id" = "Nr"; */ /* "Date" = "Datum"; */ /* "From" = "Frn"; */ /* "Subject" = "mne"; */ /* "Size" = "Storlek"; */ /** MailWindowController.m */ /* "New message..." = "Nytt meddelande..."; */ "Local - %@" = "Lokal - %@"; "IMAP on %@ - %@" = "IMAP p %@ - %@"; "No Messages!" = "Inga meddelanden!"; "There are no messages in this Mailbox!" = "Det finns inga brev i den hr brevldan!"; /* "OK" = "Ok"; */ "< unknown >" = "< oknd >"; /* "Closing..." = "Stnger..."; */ "GNUMail.app is currently receiving E-Mails. Please wait." = "GNUMail.app tar emot meddelanden. Var god vnta."; "Would you like to close the connection with the IMAP server?" = "Would you like to close the connection with the IMAP server?"; /* "Cancel" = "Avbryt"; */ /* "Yes" = "Ja"; */ /* "No" = "Nej"; */ "Closed local folder %@." = "Closed local folder %@."; "Closed IMAP folder %@ on %@." = "Closed IMAP folder %@ on %@."; "Closing IMAP connection on %@." = "Closing IMAP connection on %@."; /* "Stop" = "Stop"; */ "Starting the fetching thread for %@.." = "Starting the fetching thread for %@.."; /* "Error!" = "Fel!"; */ "Unable to communicate with the POP3 server (%@)." = "Kunde inte kontakta POP3 servern (%@)."; "Invalid password %@ @ %@." = "Felaktigt lsenord %@ @ %@."; "An error occured while obtaining the IMAP Store to save the received message.\n%@" = "An error occured while obtaining the IMAP Store to save the received message.\n%@"; "The received message was saved in your local Inbox folder." = "The received message was saved in your local Inbox folder."; "No New Messages..." = "Inga nya meddelanden..."; "There are no new messages on %@ @ %@." = "There are no new messages on %@ @ %@."; /* "Get" = "Hmta"; */ "Filtered messages..." = "Filtrerade meddelanden..."; "%d messages have been transfered to the following folders:\n%@" = "%d messages have been transfered to the following folders:\n%@"; "%d messages (%dKB) - %d unread (%dKB) - %d selected (%0.1fKB) - %d deleted" = "%d meddelanden (%dKB) - %d olsta (%dKB) - %d markerade (%0.1fKB) - %d raderade"; "IMAP %@ @ %@ - %@" = "IMAP %@ @ %@ - %@"; "No new messages on server %@" = "No new messages on server %@"; "Got a %@ while estabilishing (or closing) the POP3 connection to server %@." = "Got a %@ while estabilishing (or closing) the POP3 connection to server %@."; "Exiting the fetching thread for %@..." = "Exiting the fetching thread for %@..."; "Got a %@ while transferring mails from %@." = "Got a %@ while transferring mails from %@."; /** MailWindowToolbar.m */ /** MailboxManager.m */ "Open this folder on startup" = "Open this folder on startup"; /* "Mailbox" = "Brevlda"; */ /* "Size" = "Storlek"; */ /* "Messages" = "Meddelanden"; */ /* "Close" = "Stng"; */ /** MailboxManagerCache.m */ /** MailboxManagerController.m */ /* "Mailboxes" = "Brevldor"; */ /* "Mailbox" = "Brevlda"; */ "All Mailboxes" = "All Mailboxes"; /* "Size" = "Storlek"; */ "%d KB" = "%d KB"; /* "Messages" = "Meddelanden"; */ "%d (%d unread)" = "%d (%d unread)"; /* "Local" = "Lokalt"; */ /* "Closing..." = "Stnger..."; */ "Would you like to close the connection with this IMAP server?" = "Would you like to close the connection with this IMAP server?"; /* "No" = "Nej"; */ /* "Yes" = "Ja"; */ /* "Closing IMAP connection on %@." = "Closing IMAP connection on %@."; */ "Transfer error!" = "verfringsfel!"; "You cannot transfer a message inside the same mailbox!" = "Du kan inte verfra ett meddela till samma brevlda!"; /* "OK" = "Ok"; */ /* "Mailbox error!" = "Brevldefel!"; */ /* "You must select a valid mailbox to open!" = "Du mste vlja en giltig brevlda att ppna!"; */ "You must select a valid mailbox\nto transfer this E-Mail to!" = "Du mste vlja en giltig brevlda\natt verfra detta brev till"; "You cannot transfer E-Mails to this folder!" = "You cannot transfer E-Mails to this folder!"; "You must select a valid root where to create this new mailbox." = "Du mste vlja en giltig plats fr att skapa en ny brevlda."; "Please select the mailbox you would like to delete." = "Var god vlj brevldan du vill ta bort."; /* "Delete..." = "Ta bort..."; */ "Are you sure you want to delete this mailbox?" = "r du sker att du vill ta bort den hr brevldan?"; /* "Cancel" = "Avbryt"; */ "Error while deleting!" = "Fel under borttagning!"; "You can't delete an opened mailbox! Close it first." = "Du kan inte ta bort en ppen brevlda! Stng den frst."; /* "Error!" = "Fel!"; */ "The mailbox delete operation failed." = "Borttagningen av brevldan misslyckades."; "You must select a valid mailbox to rename!" = "Du mste vlja en giltig brevlda att dpa om!"; "You can't rename an opened mailbox! Close it first." = "Du kan inte dpa om en ppen brevlda. Stng den frst."; "Edit Mailbox" = "Edit Mailbox"; "Please enter the new name of the Mailbox:" = "Please enter the new name of the Mailbox:"; "The local mailbox %@ does not exist!" = "Den lokala brevldan %@ existerar inte!"; "This folder (%@) holds folders, not messages!" = "This folder (%@) holds folders, not messages!"; "Local folder %@ opened." = "Local folder %@ opened."; "A folder (%@) is already open. Please close it first." = "A folder (%@) is already open. Please close it first."; "Opening IMAP folder %@ on %@..." = "Opening IMAP folder %@ on %@..."; "IMAP folder %@ on %@ opened." = "IMAP folder %@ on %@ opened."; "Connecting to IMAP server %@ using SSL" = "Connecting to IMAP server %@ using SSL"; "Connecting to IMAP server %@" = "Connecting to IMAP server %@"; "Unable to communicate with the IMAP server (%@:%i)." = "Unable to communicate with the IMAP server (%@:%i)."; "Authenticating using %@..." = "Authenticating using %@..."; "Connected to %@!" = "Connected to %@!"; /* "Invalid password %@ @ %@." = "Felaktigt lsenord %@ @ %@."; */ "A fatal error occured when appending the message to the %@ folder." = "A fatal error occured when appending the message to the %@ folder."; /** MailboxManagerToolbar.m */ /** MessageViewWindow.m */ /* "Delete" = "Ta bort"; */ /* "Reply" = "Svara"; */ /* "Forward" = "Vidarebefordra"; */ /* "Show All Headers" = "Visa alla huvuden"; */ /** MessageViewWindowController.m */ /** MessageViewWindowToolbar.m */ /** MimeType.m */ /** MimeTypeManager.m */ /** NSRegEx.m */ /** NSStringExtensions.m */ /** NSUserDefaultsExtensions.m */ /** NewMailboxPanel.m */ "Please enter the name of the new Mailbox:" = "Skriv in namnet p den nya brevldan:"; /* "Cancel" = "Avbryt"; */ /* "OK" = "Ok"; */ /** NewMailboxPanelController.m */ "New Mailbox" = "Ny brevlda"; /* "Local" = "Lokalt"; */ /* "Error!" = "Fel!"; */ "The mailbox rename operation failed." = "Namnbytet p brevldan misslyckades."; /* "OK" = "Ok"; */ "The mailbox create operation failed." = "Skapandet av brevldan misslyckades."; /** PasswordPanel.m */ "Please enter your password:" = "Var god skriv in ditt lsenord:"; /* "Cancel" = "Avbryt"; */ /* "OK" = "Ok"; */ /** PasswordPanelController.m */ /** PreferencesWindow.m */ "Apply" = "Verkstll"; /* "Cancel" = "Avbryt"; */ /* "OK" = "Ok"; */ /** PreferencesWindowController.m */ "Preferences Panel" = "Instllningar"; "Loading preferences bundle at path %@." = "Loading preferences bundle at path %@."; /** TextEnrichedConsumer.m */ /** Utilities.m */ /* "Error!" = "Fel!"; */ "A part of this E-Mail can't be represented. Please report this as a bug." = "En del av det hr brevet kan inte visas. Var god rapportera detta som en bug"; /* "OK" = "Ok"; */ "No text/plain part found. Please report this bug since GNUMail.app doesn't support this other kind of parts." = "No text/plain part found. Please report this bug since GNUMail.app doesn't support this other kind of parts."; "Local Mailboxes" = "Local Mailboxes"; "Reply..." = "Svara..."; "Would you like to reply to all recipients?" = "Vill du svara till alla mottagare?"; /* "No" = "Nej"; */ /* "Yes" = "Ja"; */ "Reply to a message..." = "Svara p ett brev..."; "Forward a message..." = "Vidarebefodra ett brev..."; "Save all" = "Save all"; "The external program (%@) for opening this MIME-Type (%@) can't be found." = "Det externa programmet (%@) fr att ppna den hr MIME-typen (%@) kan inte hittas."; GNUMail/Resources/Turkish.lproj/0040755000014600001460000000000010424672357017332 5ustar monotonemonotoneGNUMail/Resources/Turkish.lproj/Localizable.strings0100644000014600001460000020664610562042235023166 0ustar monotonemonotone /** Clock.m */ /** ClockController.m */ /** ComposeView.m */ "When replying to an E-Mail, add the signature to the" = "Bir mesaj yan1tland11nda, imza dosyas1n1"; "beginning" = "ba_lang1ca"; "end" = "sona"; "of the message." = "ekle."; "When forwarding an E-Mail, add the signature to the" = "Bir mesaj ynlendirildiinde, imza dosyas1n1"; "Wrap lines at" = "szck kayd1r"; "characters when sending plain/text messages." = "dz/metin mesaj gnderildiinde karakterler."; "Default charset used when sending a message:" = "mesaj gnderilirken varsay1lan dil kodlamas1:"; "Automatic" = "Otomatik"; /** ComposeViewController.m */ "Compose" = "Yeni 0leti"; /* "Automatic" = "Otomatik"; */ /** Face.m */ /** FaceController.m */ /** ExtendedFilteringTableView.m */ /** ExtendedTableColumn.m */ /** FilterEditorWindow.m */ "Description:" = "Tan1m:"; "Active" = "Aktif"; "Filter type:" = "Filtre tipi:"; "Incoming" = "Gelen"; "Outgoing" = "Giden"; "External Program" = "ar1lacak Program"; "Process with external program:" = "ar1lacak programla sre:"; "and apply criteria(s)" = "ve kriterleri uygula"; "after" = "sonra"; "before" = "nce"; "program execution." = "program al1_t1rma."; "Criteria" = "Kriter"; "To" = "Kime"; "Cc" = "Cc"; "To or Cc" = "Kime veya Cc"; "Subject" = "Konu"; "From" = "Kimden"; "Expert..." = "Uzman..."; "Contains" = "0erilen"; "Is Equal" = "E_it mi"; "Has Prefix" = "n Eki"; "Has Suffix" = "Son Eki"; "Match Expression" = "Tam e_le_me"; "and" = "ve"; "or" = "veya"; "(none)" = "(yok)"; "Action" = "Eylem"; "Set the color to:" = "Rengi buna ayarla:"; "Transfer to mailbox:" = "Posta kutusuna ta_1:"; "Do..." = "Yap..."; "Delete the message" = "Mesaj1 sil"; "Blue" = "Mavi"; "Brown" = "Kahverengi"; "Cyan" = "A1k mavi(Cyan)"; "Dark Gray" = "Koyu Gri"; "Green" = "Ye_il"; "Magenta" = "Magenta"; "Orange" = "Portakal"; "Purple" = "Mor"; "Red" = "K1rm1z1"; "White" = "Beyaz"; "Yellow" = "Sar1"; "Bounce to:" = "Bounce to:"; "Forward to:" = "Ynlendir:"; "Reply to:" = "Cevapla:"; "Set message" = "Mesaj ayarla"; "Cancel" = "0ptal"; "OK" = "Tamam"; /** FilterEditorWindowController.m */ "Add a filter" = "Filtre ekle"; "Error!" = "Hata!"; "The selected target folder (%@) holds folders, not messages." = "Seili (%@) klasr mesaj iermiyor. Sadece klasrler var."; /* "OK" = "Tamam"; */ "Warning!" = "Uyar1!"; "Defining a Coloring filter that uses an external program is a BAD idea.\nThis will slow down drastically the application." = "Bir d1_ program kullanan renk filtresi tan1mlamak KT bir fikir.\nBu uygulamay1 ciddi biimde yava_latacakt1r."; /* "To" = "Kime"; */ /* "Cc" = "Cc"; */ /* "To or Cc" = "Kime veya Cc"; */ /* "From" = "Kimden"; */ "Is in Address Book" = "Adres defterinde var"; /** FilterHeaderEditorWindow.m */ "Header" = "Ba_l1k"; "Header:" = "Ba_l1k:"; "Remove" = "1kar"; "Add" = "Ekle"; /* "Cancel" = "0ptal"; */ /* "OK" = "Tamam"; */ /** FilterHeaderEditorWindowController.m */ "Add a header" = "Bir ba_l1k ekle"; /** FilterMessageWindow.m */ "Text to include before original message:" = "Orijinal mesajdan nce dahil edilecek metin:"; /* "Cancel" = "0ptal"; */ /* "OK" = "Tamam"; */ /** FilterMessageWindowController.m */ /** FilteringView.m */ "Rules" = "Kurallar"; /* "Active" = "Aktif"; */ "Add..." = "Ekle..."; "Delete" = "Sil"; "Edit..." = "Dei_tir..."; "Duplicate" = "Kopyas1n1 1kar"; /** FilteringViewController.m */ "Yes" = "Evet"; "No" = "Hay1r"; "Delete..." = "Sil..."; "Are you sure you want to delete this filter?" = "Bu filtreyi silmek istediinizden emin misiniz?"; /* "Cancel" = "0ptal"; */ "Edit a filter" = "Bir filtreyi dei_tir"; "Filtering" = "Filtreleme"; /** FontsView.m */ "Font used when displaying a message for:" = "Bir mesaj gsterildiinde kullan1lacak yaz1tipi:"; "Header name:" = "Ba_l1k ad1:"; "Size:" = "Boyut:"; "Header value:" = "Ba_l1k deeri:"; "Content of message:" = "Mesaj1n ierii:"; "Use fixed-width font for plain text messages" = "Dz metin mesajlar iin sabit geni_likli yaz1tipi kullan"; "Plain text font:" = "Dz metin yaz1tipi:"; /** FontsViewController.m */ "Fonts" = "Yaz1tipleri"; /** MIMEView.m */ "Mime-Type" = "Mime-Tipi"; "File extension(s)" = "Dosya uzant1s1"; /* "Add..." = "Ekle..."; */ /* "Delete" = "Sil"; */ /* "Edit..." = "Dei_tir..."; */ "Import from mailcap" = "Mailcap'ten ithal et"; /** MIMEViewController.m */ /* "Delete..." = "Sil..."; */ "Are you sure you want to delete this Mime-Type entry?" = "Bu Mime-Tipini silmek istediinizden emin misiniz?"; /* "Cancel" = "0ptal"; */ /* "Yes" = "Evet"; */ "MIME" = "MIME"; /** MailcapParser.m */ /** MailcapWindow.m */ /* "Mime-Type" = "Mime-Tipi"; */ "Command" = "Komut"; /* "Cancel" = "0ptal"; */ "Import" = "Al"; /** MailcapWindowController.m */ "Import from mailcap file" = "Mailcap'ten al"; "Mailcap Import Error!" = "Mailcap'ten alma hatas1!"; "You must select at least one mailcap item to import!" = "En az bir mailcap esi semelisiniz!"; /* "OK" = "Tamam"; */ /** MimeTypeEditorWindow.m */ "Mime-Type (ex: image/jpeg):" = "Mime-Tipi (rn: resim/jpeg):"; "File extensions (ex: jpeg,jpg,jpe):" = "Dosya uzant1lar1 (rn: jpeg,jpg,jpe):"; /* "Description:" = "Tan1m:"; */ "View:" = "Gr:"; "Display if possible (as icon if it is not possible)" = "Mmknse gster (Mmkn deilse simge olarak gster)"; "Always display as icon" = "Daima simge olarak gster"; "Action:" = "Eylem:"; "Prompt save panel" = "Prompt save panel"; "Open with external program:" = "D1_ardan uygulama ile a:"; "Choose" = "Se"; "Needs a terminal for the external program" = "D1_ uygulama iin terminale ihtiya var"; "Please choose an icon to represent this Mime-Type (tiff file only):" = "Ltfen bu Mime-Tipini temsilen bir simge sein (sadece tiff dosya):"; /* "Cancel" = "0ptal"; */ /* "OK" = "Tamam"; */ /** MimeTypeEditorWindowController.m */ "Add a Mime-Type" = "Mime-Tipi ekle"; "Edit a Mime-Type" = "Mime-Tipi'ni dei_tir"; /** MailboxesView.m */ "Default mailbox used for:" = "Varsay1lan posta kutusu:"; "Inbox:" = "Gelen:"; "Outbox:" = "Giden:"; "Drafts:" = "Taslaklar:"; "Trash:" = "p:"; "(If you don't see all your IMAP mailboxes, first open the connection to this IMAP server.)" = "(Eer IMAP posta kutular1n1z1n tmn gremiyorsan1z, nce bu IMAP sunucusuna balant1 a1n.)"; "Compact mailbox when closing (not recommended)" = "Posta kutusunu kapat1rken s1k1_t1r (tavsiye edilmez)"; "Reuse the mail window when selecting a folder" = "Bir klasr seildiinde mesaj penceresini kullan"; /** MailboxesViewController.m */ "Mailboxes" = "Posta kutular1"; /** PGPController.m */ "Encrypt" = "^ifrele"; "Sign" = "0mza"; "\nThe supplied passphrase was wrong or not given" = "\nSalanan gei_ szc (passphrase) yanl1_ ya da al1namad1"; "\nWrong passphrase (or something else)" = "\nYanl1_ gei_ szc (passphrase) (veya ba_ka bir _ey)"; "\nYour key is expired. You must generate a new one\nbefore trying to send again any signed or encrypted messages." = "\nAnahtar1n1z1n sresi dolmu_. Yeniden ba_ka imzal1 ya da\n_ifreli mesaj gndermeden nce yeni bir tane yaratmal1s1n1z."; "Decryption failed due the following reason(s):\n" = "^ifre zme _u sebepten dolay1 ba_ar1s1z oldu :\n"; /* "Error!" = "Hata!"; */ /* "OK" = "Tamam"; */ "Encryption failed due the following reason(s):\n" = "^ifreleme _u sebepten dolay1 ba_ar1s1z oldu :\n"; "Passphrase for %@" = "%@ iin gei_ szc"; /** PGPView.m */ "GPG/PGP executable path:" = "GPG/PGP al1_t1rma patikas1:"; "User E-Mail address:" = "Kullan1c1 e-posta adresi:"; "Use FROM E-Mail address for signing" = "0mzalama iin K0MDEN ee-postaadresini kullan"; /** PGPViewController.m */ "Version: %@" = "Versiyon: %@"; "PGP" = "PGP"; /** NewPersonalProfilePanel.m */ "Please enter the name of the new profile:" = "Yeni profil ad1n1 girin:"; /* "Cancel" = "0ptal"; */ /* "OK" = "Tamam"; */ /** NewPersonalProfilePanelController.m */ "New Personal Profile" = "Yeni Ki_isel Profil"; /** PersonalView.m */ "Available personal profiles:" = "Varolan Ki_isel Profiller:"; /* "Add" = "Ekle"; */ /* "Delete" = "Sil"; */ "Set this profile as default" = "Bu profili varsay1lan yap"; "Your name:" = "Ad1n1z:"; "Your E-Mail address:" = "e-posta adresiniz:"; "Reply-to address:" = "Cevap Adresi:"; "Organization:" = "Kurum:"; "Signature" = "0mza"; "Obtain signature from" = "0mzay1 _urdan al"; "content of file" = "Dosya ierii"; "program's output" = "program1n 1kt1s1"; /* "Choose" = "Se"; */ /** PersonalViewController.m */ /* "Error!" = "Hata!"; */ "This profile name already exists. Please choose another name." = "Bu profil ad1 zaten var. Ltfen ba_ka bir tane sein."; /* "OK" = "Tamam"; */ "You must have at least one defined personal profile at any time." = "En az bir tane tan1ml1 ki_isel profil dosyan1z olmal1."; /* "Delete..." = "Sil..."; */ "Are you sure you want to delete the %@ personal profile?" = " %@ ki_isel profilini silmek istediinizden emin misiniz?"; /* "Cancel" = "0ptal"; */ /* "Yes" = "Evet"; */ "Personal" = "Ki_isel"; /** IMAPView.m */ "Check for mail every" = "Her"; "minutes" = "dakikada bir mesajlar1 kontrol et"; "Folders" = "Klasrler"; "Subscribed" = "ye olunmu_"; "List" = "Liste"; "Subscribe" = "ye ol"; "Unsubscribe" = "yelikten 1k"; /** IMAPViewController.m */ "All Folders" = "Tm Klasrler"; "Y" = "Y"; /* "Error!" = "Hata!"; */ "Authentication error with the IMAP server." = "IMAP sunucusunda yetkilendirme hatas1."; /* "OK" = "Tamam"; */ "An error occured while listing the folders on this IMAP server." = "IMAP sunucusundaki klasrler listelenirken bir hata olu_tu"; "You are already subscribed to this IMAP folder." = "Bu IMAP klasrne zaten yesiniz."; "You cannot subscribe to this folder." = "Bu klasre ye olamazs1n1z."; "An error occured while subscribing to folder:\n%@." = "^u klasre ye olmaya al1_1rken hata olu_tu:\n%@."; "You are already unsubscribed from this IMAP folder." = "Bu IMAP klasrne yelikte zaten 1km1_ durumdas1n1z."; "An error occured while unsubscribing to folder:\n%@." = "^u klasre yelikten 1kmaya al1_1rken hata olu_tu:\n%@."; /** POP3View.m */ "Leave messages on server for" = "Mesajlar1n bir kopyas1n1 sunucuda b1rak"; "days" = "gnler"; "Use APOP (if possible)" = "APOP kullan (mmknse)"; "Download messages from this server into mailbox:" = "mesajlar1 bu sunucudan posta kutusuna indir:"; "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)" = "(Eer tm IMAP posta kutular1n1z1 gremiyorsan1z,\nncebu IMAP sunucusuna balan1n.)"; /** POP3ViewController.m */ /** ReceivingView.m */ "Retrieve mail (for POP3 accounts and local mail spool file)" = "mesajlar1 al (sadece POP3 hesaplar1 ve yerel mektup dosyalar1)"; "Manually" = "Elle"; "Automatically every" = "Otomatik olarak her"; /* "minutes" = "dakika"; */ "Incoming mail servers" = "Gelen e-posta sunucular1"; "Incoming Servers" = "Gelen Sunucular1"; /* "Add" = "Ekle"; */ "Edit" = "Dei_tir"; /* "Delete" = "Sil"; */ "Show alert panel for received and transferred messages" = "Al1nan ve gnderilen mesajlar iin uyar1 panelini gster"; "Show No New Messages panel" = "Yeni mesaj yok panelini gster"; /** ReceivingViewController.m */ "POP3" = "POP3"; "IMAP" = "IMAP"; "%@ [UNIX]" = "%@ [UNIX]"; /* "Error!" = "Hata!"; */ "To edit this account, you must first close the connection with the server." = "Bu hesab1 dei_tirmek iin, ncelikle sunucuyla balant1y1 kesmelisiniz."; /* "OK" = "Tamam"; */ "To delete this account, you must first close the connection with the server." = "Bu hesab1 silmek iin, ncelikle sunucuyla balant1y1 kesmelisiniz."; /* "Delete..." = "Sil..."; */ "Are you sure you want to delete this receiving server entry?" = "Sunucudan al1nan bu girdiyi silmek istediinizden emin misiniz?"; /* "Cancel" = "0ptal"; */ /* "Yes" = "Evet"; */ "Receiving" = "Alma"; /** ReceivingWindow.m */ "Server type:" = "Sunuc Tipi:"; /* "POP3" = "POP3"; */ /* "IMAP" = "IMAP"; */ "UNIX" = "UNIX"; "Server name:" = "Sunucu ad1:"; "Port:" = "Port:"; "Username:" = "Kullan1c1 ad1:"; "Password:" = "^ifre:"; "Remember password" = "^ifreyi hat1rla"; "Verify for new mail on startup" = "Ba_lang1ta yeni e-postay1 onayla"; "Use secure connection (SSL)" = "Gvenli balant1 kullan (SSL)"; "General" = "Genel"; /* "Cancel" = "0ptal"; */ /* "OK" = "Tamam"; */ /** ReceivingWindowController.m */ "Receiving preferences" = "zellikler al1n1yor"; /* "IMAP" = "IMAP"; */ /* "POP3" = "POP3"; */ /* "UNIX" = "UNIX"; */ /** UNIXView.m */ "Mail spool file:" = "Posta kuyruk dosyas1:"; /* "Choose" = "Se"; */ "Download messages from this spool file into mailbox:" = "Bu kuyruktaki mesajlar1 _u posta kutusuna indir:"; /* "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)" = "(If you don't see all your IMAP mailboxes, first open the connection\nto this IMAP server.)"; */ /** UNIXViewController.m */ /** SendingView.m */ "Delivery methods" = "Teslim _ekilleri"; "Method" = "Metod"; "Value" = "Deer"; /* "Add" = "Ekle"; */ /* "Edit" = "Edit"; */ /* "Remove" = "Kald1r"; */ "Additional Outgoing Headers" = "Ek giden ba_l1klar"; "Key" = "Anahtar"; "Key:" = "Anahtar:"; "Value:" = "Deer:"; /** SendingViewController.m */ "SMTP" = "SMTP"; "Mailer" = "Mailer"; /* "Delete..." = "Sil..."; */ "Are you sure you want to delete this transport method?" = "Bu ta_1ma _eklini silmek istediinizden emin misiniz?"; /* "Cancel" = "0ptal"; */ /* "Yes" = "Evet"; */ "Sending" = "Gnderme"; /** TransportMethodEditorWindow.m */ "Transport method:" = "Ta_1ma _ekli:"; /* "Mailer" = "Mailer"; */ /* "SMTP" = "SMTP"; */ "Mailer:" = "Mailer:"; "Host:" = "Host:"; /* "Port:" = "Port:"; */ "Authenticate using" = "Onaylama kullan1l1yor"; "Most secure" = "En gvenli"; "Supported mechanisms" = "Desteklenen mekanizmalar"; /* "Username:" = "Kullan1c1 ad1:"; */ /* "Password:" = "^ifre:"; */ /* "Remember password" = "^ifreyi hat1rla"; */ "Associated personal profile:" = "0li_kili ki_isel profil:"; /* "Cancel" = "0ptal"; */ /* "OK" = "Tamam"; */ /** TransportMethodEditorWindowController.m */ "Add a transport method" = "Bir ta_1ma _ekli ekle"; "Edit a transport method" = "Bir ta_1ma _eklini dei_tir"; /** ViewingView.m */ "Messages" = "Mesajlar"; "Hide deleted messages on startup" = "Ba_lang1ta silinmi_ mesajlar1 gizle"; "Hide read messages on startup" = "Ba_lang1ta okunmu_ mesajlar1 gizle"; "Highlight URLs in message content" = "Mesaj ieriindeki URL leri i_aretle"; "Table columns" = "Tablo kolonlar1"; "Status" = "Durum"; "Id" = "Kimlik"; "Date" = "Tarih"; /* "From" = "Kimden"; */ /* "Subject" = "Konu"; */ "Size" = "Boyut"; "Shown headers while viewing a mail" = "Bir posta grntlenirken gsterilecek ba_l1klar"; "Show all headers" = "Tm ba_l1klar1 gster"; /* "Remove" = "Kald1r"; */ /* "Add" = "Ekle"; */ "Defaults" = "Varsay1lanlar"; /* "Key:" = "Anahtar:"; */ "Shown Headers" = "Gsterilen Ba_l1klar"; "Double-clicking in message list:" = "Mesaj listesinde ift t1klama:"; "Opens reply editor" = "Cevaplama editrn aar"; "Opens message in new window" = "Postalar1 yeni pencerede aar"; /** ViewingViewController.m */ "Viewing" = "Grntleme"; /** Address.m */ /** AddressBook.m */ /* "General" = "Genel"; */ /** AddressBookController.m */ "Address Book" = "Adres Defteri"; "Add Group" = "Grup Ekle"; "Delete Group" = "Grup Ekle"; /* "General" = "Genel"; */ /* "Error!" = "Hata!"; */ "This group already exist! Please choose an other name." = "Bu grup zaten var! Ltfen ba_ka bir isim sein."; /* "OK" = "Tamam"; */ /* "Delete..." = "Sil..."; */ "Are you sure you want to delete this address?" = "Bu Adresi silmek istediinizden emin misiniz?"; /* "No" = "Hay1r"; */ /* "Yes" = "Evet"; */ "Are you sure you want to delete this group?" = "Bu grubu silmek istediinizden emin misiniz?"; "You must select a group to import the addresses in." = "Adresin gnderilecei bir grup semelisiniz."; "< no address >" = "< adres yok >"; "Add Address" = "Adres Ekle"; "Delete Address" = "Adres Sil"; "Enter the contact's E-Mail address here" = "Ki_inin E-posta adresini giriniz"; "Groups" = "Gruplar"; "Move to:" = "Ta_1:"; /** AddressBookWindow.m */ /* "Groups" = "Gruplar"; */ "Name:" = "Ad1:"; "Modify" = "Dei_tir"; "Import from:" = "^urdan ihra et:"; "OPENSTEP Mail.app" = "OPENSTEP Mail.app"; "LDIF" = "LDIF"; "Close" = "Kapat"; /** BounceWindow.m */ "Send" = "Gnder"; "Addresses" = "Adresler"; "From:" = "Kimden:"; "Using:" = "Kullan1l1yor:"; "To:" = "Kime:"; "Cc:" = "Cc:"; "Bcc:" = "Bcc:"; /** BounceWindowController.m */ "Bounce a message" = "Bounce a message"; /* "Error!" = "Hata!"; */ "Unable to create a valid bounced message.\nPlease, report this as a bug." = "Unable to create a valid bounced message.\nPlease, report this as a bug."; /* "OK" = "OK"; */ "Please, verify that the To/Cc/Bcc fields are correct. Also, you MUST have at least one\nvalid E-Mail address in the To field." = "Ltfen, Kime/Cc/Bcc alanlar1n1n doruluunu onaylay1n. \nAyr1ca, kime alan1nda en az bir tane geerli E-posta adresi olmal1"; "Stop" = "Dur"; "Starting the thread for bouncing the E-Mail..." = "Bounce mail i_lemi ba_lat1l1yor..."; "Closing..." = "Kapat1l1yor..."; "A mail is currently being sent. Please wait." = "Bir mail _imdi gnderildi. Ltfen bekleyiniz."; "An error occured during the authentication with the SMTP server (%@)." = "SMTP sunucusu ile gvenli balant1 s1ras1nda bir hata olu_tu (%@)."; "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences." = "E-posta gnderilirken bir hata olu_tu. Bu bir a\nproblemi ya da gnderme ayarlar1n1zdan olabilir."; /* "Send" = "Send"; */ "Manual stop of bouncing thread." = "Bouncing i_lemini elle durdurma ."; "Exiting the thread used to bounce the E-Mail..." = "Bounce E-posta gnderme i_leminden 1k1l1yor..."; /** BounceWindowToolbar.m */ /** ConsoleWindow.m */ /* "Date" = "Tarih"; */ "Message" = "Mesaj"; /** ConsoleWindowController.m */ /* "Date" = "Tarih"; */ "%H:%M:%S.%F" = "%H:%M:%S.%F"; /** EditWindow.m */ /* "Send" = "Gnder"; */ "Attach" = "Ek"; "Add Cc" = "Cc Ekle"; "Add Bcc" = "Bcc Ekle"; /* "Addresses" = "Adresler"; */ /* "From:" = "Kimden:"; */ /* "Using:" = "Kullan1l1yor:"; */ "Charset:" = "Karakter kmesi:"; /* "Automatic" = "Otomatik"; */ /* "To:" = "Kime:"; */ /* "Cc:" = "Cc:"; */ /* "Bcc:" = "Bcc:"; */ "Subject:" = "Konu:"; /** EditWindowController.m */ /* "Error!" = "Hata!"; */ "You must have at least one transport agent defined.\nSee Preferences -> Sending." = "En az bir gnderme ajan1 tan1mlamal1s1n1z.Ayarlar->Gnderme k1sm1na bak1n1z"; /* "OK" = "OK"; */ /* "Stop" = "Stop"; */ "Starting the thread for sending the E-Mail..." = "E-posta gnderme i_lemi ba_lat1l1yor..."; "(no subject)" = "(konu yok)"; /* "Closing..." = "Kapat1l1yor..."; */ /* "A mail is currently being sent. Please wait." = "A mail is currently being sent. Please wait."; */ "Would you like to save this message in the Drafts folder?" = "Bu mesaj1 seilenler klasrne kaydetmek istiyor musunuz?"; /* "Cancel" = "Cancel"; */ /* "Yes" = "Yes"; */ /* "No" = "No"; */ "An error occured while attempting to obtain the message store for the Drafts folder." = "Mesaj seilenler klasrne al1n1rken hata olu_tu."; "Remove Cc" = "Cc Kald1r"; /* "Add Cc" = "Add Cc"; */ "Remove Bcc" = "Bcc kald1r"; /* "Add Bcc" = "Add Bcc"; */ /* "An error occured during the authentication with the SMTP server (%@)." = "An error occured during the authentication with the SMTP server (%@)."; */ /* "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences." = "An error occured while sending the E-Mail. It might be a network\nproblem or an error in your sending preferences."; */ /* "Send" = "Send"; */ "An error occured while attempting to obtain the message store for the Outbox folder.\nThe message nonetheless successfully sent." = "Mesaj gnderilenler klasrne al1n1rken hata olu_tu.\nBuna ramen gnderme ba_ar1l1."; "You must define a recipient in the field \"To\"." = "\"Kime\" alan1na bir al1c1 tan1mlamal1s1n1z"; /* "Automatic" = "Otomatik"; */ "Manual stop of sending thread." = "Gnderme i_lemini elle durdurma."; "Exiting the thread used to send the E-Mail..." = "E-posta gnderme i_leminden 1k1l1yor..."; "An error occured while decoding %@. Please fix this address." = "%@ zlrken bir hata olu_tu. Ltfen bu adresi dzeltin"; "%0.1fKB (%d characters)" = "%0.1fKB (%d karakter)"; /** EditWindowToolbar.m */ /** ExtendedAttachmentCell.m */ "%@ (%d bytes)" = "%@ (%d byte)"; "%@ (%d KB)" = "%@ (%d KB)"; /** ExtendedCell.m */ /** ExtendedOutlineView.m */ /** ExtendedTableView.m */ /** ExtendedWindow.m */ /** Filter.m */ /** FilterManager.m */ /** FindWindow.m */ "Find:" = "Bul:"; "Replace with:" = "Dei_tir:"; "Find Scope" = "Faaliyet alan1 bul"; "Summaries" = "zet"; /* "Messages" = "Messages"; */ "Find Options" = "Bul Seenekleri"; "Ignore Case" = "Byk/kk duyarl1 deil"; "Regular Expression" = "Dzgn Deyim"; "Find All" = "Hepsini Bul"; "Replace" = "Dei_tir"; "Replace & Find" = "Dei_tir & Bul"; "Previous" = "nceki"; "Next" = "Sonraki"; /** FindWindowController.m */ "Find" = "Bul"; "Searching..." = "Bulunuyor..."; "Done searching. %d results found." = "Bulma i_lemi tamamland1. %d sonu bulundu."; /** FolderNode.m */ /** FolderNodePopUpItem.m */ /** GNUMail.m */ /* "Error!" = "Hata!"; */ "An error occured while attempting to obtain the message store for target filter." = "Hedef szge iin mesaj kaydetme s1ras1nda hata olu_tu."; /* "OK" = "OK"; */ /* "You must have at least one transport agent defined.\nSee Preferences -> Sending." = "En az bir gnderme ajan1 tan1mlamal1s1n1z.Ayarlar->Gnderme k1sm1na bak1n1z."; */ "Your Software is up-to-date" = "Program srm gncel"; "You have the most recent version of GNUMail." = "GNUMail'in en son srmne sahipsiniz."; "A New Version is Available" = "Yeni srm var"; "A new version of GNUMail is available (version %@). Would you like to download the new version now?" = "GNUMail'in yeni bir srm mevcut (srm %@). Yeni srm _imdi indirmek ister misiniz?"; /* "Cancel" = "Cancel"; */ "Feature not implemented!" = "zellik henz eklenmedi!"; "Sorry, this feature is only available under Mac OS X." = "zgnm, bu zellik sadece Mac OS X alt1nda geerli."; "Compact..." = "klt..."; "Compacting a mailbox will permanently remove deleted messages.\nDo you want to continue?" = "Bir postakutusunu kltmek silinmi_ mesajlar1n kesinlikle silinmesine neden olur?\nDevam etmek istiyor musunuz"; /* "No" = "No"; */ /* "Yes" = "Yes"; */ "Compacting mailbox, please wait..." = "Postakutusu kltlyor, ltfen bekleyiniz..."; "Done compacting mailbox %@." = "%@ Postakutusu kltme i_lemi tamamland1."; "New message..." = "Yeni mesaj..."; "Undelete" = "Geri al"; /* "Delete" = "Delete"; */ "Mark as Unread" = "Okunmam1_ olarak i_aretle"; "Mark as Read" = "Okunmu_ olarak i_aretle"; "Mailbox error!" = "Postakutusu hatas1!"; "You must select a valid mailbox to open!" = "Geerli bir postakutusu semelisiniz!"; "Local" = "Yerel"; "Information" = "Bilgilendirme"; "Use the same directory (%@) to save all other attachments? (override the files with the same name)." = "Tm dier ekler iin ayn1 klasr (%@) m kullan1ls1n? (Ayn1 adl1 dosyalar1n zerine yaz1l1r)."; "Show Filtered Headers" = "Szlm_ ba_l1klar1 gster"; "Show All Headers" = "Tm ba_l1klar1 gster"; "Hide Status Bar" = "Durumu ubuunu gizle"; "Show Status Bar" = "Durum ubuunu gster"; "Show Normal Display" = "Normal grnm"; "Show RAW Source" = "(RAW) kayna1 grntle"; "Info" = "Bilgi"; "Mailbox" = "Postakutusu"; /* "Message" = "Message"; */ /* "Compose" = "Compose"; */ /* "Edit" = "Edit"; */ "Windows" = "Pencereler"; "Print" = "Yazd1r"; "Services" = "Servisler"; "Hide" = "Gizle"; "Quit" = "1k"; "Info Panel..." = "Bilgi Paneli..."; "Check For Updates" = "Gncellemeleri Kontrol Et"; "Preferences..." = "Ayarlar..."; "Help..." = "Yard1m..."; "Mailboxes..." = "Postakutular1..."; "Get New Mail" = "Yeni postalar1 al"; "Sorting" = "S1ralan1yor"; "Sort by Date" = "Tarihe gre S1rala"; "Sort by Name" = "0sme gre S1rala"; "Sort by Number" = "Say1ya gre S1rala"; "Sort by Size" = "Boyuta gre S1rala"; "Sort by Subject" = "Konuya gre S1rala"; "Hide Deleted" = "Silinmi_leri Gizle"; "Hide Read" = "Okunmu_lar1 Gizle"; "Compact" = "Klt"; "Select All Messages" = "Tm Mesajlar1 Se"; "Send to Address Book" = "Adres Defterine Gnder"; "Save Attachment" = "Ekleri Kaydet"; "Save Text from Message" = "Mesajdaki metni kaydet"; "Text Encodings" = "Metin kodlama"; "Bounce..." = "Bounce..."; "Apply Manual Filters" = "Elle filtreyi uygula"; "New" = "Yeni"; "Reply" = "Cevapla"; "Reply All" = "Hepsine Cevapla"; "Forward" = "0let"; "Addresses..." = "Adresler..."; "Drafts" = "Seilenler"; "Save in Drafts" = "Seilenlere kaydet"; "Restore Draft" = "Seilenleri dzelt"; "Cut" = "Kes"; "Copy" = "Kopyala"; "Paste" = "Yap1_t1r"; "Undo" = "Geri Al"; /* "Find" = "Find"; */ "Spelling..." = "0mla denetimi..."; "Check Spelling" = "0mla denetimi yap"; "Select All" = "Hepsini se"; "Find Panel..." = "Bul Paneli..."; "Find Next" = "Sonrakini Bul"; "Find Previous" = "ncekini bul"; "Enter Selection" = "Seim girin"; "Console" = "Konsol"; "Arrange" = "Dzenle"; "Miniaturize" = "Kk gster"; /* "Close" = "Close"; */ "Setup Printer" = "Yaz1c1y1 yap1land1r"; "Important!" = "nemli!"; "No configuration found for GNUMail.app" = "GNUMail.app iin yap1land1rma bulunamad1"; "Configure" = "Yap1land1r"; "Loaded bundle at path %@" = "%@ yolundaki paket yklendi"; "Failed to initialize bundle at path %@" = "%@ yolundaki paket haz1rlan1rken hata olu_tu"; "Error loading bundle at path %@" = "%@ yolundaki paket yklenirken hata olu_tu"; "All" = "Tm"; "Show Deleted" = "Silinmi_leri gster"; "Show Read" = "Okunmu_lar1 gster"; "Default" = "Varsay1lan"; /** GNUMailConstants.m */ /** Group.m */ /** LabelWidget.m */ /** LocalMailDelivery.m */ /** MailHeaderCell.m */ /** MailWindow.m */ /* "Delete" = "Delete"; */ "Get" = "Al"; /* "Mailboxes" = "Mailboxes"; */ /* "Compose" = "Compose"; */ /* "Reply" = "Reply"; */ /* "Forward" = "Forward"; */ /* "Addresses" = "Addresses"; */ /* "Find" = "Find"; */ /* "Status" = "Status"; */ /* "Id" = "Id"; */ /* "Date" = "Date"; */ /* "From" = "From"; */ /* "Subject" = "Subject"; */ /* "Size" = "Size"; */ /** MailWindowController.m */ /* "New message..." = "New message..."; */ "Local - %@" = "Yerel - %@"; "IMAP on %@ - %@" = "IMAP : %@ - %@"; "No Messages!" = "Mesaj yok!"; "There are no messages in this Mailbox!" = "Bu Postakutusunda mesaj yok!"; /* "OK" = "OK"; */ "< unknown >" = "< bilinmeyen >"; /* "Closing..." = "Kapat1l1yor..."; */ "GNUMail.app is currently receiving E-Mails. Please wait." = "GNUMail.app _u anda E-postalar1 al1yor. Ltfen bekleyiniz."; "Would you like to close the connection with the IMAP server?" = "IMAP sunucusu ile balant1y1 kapatmak istiyor musunuz?"; /* "Cancel" = "Cancel"; */ /* "Yes" = "Yes"; */ /* "No" = "No"; */ "Closed local folder %@." = "%@ yerel klasr kapat1ld1."; "Closed IMAP folder %@ on %@." = "%@ on %@ IMAP klasr kapat1ld1."; "Closing IMAP connection on %@." = "%@ deki IMAP balant1s1 kapat1ld1."; /* "Stop" = "Stop"; */ "Starting the fetching thread for %@.." = "%@ alma i_lemi ba_lat1l1yor.."; /* "Error!" = "Hata!"; */ "Unable to communicate with the POP3 server (%@)." = "(%@) POP3 sunucusu ile ileti_im kurulam1yor."; "Invalid password %@ @ %@." = "Yanl1_ _ifre : %@ @ %@."; "An error occured while obtaining the IMAP Store to save the received message.\n%@" = "IMAP deposuna gelen mesajlar kaydedilirken hata olu_tu.\n%@"; "The received message was saved in your local Inbox folder." = "Al1nan mesajlar yerel Al1nan klasrnze kaydedildi"; "No New Messages..." = "Yeni mesaj yok..."; "There are no new messages on %@ @ %@." = "%@ @ %@ zerinde yeni mesaj yok."; /* "Get" = "Get"; */ "Filtered messages..." = "Szlm_ mesajlar..."; "%d messages have been transfered to the following folders:\n%@" = "%d mesajlar1 a_a1daki klasrlere transfer edildi:\n%@"; "%d messages (%dKB) - %d unread (%dKB) - %d selected (%0.1fKB) - %d deleted" = "%d mesaj (%dKB) - %d okunmam1_ (%dKB) - %d seili (%0.1fKB) - %d silinmi_"; "IMAP %@ @ %@ - %@" = "IMAP %@ @ %@ - %@"; "No new messages on server %@" = "%@ sunucusunda yeni mesaj yok"; "Got a %@ while estabilishing (or closing) the POP3 connection to server %@." = "POP3 sunucuya balant1 a1l1rken (ya da kapat1l1rken) %@ al1nd1. Sunucu : %@."; "Exiting the fetching thread for %@..." = "%@ alma i_leminden 1k1l1yor..."; "Got a %@ while transferring mails from %@." = "Bir %@ al1nd1 (%@ 'den postalar al1n1rken)."; /** MailWindowToolbar.m */ /** MailboxManager.m */ "Open this folder on startup" = "Ba_lang1ta bu klasr a"; /* "Mailbox" = "Mailbox"; */ /* "Size" = "Size"; */ /* "Messages" = "Messages"; */ /* "Close" = "Close"; */ /** MailboxManagerCache.m */ /** MailboxManagerController.m */ /* "Mailboxes" = "Mailboxes"; */ /* "Mailbox" = "Mailbox"; */ "All Mailboxes" = "Tm Postakutular1"; /* "Size" = "Size"; */ "%d KB" = "%d KB"; /* "Messages" = "MEsajlar"; */ "%d (%d unread)" = "%d (%d okunmam1_)"; /* "Local" = "Local"; */ /* "Closing..." = "Closing..."; */ "Would you like to close the connection with this IMAP server?" = "Bu IMAP sunucusu ile balant1y1 kesmek istiyor musunuz?"; /* "No" = "No"; */ /* "Yes" = "Yes"; */ /* "Closing IMAP connection on %@." = "Closing IMAP connection on %@."; */ "Transfer error!" = "Transfer hatas1!"; "You cannot transfer a message inside the same mailbox!" = "Bir mesaj1 iinde bulunduu klasre transfer edemezsiniz!"; /* "OK" = "OK"; */ /* "Mailbox error!" = "Mailbox error!"; */ /* "You must select a valid mailbox to open!" = "You must select a valid mailbox to open!"; */ "You must select a valid mailbox\nto transfer this E-Mail to!" = "Bu E-postay1 transfer etmek iin\ngeerli bir Postakutusu tan1mlamal1s1n1z!"; "You cannot transfer E-Mails to this folder!" = "E-postalar1 bu klasre transfer edemezsiniz!"; "You must select a valid root where to create this new mailbox." = "Bu yeni Postakutusunu yaratmak iin geerli bir kk semelisiniz."; "Please select the mailbox you would like to delete." = "Ltfen silmek istediiniz postakutusunu seiniz."; /* "Delete..." = "Delete..."; */ "Are you sure you want to delete this mailbox?" = "Bu postakutusunu silmek istediinizden emin misiniz?"; /* "Cancel" = "Cancel"; */ "Error while deleting!" = "Silinirken hata!"; "You can't delete an opened mailbox! Close it first." = "A1k bir postakutusunu silemezsiniz. nce kapat1n."; /* "Error!" = "Error!"; */ "The mailbox delete operation failed." = "Postaktusu silme i_lemi ba_ar1s1z."; "You must select a valid mailbox to rename!" = "Ad1n1 dei_tirmek iin geerli bir postakutusu semelisini!"; "You can't rename an opened mailbox! Close it first." = "A1k bir postaktusunu yeniden adland1ramazs1n1z. nce kapat1n"; "Edit Mailbox" = "Postakutusunu dzenle"; "Please enter the new name of the Mailbox:" = "Ltfen Postakutusunun yeni ad1n1 giriniz:"; "The local mailbox %@ does not exist!" = "Yerel postakutusu %@ yok!"; "This folder (%@) holds folders, not messages!" = "Bu klasr (%@) klasr bar1nd1r1r, mesaj deil!"; "Local folder %@ opened." = "Yerel klasr %@ a1ld1."; "A folder (%@) is already open. Please close it first." = "Bir klasr (%@) halihaz1rda a1k. Ltfen nce onu kapat1n."; "Opening IMAP folder %@ on %@..." = "IMAP klasr a1l1yor %@ on %@..."; "IMAP folder %@ on %@ opened." = "IMAP klasr %@ on %@ a1ld1."; "Connecting to IMAP server %@ using SSL" = "SSL kullan1larak %@ IMAP sunucusuna balan1l1yor "; "Connecting to IMAP server %@" = "%@ IMAP sunucusuna balan1l1yor"; "Unable to communicate with the IMAP server (%@:%i)." = "IMAP sunucusu ile haberle_ilemiyor (%@:%i)."; "Authenticating using %@..." = "Gvenli balant1 kullan1l1yor %@..."; "Connected to %@!" = "%@ 'e balan1ld1!"; /* "Invalid password %@ @ %@." = "Invalid password %@ @ %@."; */ "A fatal error occured when appending the message to the %@ folder." = "%@ klasrne mesaj eklenirken lmcl hata olu_tu."; /** MailboxManagerToolbar.m */ /** MessageViewWindow.m */ /* "Delete" = "Delete"; */ /* "Reply" = "Reply"; */ /* "Forward" = "Forward"; */ /* "Show All Headers" = "Show All Headers"; */ /** MessageViewWindowController.m */ /** MessageViewWindowToolbar.m */ /** MimeType.m */ /** MimeTypeManager.m */ /** NSRegEx.m */ /** NSStringExtensions.m */ /** NSUserDefaultsExtensions.m */ /** NewMailboxPanel.m */ "Please enter the name of the new Mailbox:" = "Ltfen yeni Postakutusu iin isim giriniz:"; /* "Cancel" = "Cancel"; */ /* "OK" = "OK"; */ /** NewMailboxPanelController.m */ "New Mailbox" = "Yeni Postakutusu"; /* "Local" = "Local"; */ /* "Error!" = "Error!"; */ "The mailbox rename operation failed." = "Postakutusu yeniden adland1rma i_lemi ba_ar1s1z."; /* "OK" = "OK"; */ "The mailbox create operation failed." = "Postakutusu yaratma i_lemi ba_ar1s1z."; /** PasswordPanel.m */ "Please enter your password:" = "Ltfen _ifrenizi giriniz:"; /* "Cancel" = "Cancel"; */ /* "OK" = "OK"; */ /** PasswordPanelController.m */ /** PreferencesWindow.m */ "Apply" = "Uygula"; /* "Cancel" = "Cancel"; */ /* "OK" = "OK"; */ /** PreferencesWindowController.m */ "Preferences Panel" = "Ayarlar Paneli"; "Loading preferences bundle at path %@." = "%@ yolundaki ayarlar paketi ykleniyor."; /** TextEnrichedConsumer.m */ /** Utilities.m */ /* "Error!" = "Error!"; */ "A part of this E-Mail can't be represented. Please report this as a bug." = "Bu E-postan1n bir k1sm1 gsterilemiyor. Ltfen bunu bir hata olarak rapor ediniz."; /* "OK" = "OK"; */ "No text/plain part found. Please report this bug since GNUMail.app doesn't support this other kind of parts." = "Dz/Metin paras1 bulunamad1. Ltfen bu hatay1 bu GNUMail.app desteklemiyor olarak rapor ediniz."; "Local Mailboxes" = "Yerel Postakutular1"; "Reply..." = "Cevapla..."; "Would you like to reply to all recipients?" = "Tm al1c1lara cevaplamak istiyor musunuz?"; /* "No" = "No"; */ /* "Yes" = "Yes"; */ "Reply to a message..." = "Bir mesaj1 cevapla..."; "Forward a message..." = "Bir mesaj1 ilet..."; "Save all" = "Hepsini Kaydet"; "The external program (%@) for opening this MIME-Type (%@) can't be found." = "D1_ program bulunamad1 (%@), bu MIME-Tipi iin (%@)."; GNUMail/Resources/Icons/0040755000014600001460000000000010524045777015630 5ustar monotonemonotoneGNUMail/Resources/Icons/Address_bcc.tiff0100644000014600001460000004543410506157373020701 0ustar monotonemonotoneII*  : (12*R)>I'hiJ ' 'Adobe Photoshop 7.02006:09:25 08:36:44 adobe:docid:photoshop:7c1317be-4ca0-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:36:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:36:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:36:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:36:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:36:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:36:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:36:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:36:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:36:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMU Address_bcc.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM & `  JFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?} DGF&2G޽҃ao!މm~һju~GFL IHT+]2*`76o\1nIx'hiJ ' 'Adobe Photoshop 7.02006:09:25 08:35:10 adobe:docid:photoshop:5c6f4f2b-4ca0-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:34:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:34:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:34:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:34:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:34:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:34:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:34:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:34:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:34:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMS Address_cc.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM  ` JFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?} DGF&Qa]9oIvo~M!jo8$/4bu,,Ǿk{H%46onƱ֌ik5FH?1>^FC2Kƴ1ޓC궻V$SI: } >)Mj)u6SK+l쥟rt.ꚧ?-X*lFR8BIM!UAdobe PhotoshopAdobe Photoshop 7.02 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6.`_]~aa_kih|{yqpn{zxedbVUScb``_^hhf^^\hfdihf|zyʇLJLJLJLJLJLJLJLJLJLjLjLjLjljljljNJNJNJNjNjNjNjnjnjǓffd  GNUMail/Resources/Icons/Address_to.tiff0100644000014600001460000004540410506157373020571 0ustar monotonemonotoneII*  : (12*R)>Ip'hiJ ' 'Adobe Photoshop 7.02006:09:25 08:38:10 adobe:docid:photoshop:af3b5c07-4ca0-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:37:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:37:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:37:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:37:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:37:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:37:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:37:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:37:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:37:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMS Address_to.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM  ` JFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?} DGF&Q[U9-+ 1kP7GFL IHTqxŴXkӲ [lg,khThN龜S1>BZ,Cs8%u.[$SI: } >)NNT`i6<6zݲIfv]5O8[$0T?8BIM!UAdobe PhotoshopAdobe Photoshop 7.02 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6.fdcmljkkihhgedbKJI¿NNLPONTSRJJH\\ZLKIPONRRPsrpnml|zyʇLJLJLJLJLJLJLJLJLJLjLjLjLjljljljNJNJNJNjNjNjNjnjnjǓffd  GNUMail/Resources/Icons/GNUMail.tiff0100644000014600001460000002240410424672357017734 0ustar monotonemonotoneII*$ !(-64!>9"!D9! D5! ?.8#,"  '0U.*az=6G@JCIAF>ŭ@;ŧ@;>:<:}65d/-}=%%U!0 (4p%5)XNkca[F@830-*'*(,+03385=s5>c3@?9879:>@FDJ:A:B>G~:CzBJ;54` B+*g"ʯ& A3$4 0 + & $ Ms'-t,3o"%C'( +$#> .4', -%(!v*0v,4o!%C%' )#"<+.''!#yo"&p)0z.5n!&B%'~ )##; ((%90>8)#.(/+yx',}.5n!&A%'| '##9 %&"+#zvhhKKw !r&,07q!&?%'{ % 7 "#",$гv l%,08q!&@&)z %! 7 !!*"ÿ{n&-18r#(B')y & 7 ! )!þ~n'.18p"'A%'x %! 6  !( ں~n'-08p$)A&(v $!!5  *"ýε؛}n'-08q$)?%&r #!!3  %<;<;{88??n i&-}07q#'>$&q #""3  pidk&,v-3q!&>$&p "!!2  &!,&"yr&,}/6o %>%%n " 1  2,<5'" &(+/p#>%&l !1  2*.)%$ 22.2m"<$%i !1   ,&,($#~(+,2b"<#$i !1   *,-2d!;##h  / ȿ (*,0n !:$$f - ƿ  '),/n :""d , ſ   *+*.m!:$$c ! / ȿ %! (()-*,k:$#b "!!1 ˾  ~&()+k:$$b #!!2̽ " ')')m;%%c +))C׾"!""%%+-&(sD,+t  /,.i"|~&(z&)yI.0'#D&*)&!!{$'l'+M 9(+1 )?CNrtpMSX,1M#(D%2#' 0$$;,07!,%2-1:04="'2#!*$2 -&*16.18##1 '4.4@18B.5?".($1 '5$+:-4C*0=.3;4.28%!/%-;+3A.6C+3B-5B+2@,3A-6E8AP>HV6>L59B2.39'-&.=19G5>K7@O9AO9BP:CR=GVAKZ@JZ:CR5:C//39++#*;09I4>M8BQ6AO:DS@JYAL\BL\BL\=ET5:B,26<.,#+;09J5@O:DS;EU=GV>IXBL\DM]FN_=FU6:C, +.3r-.$+;1;K7BQFV)0; %c .l)&/J/7B#(/C  .S#)l$)/{&,2&+1}$(.q!%X=!   00$ $@$$$(RGNUMail_128.tiffHHGNUMail/Resources/Icons/GNUMail_Full.tiff0100644000014600001460000002255010424672357020720 0ustar monotonemonotoneII*$? ? !.'#e ? r [K ?| 0,          h] 4/e m>((8B^mm>m^zH,E n       T *'?\)$GB        _2? <7MH        tZ= MLOOOOOOOsA-_O=o |M9EA?RA<   FC   T'?=9   FC(#   `)B>  4% _( HE '4-$_( E@  _) B=     ,< 6 @;     .<o-1OJWUP_a[munr[k @;     .<;RL[YRce^owopZi E@     .<C>K^Wh_YiaZkkdwnWf FA     /<>_Yie_poh|^WhtkjTc"B=     .<y6Fwnzrw|2'."A;   KG@ZVMZVMy>Fxo|sw|2'- =8 @61tj`xmԾoj`yy>Fwnzrw|^HU94 tj`ԾԾԾyyshB1,=Etmxp}uz_JV 83$tkaԾԾԾԾԾZHAysh<6sncԾyshysh|9@mexrj}xpxdM[ <7><6PKԾyshy6[WO͸ysh>_Yie_poh|}tjTc#E@yshyȾHF>C>K^WhjcuyrnWf#E@hd[ywrfԾZUL;RL[YRce^owopZi$E@yshԾjdZY..9%-<)/B/7L8BYCOdM[kUdpYiJ.6$E@KBoaeY-'PEVK>6>6>6m A ?$GB#        `"MH$        ` QL$        a#rPL"        [j87==fG@@@@@@GE (((EEE*$$ """  %%% ?)))00$  $%*%%&%(1:.%R../Resources/GNUMail_Full.tiffHHImageMagick 5.5.7 12/23/03 Q16 http://www.imagemagick.orgGNUMail/Resources/Icons/GNUMail_big.tiff0100644000014600001460000106357610424672357020575 0ustar monotonemonotoneII*e&%%I컷鼹粮诬诫髤娢㫨䩦奢楣杚盘塟祢杙馢蠜ꢟ朘禢豭鰰뺷쿼Ⱦɿ떓홓쓌}싁쉁~~|퉀쌁틀틂슁쉁~w{tvo|u|쎇퐇풋쒌앎딏듌딏锏畑擎旒旑癓虖蝚饢꯭)½흙슆퇀~xwy{y|}}}~~{}}||zy{}u|uyrqlniojnjsnzty|}z쎄덅싄ꐈ萈揇掉厊授吊䑏㘕䢠汰}}uogndrixpxo{stxwxv}tu|szswqzruoununohohphpiypxppioipijbleg`jejed_idjeidnhojnirntovqtoqmnjuquqvquruquqyt|x}z}x}x||煂腂}腁zy}߉ᒐߑݕ⪪纻}xwv~vtkrgpfshslrjpgxoypzqzsxqunohkciclcofmdqhofmeqhpeoevlxnvmriogpgnfriphpgngmgkdphmfogjcohmfmgqkpioilgnjjejfhemhkfgcc^hekinjlhjejhokompnmlonpnlllkpozx~{}ނ܈ݖܞⳲ㺹wrhwnrgqgwnzq~s}t{p}rzqskkcjckdi`mfneqfmapfnembndndmck`qgmcg_g[g^e[bYdZbYbXcZd\bXaX_W^V]T[SYQYSYSZS\T\V^X_Za[b[`Z_Z`[_Za\`[a]a\c`d`gdfbifiekhnkkjheigeadcfdggggghhgnmpousyu{x~|ׁфӓܳ芃kbi_javkyozpxnyoypvmpgriulrjnelch_kcj`iajai_h^tidZ]Q\Q[OZO\P[OYO[OZPYPXNXN[Q[R]R^UZPYOZQYPVNYQVNVNUOWOWOVOXPYRXPZRZSZRZQ[S[U\V]X]X\W]X]X\W_Za\d`c_d`fcgeifheighgfcdeeccbdbeddebahggeihnlrpvuyz{{͇̓ղi_\Q_TdZpdukqfujukrgmbi^j_g[kavjyp|q\T]Sg\g]k`zpxnka~vrjf[[PXLUITFTGWKUHTITFSHTJWJYMXN[O]SWNVNXMWQSJRIRITKVNSKSJUMTLTMUNUPVOUNVOVPXRXRYSXSXRZUYVZV\U\W_Zb^c`dbecdceccaa_b`cacbaa``_^``^]_^`__^_^aagglkpnqrsttxzčΦf^\QYM`UcWj`tgxrhcYjai^eYbWtirgh]pfj`_SLBdYbX`S]R[RZN]Q\P\Q[P\Q\PWK`T]P\OTGTFSETFTETGTFVJVKUJUKWL\TSJRHRHRHTJUMPEWNUMSKTKTKSMUNTMTNUMVOVNVPVOVQVQVRWTZTZV\W]W\W\X[X[X]Z_\a]a^_\][]\]]\Z]Z^\[Y^]][]Z[[ZZZ[^^bcgggjhkgkinqx˫))wpZQVKVJ`Ug\gZwiqfg\j_l`cVj\g[_R]Pxll^_SaVcW^R_Xlah\]O]Qg\VHVGWHVHVIVJWJVJUHUHTIUISFTGVGZJUGVISESFUKRFSHUJSHQGQFQGSGSIQEPFRJSKTLRJQJRJQJSKSKRJRKSMRLSNTMTPUQUQVQUQVQXTZTXUWUYW[W]X[X[WZWZWZXYWYXZXYXXWZWZWZWZWZZYYZ[Z\\\\`\b^d_d_egkruɭph[QbTtgj\bTeYpdk^j\o_fUntdk\`Pn\|z´ʽö}tYT^Ui`^SZROFPGYNWOSKVORJUOOIUMTL`YXPPJLFPJPJOINGQLOHRKNHPIOKTPQLOKPKSPROSOSPVSWV]]VVVTSRTRUSWTWTVUVSUSUSUTVTXUWUWUWVYWZYXYWYW\Y]Y\[__bhiru{}Ÿe\`W`ScXpbwh{mwhufñø}swx]Yqmqoﮪrtrky|z}tvSS]\jk``~qqtsxxTSca~VSOMB>IERREBB=II@>B?96@>?=>=DD?=72:8:8<:>;EAB?A?DBA@EC@==;=<>=A@DDEEFFFGGJGGGIIIHGJJIHIHHHIJIJKLLLNNOOPPOOQQRRTTUUVTUUWWXZX[Y][^[_`dchjnsyʹ&%%IzscXxhbSZL\OYJ`SZKcWh_wwmw}pk]pkd[S[Q둁aWkc}jja`|{{zIDA>FC<6>7=67260:57485B?<:NN=9>:63860-0,1.741.0-/,0-0./-411//,/+/,.,/,0.0-10547765776656885835678::<;?;>E=D?GAF@HAGEJFJFKMSHNHNJQMSPVSZV\X^[a^editzÝкVKaT`Py|lzhsd{tH:^RM@L>WL[QbUZL[P\QRHzuĽ~r횋oczmgyrei^QLJCG??8F@ICNG4-6.602-1-/,0+/-/-,(,(+'-*,*.,.+,*+*,*+*++,+-++)-*,),*,*,*,*-*-,/..,.-///012122345688:9<9<:=:>;AH:B8B=H:D;G=II|=H~I8VFWH_TRBmc`SN>QCK=<,=.=.=/G7F7SEgYVEocMAOA}wýýﹷ뚙rowvggNK:5TRuuoppqdfA??;OM8284402096VTWWVQHE512/521-/+,(.,20/-1,/+,)-+.--*-*,*+(,),*,*+*/+/,.,/,311/.+1.002214242434455769788;9<8;:>:?9?:?:?:@:A9?:A;D=DKw>Kv>KtBNtAMsBNwCOzGRHRNXT`cnȽ$$#Iþ`VK:E5TGO@?0;*=,=*A2>.?-:):(?-L6UNfbgce_^YF@6.0*1+/)1+2*0+.),%+&(%($'%)$(#($)%+')%)((%'%'%'%&%&$'%(&((,)*')'*)*&*&*&*&)%)%)%*&*'+(+)*)+),*,,-/04/3/4/31637384:6<7>7>8?7=7>7=9@9@:@;A9@=FIw>Kx=Iy>K|DPvAMw?LzCOt?LsAMt@NtCNuFRxFRyERzGT{JU~OZ[hLC7,@4F88*;*=,;)B.>,>0C2I9815,/'0(3+4+4,3*0(/(+$+%-),',&+%*&(%)&.+&$%"&#%#%$%$'%)%)'(%)&*')')$)%($(%($)&)'+(+')'+(*(*(+*,+,-,+.0/4.504056?8@4:7<9?7>8>7>7?8?9A:B:C;Eyo^TKE?5^Yple`\VTLMFLEG>[VG>>4;3917/0)5,<4;4812*1+1+0)-(+&-&840+(%($*(%#$"%#$"%#&$($&$$"(&(%&$(%)%*%(#)%*')%(('&(%(()(*(+)**,,.3.1-1,0-1.26<5:394:5;376;6<6;5;5=7>9A:A8?7@4>7B~:E|+@-D1h_RDJ;G5B1B3G95+8,@1D5J@g_lg(%91fbgcsprpebB=73C=KEB97/;1I@1*+(0,<4D>LGGA812+-&&#+'4.30-),'5040$!)'53'$$"#"&$'%(%*'//,*,()%($("'#&"('/645)%(%(%(%('((,-2:+0+-*-+.+-1805156<2949495:5;6<6=6=7?8?6=8A@M?JBM;F>I=FBMKYJWIUJVHUIWJYIXKYQ`UcXg[kWeN\JTGPIRMXKVMZMXR]T`Ucy~4)3(5)@1M=C1E2D2@,;'>*:(;*7%;*J7Q@J9F5:/3*E6H9QC`W91+&<0II).,+)**-+-+.-/38DO49-0/33727384;@K=G4;5=4;5>8BBNDP?JEQJVO]GTM[O]LYLYKXERFRJWITM[Q_R^HRKWEPBNGQHQHRJTNYS`bnz8*3%5%@.=,8%8%=+=+4$A.;(7%3$1)>,E4E5H9)#:1@/C2P@_Y-(($9+D7K=XMTO&"+)tl|tjcNDd]4NHurfcc^PJ>6%%!\YLAHBC=:462,&!'%95A9(#*%/'&!" !,-ED92#!%"%!'"%!()&'('~,&&!$ &$% +/(,%$SP)&%!&#&$(&5=z-4(+2/*()++,4:,/3:|9D+..-042827286>?L{08166=5>3<8DCPEQ;CFSHTGUGTFRP\KXKXHVJWN[WeS`O]P]O\P]FPEMGOGOGPFPJRJSMYdqmw˿C46(6'=,8'2#3%:'9', :*=(<*:+SJI8A1D1C00)1&>+F6L>e`(#:3B3;/H)*()(*.2/15?y4>*,-,/417293:8D~:E~+3034;4;6?AN=Jj1<29AOAMFS{DPGSg7C|ALIVKXLXMVGSN[P^KYDOTaDOBKEOEOEOFPJTMYOYlx)?14$7(6(<+8)- 9'7&=5@1:&:'5&NFN?E2TD\U)#A5A.B3I:I;(!VJznZKylkcC;0-;8F;J=b\URUMe^(#JGfaUH\VZWTME>,%<5|7/("3,-',&$SQh_/)#)$"#VUZO)!&.')"' !$!-+85'!' % %#$!&)##0.|&!%!%"&#'%u*3$&,+]^)''+'+378;7Av,4.0-.030618/36>}9F)//23:3;6@:Ew5@b.817>IAN~@L}DPm5AW.9t@L}ITIVHV|DPg6AGTDPKWGQKVFR@JBLKVHQEOIRMYR\zʺF75'8+0#A/:,4':(;(LCWI<(:'?0fZZME0K7J8:2}K7I9D3C4E:Ƶv쉂MAZP70)"vh˼_QF=?7C<>7D?ɿbYOOYX<7/%*"=6qj-%.',%)"&!($撍}q(#$$ # SQjc&)#,((%#!!" ##2-%""""!##*0$$*(66'#(&%%'#&'u+4$$++<>),+0+.;=88x,6&,,,-,/4/3,0.28Bv-7+-/107295<=Hp0:c*338@L@M{?MFSn3>^.:p=J|FRFSFRp8Ca3>HUHVJVEQi8DCM@ICLP\ISCLPZNWZfxQ?=05':.:*:+F:?-:({{p:&:&@0scRxnxoI=aSTF7*8,_R{tC;90IB0)>4SI9/4+1)A;aY3,622..'4+*$4.ZVid-&1-0+'#%<6oq犋<9*&/*&!!%!'#=:cb)$$"'%+)-+(&!"*&#(&)'-,()%&!"!$"&$02(*695949{+3$!'%13+217*/:@7=w-4&,)(+0},4/4065<=J{,4*.3:2;189BK{EQJV~ALk1;d3>JUHTIV{;Ge6AAK>GFOFREPFNS`PZbnaQF9=.p_@0D5dWL=@0pd8'<*C6tK@D?81;37+kaF<0&))-#9+?4VKf\Ie6@|O\yHQHSu3>h8B@JBBE@F?C:>4838/44:~/5|',%)~#'p#s#w!%t!sq"t&+t'.y(/+1}$'x$'x$(}&+z&+}%*~%)$'),')'+~&*(,~)/}+1/5~.5/518194<6=7>=D>C>DBJ@G;B@GCIKSFMAGDJAFAF=B4:6<:@9>6=@JIAK@J{AK~9BIULYQ]TbNZr;EzHSWfS_S_CMl2;tEQTaNZEPx3;u=IAF=D8A=G;D8@@H;DAHBIFMEMFOEOCLNYxKWxKXzO][kYg[iYhYi[jT`MYVdTbCMGQFF?GAGBJBLGQXdcmʱH>0(<3LF20"!  ##$%+"* *!*'(+"$#")$ "$%( +&)$,(0,9362.(+$-(-'.).).'0)/(,&*#)"4.61/+&!% *'.-+')))(((&%'(*)%&#"$#$#'&##!z ||"{"x"}"}#y!'w#x"(w$*s$)t#)s#+u%,x$*x%,v'0v(/y*2u*1o)0p+3t,3s.5q,5r5>v8B{:Dy;F{>I{>Ky?K}?Ju;Em8CvJCOKWGRCLHTAMPZQZY`W]\^OVdg_aTZ^bKPIQJRJQam{Ѱ%%"%!#"#"#% !"$#& '!/)-'6273:772=8B@BADCEBFDFFEDGHKKKKNLOOPPQQPOOMPPMMPQPQQSSWPTQTRXSVSWSYSWTWTYRVOUKPOUOTOVQXU^U]RZOUMRKPLRPVRXRVOTMSNTPTNUNROTGKEK8=37.3~*/}(-}*0{,2z.4z9BAJJVITR^O[R_O\O\O[NZM[NZMYMZO\P\KWKWHSHSEPFPAMBK>F6=9@;A>C@EBDBEDDAFEONOOKKNMOOLMLMQRRSMOORMNJKQRVZVZWYY^W[RVMRIMEG@D?C;>:>5:6:399?4:/517(-15;><@6;?DBy04{+0|-1{-3{186=8=8>;B;C>ECHR[GGEq)|.%#$.)512->=@=B@CBDDGGFGHGHHHHHGKKJKKLJIJJJJKLKKMMMMGF:::9EDEHHLLOFGEHDGEJGKHNKQOVQYT\RYRZSYS[W_Yb[d[d[d\f^f[c]e_h`i`g]e^h^e_g\d^f[bY`S\LSLSBH9@6z7>9BxAM~DOT^X^Z_LF%! &"+'1-2.3/524195:897;9737486403.0,0-0+/*1-/+.*-+)&("% !"#-),.-/,,)+z*,u.24:49.2-2,0/3.3x+1u(.{+1y,4}174<08395=9@:C>FEM?GAJDL>F@H;D6<.3|+0*/*/+/-/.3-2/32804.3,2*0*0})/~)/~)/|*/y+1{,2{-2{/54:4;5;6;6<7<6=};EHSEPJ[PfVkatϸ)if#     #!% )$/*2,3,3+2,2-4/513.0*0*,&')$/*4.51)!$##!!!" %%{$%v')w"#v"%{ {}y u$u!t &u!%x%+},0,1|#(w#(},13:/6~+1{$)y'-t &n"'p#)p#'t%*v%)|',-2063:?FIRLVR]R]T_S]R[JS;BISDK=D5;/5.3-3.3-2-3.4/5085;;C;FDQDP`kXldzvYR"" '!0*-'/)1+3.516072:79683513.<7<8B>FDIHDC54,(-(3,3.0+1,2-300/3220,*--66>@?A9:/023778:7958,.,/}*,/3-0'+38372717z*/{*0{,22:~3;5>6@:C>J9C>H~5>v.5z,3}.4/5,2}+2},2.5,4.4.46=7>6;9>DJYasvĝI@$!!##$"!" |vrojd]]YY\VX]effd^foj_\\ZYXYXUUXVRSWZY[\__cccdeeedejlkm"n"p"q$r$r!(p#)r")t!(s!(u'r!(r"(p"(r$)s$*w$*z%*{&*}&-(-}*/+/~+1{.2~/5/50549385;7<>CNU_ewwžoeVJbUqcLj~\Z$    | x t r q p k j g i lnnsx 3164~&&..45~)+?@25|,/w.0x/2o"ggda][XT O O M I I I C B A = < : 9 8 8 7 9 ; 9 9 9 ; 8 6 9 9 : 9 <@@CCFKNNQSUXZ^"]$d!(c!(i%-i&0m)1p,4u.8v0;y2;w2;x2;u/7w.6s*2t)/r'.r%,p$*o#)q#)t$+y-6AGcgdfĤбdintɤΧ##fdmu|          $#)%0,_YSN=7B9<17+904,4)>3B98/8-?68/7-2(0&.",") #~}uusqkgb_ZYWSOMHFEEBIDBFEFGJMNMP Y#Z&^!)`#)_!(c#+b"(` &e"(f%,i(/i'.j'.f")f#+d")f")n&/q(2s)2r'/s(0q(1n&-n$+s%,t&,w(/4;BJ<6240,*+(0--,/.-*%~vrqg]ZVRMKIGGFIKLMP!S$V(Z",a'3e-9g0=k2?l4@s9Eu;Iv>K}ANANy6?ALr2;{4/?/L=E6P?bQnqhoZjUpZm~inyg{hvcuc읋xfuen`xhu떉鍊feVWFF1.51)$+'%"($&#}wtolhc^ZWSOPONLLLM LM!P!S#U%X(Z!+`#,b$-b$,e$,j%,m&,s'.{)/,1}/59?@FXQ.%+- --4#3!2 ;)?/>.>-H9G9dTn`\Wﻶ쪦¿챭몧ꦢ飡꟞瓒mpaf>>569:20)%501,&!% "!! ||ytqlhec`^\YYWTTU Q!T"V#X#Y$Y%[']'^!*b",e$,j'/o+2{5E=@96,?8=63*;393F>2+/(* *!'*"$$$%#    "xv wr l#i'f!(c!*c!*e"*g'0f'0g&.j(1h&.g$,j$,n$+p%+u'-y)0r(/k+3o/7x6=X^Ǽ{p2%/$(#"    /C-O:M:O

YMfYypdi^̿ĺ̽Ǽ»ļxtca]W]XLGWOj`MCKEWSQF5.4.))+!( ( ("!  ! z{voib_\[ Y"["Y"Z"\%] ']'a!*g%-s+2}+1|/4z4:z6=|@Gz﫢5+4)B7E@   1$6):&8$<*D2H7N?_Xyûyqlc^a]gdb^upd\dXu`Z]VD>=5D<7-)$#!%#"!!&$|rplgk!hc b!a!`"a&`'^!'_"*a$,h+3|16C@SQccRMSPXWJLIEGBFE8563MKNN@>88>>QPIH??7732.+,+5475$4353DD44ECDB/-EGs).o')k[LEL!Tbbja]ejnywoxnn"s x!!x!"x!!x$&r#&t"&w$'x&)w&)t+0n,3p+3y+.~./t,0s+1q-4n+1n)/o)0i$)n"(l!'q&-s)0q*2p*1n")k%,j+4}BJrwǮ跱;823/->?:7ZIލw{eqzugC<.(*$ymgc]\c"b c][U K<;34 O`"%h #be"a!#ERMN; C P_d^VTQH9. ,(" +           "    " 6W#_"X"TX]II!ECGM$S!)[%a '_#*c&.l*0n+1l-3m,1t-2u+/n*1k.4m05m*2d(/T(0^-4wDahñͅ}me:/H<&!v"")&2,I@YMPBC6!j[ \ _Y Tc #_n#%o!"r"n#&^_ "j%&i"$` UY^ USIKGZ[Y"KKFBJKE=4 0,ۇzVO8)")"-#) $&'()K@BCFc%)E3) ) 0 ) 723658:>CB=AQG<ACC!BG!R (U'P&W"*H < C&O%\$-p3;i19S)3E#+J$-T'1k5RFH=:.<07*2"7(3+?>@?<;AA0+/*HF\^_^nmTODCGCVWQNB>;9,(`]GE:;>>;7,(-'883/821-880+ME{wKJ>=17GAGJFPKBFH>AHSCCPCHQ=>771/} "j#+n$*K<93 KLACB?AHKIX$X#U!XZ!]"X!] ^ _!g!(o'0n&.s(/u(.v(.u+2] %N h'/4=i(/[!([$+e'0o.7u/69Ar-5y07~;ClobU0#0 2#4$23 9$;*7&3#- ()"$'#:51+?:TRVX<9RPigxtuv簾쒑灃qqaaxyfgWS@=RNRMbaWYIID@<9@94GCijywsopkwvzwsnzxkkvx뗗~RRPPEC=<0*=4ro3/?[QSjmux|tz|nsv|t||snlsi.&&"i$SNfjlidddc^^[Y[ ["_ %`")b"*^$["` &` &k*3l)2i'0r,4{2;w19{/73;}1:W 'X#z.5~.5]"(X '_'.b-5d3=i09BI},3~17DMå3&0"11/238"8":#7$F9JB8.9-MB\VQJ]WYRJDNG~snokd_qoqoutxx{y}|zzzzus邁ecGF1.:8@@;8c\K@|2/=\W]qyxXUTx}|qhFA/-e!QPqx}wtqqrolhedee!e#e#e$f!&j$+k)/p.7t09s2\Vqkzwxtrnwumi~~ofZWup}yqjwslistYZSUB>B><8:7ZSVLtn41=XU^}tuqp3+&$g MR{|y|uutrp mmk#m #k!%h!%i %n"(s*2s-5s-5p-6v/9v.7s+3z.5z.7{.6Y&W%09w.5\ 'V (^(/a-5m5@k2<{BJk06p07=C˯뒇3&1$3$1 /28#8%;'7#33!2#<,5':,;/E9c\mhojhbywe_pjxs^Wrkjbsn}鋊onZY^[SQQMDBOL1+63[RZNxt.*;tii}{tbaayyB;31nUWz }yvxpxwst"s$o$n#p!&h!&l"&l#)n*1p,5t.6r.8q-6t-6n+4y.6z.6u/7^!(Y#{,3u+3^!'V&_'-b,4u7@q29r;Bi18x38GLε도2'2#-,..3 <(6"003#04&3$7);/B9GOH4/#JDUKrn)&8rdc͒\W;8mNWx{xvtvrnhjl"j!o!k#l %j %n%)m(1n,4u/7r.6s.7p+4s,5z-5t-6o,5`!'\"t,3t+2W#X%`%+g,3y5?r29v;Bn05x17BIϸ亂4'..,-.27$6%001!2"01!8(0!2%=1mcZOSKTKMDVOe_zuuqsozy|wga\XURVShfKG?;C=+%J>G:nl% ;p\Z}ΆxOI??pX\ ~zzzvrlol p o!$h#k"i!&m%*k*3o-4v07t.7r-5k,4m,4x,4j+3j-5_ 'b$l,5p(/V$\ &c&,f,3w5>p19t6g^[SYRneVOkf|socZmb^U]T\Rl`j]b\`[F?D;C9?8VQGCJCKAo]O.(6\ZχwF<%#uPc "##!  xok o#q#o"'n&*m+3r+2p)/i,3n.7n,3n-5y-6h,5d-6f#(_#i+5o'-`$b %e&,k,3z4=t3;z<27,XLaPǼxsqlj싈{svpidvm=73/:4-'.&/'1,%+$/)0+'"#0*~h%,n'-s*0r+1i-5k/8o.6s.6|/7n/8l.7k!&m %n,4w)/l#o$p(-t.3}6Ax/8{5;|.37=EJ6)*.+,-./01./-/.--1#8+I@NB;1?5C9?4A75+@5pa쌂`Z@9WSHCQN73:6EBB=HB>9B=741,,%,%HD.)*$<8 +%% !!(%  !| "r&,d&,e&.o*/u,2m.6m.7r-4s.5|-6q.6n.5o"(p &o-5x)/p$u$u(,w,1|6>w08};Aw*/18EL>1)-.+,-022./-/.,+4&2$A5XN@5:/9.>4C9>26)cSMG$$7,2(,$( *#$$(%$%%"!&!"""% % (%*')(''&%%%~*,w()y&(z'(|(*|+,,/z,/-0)*,.z/2v.1x/2|0414-.01243502'(,/04/3*-*-18s(.^!'a$+h(/r,4l.6p/7w.5r.6y.6t/9t.6s"'v!&o-4z)/t$x%x'+z+06>z07y6>y)/.4DJG<)+/,,.//0.,+,--,2$5'>._U9-0$7*<1A8=26+1)0+;76374***(()')')$%$&)*{')r!u!t"q"p ii fdeejid_[U][\agdccdb[RLPWUUT__e"d!cj#p"(p"'u.52;}(-]!(_%-f)0r-4l.5p/7v-5s.7v/6t.5u-5x"'y!%n,5z)/u$z$z&+~,18?z18~;Cz),-2CGQH*--+,-000.-++-.2!3%:,@3ZO7+2'9-<09.6*2& "! " ,'BE*/'&53q!]]k\RLMKKFEILN`VRND?@HMSOFRUNMNfg!` h a!g#y &m fe!r,3.4\ &c'.c'/m*0l-5o/8u/7t.7v07u.7t-5z#'}"$p+1{+2w$~ #|(,.28A}06}7?|).-3CI[Q*-,+,,//2..-+..1"5&9,3'6+/$0%C77+7,8.2%#-)$!v?                                         ' E Vkt#o"&r,4z-6W#a'.`'/h*2l-5o/8v/6w.6u/8w.6y.5$'"$r-2{*1w!"}&*,37?|05}8={(-,1DIdZ+-.+++-.010,+01"0"4&7+5(:-6*1&6*=3B7:/1%(*- 'Y .                                      ' H G Wp#)q+5v)2[$_&.a(1a)1k-7n/8u/8y/6v/8y/6|.4%)#$u-5},2y"!"~'*-25>~18;A{)-,1FKqh+.-++,./10/0+0!6);,6(8*6)A4TI:.6+?2H@4*:00"+++X 1                                 ' B Q |s&,n*3o(1\!(`&.^(0\)0g,6l/9u08y.6v08x08{/5&*"$w-5|*1{" !~'+-24>}/5DK{)-,2CHtk*--*,,.201.--5&1#3$;-:,:-TJf`UN;/<2G>7+0$2!.8/* U 4                                    $ < ^q%,l&.n%,_#+`%-_)1a+3d-7i/9u07y/7v08w07|07%*"%v-5|)0z$ !&+-25=|.4>F|(.+1BGyq+/,*,,//0/0,+-004%7(@3^V\VC9C8@3=13'9.00!4&2($W ;                                   ! ; u$!u%,n(0p$,c#*a%.`)3b+2d-6i/9s/8x08v08u/7z/6#'~!#t-5~+2y# "%(.26>17>F|(.+0CI~v,--+,,00010/,../4';-B6xsYPA6C:?38-9.7,-++1&"V = !                                          C  v&+l(.q%,b$,a$-c*3c+3d.7k/9v19x07u08s07y/7#&{!$v-4,3{$!$'*-22:/56=|)/+0DJz)./-,-01421..+,-1!6)B6_YI>E;@5@57-7-5).--3)&!` > &                                         " Z"30t&,m'/r&+c$+a&-d*1f,5e-8m/9u0:x/8w09s09x19}$)| $w,1}+1z% $&+-25=05FK|)/+2CH+1!/-,,/32 102$,,.5$4$;-A6RIG==2G>?5:0=24(2"1 1$4*"_ A -                                      B &#%!p%)g%,m$+a$,b'.g+4i,5k.7o0:t/9w08v08s09y19{"(z %u+2|*0{" "}'*,06>06EL|)-,1DG菈+-.--+/23!4 1!4$--/1!4&9,:-VOYR7,9,;19/8.7,7(B47+0("cD 0  $ 1 ; E M R V Z \ \ ] ^ ] [ Z X R P L K H H D @ > = : 6 2 0 / - - + ) . 3 2 3 5 > N }*&&#n',g&-j#)d%,d'.d+3k-5l/8n09t/7v/7u/8t/7y1:x!'u%r+0{+1y$| $(+,14;~16GN|(-,2BE鑊+*..-,.114!3 .-.4%.1#6'6([Q>57*9/7,8+4)4*/,0&/&b F 5 . B \ n w              ~{u s s q mjecdb ` _ _`afopn pr73"i(.h'-m#(f&.d&.g+5m.6n/7r08v08x09v09x08x08x#(v %u-4{+2x#| $'),15>18GM|(-,1CI蒋*,.-,,/..21/0/0.4&6'2#RJ;05*3)6+:18.1%-)7(/%!j [ f y                             .'"n*0h'-m"(e%,d'-j-6k-6q/9w19w09x09v18x08y/8w"(t &x-3|,1x"|%&)-/5;06GN|(.+0CI蕏)*.-++-/010/.*,,2!3#2%LD.#/#."1%:.<26(/+- '        ' XN"k).i%-k!'g%-d'0k.7k,5r09u.7z1:z08v/8y/8{/7v"'o#u*0{+1y%~$'*,/4<~16?G{(.+1BFꘒ)*..,,,./10.),+-0 +.5*- -- 5)5+=1/#.,/#&#')+)((%'&,+)('($#%%$#&$%!!KAߞ"j&,g")k"(g$,c'1l.8m/6s08w.6y08y1:x09z08{/7u!&p#v+3|+2x%} &'*-05;~/6=Dx(-+2AE陓)*1.-+-.-01/),,-/--2%- /!+1$6,<00".,0%#&2)tq^QCN@A4>0=05&0.1!7(3#1".-,,, +**)''&$#"#$""%$"""&"!\W81|d&,e &j 'g%.c(1j.6m-4r/9y08y0:z1:y08{09{.6u 'r&w,3z*1x&}%',-15=/7;@z(,*0=AꝖ+*//.+--.10,,,.2/.1#;04&.,."3*4)0"+-2& 'RL렛슃~yunTMcYpi^W^XTOLDE<=35,5+2(/&2*3+2*0&-#+".&935.-$62912*5.&%'    !p e$*c&j &e%,d)1h,6o-5s/9x.7y/8|1:z1:z/8|.6w!%v&u+2z*0x${ $|&*,06?/59?{(.+0=B.+...,--/3 0+,-00 6'/ 9.4)- ,-- ,6*1",,&##'$$&+##($228751/(( )$)#72 #' +#&""! c [$Y#+c"(l &f$+d(1h,5p.5t/6x/6y/8|/9z08{/7|09y"%v!&q*1y*0x%w%}',,06>05DI}(-,0>C.+0.-,.-01/+,-3"0--1". ,-+1$/"4)0#-/!      |wz{'# z}wz}xogc{{wR"O"a(.h(/j 'h$*g+3j.6p/7u.7v/7x08|08y08~2:{/7w!&z!$u+2v)0x&y%(,,/5;38GL|(,*0=A,*//,-./0/0/0 /0!0,-,/!0$3&7,1&=25*.#+-!!$@<3/301,3/1-2/52/,'"#$(#"!#!$!" ! ! ! ! ""x#%z#'|"%~#$~q y#|$&+//326=@?C:>*,}4835q14i,0v627>Ez(.,2CG+*--.-.-.0.-)+,--/!- /"3(1%0#0$4+.!,&            {ontx{zyomjff`YRNRVVXX\[\]bcb_ _c$_%,i+3n'/e*2i,4s.7v/8v19w09~18}1:z.6}1:y#~"'v*1z*0y$x '}(,,26=/5}49{).-2CG瘝+)--.--+-00,)..--5(-++- .!,!0&701'','+'/+40;7749585746340*'"   { x pqzyyzuqnksqpw{ysxqmp spmmm"m$)v6DHNFK:@6:|27w15}:?5=j&,c'/l-6s.7x/8v1:x/6093<|3<{07z$|!%w+1z*0z %u%|),,06?/5{27~+0,1FKü謹+*,----,200.),/+*,-,+,/!0%.%+!-#%$!%%""   ~r t j f g ` e g j ^ Y \[ cTQUQNXZKMRUIT!d$m#)p',m&-k*1m*0q&+s'+s)/b"'d)1k-5t/8y08w29y093;2;|2;{18{#z"&z,2z*0y$s!&z)-,24=39~7<~,/-0GL{ww*++,,-.,0//*,),)*,*+().$.#/$/$&0%#$$!(!##.)      {x~z{mikgf]^bh`aei"h!f %e &e%+f)0k+4r-7w08x29}2:2<2<}2;z1;{#|#){,3y+0x#u"'|*.-17?39}5:+/,0EIGEEq줞**+,,-./-.0,))+*++(,))+(+,!&(***&( "$"&%#%"#$1%蔅kc)" (#   !$'y|tobgpm]e i"o"n#m!&h!&j&,h&.p+4s-6u.6z2:1;3:4=|2;{19z"}%+|,3{*0w#t!&|*.-17?6<8;+/+0EKGEEq*),../-,/./-.(-***))(+,(,!-!&%&* -!&& ##"%)$.)(#,&룜ik,$! 4,zrpd%eauogl"l!p!r$m!&o%*o'.m%+r+2s+2t,4z08{1:|2:3@5=6703,3+5/807/6/2+4,1)2*3+6/?7A7>6YPC9C:KB<3?6:3=35,# !{!z #""{!$|#'y#'w'-}*/~+1,2x.52;29y09{1:u/7{.4|!-4|+3x$*{"{"',0/69A:Av)/{'-+1CG**+-/.-,.--+(&&((*'&&'(($(%#!#""&=6|vnd^\WQJLED=C9@6:07,5+:06-7-3*3+7,6-8/3*2)/(/'92?:ED1*-&+"' ( &$i||!{ #"$|!$z#'x"&v%+}(.*0.5}082;|09|19{08w08~.6 +1{*0{%,~!~#&+0.28B>Fw*.}'-+0FK*(+,---,,-)'%##)+)*%&&'&&%$&%$"#$ &* &-"(%/&( %("$5.%$-'/(.&)"'& $,%( +""*%*#&" "#[iw }!""$~"&y"&z!&w%+{',~+2.6~091919~09y26@19 "+1+2y&+"}"%*//58B:Bv',z'-+0IJ)(*+,,-,*,+'&%%),**''&&'%!  $# $!"&--z/1|.0/10/.,427597778:;>:9=;>@@ADFBCAC@CACFH;>@CAE}=@}=Az9?w>@w=?y?A{AD}CD|CEwCDq=>r9;q8}3=~1: !,0}+1w$*"#%-3179D?Hu&+x'-~,1KO)'+,-...,-,)&%#()*,*)($#"$!%"% !!#&&'* UZ['&e:8{PN~SOSMURUSURUTUSSNTOUSURVSVWUVURVQVSTPSRSRROQP{NNxMMtJKqFGl?Ad95Z**H*$ o%*WNU \ h n"j"w"(z',*0-6172:3;2:2;5=}2:}06+0~,4|&+!#$+0/59D?It%*t',|,1NS*&*+,--1!,,-+&$$%)&'(''&#(#$$&  "#"#)(a\[,*d=9sOMyURyWU}ZX~[X~\X}[[}\\zYV|YWZW[X[Y~[^}]\~]X}\[}\Z|YW|YW|VW|UVzSSxQQtOOqKLnGHf?@^54S)*P*$0)"n"'VOR X aej$r!{',}(..7082;3;2:3<5=|3;2:-3}+2|&*"$%,1/69CA^66R*+dD>7/#o#(YMOU [`i%v#t%(|).06184<3;2;3<4=|3=~08-3},3{&+#%'+0178B@It%*r'+z-4NS+%**+,,,(,+)*)# #&')&#''%$$# $##!%.!%o"`Y0.qVQÿ{|n^bgXZ\NPWGJZILXFKUAEPcHKoOQmIKhBEc:9Y/0z/&1("m$)XMOTV\c t"(m!'y).072:}293<3:4=4=z3=19!-0}+3}&+ "%'*.088B|07v$(q',v,3NQ,&)),,++(+(())%'((+'%#%#&#  !!&#$%-!"l$^X1/rZUxzrqnphkadzW[xNMrFD&"6/4+!p$)XLMSSZ _!l!%o$(w'-292:}3:3;5<4=5>{4<}08".2~+3|%+"$$&*..58B~08w#)t'-v.3NR-')+-,,++)(()(%%%%)$#%"#%"!# %)'(0""l!`W31t^[v|mk_`3-813*#j$)VLNTQZ dm %k#)u(.192;z4=4=3<~4=~4=x3<|.6 ,0+3}&+!"$&)--48B|17x%*w',z-2PR-'**,-,,')'&&%%" $$&%''##%"#  ")) **k#_T44vb_~tyszpvms|x80>72)!g$)YMOTP[f k &j!'w(/.62;|4?5>6?7@7Ay5?~/7 ,/,4|&,!##&*-/49C6=x%+x'.|-3RV+())*+++*('%)## "%$%$'&""$$$# !')%(/##p!&aT46xgd91930'!f$(VMOTQ[cj $n$)w&-/72<{4=4<{3=}3<|5@z3</7 ,2,3{%* "#%',/59B9@y%*w'-|27RV,*)))+++)&)(%%#$$"&'&#%##(&" !'')*3(&n"eV66~lgŧǚ=55,2*z!"h#(VPQTRYae$k$+r&--51:}5>4<{3;{3:x4?v3=}.7 *0+2z#( !%')-/6:D6;z%+x',8=W[,!*)*)+*+'())&&'$&$%$$##!!%! ! %().91"p"bV76qkȿȷ̲ԣC;6-1){! i#)WPOSSXa e$j")p',-5194=4<~5?{4=w3=v3<}/6 */,4x!' !$'),-3:C~28y%*w'-x05UX.#)))(*-+&(((&&"#$*$!"$'!"$# $&',0'!n$^V85smƽɷѶګE<9/0'~#"i!&XRPSRX`g"k!'r(./74<4=5>~5>}5>x6Ax3;~/7+/,3v!("$%'&+-58B4;z&+y(-u-2UX-#))))),.'(($%%# "(###$"! #! !'&((*n!aX87tmοּܭF>:01'%!n"(XRRTRYa j %n"'s)/084>5?5>}5?{5=x5@x4<08+1}+3x"' !~#(&+-48A9A|(.z(.w47Z]+(,)')*,&'&%&#$" "$##%!!!")#  #$%&+u"(dX96tnథH>7,1'$"m &WRSUPVbh"m$)w)0/85>4>4>~5?}5>z6@{4>|.5,0,3x"'"&~#''*.39DBH{&,w(-u/4VZ,'(('((*&'%$%##"!" !##  "(*!#!%%'(q $cW86vp䳬KA://%! o %YSRVSWdh!n$)x*1084=5=5=7@~6>~5?v4?|/8 */~+4x!'"%|#(&+/5:DCH{%+w*0y8>`cʽ, %()'(')('($## !!"""#!$  !(%""$**'w$`X96vo淲MC;0.%" r!&ZSRV R[df!p%*x*2/65<6>5@}6@z4=}7@y5>/6+1-5w '!#}$(~%*-58A=Cz%*y).w5:ggʽ, $()')()('(##" ! ##$"$"   ""  !!('((x!`W86wq羷OD:0/'"t"'\UTV T]bh"o%,x)0065=5=5>}6?y4=x6@{5>~.5.5.6v &#$~$(~%)-45?EIy%+y)/IL,$&(()))'&'%$#$! "#!!"%""$  $#'()xaX87ys»PE8--$ z %[WSUT[d h#l$*w(/195>7?7@~5?}7Az6@y5>}.5-3-4y!'#$%(~%+-35=BGx%+z)/HMǞʾ,!#')(('')&&%$!"! "!!#"$  !""$*)x_Y;8zs»QD;0.& w$\VWYX\ g!e!l"'v*03<5=6>6@}6@y5>y6@x4>-4,2,4x %"$$'~%*-1~3:=Cz%*z).JLЫ˾-##'('(((''%$%#! !# ! ! ! # """   !!$*(uaY;9{uUH9.*!! q %[WWVV ] b!h"m#)q)02;5>6>6?7@|6@|6Ay5@.5,3-5z#' #|#'~%*115:>Ey$)w'-JLͦʽ.$&&'')'(''&%""" " $!#!   ! "!!  $$)(s!bZ=;{wûSF7-+""w!&]YYXX ] ` j"o!(u)//64<6?7?|6?|5?|7A}6A.4 .4.6{!'"%~$(~&+DD7:;?z$*{',FJ˾.$('(&('*&&'"#"$""## !  "!"! ',(w aZ=:zwRD9.+ w!%^YZ[W]a k%o!(v*/185=6?7@7A7@}7A7?-2 .6-5}"(!$z%)'+EB7:=D{$)~'-}5;vz-!(')&(()'%(%$# $"""$!! ""!  !).!)v"_[=;{vȾTF7-&s%_XXZX^ `!m$k $s,129~296?6>}5>6@}6A6?-4!,2/7~$)#%~&+*+EA<@EM{#*~'.;A˜-!)')('(('$%'###! !$"!    "# !&)*s #_[>;ytƾRE;.'u!%_VY] \ _!a"k$l $s-5085=5>7?6?6?}7@5=-1 #-308{")"$|&*(+A>7<9@|$)}'-;B~,#(&&''''(%$#" ! "!"#!"!   #$!!!&'q"^\?=xtTG6=7?5?6@7B6@,1 !.5/7{"'#%%)~'+7739CK~$*',3:nw.#&(*'(()''#""" $!""! "   !'! "'&u\\?*.!-4.6|"&#$|%*~&+6737@H%*'+/9mw1%&)*((')&%# #" #! "#!# !"&!"!   $'$vY^@=zsRC9-#w!)`WZ\!Z^ ^"i"o&-m(/2:5?5=6@~6@z6@|6@~6>)-} "-5-5|!&"%s$)~%+063;BK$('-/7lu0%&)((('*'%$" "!! !" # !  #! !$'#vY\?>ztźRD7+"x!(`X[ Z V\ `$l!q&,r(.3;6>5>6>~5?{6A}6?~6>(-} "/7.5~!&#&r$)~&,183;JQ$'&+.4u~.$('())(('##" ! !   $#!! $ #   $&$v]aA=|vûSE;0$x!)a[^ \"[!^!`!l#p',r*0295=6?6=7A}7A}8A~6@'){ "/6.4~"(#&u%*~&+292:=C$'&*-2|.$+()''&'($""" ""! $" !"!"#!!$&$ wZaA>}vSH8.!x &aY[]!Y"\ f"h$m&-p,4085?5<6?8?}7A~7@7@(+| #/5.4|"&$(z&+&*28086>$)'*,3z-#.")'((((''# " "!!  !!!!!"#" ##$""&* w\`A=}yN@3+!z!%`Y[\"W"^"i %h &l&+u.4-55=6=7@6>}7A}6@5?'*{!-6-5#'$(z&*(,0707*1%((,-5rx.$)'(('&('%#"#!!"%#!! " !!#!!$) y"\`@=}yL?1)~#(aX[ [!T[ _"b%p',y.4/7}4<5>6>7>7A~7@6?'*{!.6.5#)~$({%+~(./7}08,3$)',-4{-#'(*(&&(&%"$$$"!$"!""  $ ''s\_@;|wI;1)|!'`Y\[!V"\!^!b$o%+v*208{3<5=}4=5=6>7>7@') #-4-4$(|$'v%*}&+3:}/706$(',.5}ʽ0&%'(('()&#!'#! $ !#!    #!$$t^a?;{vG91(~!'^XZ[!S!\!e"f%n&+t(//7}5>~5=6>6=7?~6?6?&*!#-4-4}#(y%(z&*'*29/58?$)'*.6)0$''('&')'#  "! #!!!%! !! "!# "" %$ saa?=yxI:1)}!&]WXY T ]e!i!&l#)v)019|3<5>~5=6?7A~7A6?&* ".5.5}$)y%(|%*(,4;/67>%)',/82'&)'&'()'# !! #!!! !!!""!! %   &%qceB?yxJ=1(| &]YX X U!^!a!a!&f"(v-308|3=|2:7>7A8A6?~5>&+ !/6-4~#'z%(~%+(-3:~.4:C%)'*/86)&(''&'*#"  !"  ! ! "   !! ''ucd?={xMA4+ {!&\YWW!U!^ d!e"h#*x,4,14=~4>5>7A8A7A6?%)".5-5%)x%(}&*&*29|07:A&+(,1:6*&''&&(*""! !  &  !   !$#'(ya`;9yyF;5+  |!'\YXX T ]!h$d#i$*z,4).3;5?6?4>4<~4=|4=%' "/6,3&*{%)~$(~',3;07BH&*'+1:9+%(''')*$$"!!     ! !!" #"+#y`_85suJ?1)#!}!'\ZXWS!\ g"e %l$*x*1-53:6?6>~5=|7A6?y6@%) #/6-4~%)y&*}&+(-1:07AH&)(+088+&&&%&**%$!! !      !!#%"! (&r]]44omľкI>,#,(.)~!'\YWV S!\ g"h!&m$*u)0.53:6>8@8@8C8B~7A%(!#07-4#&{%(&*(/4<18:C%)'+/6;.&&&%%)*!"  " ! $  "!!   !&, o ]\32nnºF94,#*)~"'[[WU S!] i!i!'k!%|-3172;6?7>6>8B8B7@$("$17,3#%),%('-6@299?&)(*/7;.$'&$%(* "! !!   !" ! (!   &(l_]44llϼD8(!z!)[[XU T!_g a$e"&|-507~095<5=5?~7@8A7@~"%#%07,3#'&)%()-7@3;=A&)'*08æ:-%''&%() "" !  " !!  &%l_`99npĿIJưҹﬣF<){ '[\[TQ^ c!`#i$*z,2/6|294>5=7@7A7A~7B~"%"%08+2"%%&&*}',8@9@BE%)(+07ȩ8,$(&%%'(   # !"#  %&q!`d<;rs¿ʳջLD*!w %[\VSQ ^ n#m$l$)z.508}/76=6=6@8A7@7?"$"&2:+2"#%'&)',6>6>8>&)(,07ʭ9/$'%&''(! !"          '$l\e;8xy¿Ǿê׽OE*#r%]ZYTRep!q#l"'y.3x.5}186=5=6=}7A7@8B!#"%07+1"#%(%*(.6>5<38&)(,07ͱ8.$'%$%&& ""     #%'fYf;9||¼˿íɯֽLC%v"']ZVTSfu%q#o#)y-3u.5x1:3;5>6@}7B8A7@ !#%08)0!"$'%*).;D5<17&*(+19Ϸ:0$&$#'''#"  !    !!!#  $&"lUi?=нѽ@4$s!&_ZWSSgr%f"r(/t*0u/6t092;6=5>~8C7?}7@!#(/7*1"##&%*(,:E6>04%((,17Ѹ:/$%#%&&%%##        "!  !&%qNfBAȿ쾶{n>1+$x#*^[WRT` k#i!q(/r+2r.7w084;5=7?x7A6?~7? #(.5*1 #$&%)(-:C4=-2%)(.17Խ:0%&%%#!"$"      !!"  ($".+IG_Zga|xқ㺬綩屢᭡䯣㱦ⶫ㱦䱦ᵪ䬣岪稞瑇茁{׏՜ڟ؎uowqnfh]zpyjl`91z!&`\TQR]"g#e"m%+r*2u08y176=7?7@z7B6>|6@ !%)-5*0!#$'%*)/:D4=,0&)(,28=2$%$## !"!      "%".! ?3h[{~~p}y{s}s}v{sxw{rtjsiulvlrirfncwmoepgqfofmbjaiai`bZPF~vi^z!'^YQRPX!`$b#l'.s,3t08s174:6?}7Ay7B7@{6@ !{#'.6*0%%}!$$)(.9C3;,1%)(+18<2%%$#" $" !! "!       !  !$&(" SMri䓋勆wt튆폊utnlolb_ZWWTROJFJGHC915,5/0'0&0%1'1(0'/&,#0(5-4,6.81) !)#-' y!'^XRSQW _!(^#k&,u,3q/6x394=6>~7@y6@7@|7@!#z$)/6'.!"|!$%(',9A6?04%*(,3;>4%%#! !"" "#"    $'! !"%$&%##!! ~uzyq!!q""z#### r"]XOPQU`$_$l&-r-3o18r/7z3<6?{8@w8C8B7@|$(/6(0! #%%((,:B3;-2%)(.2;B:&&"!  ""!$%! !!%:7BB=7<8BB@?@><884:998788788==?>:;79<Bj>Bp>At;??B<@<=;=7;14z$([SKQPV` a"n$*q-4u/6u/6|5>}7@v7Av8A8?6? z$)07(/""~!%$)(-;D{,3$(%)',4=F>(&#!! ""! !     !#oroy!"|%& !tjrupgefbeb^```_ ^!W a#'c$)a(,f37x?CADDGMOKOHK@EBE@Dw!]PKPNUa!c!l"(n,3t/6r07~7?~6@u7Ar8@8A7@{#(/7(."!~!&$**/LC&&$    "!  !         c W O J J H oV Y a \ S R O O I Q O N M L N L K = N O C [m,069>B=?v #rmcch\ONSOWe#c l")p-5r18o08|7@~6@v7Bp7A9B6?}&*06&+ "$$*+2:C5='+$))-7@QH%&%!!   "#"       " m g {&(/1mnW T T L K D B ? < D H G G J J I G ; 9 B < = Lv!#|(+a!qmd_bf[QNTOZag"o!'s-5r2:p/7}7?~6@s7Ar6?~7A6>x',05&, !~!$%),29C@I(,%()-7@RI'(&# !&"        !  $ e|!+.rR K G C D B C H F C D B B F G H H ? 2 :? ? MdPSjb^[ad_SNQP[d!g%q$)v/5t-4z4=6=7>s8Av9Dz8B6>x&,07%+!"%|&+~).9AAJ'*%)(-7@SK&('&" """!      75n dmQ G G K J F E G F E B C D B E G F E D 6 ? F NkTO[ e]ZZ^c]OOQQ[h"i#k"(w/6u-4{3<5>}6?r7Cr8Bu7A5;~x'-/5#) ~"$}$'(/8@@J&*%)(-7CSK%(%%!!!#"      !t Z Q R T Y f d ` ` ^ ^ Y X R N M I E C D E = F K X&'12w),z&)^`^Y\aYNOQSYfi#p&-w/5x06z2:6>|6@q6@t8Aw8B3;x(0.5}#(  $"'&,7=5=%(%()-8BSL&'$'"  "     !            ~~ |x uoh c b Z Y Z W U I M Q X gl #g!SWX[Z\dSNOQT\bi&p'+v-4{08}5=6>y7?m6@o4=n,43;~w'-.5#) ##'',7>BI&(%((.6>OG%&%&!!"                    z t n h hie] \acbYP L Q T_^ajWSQUU\bg$n&,z08w08{4<}8As7@k7@?0,3|z)0.4!& !y!~"&'-9ACK&)$()-8BMD&&$%   "              {u tttjgikjjbZV`ebeo[VYYW_cn#*m%*w,3w08w08w6?k4>k5@O(G29|,3.6"&!"x #(*09B%$!                    HA$JC&  {~}||twxuwvdaicaabf"g#'y.5x07y29p4&# !$!               v  }~~|zyy{{zgejfc]bi$i$,|07{06}5>t7@t8Av8Bv8Ez7A29}{,3/4! x"}"'+1:BCI#%$'(.:DD:&$"! #"                      %! 5/UL%pi  }|z~vjimgebgk$l#)}/6z/6|5>r6@u8By8Bq8B~8B19|-3.3} !#z "~#),37?EJ#&$''+9DC8%#!  "    !               #%!f]c\+&    }wxpolg`im#o#){.5{/7|5>u7By8By7@u7A8@07|,2/4} !!z $}"'+29@8>"$#'(+8AD9#$#   "    !!          0-"&#%!$u   zoqkd_il o"'{.5{08x6>s6?y7@|8A|7@6>0607-3}!#v"| &*26>:A"%$'(,:DE;%%" !"    %!              D?,("C;7.!u P   E=4-}tppd\hn!r&,y*0}/7y4>u7?{7@~7A7@7>.3.3,2~ s |#)/5=@F"%$'(-=FI?$%"!! %!    "!             YP=5NB츩zqYPre)%!f"+$3+VN$&{sriejo %v$+|*119{29y4>{6?|6@7A7>.4y*2/5}~t!~#*17?DJ"#%()-8AJ@$%$$"     !      <2]Ri_6/%"SI}t@:,%H>6.ZS  ( $'{ttjim!q%w")-518{/7x5?z6@z6@7@}6@,2~j*2/5{yt }",29@AH"$$')-:DOF$$$(!     !#!                 ,$H@(%.(OJ$1+"d\)#XTB8| r u2/%"~trjip"o &w#)}-3|+2{/6u4>u6?y6@7A|6@,1s*305|ut!|").8AHN"%$'(,:BPH%$$%!                        4+<2=6 meꤛ71u7.YZQ F a 84}|~wqpo prt 'u!'|+1{*2|1:y4>{6@z6@~7B|6@,1~y+3-3|xu{#+07>BG"$#&(+=EVN$$#  "!                       2*qd3,wo칮,&ik  6/GFgD 8 V k$${qsqqopu!&z%.{*1w(.5?6=y6@z6@7@5?,2{+2.4|}{|#+/7=FM!$$'(-9AZS$##! #"                        5*UL <<||-)W o   g\>5++'$K 8 < `vx 0.|uwrtqr u!'x$)w'.v*2|4<}3=y6@{7B7A6@+1y*1-2|z { %-16>FM!##&(-9A[R#"#  "                            %re!.*ef S r :4UL4,73,*B 0 U#"# A7y~{yvvsru&v#*u(.w,3|3<}4;y5@}6>6@5=+1+1.3x|u {$,18>7>!%$'(*;C|wx\T#"!"                           5*(#>:.%QKMLYTA:mf~uo` g[NHF V{>9pj5+#,-z|yvvtst"u&}&-/82:2<~3;~3<}5?~5?,1,3-2ws~",/8>@G"$$'(,HQ^X# ! !      !               $rh" `Uzn拂wuqolc_TdZ*&*%j~#ohuk 74!"x{wuvxtw "!&$+),*+)((+1~2<+0-2-0yt} "*/7?7<"$$'(+?Gc\#!"                       fY"#HCh`0(%D?72~uw;7"+)"vG?ﮡ:0 01uy|{wwvsw"&#,%*$'!+$)#+&*+'*-5-3~{|!*.7?@E"%#&(,AIia$       !                    0(/)!D?-&"<50)rjcW5/ 0/%#?;vm1,74+&}!&p}{{xxuu%"/*5150*$&" " -3.3 "+/:@>B"$#&(+BJjc$" "   "                    2'RF\TG>#5/A<".(3))#1-CA=A6;37$(.4,1w}z!+/8@JN!%$'),U]ga!!                        YQXP骚~.).*)",'[Vԁx=9<=:9EDEEy,.g'*~vv*+y!bq|}&&::>@+,,0387=;A;@9@8>8=25&*k+1*.qsw"*,7@@E!$#'),T[f`!!                      !2-f\LC.* 4*A8 /(F>C!##&)+Y`ga"!                       #MCE; eZqk2-=4C=''z .,"!)+x!skhiy$&&+jnu~u|"))1)1).285;6<5:6<4?E!##%*-]clf!                      SJꝏYN+"#&.)/.687878;:MM::9:8901=?BERS,,"!y(+(+uwy{+')/)-.428384:4:297>t"(X-2)0a``l!1;4:DI #"&'*ipmi!                     82KBGA5.=;KLKKONPOMMOONOJILKIHHIMMNOIIHHHJFEGIORW[9@(,px{t)(&+),-2275<6;5<5=6>s#)W/5)/a\]i!083;GN ""&')`fni                           -(C?BBDD=>;<11++(*~&(g#%ahji_bq #~&),069HIQSHJ34/3(,hzzto !&&(,(/17056<4:5=5;5=t!&V/7(/^UYi!{,37>RT #"%'*adle!                            84%    |jam rp` c lllim t'*59FIGIv dx|up-+$%).,2.37<4<5<5=296>r"'T.4(.]VWg ~-429SV !!$&)X[ke                          84A?=:=78497::CE8:9<@C@A583423|9<=>ACIKPRTURVOQAA35}'*_bv }wtDA&%+2-2185=7@7?7?7=6>r &X.5(.^WYg!/728RV "!#&'W[mg                           98/+87GG99))104456456833006857}')%'2357#%slk`_ elv    }}*%!$+1,1286=7>6<8@8?7@x!(].5'.^YZh!2928?D !!!')Z^nh                      owwtpp qollkor{    $$1."&,1/504496<6>6=7=6>}!&d/5(.^Z_i"182:35 ""$&(Y[mh#"                                | z } | y z xwy|  )(10*-/3.3/2595;9?7>8?8>#%k/5'._]ah 0739>C !!#'(_`ng                                       ~    01%$-%.307166:7=6<8?7?6="%n/5~'-`^ah 1728>B!#!#')dgng                                       ++ 72.106185:9=8=8=6>7> #o}/8}'.`acm#5<3:DI !!#(*^^pj!                                                 ~ } ":<+/1726277<7=8=7>7> !t~07}).afho 4:6=DG !!"(*bbqk                                                  zy| %&,+.0427479?7<7>7=7>s18z'-ciiv!076<:@7=v18w%,dmlw!064958!!")*jhwr                                              ~{{ "%-0/2045;8>7=9@9@7>x 08v$)hopy 073824 "!)*hi}w"             "1./*&!'#          x|!#'*04156;8=9>8<8>8>u }06w"(kus}"284:35 !")*gd}x!             81曎ﵩa^84*&% '$-+10&#   %!  }xz#%)+.2256:7;8>8<7@6<x 07u#(oyv~!3:2857"#*+xw߁{!              &=8?8)                  !{v"$+//2487;8=7>9>7>6>v!06t!&ryx~3;9?<="!,.~~߃}!                      $*&($*&!         +&# ~z }43-- $#{} !"$)+.0486<7<7<8?7>6={"17t $sz| 4=!      % #{.(+%    ((67   ! $# "),-2495:7;8=7>6>5;x #06t#s|}~!$5<=C77""14!                 +%($   !-)        &'        +$!   *,~{!#*..3277<7<8;6:7>49!$/6s"v|}z $7?>E43! ..⌇!              !   *%      ! & "          $  -0&)~v),/3496;8<8=8=7=5;""/6q!y}} "7@4;%&/6r"{""7>4:##! ++䓎#                   !! ~u %           -0,/~} ,/36/26:7;485:6>28$&/6t#y!#3<:@$#! --旒#                            p  "          +.*,}~}""+.24267;8=5;5;5<5;&'-4v!%x$%17GO&%!/.嗓"                       $,'0/22               04}z~##-.36467;7<6;6<9@5<$%-4t#{"#3:KS'& ..œ䘓"                          "            }63-/zyx! ,/25486:7>7;5;7?4:''-4s x"$39IP*) 02囖#                                    {!JG97  |~}ur$$-/365:6;7<7<6<9A4:)).4r w"$38EL+)! 01坘#                     <4mgqh|rib<;GESP{txt'#             1/  ))!"}~{{ssy##,.265:6;7;7<6>7?28*)-3rx!$4:FL+)"++ǥ砛$                        YK_YiaF@=:JE=8h`=8            %'y~xzrpu**25597;6;7<7@7?28))-2qx}!&3:IN.,!-,£碝#                                              {!uyzppr "&&*,487;7;5;6=8?27&(-3rv|"&18CI.+!+-襡#                         !-)53     & CC6245              uuvnrq~~#$$%487;6:7<6=7>28''.5tww!28@G*( +, 騤%                        52==,(   *)/,              uvwqrow{((377<6:5:7>7?16&&,2ryt"3;;@&&! ,+Ťꭩ%                             ~                  "ryyppoy{-.476:6:6:6>8A16%&+2s|r!6==C&$# .-밬%                              ~               %   {xxttryy.1496:6:6<6<6>16%$-4u|u 6=@G'$" ./ 볰%                                              #  ~|x{vv{03487;6:6:6;6<}06'',0t}x #5<=C%" ,,ˮ%                                             #-)    "v{%%145:6:597=6<8A}19((-2t{v #6=EK&#"-,еコ& !                                            $     ""%"$&~,-243738256:7=7?y/5(*,3t~t"%5=KP)&!22ˮ'!            #                             ""#&! +/ /2142748596<5<7?y2:''+1st!%39EJ($!11ʭ) "                &#85,(   y                !)*#%05$& "-1/23747585:5:5;z-2''*0s~~w!$38EL&#!45ҷ춳)!"               ".*.+"0+?>EDda?<+'.,<>     DB,)    #-0,..2#%!%+.0338596:6;7>5=z.4'(*1s}}t!4:CH$"!77Ӻ( "                    !4.85+'"# ,(FIPQ             .,./9D  /.몥)#"!                 /);7GEKJCA?=74/,     +$EERTMOCDFHLNMPKNRWX[HJ%%!:{),+/y'+o{wz%)4946 //⚑.%!                         tusw}*,035948484:5=4;+.,0z&*p}vx#'28BH 0/⚒0'                        ~~|ov|%&044847595<5<5;'*-1|'+o|sw#(37FL 10❕6/"!      "                   |w{}w~x{~16384849275=5;&(+.|)0o}py"&16DH# 22㡙:2$ $  !"              ~|~{wtqvtu{0548595:4;4:4:~%'+-*/o|oy$(06DJ# 98奞3,#!!              }zsrrqxz153758364:494:&**,+0o|py!&06EK&$KK橠4+#               yzvtvv~~033537264;4;49')-1|#(m{p{"'046:)&aa婢/'#!          ~zvspsy|""133736264:4:4:|%(-0w!%lz}o#&16@F**bc殨3*!              ztrow&'/2363737284:3;z$'+0u %jz~q%*27=A"(%QR夛5,%                ~{y().0253727284849}$&)-v%l|}w$%36FK!A@➕4*2(#            ~{~}{{*,,.152527273939|#&(+v %m|{u#&04EJ~::4,.'             ~}|*,,/.02416272928"%).u %ozxt$'03HL}:9䞔6.( )!$,#/)94!#sj_Y60                   !!%%/2.0.01516283938~!"+0v %n|ut%&/3DH| <<䡚6.$-$%/(94^[;9)"3*xk}핑;541>=*'           ""   "%()*&(02.02517173928{"#,0z$)ozwu$%14BE}??㝕1*$&51MK82JFIE&!4.USJF" D@ihIH:6-'&"0*/)$'!%)'64)- ~z%'$$"#03,/1628171617|!$*/y"'qvvz#%03A#"DF㞕/()" !*%+%65%!#!+%400,*#DC@=( ,)CCAC#w31.)!  20@A=; *$.+*&$# /38:))25u{~!"*-'*,-/102}/4053816{+1x"&pux&(/18;"!FG1)+$!&#*%:7IH51#(",%61",&0*"%"201,u(!*#)+    $% $&+)0.{"yru""37,/'+*,.2/305052716y */x#'nxz}$&+-48" CE3*)#(  (#2.@?4/ ""$#&#{ +$=A*%       "#(+{ %wps!!),~$*),-0-00305272705x! '-y"'ox&(.0/3!!CEភ:3-'!#$,'-&  &$(!/,(&$ 30EGGIOR+'""w(,vopr)..2)-02/203.1052917w+0v!&my%'.179BEֺߣA7=7%  )$2.0,/+$"'" ## !%#3034" ,-;<!-17:{),0326<@@D1213/3/3-2142827u,0u#'izz(++.34ABսۦ6-0(&!'! ("30,'"(#2/7597B@HG'! .*.(+&@=87 &(! y ""&"MP@CDHLP\bBFOTTYY^[a]`EF)+.1.003040627|05t|+0t"'o}}%'-.57=>ҶܧHBD=&##$%'!+%-(2,D@KKOP@?#'!1-.+ 6479-,'&#+,GJ!.,BDCG-)53IIKPFI*$FINPMP@CHLOQVWXZ@Av&'r(*GIFG<>~##y "%'-0-015042729y.3t*/s"(p}~'(+/7: CEͱߪLDHD%$($"( !#:6CBLL==#41CCIIGJRU=:(!MOQTTW0.*&4112,*-)?>98$!!wxoo"uojl|"(+,./215151626{.3x(+r#&qx|*--.43@B˭QMPL(#)$  "( *#+%!wtogdgkp%)(**+.125262727{05*.})-q$'ou}+.+...DFˮk`ICMI-'"        zvq rhhjj#$)*+-.103172527w16v$&y)/t$(pu''-/./NQεvy@6JELI,%"  !              }||vmnkglq!%&),-0/2050417z17t#'!!v(-u$)os%&.021"!Y^URW`^bvzJCQLQM.'$  #               ywxvlffjqu~()$&)-/3162505v16w#&s).s#(ls$$-0-. #UYow;_^c7:G$%'* ,+"$0,-:66A;:ExagUV?9)!"#' %'!("' !!    }x !!'*~)./3q*/v*/,0x+1}*.w/4'& z$(k n "{(*&%c'-.(    #'07FIP_IIOPUa%)6 $%)()#2)+844?:9DWGRc?CIIB=>7/(&#,'#"&"!"$&!&!*$,&)%%! ~ !""!"!x $#&%((+',&*w(,v(,(+~(-),q.1y(*&&`!'\#(f65{:=-/{/4E8A      (QVbip{79BUWaBGV(# !%& -"'3%(556A?@L77D;8DK4AZ'-",&(&06,95&'(       'CGSKNVDKV(+7*+6%(2!%0& $+ -!."/%(4')5)+9(*781;J9BL3:Q7>cKT[`JKJK2/-'+%*&,(,'*#)## $ &"%!" & (!*$)$(!% #%  '"*&#  #!$$#$ ~!&'}$(|%(}&)&)}#%&*}$({!%{#&}$)~&,u)/['/L$-K,17-5&!+)++) ,("         "+,69AKu/7C!/,"! "#,&)&5#1+"/$2$'5%(6&*9+-:?:G@3 )) + *&"#%$ !),%           OXdPXf#1,$!"#' " )'$'#1%,:$+=$*:-3C;AOPYd8APVYfD?LZS\rhpu~ǢΒ҄|kgRM?82+,$)%-+0*+$'""!##( ' +%' ! %)$'$!~{ z!#s !b%)E%,%(!((''"!-.'+* ! " $       $0bjtdkx9?L*"/ +"!&" "$&*,#): '8-8I*1B5?Q@J^OWeCM]Q]ketVaqY_kgoyyȿ§jn__PPBA31,,'$!"}""'",'+&+())i*-P&,@&/,#-&"-&#/'#/*)4(# $&*!1#3"1 1,(&#$('!#    DIVis|dmzMTa.3A, -*   * #%#&)2'"*:'.>,3C=COw}sW]mZdr1>O8BR2:D'0J/6F1:709*%0.+4)&.(%0!!*%%0#!*'&(%#, '7 &7%4"3//---*-00( 0    !'4IP\zblxPVd6=M#)9*) ,&       ! "%(."/#.khf}m|{z}|x|v~y}wzhiullv`_lb`j[Xabcp[ZhWVcNLWKGSJEOB:EG?IA8BD=GGBO@;H?7A6/8<9E61;(&0-+3($-+(2'%00/996@0.9('0++5##-' " !! .%7#*;$&6!%6$3%5$6!3 2!3!2$5#5"3#4"1'*   $*/<[blzBCDclxOVd9@O'.=&4-),&##     " &','%'%2/1;VUVbr~m|[fvW]kenzajxOSbFHT\dsFGWCET?AP8;J22@66D78G1/=22?00>,*665B77E()6*,:*,9!!-)"$.!+ "-*%&2''3(    &%"1 .!(9$5$4%6'9 '7!'8!':!&6#)9"(;"*;!&8"1"2#"  ($0#&1"'3GMZW\fwgq}RXf8?N*0A$)8!'5!%1'%!+"/#(5!-     $  #$(*'',"'4 $1)-714<@@G\WV`\Ziggvct>HZGY5@R07H19M.4C-3B,0@#'5%*;!'6#1"0,%)) !  ! #"$$    /!&8 &7$5#); &4"(9%+=+,<(+:"(9 &7"&4"%4,   $).;%(5*/<%(4=BNZ`lxgrNUb=DS19I(.? '6$*7+"%(07D1;I$2  ! %! !"#!$%%$) *7:D,/9=>Cb___^]QRTIKRhlqhnvTX^:AO.5C,4B-4D$+;"*:&-> (9&5 .*)#""#$                            #3#(9"(9#(9!'6"(7"'9!&5()902@-2A$4&%"!0 $3'"%)6@FS_dpjtNTaN)/@$3+$"%&!-*0=2;J%.=.#&&# !          "#/;@O &4#%*)! !,                                    !'9!'7"):'->$)8#2#(9!&5-0?'$1*&(& -,% -(!"#+/;CHUahtjtNVcO)0@.,"#"   "'+6=DP9AN,6E#2,(& #'&        $$- !   ((                                              %,;*2A%+9"'6"'6"(5%2$3!1!/!1 1"2 .!'7#1#&!'5* "/%)77N?K[8GY$/?"0&#-)!!""'-/9&)4   .+4                                          #%+ %'%5"0#1#2#1"0"1$4$5%5$&5!%2%)7#*9,.<*%#"$%1!$1&)6/3ACGScjtiuPWe>FU08J"*;#3("  #   "! #'!,/7Dkwz?N_4?P;IX6ET"*6!-(&#'+!+68D$                                  !!  $* &# !.#(7((%3-( ,!0"0!0%6"(8$2&*:#(4!$1 %4"2)#&3#$%!# (*-<)+:38F?DRbivjtPWe@GW3H%'2"%0&                               +#*+%  "#$')* -( ." &#2#0,, / $215D27G'+: /!'7&&(&(*(#'4$&3+0=7 $1#.((&&&#"%  ("     +&115D$)6%2.#0 %2%.= %3  #%"0%-;*+."'6(0?5?P-3C.6G/8I&,;#0!0#2"(8"0&&#1!&5"'6$(7%*8$(5#'3--:07G9=LCIXQVdkq|juKTb;DT2:K$,=.'#(%#%(/6F".+0;:DM!-*)$ $%4 .&6%3!(7#2-!. - -#. '5 '5$)8*1A(.<+1?&,:##'%2 %2*+5&&( "-$$/"-"'4 $2 $1 $1*% ,*!% '%#* -#)6(1@# %!(   (#2(2C(2A$.=#.>%0?,4E+2B!.%1!-',<'.=,3A'0@$1$1,&)."1#0"'7#0*0?06F04@)/=,2?48G5;HCHVLQ^iq~lxLSb:CR29J(.>-*%&%"  ,3A$3&5$'1BLS.4A6;G_pz/9E$ &4!)6!-!)6#+:'5#3%5&5%+8#(5".$)7#&3&,9&+:).<)0=)0>(/<#)8!.#0$/&*7',9$2 -#0!%1 -!'5 #.! $ " -!,"&"/ ,!**)4$!,(!)) $,&.=2;I%*9&,:-2@-3A&+8!&4!)%3!.#2%1!-())#6 1 &43FUP^hFU^%0<(%3 -"*9"(5#*6$(3$)7 ,$3+(#/"-#'3#0%*7%2(.<.6E%+6%2"'5$0'! &3 %2%*7!.%&$##!!( &4 #0+   $1*4E1;L$.=5?Q4>L$-;$+<$*9&4 '+#0$3%4"1)!'8!&5'6$-<%)7 %2)0>FO^*2@-3B05D5;J15A.2>.3@.5CM#*:.,+#,  !%,;(%3%3)'#)!&3+1@")8$5#0,3?#/'.)>JS1=H))"/ -+&"'&+8$)7& ,#/"/* !&!"!&,9"'6#2%"  !$"/('0@&4,5D;DT;DR/5B,1=!-%"'!$(,"-$1!0#+9+3D19J&,;$,;1:JEQd8AQ03?,*6.4B$(6&,9/4@.4D/3B+/>.5C.3@(-:18F;DS?ETDJXRWcksp~Zds@HZ54DR".:+$-;!)8) +%#&) ! $       *2B3:H6>N9@P9AQ8BQ7?O%+9,& -$0#1!.#,<,#!+%,;/8H7?N?IW'.;+3@5%3+ ,94BT4AR"+;!*: (6'6!+; .) -*+$+8 &4 &2"'5#/#.!/"'$-< -!*.>&.A")6&4#,<&/@*0?/7G3>O/7H),83:H.7G*3B(.=%+:2:K8AP35=M=ETAGUFM[RWekskyT]kCK[4=N'.>#2++!#(    .%.>+-!1!.%)&-; (7!1.$2/6D&!&5* /$3)0A)1A )8!+,4D,4C$2 - "+"'1$2#(3ca_A?A/06?@F*QSVKNP238@CIrpp69DV8@Q1;L;GW?J[08H47G?IZ?IY29H&*8',:.8H3;J")7"*918G:EU%)8:CS4=M',:,4B8AO?HX@HVEJYOVcluhwR[jAIY7@O+4D%5*,%$" !  "6"*9#1#,<$3$ &3 .#1!(8$3,*1@ , (72;L08I")6*)* %3%4#/( '6*$"0"1"*8  *&#%3&$$%)' &&4%+: '5%-HY6?O+2@PZi7IYFV6>M,3C!(:+-)#  "+&,:3;G5>M*2A-5D '7$-=&6!0%4!.&5-.6E &3'*'/?%->)&5(0A,5E(0?),#0$ &4#2&-=$!.!-'-#/)0?%*7&")9.8H8BT+,!- .*/=18D5>M#*8'!.%*6(.=1:K3=N &3 $1!0*,1>*1A07G(1?;DS;BR8=H26A4PDR;ETDO`BN_HUfWgyeseqhs]fsYcpCGR%)529I=HXP.6G!)9/*'"#! !! #&,9#)9)/=!(9-6F9BQ09H!*; )63=N@L^%.>++$$2,3C$,<%3.7I*2B*2A+!0"(7$*7&3!0#)5),"(6#2$,;"/ -#.( ,2:H7@N#(4!*$)706C+1>"(6,2B:FVJUd@JZ4>P*3B!(8) 0,5E3>P".&#3"/%->)/=5>M08G/6F9CTCN^KTdIUeIVfGWgR`rLTbLT`anzesZetV^kMVcELY49G17G,1>;DU>FU>ET:BS:AQ:@N=ET/8I5=O ,2=O,3B+4DEU8BQFVM/7D:CR3>N6AP2:J.6E/6C8>L'+72:G)3A09H*2@*1?(.>#*8 /  %3&+9!.  )!(6-7F+5DK!&3#/)-) +.6G@GV19G9AQ8@Q4:J$)62;L?GX;DTFTL3=MBM^;EWDO_AFT  (L+/=&(0@$0!"+<"2"-=4>P&.>#2#*:-5F07H5;I+3B5?O18G&,;5?M>GW:EU>HX=FV>FV>FU9BQ>FV@HYEL\JQ`\amvn~S[kGO_3;L07I%,= ./!1$3&'#$ #"!%4.4B(/=&-<#+:#+9(#.&5$,=, ,*-"1)6=C"(48DQvWkwFR=DQ5?M7BQBKW8AN3:IP06E2:K1:L4=N:EU:CR6?O6?N>GX>HX>IY@IY;EV9BQ9AS?FW@IXFN\JR_[anxoU]nDL\29J/7I#*:#4*#5 0'   !"$".!)9#+<$,:&.<#+:+3B'-<$2&3'6&!.*2B)1A&.>,"(7+1=*-7(',6eb`TUYlsviry%+8&1@FKPZ`:BMapzVdkDNYSet\my+4B$*8+/9=DP;IW8FQ6@O:AQEP_CM\AJZ@JX7?L06C-7G:ET9EU+4E(-7I?K\AK[>HY8AR;DU:CS8>K9AR29I9BR9AP6?O6>M07G8BS@HX?IX?HV?IX>GW;EV9AR;DU?GU@HXEKYKR`[bnvo}Q[kCL]2;K,4D!)9#2*/.% " "%#"#'#,<"*:(/?%.='6(0?(2B'4)!)8#2 )9-5E2:J,4D.7F)0?-3D.4C'4(1@/7E/8H&-; ++$2".$2#1 ,!.$2!.).:!-".#&327DHLR&)33GW:DU?FWP.5E"(9"1-,-#####!#%/7G09G/:H$2&/?'/>4?O,3D#)9(0@&.?$+;*1@2:I1:I19J,2A+0=)0=/7E4>N5APQ^lKTaGQ^@KY?HX6>N-5E.6F:CS.3B#0 !.=GYAN^-7E#-> '7*4C*4C'5#13=M/6E4>OGW;GV?KZCK\:CS5>N/6DNCP]"*:5;G6@L*4C,6F&.>)1@'/@#+9'6 -)/=-2?)/>2:K-4A3;K9BP>HV6?N(.>%+7!(6"/).<&+9+4C.6D06C39E7>K@IY4=J3:I,2?42=8M=GYAJZ@IXGW=FU=FV=DUAHWHP\FLZ]erwm{V_lEM]:CR08I$+;$5+, 0"&$%$"%%%2?IWAKZ!+;)8)/<.6F;GW8AP%,;*3@$*;(0?'0?!(607G+3A+3B5=L9?K$/29F07G3GX?HW>GW=GW;DTP09J;ET.7G-5E+1?/6D8AO?HS'/< %2=FS,3B+3B6>M3;I,4B4L!(6 $2:H19H#)7)$7AQ@IY7@P>HX?IW3=L.7H7AQ09G8CR7BSCP`UcqWdrXgvatcs`o}bqao}bn{_jvYanGN\>HXGVBK[FLZMSabhuupV`mAKY:DS+3D )9.+,-' !#&)#4'(+ .,!0"1 %306E8>K.5D7@PLTdR\kKVdNXe?HW=EU27D08G8BPELXBIT&/>%,9-6D09H8DQ;GT7?M19F5?O.4B-3B%*8 . -?K[;CR-3B+1?2:H@KX7@L+2>'-;29G7@P-5F5=L6@P8AQ07G18GNXh>FS5?O5>K3=MKVgCM[8AP?K[GQ^CN]EQ05C-5D7AR@L\?IZ@IW@J[@K\AK[?IX>HX>HX=FU;EU;FU;FU>GW>FUDKZDLZNTb_erupV`nBJY.3A9ANHY=FWJY?JZAK[@JY>IY>HW>HWAKZ?IX;FU;FU(/>+2B(/?,3C/6D7>MBITLUbAIW;DQIRbXesLWfMZgZiv[jwR_pQ^kTbqQ_lQ^mQ_mQ`m\lzJU`07F+1?4M,4C(/= '33;I$0&.='0A19K>GW?GW9BQ:CT7CT:CS:DU:EU?JXAL[EO^=GW>IX>HXDN^EN^CL\CKZ@JY>GVAIZ@IWCJYGM\NTa]drvqVamAKY9DR+4C%,=%5"2$2-("  $ "!(*#2.. 0%5#,;#*:")9%,<'-=&->(/@(0@*1B-5F08H08H3;L1;J1:I18E5FR>BN>CN>COGO[R]jUbmWbmU`lHR`EN[:ANCLZCLY=FU5?L6AN4>N5>N4?Q5@P3;K7AQ>IY?IZ>HXIWCL[@HX@IXCJZFM[NTa^dqthiisYfsBM[:DR08F%.?%5#1(8!1.%  " !#%)* 0 /."1'8 '6&+<'+:*1B)/@+0B*1A)0B*2C.6F06F19G19I.6G/7G.5E.5E08H3ES9@L8CR>IW8DR8CR;ET>IYO7DT=FW>IZ>JZ=GW;ETJZ?L]HRbISaAK[@KZAK[@JZDN]DM\EM[@HX>FU@HW?GVCKZEL[HO^MTb_ftv"u\hvDN]:DT,5E'/@#2%4"*;(8)"#$#$%'+/"1!)8&6&6!(9)-<'-;(0A*0A+0?*2B,4E-4E.6F.5D)1A+2B09K08H08I/8H,4C.7G09I.6E1:J2=L6BP4>M7CQ:ET9CR:FSJ3:G29F7>L9@N;DS?IXEN\DM[AJXCKZO5?P1$4!1"+:%5*& ! "%$&)* . 0$3%5!(7(8&-='-=)0@(/@,1A+1B.5F.5E-4D/6F19K2;M1:K/7F08G2:J/7G2K5?M5>M5>N2;I5>M9BR8AO4;I;DT;EU:DR6@O4=M+2A1;J/8H4?O>HY;ET?KZAM\;FUHX>IZAK\EO^EO^EN]EO^EP`GQaGR`KVeMWfKVeLUdFO_AK\@J[?IYALZEN_DL]DN\@IYAJZ?JY@HX?HWBJY@JZDLZGM[LTa\bozuZesKUa:GU/7E&.> (7!0&.>%3+& !%#(*+."2#4$3#+:!)9%->&->'/>(0A)0A*2A-4D-5F.6H/6H08I2:J19I09H3;K2:L/8G/7G3=M1;K-6E/6D1:H0;I8AQ6AO5?O3>L;ER7CQ8BQ1:H(.;"'5'*1?6@O9CP8CR8CQ4JZAL[=HV8CR:FV;FV=GV?JZBL]@K[DO_AM]?JYCO`AK\ALZ?IX@KZCM^HRaFPaAK[CK[@HW9BQ?JYBM\CL\DN]CL]CM]EN_CJZBL[DL[FN]?HX>GW>HWCK[EN]OVd^dn|qXcrGR^CM[-6F'.>'7$2'-=$3*)&$#$'&.!1#3$5$3%7 (8&-?'0?&.?(0A)1B*2A,3D.5G08H19H19J2;K2;M19I2;J09I,5F-6E-6F1:H2>N1;K.8H+3B-5E.7G1:I3:I/7D5@N9ET6?N,4D.9I4>N9CS8CQ3;I/8G09G.6D/8F6@OHY9AQBK]DN^GRcGRcBL]5>NBM_BK[?IX>IX@IY?IZ?JYFP`DM\AKZBKZDM\EN^CN_CM]CL\CL[BLZCL[BKZ?FWAJZDLZHO\PVd\bnzqXboKUbDM\;ET)2B(6#2&5%3++)&$#((+$4 0#3$4%5&7 (8&->'0?)1B+2B+3C-5F-5F08H3;N19K2;K3N3=N3>O09H6BR6@P4?N3?N3?M5?N4@O2=K8CR:DR7CQ:DS>K\8CQ=HW:DS8CQ:ES4>K4>L7AP5?O5>M6BR;ET8CS:ET:FV=IXJZ=JY:FW4?OM3>M4?P5?O4@O3=L2;L5@N2:I2:H2M8CR8DR9DR:EU:DQ:ER4=K6@O:ES;FT6@O8BQ4=L5?N6>M8BR8BQ6AOIYBKZAKXBM[BM\:CR>IZ?IXJY@K\DO`@L\CL]CL\CM^DO_FO`DL]BK\?IY?IZ@JZ@IW?KYEM\EO^CKZEN^CL]CN^BL\BKYCKYBJXBK[CKZAJYBJXDL[FM[LUa]dqt[hwFO^>GV5=L*0@!(8%4$3'7+ //'#&((+ 0%5#4&7!*8'7&-=%-<(0A(0A)0@*2A-5F/7G.7H/8H2:K2;L1;K1;K4>M1;K1=M3=N2;L3?N1N1;K0HZ@JZ=IW8BP?JY=HW7AR=HYGX@JY?HWFP`DM[CL\AL\EN^DN]FO_DN^DM]DM\BLZCK[@IY?IWCKZAKYBIYELZOUc\cpu]hvGP_?IX2N4=L4?N3@O5@R8CR9CQ7DR9ES9ESIY=GW:FUIW>IY?IYBL[@K[IW7@O5(0A)0A*1A,4D.5G/8I3;K2;K3O3>M4?O5AP7BR7BQ6BQ7BQ8ER9DS;EU9FU9ET:FU:ES6AO7BQ8BQ8CR;DT4@O8CQ9BP8CR:FTJYHW=HWBM]?M\?HW>IWJZCN_CN_CM]BL]AL\BL\BL\DL\@IYDM]CL[CL\CN]BM]DN_EO^CL\CL[CL]DL]DM_FO_EO_GO^FO^EM[EN^EN]DN^BJYBKZAJZ@IYAIWEM[IO]NTb[`kq_m|LTcDM[5>N4%-?(1B)1B)1B,4D.6H/8H08H09K2:L2:K1:J3=L2;J1;J3>M4=L2IWHWAK[@J[BK[BKZBK[CM^CL\DN_EN^EO^CN^CM^BKZDL^FO`IQaFO`FP`FO]EM\IP_GP]GO]FO_EM\CLYAJY@IWBKZ@IWBIXDLZIO]LR`Z_msbo~QVdBIX9AP18G&-=$4-$*9$&3"0,'%$**)-/#4'819I!)8#,<%,='0?*2C*2B+2C-6G.6G19L/8I3;L2;K2:J1:K1:J4>M4AP3?P5>P6AQ4?M7AP9DS8CR:ER9ES6CQ8BQ8BP8CQ;EU;FSJY>GWAK\?IZ08F@IZ=IY=HW7APHYAJ\@J[?IYAL\@KY@J[AK[DL\CL\EN_EP`DM^DL\EM^DM]EN]AJZEN`EM]CM^DM]EN]EO]DN[CL\BJ[EN\DL[BJXCLZBJWAKY?IV@JXCLYDLZHNZKR^Yboscp~LUdAIZ6?O-5G$*9 (7 0#4++/*#$'')).$4(8#*9 '6$,<%->&->)1A*3B*3B.6F07I07I08J2;K2;K4?O4@M9DSHV=FT;ES:CRIU=HU8CQ=HWIX;GVL5?L4>N5?N4>N6BR5BQ7BR9CS9CR6AQ6BQ:DT9CS:ERGV>HU;FT:EUHW=GV=IY?IX?IZAK[@JZAK[BL]DKZDM]@KYALZDL]DM]DL]CK\BM]AK[AKYAK[?IX@KZDM^DM^DM^BK[?GXEN^CM^EM]CKZCL[CM\GPbGQaEM^FN]GP`CK[BL\AKY?HX@HXAJZBKZBJYCK[JR^MS`X_lqco}LUdCLZ7@N/6G!*9%5%6$3 /)(%&&+)++/#2-5C(/>'6%.>'/?'.>)0A,5E,5F.7H07H.5D08I2=M3=N4=L4>M3>M4>N4?N4?N7AR6AQ5AO6@O7AP7BQ:DR:CQ9DR9FSJX>JY@KY@JX=HW=HV=GT;GUJY?J[@JY?KZ@J\@JZ@JZ>IX@K\BK\AJ[BKZAL\CL]CM^CM\BKZCM[DL\CL\CM\CN]DN]GP_GO^FO^EN\GP`FQbGQbGR`DO^GO^HQaGQ^CLZDL[EMZCKZBKY?IXBJXJJWHJXHP^KR_Zbnwqeq~OXfAJW7@N2;G&-;%5#2%6$4*,%&'-!0.!1 /$4%,<&5"+;!*9&/?%->'/?+4C*4B09J.6I.6I3O4>N3>O3>L3>M4?O5@P7CR8CR9CR8BR;GVIV@JX=FT9BP9DR:CTBJUENYFP[DMZAKXALZAKX=ER?IW=HV=GU9CR@IX>IY@KZBL[CMZBL\BN]BL\AK[AJZDN_BL]BK]BK\BK[AK\DL\CM]CL[CL[>HXAK\CM_FQ`HSaFQ_GQaHRcHSbJQbGQ`GPaFO`FP`IRbISdFP_DLZDM]ELZCL\BJZ?HW@HWAHWCJXELZJQ^Zbotpep}W\hDLZ:CS19I+4B '6 0$5 /.+'&'-,, /"0$2")8&6!):$-<*2C%.>)0A/6C*3D08I.8I1:L3=O:FX:ET5AR5@N4>N2GUBJV?IVHUAKXEN\AKXAKX?GTAJZ?IX=IW;ET=FX@K\AL\BN\AKZAJZBL[AJ[?IX?JZCK[FM[BL\BL]AKYBJZ@IX@IXDL[DM[DN_EN^EN]FP_GQ`DO]EP`GQbHQaHR`HQ`HP_GP`HRcHRcGQ_EN^EO_EM]CK[BKZ@IX>GX@HX=FU=DUDKYDJXNTcX`nwDpbn|PXg?HV8AR*2B)0?&6!1#4#2+(+)*,+ /"1#2#3&4 (6&-='0@.6G*3D'/>,4B-4F,5D07G19J/9J3>M7CR6@O4?O4?N5@P8BP5@N8BQ8CR7CT7BQ:EQ:DS8CQ;ETFW?JZ?KYIWGWBJYAIWCJWLR`]frs%&&f̏qam{NWdBKY5M4>L6BP6AP5@P6@P6AO=GU:ES:FU9CS;EU;DT:DS=FU>HW@IVBHV@HW;GS9CRJX>IX?HX@L[BKZAKYAK[@JZBK\BK[AK[AKZBK[CK[AK\CK\CM]DM\DM]AK[BL[DN^EN_DM\EM\EO]FO^EO]HRaGQ_LP]GO]GQaIRaHRdIScISdHR_GRbIQbGO^DM]CK\@HWAIZ@J[>FV=FU?GV?GUBIWMUc\cpr~p`m{OYg@HX29J.6G(/? '7#)8&2&6,+-!/** . .#3#1$3%5 '5")8&-='.>)1?(0?)1C*2C-7G1:K29I19I1:J4JZ@JY=HX=IX?IX=GUAIX?JY>IXAK[AL[BL[DM\CM]BM]@LZBL[BM[BL[@KZBK[BM[BL[AJZ;GW>HYAL]CM]EN^DN]DM\BM\CL]DO]AKZ@K[CM]DN]FO_GQaEO]BM]FP_IScHSbGQbHRaFO_DN^FP`FP`FO^FO^DL[BJYAIZ?HX?HX>ET=FU>ESL5@O5AP6AP7CPIY@IWBKZ=HW>HW>GV=HX=HWCKX>GU;FT=GU@JYAKYBLZ?IYAKZBK\AK[@IW@KZ@JXBK[BL\AJZALZCN^DN^CL\CM]BL[DN_CM\EN^CM]DN]DN^DM\CM\CL]DL^BN]EO_CM]DP_GTbHQaEO]FRaJSbIRdGPbIRcGQaFN]DN]DL[BJZAJY?HV?GW=ETFT@FTJP][`lkv̎p~alyOYh?HV1:K+2B(/>+3C-6D"*:#2,-*,(9/"2&5!)9'7"2#4&7$*;#+:'/>.4B-4D+2A,3B,4F3N6AO=FS9CQ8BP8DT:ET:FT:DS:DT:FUIX>IV>HWIW?JX@L[DM\?JY?JX@IY?JZ@K[AKY?IV?IX?HX?IX>HW?HX@JY@KZAK[AL\CN[DN_BL[FQ^FP`FO^EN`BM]BLZCN]CM]BL\?KZAKZCM^DO^EQbFQaGQbFP_DN]EP^CO^FQ`FP_FPaFO^FO^FO`FOaCL[CL\BKX>HX'8,)+*,!0%5%6 &5%4$4#3'7!)8"*:&.>'/?,4D+3D*2B+4D1:K18J08H2:J2>O4?P6BQ6AR6AP7BR9DT;FU=GW9ET:ET=HY=JY>HWIWBL\CM]DN]EN\DN\CL\CM]DN]FQ`EO]DM[CM\CM]DN^AN\DQaIUcIScGQaEO_EN]DN\BL\FQ^FP_GRaHR`HRbGP_DN\FO]CN]CM^EM]DJWDL\BJY?GXHV3=M*1A*1A#*9")9 '5#+;!/-!0..#2 &4%4&,<$+;'6#2!(8"*:%,;&/>'/?*1A*3D+4F+4E19I1:L2;K2;M2HW=HX>IXAJZ@JZBM[AL]BL\@JYBL[CL\DM\DM]CM\AM^ALZ@L]@K[BM[BM[BMZBM]CL\DN^EO^FP`EO]EP^FP`EQbEO`GSaFP^DO]DO_CM\CM]CM[DN^FQaCN\EPbGQ_EO\GRaEO^FQ`EO_EM^EN^ELZGLZBJZ?GW!(7#*:!)9!(9"0"1%5&5!1!0#4$5%5%4&6%5&5");%,;'/='.?(0A*3D.7H,5F1M7AP2=L2;L6@P7CQ7AP6BQ6BQ9DS8ET9ES9ET8ES;GWGU?JXBKZAJX@KYALZBLZAKZ@JW?IYAKYBK[AKZBM\AM\CN]CO]DO_EO]EN^DO^>IXCL\DN^DN\CM[EO_FO_GQaDP_EP^CN]CM]EP^FQ_FQ`GO^FQaITbITcIRcGP_HQ`HQ`GQaHP`FN^EM\CM[DMZCJZ@GW=ET;DR7@P5>P5?N9@O8AP=CQCJZCIVogpSYf@JY5=N06D-2@ '5!(9!(7&-=!0$4"1!'6!)8&.>$+;(/>'6%5&4 &4"(7$+<'.>'.>)0A(0@+3E,4E3;J0:K2IW>HW?IY@IX@JYAKZAKY@KYAL[CL[AKZAJY>IY@JYAK[EKYBL[AL\BLZCM]CM]CN\FO_EO^DN_CO^FQ`EP_CN^DP_DN]CL\CN_EPaFQ_EP`IR`FSaGQ_EQ`HScJSdHRbHRaJSbIRbHQaFP`FP`GQaFN^DL[BKZBJX>GW=ET;CR9@P6>O6=M8@O8?M6>M;@M@FSEISU^kBL[:BQ05C/3A%,< '8%4#+;$4!1 /&5&+;$)8&5'7 (8"+;#2#3#*9&-<&-=&-<(/>(1@*2C,4E-6F1:J2N4>N5?N:DU8CR6BR6BR:EU8EU:EV;FU8DTIW?IY?KX=JZAJZ?KY@JZ?JY@JZDN\CM\CL\BL\CLZBM]CL]AKZCL\CN\DN]DM[EN]DN^DP]FO^EP^DO_M5=L4;I:?N&->(0?'/@)1D,3F09J1:K1:M3HW?JX>JX>JY>IX@K[>JY?JZ=HW?K[?JZ@L\@K[?JY@LZCM\BKZCM\BM]EN^DO^EN]EQ^EP_EO^EP^EO^FQ`FO_FP_EP^ITbHR_EO_DN^EN^EP^EP^FQaCN^CN]EN]FQ`FR`EQ`EQ_GS`GQaGQ_EO^DN_EN_CL]EO^FO_EN^CM]BL[AJXBIX>GWHW;FU=HW?IY>IW?IW>JX@JX@JZ?K[@KZ@KZAL]AM\BN\BM\?KYBLZBL[DO\BM]DM\GP_GP_EN]BKZEN]DO^GQ^FO^EO^FQbDO^CM[DO^FO^EO^DN]BL\CM\GP_FR`HR`FQ_FS`EP_FP`GQaFPaEQ_FQ^EOaFO_EO^GQ`FN_EM^DL]AJ[AJZ?GV=DT&9!/$3$+:$,<%4!)8 '6%4&6!)9$+:&/?%,='/@,4F+2B-4E-6H.7G09I1;L19K2IW?JX?KZ>JZ?JX?JX@K[AKZ?KZAM\ALZCM[BN\BLZDM[@JY@LZCL\GO\EM\EN\CN]EM\CM]DN]CO]EP`FP`EQ`DN]FRaEN^EO_EP`DO_GRbISaDO^HRcFP_GQ_GP`FP_FQaEQ`FPaFP`FR`GQaGR`GQ`FQ_EN^EM[AJYDM\?HU=EUN3:J29I18F/7F/5D.4Ay|.2?")9&-=&-<,5E$+;#3"2"1!)9 '5(7"*:$*9 &5&5 '8#*:%-<*3C'/A(1@)2C,5E/7H-6G.7H2O5?O5@O6BQ6AP6BQ8CR9EU;FU=HX>IY=JX=HW?IX?IX?IY=JX>JZ@KZBM^CM[@L\BO^BN\BN\BM[BM[BK[BM]@KZCN\FO_CN\DO_BO]BL[BM\FP_EP_DN_DN\DQ`CN^DO^EQ`IRaHR`GQ`FP`FQaIScHR`FP`GSaDO_GSdIUcHScHRcHRaFPaEO^FP`DM^BL\CKZBJ[@IY@IZ=FV:ER8BR6?N4%+;&,<&-<$+'/@(0C,5D,5D+4C.6G2=O3?N3?N4@N4>L5@O5>N9BS8ET:DSHW=GV=HV=GV?IY>HX>IW>JY@JX@KZ@KZ?K[AKZ@KXAM\BM[BMZ@LY@L[BM[DO^DO^EN]EQ_FQ`FR`EO_EO^DN]EO^EQ_FQ`EP`CN[DN`GQbHR`ISaFQ`GQ_GQaGRaHSaHR`GP^GRaGR_FO_GQ_GQ`FN^DO^EN^DP_EM^CL]AJZAJY?JZ@HX>FU:DT8AQ6?N5=M28H07D.5B+1?-5D$+9.6F&-="*9'6'6)1C!(7!'6%4%5 (7 '6")8%,<"+<%->'/?&.?,5F+3F+4E+4D/7H3>N4?O4?O3?N4>N5@P6AQ7CS:EU8DT;GV=GV=GU=GU=GV=HX=HW>JY?KY?KZ?KZAL\@L[@L[AM]BM[?JYBLZBM[BM\DO[BM]DM[FQ_FP_FO_EO_EO_DP_BO^FRaHQ_GQ`EN^FP_EP_EO`GRaFQ`FQ_EO^DN]EO_DN]EO^EO_DO`FO_EPaHSaFP_FP_EO]DN^CM]EO]EO]CM]AJZ>HW;ET9CT7?N4=M3:J4:H17E,3A-3@5M-5D&.>'.=")9$+:%,;$+:%,< )9 )8#,;$-<&->$,;(0@&.@&.?*2B+4G-5E.7I/9I4@P3?P5@Q5AP6BP9EU:ES9ET:DS=GV>JY=GX;GT?IX=HW=HX>JX@K[CJW@LZ@L[BM\AL[BM[CN\AKYBLZCN\@LYAK[@KZCM\FP]CM\EO^EO^CM\DM\CM\DN^DN\JQ`IR_GQaFPaEP^GRaDP_EQ`EP`FP_GQbGQaEO^EO_FN_EO_GO`GQ_FO^EO^DN\GQ_HQaHP_FP^EM[AIX>HW=EU;DS7@O4>L3;K08G.5E,2?;#*:!)9'-<#+;$,;)3D%,<%,=#,=)0@%-='/@'/@)2B+4D.6F07H08H1:L4>M4>N8CT9ET5@O7AO8CT9DS9DS>IY>JY=IV;GVIY=FV)1B%,<&.>)1@)1A*1A,4D08H/7G09H1;L2;L4?O4=N6AP6@Q9DS=GX;ET:ETIY=IW@JX?IX@IXBLZ@JX?JX@JYAM[BM\@L\BN^DO_FQaDO_DO_DO^BM[CO_CNZ@M[CN^BN\DP]EP`FP`EO^DO_FO_DN^EP`EQ`HQaGQaEO`DO_EO^EN]EO_FQ`FP`EO]DM]CL[DM]DO]DP_FP^EN_EO^GQ`FP]CLZAIX>IW>HW=FV;DS7@O8@O4N4=N4?O4@P9ET;GV:EU>IX=GW;DS:FV@JZ?IY@JY@JX?IX=IU@K[@KZ@L[CO]FP^DO_DO^CN^BN^CN]DO_DN]CP_FP_EO\DO_DO_EQaEQ`EP^DN^EO]EO_FQaHRaFP_FP_GQaEO_EP`FP`FP_GP_GO]GP_DP^FQ`GQaGQ^ITcITdGR`GS`HSbHR`FO^CLZBKZAJ[?HX=GU=GV;CS6>M16E18G3:H48Ebfpdhr(.>)0?'.>-4D,3C)1B*0@,2@08G-4E,5E,4E,4D2N5@O9BR:DT6CS:DT;GV;FV:FV>IY>HW@IX=GT?IW>IWAK[CLYAL[BLZAL[AM[CMZDO^EO]DP^EP]CO]FP`DO]EO]EN_EP`GQbHSbFR`DN]DN\DO^EP]GR_HR^IRaEP^FQ`FP`GP_EN^EO^FP_FO_FP`FP_HQ`KTbIRbHR`FP`FP`EN]DM]@IYAKYCN]EP`CL\?GV;CS7@O6;J79D58EWXaeju)0?+1A+2B.6G-3D+2@+3B*2A/8G2;L2:L29J/7I19J1GWHV?IV@JYAKZBL[AM[BM[BL\CM\CN]GQ_GS`FS`HR`GQ_GQ`DP^HR_ER^HRaFP^FP_GQ`FR`GQ`FP`FR`FP`EP_FP_GQ`EO`EO^EO_EO_CLZCL\GP`FP_EP`FO^FO_EN]GQaFPaEP`EP_EO_EM[EM]ALZ>HW:BS5?N4L4>N7CS7BQIX>HW>HX?JYEP]FP[DN\DN]DM\CMZDMZEN]FO_FP]EP\FR^FQ^HQ`GP^EO\EN[EO[FP^FP\EO]HRaGR`EQaEO]GRaEP_FQ_FPaDO^EO_FO_DM\DO_CL[EN^EM^DO]FQaEP`EM]EN_EN^DO_DM]DP_CM]CM[AIWN5@OAHU7AQ4@P7AR9CR:DT=HW?JXM5>P6@P5@Q7BQ9DT;EV:EVJY>IX>IX@IXFT3:I1;K3>N8AP:CS7BR7CR9CU;DT:EUHY?KYAL\AM]BK\CJZGKYEL[GP_EN]EO_DQ_EO^BM]CN]DN\EO^EO]EO^DO\DO^FQ`EP^EO]FP`GQaHRbFQ`FQ_EO^CN\FR`GQ_JS`GR^KTcHRaGRbFP`GP_FO`IRaT\ipxyZdsGRb?JYBL]AL[BK[?IYAHTIJVAJXBLZBM[CM\BM[CM[DM[CO^GP_ER`ER`GP_GQ_EO\EO]FP^EQ^HRaFP`GQ`FP_FQ_GQ`IQ_JS`JSaNVdS\jhq~|ip{_dnQYeGR`EN\CLZDN\DO^EO^HR_GS_HS`IR`KQ^JR_LQ_LQ^OR^PSaMVcQ\h^fstvhhhe  e% f %f4gI'hiHK ' 'Adobe Photoshop 7.02006:09:25 00:29:41 adobe:docid:photoshop:a865b9fc-4c5c-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:29:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:29:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:29:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:29:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:29:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:29:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:29:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:29:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:29:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMS add_bcc_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM  ` eJFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?߶2`5?G&}{mϋC';%sk]'A#t}ȡ0IMOu'a$O!GcPr[[n*>u~v#tזּdfs5Vsnns=ުuzHn}9徧岦 ==\?[}bCޣ)vf+m`~V͡~o_'^nG8BIM!UAdobe PhotoshopAdobe Photoshop 7.02 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6.utrrqorqodcahhgddcmlkLLJqpnTSQWVUQQP~}zutqlkissqJIIQPNUTRomlUUSqpn~|xvuyxvllirromljvvtu@\'}G'~GE`˷)~I'I@]lp?]#|D1O$|E6UD`B^HdD`1P,}I|zyʇLJLJLJLJLJLJLJLJLJLjLjLjljǏLa#}E:X5S6T=Z4S:X{AXhkgh"\*2T5U3T4T;Z2S5U1R L *( g.ZtYta)0(e+PkOj`&9Y%v:w>v<v=!{Cu<w>w:M-( s1 l.k,k-p4j+ l.s1#*X"o-i)i* n0i(q-QPLV n*k(zA!|Dl)n*Pq2! I[ZG S #AF3  GNUMail/Resources/Icons/add_bcc_48.tiff0100644000014600001460000006025010506157373020350 0ustar monotonemonotoneII*00|<0$(12*R)>I)hi|` ' 'Adobe Photoshop 7.02006:09:25 00:30:49 adobe:docid:photoshop:a865ba00-4c5c-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:30:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:30:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:30:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:30:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:30:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:30:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:30:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:30:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:30:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMS00add_bcc_48.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 00JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I)n!eKCeIkkIψka Sp n!UQhD[Z;JG3'E"ŕN=A.@yŕ?+ l5Zov^?K5{m[m,x?uKs}fkNuUz~mQoo~[:X膺m֏}[(8gwҫcv#jR`Uemx\C)6I,?D~ON4˛0|D?*ϕfk:Uc1c^}-7SxM~z5"zv3^ HHNcÄ$=]9q/w-%&Jk}⾵1}d+,b3{.V8~g.kg~! 4;@}26!cF,DEWF7k?gVdzt}VmT}fOxR,}>+8Yѝxuh<ݿ+z뾤U0k,S1)N@Dzz8BIM!UAdobe PhotoshopAdobe Photoshop 7.0 ''&lXNMK,++zHGF(('vHHG)('vHHG)('vHHG)('vHGF)('vHGF))(vHGF*))vHGF*))vHGF@??MLKMLJKJIusqQQO@@>AA@ggfkjhBBABA@PON*))vHGF433rro333A@?``^999ihfrqo@??_^];;:*))vHGF666cba[ZY:99DCC~{*))vHGF898\[ZlkiQPOWVU??>¿<;;*))vHGF434543665nmkrqoNNLjihXWVÿ*))vGGF010hgf`^]432YXVCCA~|jig211665llj~AA@VUT*))vGGFedchgfcbamlk|{xVUS^^[aa^VVUyxv*))vGGF*))vGGE*))vGGE*))vGGEμew?Y4Q4QE]r*))vGGEF]n0w=,M.N-M)Jt9n2Yn*))vGGEĭu;w>A_KgPklmTnKf m/zA_x_xz?^%HJ n/t9sst7`%T8j,t8Eaκκκͷ̶κκκFbs6[#SZ"t7r7p3p3p3k,@]c{i(p3p3p3s7t5GE5 r1p5o3o3o3j,?]c{g(o3o3o3p4r0(* Om+ n0 m/ m/ m/h(=Z`ye$ m/ m/ m/ o/_%x1p,j+j+j+e$I'hi@K ' 'Adobe Photoshop 7.02006:09:25 00:31:32 adobe:docid:photoshop:90dd1fa2-4c5d-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:31:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:31:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:31:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:31:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:31:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:31:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:31:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:31:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:31:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMQ add_cc_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM { ` _JFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?߶2`5?G&3׺&]x ,{m`0P=?S7~b[w'ɨ;6<1s\cC`1gD+ml۾5-MHVqs[70t>jt}Ȩ9nuN%ńڵJ=CׅGOT2{=9C{c۝}e#6ޓ7),ʷl{{v;snSG[wS}?-?-0Xsz}OMö1[kn;2m w&k}wy=|p=?8BIM!UAdobe PhotoshopAdobe Photoshop 7.02 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6.`_]~aa_kih|{yqpn{zxedbVUScb``_^hhf^^\hfdihfu@\'}G'~GE`˷)~I'I@]lp?]#|D1O$|E6UD`B^HdD`1P,}I|zyʇLJLJLJLJLJLJLJLJLJLjLjLjljǏLa#}E:X5S6T=Z4S:X{AXhkgh"\*2T5U3T4T;Z2S5U1R L *( g.ZtYta)0(e+PkOj`&9Y%v:w>v<v=!{Cu<w>w:M-( s1 l.k,k-p4j+ l.s1#*X"o-i)i* n0i(q-QPLV n*k(zA!|Dl)n*Pq2! I[ZG S #AF3  GNUMail/Resources/Icons/add_cc_48.tiff0100644000014600001460000006014410506157373020210 0ustar monotonemonotoneII*006<0$(12*R)>I(hi8` ' 'Adobe Photoshop 7.02006:09:25 00:31:55 adobe:docid:photoshop:90dd1fa3-4c5d-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:31:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:31:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:31:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:31:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:31:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:31:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:31:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:31:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:31:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMQ00add_cc_48.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM r00VJFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I)n!eKCeIkkIψka Sp n!UQhD[Z;JG3'E"ŕN=A.@y6/ࠗeۙmu6bﲳ5I6./ɿ2oʲ0:9kw~n} Mg h.s:OKrk;,k?arH$duAC?6>ecݰٟݍzg<&b?{=ZkJ@V$$j'_Ä$=]9q/w-%&Jk}⾵1}d+,b3{.V8~g.kg~! 4;@}26!cF,DEWF7k?gVdzt}VmT}fOxR,}>+8Yѝxuh<ݿ+z뾤U0k,S1)N@Dzz8BIM!UAdobe PhotoshopAdobe Photoshop 7.0 ''&lXNMK,++zHGF(('vHHG)('vHHG)('vHHG)('vHGF)('vHGF))(vHGF*))vHGF*))vHGFmljBA@@?>MLKIHGA@?DCBwvu*))vHGFhhf;:9edb665988utr100zyw*))vHGFA@@vutxwuDDB*))vHGFÿ<;;a`_MMK*))vHGFIHF_^]VWU<;:¾``_*))vGGF444hge}CCBLLJFEDPON__]222*))vGGF`_]TSQusr¿qpnTSQedb*))vGGF*))vGGE*))vGGE*))vGGEμew?Y4Q4QE]r*))vGGEF]n0w=,M.N-M)Jt9n2Yn*))vGGEĭu;w>A_KgPklmTnKf m/zA_x_xz?^%HJ n/t9sst7`%T8j,t8Eaκκκͷ̶κκκFbs6[#SZ"t7r7p3p3p3k,@]c{i(p3p3p3s7t5GE5 r1p5o3o3o3j,?]c{g(o3o3o3p4r0(* Om+ n0 m/ m/ m/h(=Z`ye$ m/ m/ m/ o/_%x1p,j+j+j+e$I%hiI ' 'Adobe Photoshop 7.02006:09:25 00:34:30 adobe:docid:photoshop:ed9ee7aa-4c5d-11db-8c81-d26e35c2cbb3 8BIM%8BIMM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-16T02:17:38Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-16T02:17:38Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-16T02:17:38Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-16T02:17:38Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-16T02:17:38Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:25Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:25Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2000-07-28T22:57:04Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-16T02:17:38Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-16T02:17:38Z com.apple.print.ticket.stateFlag 0 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMW addresses_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM  ` JFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?iOxX[fH=k'ẉU%}=G\~?QmQ]S]ϲ9ѷk>)!B$V;z69-\?j}Fzʯ=i?<c\Qk*܌ZXs}qYE,A-KVHj_?sFޗ.qo v9TgOT=ݻ³YN~=M}O~=N}:K{5Fx4Ew,=q]k!mLKJ$&-IVSaHW:K{3Dv,>rYg nLKJ$'.JXTbGV=M}3Ew->rZh!nLKJ$'.LYVcIWAAAyyxXXVbcg=M}4Ew1Cw6Be ALKJ%'.M[WeKYklo LLLRRR???(((>N}5Fx1Cw;Fi 9LKJ%(.O\YfLZpqv "!"?O~6Gx/@tZi!nLKJ&(/Q^ZhN\,,- fgk@P~6Gy0AtWfnLKJ&(/R_\iO^UVXDEGrsw@P7Hy1BtYh!oKKJ&(/Ta]jQ_wx|TUWHHJCCDLMO\\_BR9Iz7Hz0<]9KKJ')/Vb_kR` 665BS:J{6GyBOs CKKJ')0Wd`mTblmo@@?222$$$!!!('':::FFEDT;K{4EvZh nKKJ'*0YfbnUc`ad,++???AAAAAAA@@;;;---EUN}=N+6T'KKJ)+1]jfrbnbnepbngtlxiugserdpbo_mR`P]LZCSBQ:K{TaZKKJ)+1_kgsdp`m]j[iXgWdUbSaQ_O]L[JXGWEUDTDSCR:K{ZioKKJ)+1aliuercp`n_l]j[hYfWdTaR`P_M]L[JYHVEUDTID)hi` ' 'Adobe Photoshop 7.02006:09:25 00:34:14 adobe:docid:photoshop:ed9ee7ab-4c5d-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:25Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:25Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:25Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:25Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:25Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:25Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:25Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:25Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:25Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMW00addresses_48.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 00JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?nl}/Vc/k#qx7ǗaS,s;LO.%zCփO%rAz- h'eEO3V6n=?64F睭/b>U,[Esc* -s1;jw/QRG wEw]#H{s;ox_O]Ԡs vuu=9N㿰j[.ٝ~PF8W9yIo}KzNtlΟS,ɨt'r8?Pz5[Z=tkR~9+=!aux{?HnԏWwSkڽKYoD>fw꧋j85n:oLÁ4XF=Iă8BIM!UAdobe PhotoshopAdobe Photoshop 7.0$@@@ _ YZZZZZ Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z \ U\(((```(2OIYETBRAQ@P~>N}r+=q*O~>N}=M|;K|:K{:Jz9Iz7Hy7Hy6Gx5Fx5Fx4Ew4Ew4Ew4Ex$6f L^&&&___*4PSbO^N\L[KYGVFUETCSBQAQ@O~>N~=M}N}=N|p C^&&&___,5QUdR`O^JYfr}+=q5Fx4Ew2Cu,>o C^&&&___,6QVeR`Q_IXnz);o5Fx5Fw2Cu,>o C^&&&___-7RWfSaQ_JYnyklpiijuuu^_b*o C^&&&___/8RXgUbSaL[ozOOR@@?YYX223+q8Hy7Hy3Ew,>pw-^&&&___1:T\iXeUcO]q{HIK,>r8Iy7Hy4Ew->p C^&&&___2;U]kXfWdP^q|wy}-?r8Iz8Hy5Fw-?p C^&&&___3Wao]jZhTbu++,"""`be0At;L{:K{:J{'8g P^&&&___6?Xbp]j\iUcv=== *)(1BtN}=M}:Jz2Cs C^&&&___:BZfsan`lYgy$$$)))...---------------...,,,4Ev?O~>N};K{3Dt C^&&&___:B[gtbo`mZgz5Fw@P~?O~N~.>m c^&&&___F]lxfreqcobn`m_l^j\i[hYfXeVdUcSaR`Q_O]N\L[KZJXHWGVEUDSCRBQ?O}7Hv C^&&&__^>F]mygseqdpcoan`l^k]j[iZgYfWeVcTbSaQ_P^O]M\LZJYIXHWFVETDSCR@P~8Hw C^&&&__^?G^nzhtfreqdobo`m_l^k\iZhYgXeVdUcSaR`P_O]O\L[KZJYIXGWFUDTCSAP~8Ix C^&&&__^@H_n{itgsfreqcpbn`m_l^k\i[hYgXeVdUcTaR`Q_O]N\L[KZJYHWGVFUDTAQ8Ixr} @^&&&__^AH_o|iuhtgsfrdpcoan`m^k]j\iZgYfWeVcTbSaR`P^O]M\L[JYIXHWFVEUDT5Es p ^&&&__^AI`p}jviuhtgseqcpboan_l^k\i[hZgXfVdUcTbSaP_O]N\M\KZJYHXGWFVDT9Jv:>J^&&&__^BJ`r}kwjvithsfreqcpbn`m_l^k\i[hYgXeWdUcTbR`Q_O^N\L[KZJXHWGVDS=Mz @^&&&__^CKas~lxkvjuhtgsfrdpcoan`m_k]j\iZhYfWeVdUbSaR`P^O]M\L[JYIXHWET=M{ C^&&&__^DKatnylwjviuhtfseqcpcoam_l^k]j[iYgXfWeVcTbR`Q_P^N\M[KZJYIXFU>N{ C^&&&__^DLatnymxlwjviugsfreqcpbnam_l^k\i[hYgXeWdUcTaR`Q_O^N\M[KZJYGV?O| C^&&&__^ELbuoznylwkwjvhtgsfrdqcoan`m_l]j\iZhYfXeVdUbSaR`P_O]M\L[KZHW@O}w C^&&&__^EMcvp{oznylxkwjuhtgsfrdpcoan`m^k]j\iZgYfWeVdTbSaR`P^O]M\L[KZd Iz&i=Created with The GIMP ' 'Adobe Photoshop 7.02006:09:25 00:36:02 adobe:docid:photoshop:1bc87fbb-4c5e-11db-8c81-d26e35c2cbb3 Created with The GIMP xCreated with The GIMP8BIM!xCreated with The GIMP8BIM%hrum~hD8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:35:30Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:35:30Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:35:30Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:35:30Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:35:30Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:35:30Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:35:30Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:35:30Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:35:30Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIM5-8BIM8BIM8BIM8BIM@@8BIM8BIMY answered-flag.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM r VJFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?nz]}6 tmǦ667akvlO=/*$8BIM!UAdobe PhotoshopAdobe Photoshop 7.0  y y/\#Fyf:r-Y|}53|?}JI ?3|f83F  GNUMail/Resources/Icons/attach_32.tiff0100644000014600001460000004555410506157373020260 0ustar monotonemonotoneII*  @; (12*R)>I'hi@K ' 'Adobe Photoshop 7.02006:09:25 00:36:56 adobe:docid:photoshop:1bc87fc0-4c5e-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:36:11Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:36:11Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:36:11Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:36:11Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:36:11Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:36:11Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:36:11Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:36:11Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:36:11Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMQ attach_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM { ` _JFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?U5J+YcX.qf}e #ŤR..8&mJo*ehF-cV_Wq>à :ǻ]w---t+++tB(kkkÔ{{{fff'..RRR n680AAAI???1x)))*ZZZ$$$@@@/VVV (|||[[[ |||@@@5 PPP 2ZZZ%%%???0 :))) 2OOO&&&;;;1bbbnnn` =JJJ"""///*"""q8cccmmm 4UUU888)333uuufddduuu 4NNN {{{000-111kkk^^^pppFMMM!!!{{{,,,"777aaay^^^nnnGIII''',,,"BBB```~mmmoooI@@@%%%|||!!!!BBBQQQvmmmhhhJHHH$$$&&&;;;[[[vooommm DJJJ&&&zzz%%%#AAA[[[~nnnnnnPCCCyyyAAAMMMxpppggg  =NNN evvv*** OOOKKK|xxxggg {kkk[ I?NNNEEEv~~~iii  )666 A=???IIIutttjjj UzcccSSSPPPGGG}lll zR8aaakkkwww222|ccc y 'rrr&|hd```j 333=== ;llls4RRR甔WWWR& ;333``` x <444xxxttt999^ l""" 1   GNUMail/Resources/Icons/attach_48.tiff0100644000014600001460000006174010506157373020262 0ustar monotonemonotoneII*00?0$4<(1D2XR>l I(icCreated with The GIMP ' 'Adobe Photoshop 7.02006:09:25 00:36:51 adobe:docid:photoshop:1bc87fc1-4c5e-11db-8c81-d26e35c2cbb3 Created with The GIMP xCreated with The GIMP8BIM!xCreated with The GIMP8BIM%hrum~hD8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:36:12Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:36:12Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:36:12Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:36:12Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:36:12Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:36:12Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:36:12Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:36:12Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:36:12Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMQ00attach_48.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM Z00>JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%) 8 h$KAs~eΝ_G3,ь]'ZIozJvLI L9zS|}ZN74%iml@}X=:F?F$h ΰSU}9̳F0FnFU4eCi`'kW9GQζene@/HsM?_WcZ{(oSvz?He4?!n>;trؘyo:Ƌ $٣c+RRxG[S-vǑ1+Wk\f @88`?)VS:Y8{\xL|[-YlCC˙`mZ8`kGcjvvKE ?wkE) 1?c~_ilfTRn6+u0@hGIJI$S8BIM!UAdobe PhotoshopAdobe Photoshop 7.0#DK 7 3```󧧧,,,m ***j󘘘uuu[[[ZZZvvv^^^888ttt^DAW...dddHHHUUU333qiii + """(((]]]```L'''uhhh z! UUUmmm hhhXXX...nnn {iL VVV\\\///lll ! B mhhhXXX444lllt!Grrr m]]]^^^...mmm !***xZZZK]]]ZZZ444ggg #׈...% hhh[[[...lll ]]]NNNr  VVV___)))iii " LhhhUUU&ggg[[[ ,,,iiix" ``` VjjjSSS2 ]]]aaa &&&iii ~!RRR&&&Dggg–SSS8 ]]]]]]+++ccc z!TTT"""N```ÓUUU8 iii^^^ %%%hhh z SSS&&&JgggȔRRR2  WWWccc%%%eee ! PPP%%%JfffɗVVV8 iii___+++eeet! ]]]!!!JfffȒTTT2 ]]]ddd%%%ggg  QQQ$$$NhhhɘUUU8 ]]]bbb***``` {"RRR O```–WWW8 iiibbb$$$ddd { RRR$$$JhhhǖTTT3 WWWggg###ccc " PPP$$$HgggȚYYY8 OOOfff!!!jjj # NNN'''HXXX\\\9TTThhh!!!bbb !NNN$$$PgggțXXX8 OOOdddhjjj #OOO$$$E]]]^^^9555{xxx:VVV  FFF&&&P\\\]]]8#8885yyy9 MMM$$$HgggǞ^^^8 111x n nnn#LLL&&&HXXXaaa8zzzɫDDD) qqqᖖ2KKKyyy$$$Phhhȝ___8 񨨨"""555333JJJ~~~$$$E]]]ddd9'0cccᡡIIITC _aaayyy&&&P\\\ccc8zzz觧888 FMMMِdddHhhhǡddd7 JJJ:1***,,,###q9ZZZhhh7pAAA % ffffff7  NNN搐000fffjjj9 g[[[PPPE  gzzzћddd7xTTT{{{|||OOO^^^UUU6  m<<<```sss{{{wwwjjjWWW99903 }(((888888555'''U"  &AMH500GNUMail/Resources/Icons/common_Unknown.tiff0100644000014600001460000005764410506157373021522 0ustar monotonemonotoneII*00x;0$(12*R)>I(hix_ ' 'Adobe Photoshop 7.02006:09:25 01:10:08 adobe:docid:photoshop:8f7eb570-4c62-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:08:35Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:08:35Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:08:35Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:08:35Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:08:35Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:08:35Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:08:35Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:08:35Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:08:35Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM[00common_Unknown.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 00JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?+ '@Kk;E5?H?ŮcR/ )6?V8;e%1|qx61͓$}A<⼟UX{XJVķ(春&ܒdQUM5X>-ۏixGVf 5ܡfܟKrl36eƏBJjόP\e\潏"N׵7UŻ)[kzkǬW_̔Y-[?,|LAŻ v7}55cߥ_$8BIM!UAdobe PhotoshopAdobe Photoshop 7.0```t𲲲ΰ̱͕cccuFFFT---7"ڝ...8$777DJJJ\^^^urrrttt\\\```cccddddddccccccbbbbbb~~~bbb~~~bbb|||aaa{{{aaayyy```xxx```www___www___uuu___ttt^^^sss^^^ rrr]]] rrr]]] ppp\\\ qqq\\\ ppp[[[ ooo[[[ nnnZZZ nnnZZZ mmmZZZ mmmYYY mmmYYY mmmXXXqqq[[[\ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc[  00GNUMail/Resources/Icons/create_16.tiff0100644000014600001460000003717410506157373020260 0ustar monotonemonotoneII*P:(12*R)>I&hiP> ' 'Adobe Photoshop 7.02006:09:25 01:11:21 adobe:docid:photoshop:265b998b-4c63-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:21Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:21Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:21Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:21Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:21Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:11:08Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:11:08Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:21Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:21Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMQcreate_16.tiffnullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 0pJFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?ONnq}I .ed5uD42㵣-3/mukK_`{*^O klk]X w )8BIM!UAdobe PhotoshopAdobe Photoshop 7.0G\\\RRRSSSTTTOOOLLL?666zN444z[444z'''g444z---n333z:::{///z"""f333zCCC333zCCC333zCCC333zCCC333zCCC333zCCC333zBBB111z???7***u(((o(((o(((o(((o'''o'''o(((o(((o(((o(((o+++v =GNUMail/Resources/Icons/create_32.tiff0100644000014600001460000004620010506157373020244 0ustar monotonemonotoneII*  T< 4<(1D2XR>l I%iTLCreated with The GIMP ' 'Adobe Photoshop 7.02006:09:25 00:38:23 adobe:docid:photoshop:68d981f5-4c5e-11db-8c81-d26e35c2cbb3 Created with The GIMP xCreated with The GIMP8BIM!xCreated with The GIMP8BIM%hrum~hD8BIMM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:46:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:46:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:46:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:46:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:46:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:21Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:21Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2000-07-28T22:57:04Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:46:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:46:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMQ create_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM ] ` AJFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?ۤKv $k ~jBw@jA);9wzz=]f 뙼4-w~j]kpI(hi` ' 'Adobe Photoshop 7.02006:09:25 00:38:17 adobe:docid:photoshop:68d981f6-4c5e-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:37:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMQ00create_48.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM L000JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?<oy"&,~sv?5?|Gav JWi'N pRScIau l0<?Vu5;m0;ޥԬ/?gfU>ޘ2BS# g XjH0Z~qo/@Q%5z{ppq 8k`?9STfߴ@GZǐ_m2`),Ge9ev/IxD Fze[*- ēFG[?B MYYV:jp1kX8BIM!UAdobe PhotoshopAdobe Photoshop 7.0 U|||uuummmeeeRRREEEBBB.+++v###c(((r###f(((r%%%k(((r!##g!z< adobe:docid:photoshop:26a87500-4caa-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM Z8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM$@@08BIM8BIM5nullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM  JFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TĀ$V?Э)'ir_i8[IJM?K4)>%<ir_i?qO~%0E?K4~Q;bNM))ooKHp DC$I$U[B+*QoOIL$$I&JRS$)R$@p KNEQsw8))vX=w ӅC2yhuulc^]\ݙQ[ZC7徥>><ۈ.?G~u*;/Ƿ~K[ķ;XkoN=u׏V.Oz?AXB\2*7/^_wҧd=Z7oӵ=yS g9ƽp;,Q]~~b $/3'-\VKNI5{|]'>^>y_,zUmm%ݜ_˛r9=}?mbc!4/?nE8 hUc}']韏*۵hV¬h'"Wm ?-5,$I$U[B+*QoOIHnyTy$$KVd^^iCXǀF{a$j9Y]7F6W-q.}M=;m{>"!)W,rR2H /Aw{$_>w}?A\n. V{]ͭF:1b##JRZR"A*YlM)?lIMI%?U[pRZ@%e1:%9dc:8_T#KIM[=_)z;1WOOwbOWzp%zp$1wb1wb} } )oowKIM?"cY][p{ELisL%cRelgJJfI$8BIM!UAdobe PhotoshopAdobe Photoshop 7.08BIMmopt4TargetSettings interlacedboolTrnsboolMttCObjc NativeQuadGrn longBl longRd long fileFormatenum FileFormatPNG24transparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong noMatteColorbool8BIM-msetnullVersionlongGNUMail/Resources/Icons/delete_20.tiff0100644000014600001460000000362410424672357020246 0ustar monotonemonotoneII*H {''{ !:=:=!!x|x|!]^ρҍҍρ]^&  .f@JR(1:ZR../Resources/delete_20.tiffHHImageMagick 5.5.7 12/23/03 Q16 http://www.imagemagick.orgGNUMail/Resources/Icons/delete_32.tiff0100644000014600001460000004607410506157373020254 0ustar monotonemonotoneII*  < (12*R)>I(hiL ' 'Adobe Photoshop 7.02006:09:25 00:39:43 adobe:docid:photoshop:9fdcec62-4c5e-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMQ delete_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM I ` -JFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?Ρ1:n% K{hp=Ce+-즩_a;Z[[?\?KkяXؽ[em,3> sK2]cꚫe>.Ƅ|?,FlD70WV:=w>k|5sj_Tl~}&X{V7>tm) T;>~ddtϬ/tі4^[klbte8"RY0×&,G9p%ދп1muXsWIKWƹ^ƍ -~Y<4s\>^yO2k5(8XeJB>99N *22&& j, 9922Vk33997777779955`o<<++ 8Q2255$p..332222223311`/o3344'' V d((--..tp))--,,,,,,..,,` P,,--,,ef$$''))mt&&((''''''((''Y K''((&& g \!!$$+""##""""""##!!G$^##"" _  >*+ELG k*O&U %~W[ ?o a vӻ 2zn {T d,&{ V#;l/oPK%_MRTpJp $}UR39^{#)i6Rab[C$V!   GNUMail/Resources/Icons/delete_48.tiff0100644000014600001460000006075010506157374020261 0ustar monotonemonotoneII*00=0$(12*R)>IT*hia ' 'Adobe Photoshop 7.02006:09:25 00:39:38 adobe:docid:photoshop:9fdcec63-4c5e-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMQ00delete_48.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 00JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?USLr3m7rOU.Ա_O?$t7qojzks]$]c豽(fy߆Ϝ׃>i?Ǝ#\[ep\+j7Ҭ3:{ުc_Z~*Q~Kq]擻ɟEwͮ,d<xO]/j3$8F?yy_៱9Koӣj6`\[>zR^=J˱sq:{zՎW]l2杙xCsq":9axrB^ {O8=:+u`oMl`pÉ:0~[:X*qv׳=]u U8؍>ɓe<qJk1{Ǵ[SEpr~igPkpyXD^Q~c^mcż]S&,dp|Si?']#);@;ұÒ.mX"^~ 3VM%vYOzSki9l֏48nd}b7-DJ2Cde𼸹F"oN=* FNVNa=u[OYo@ WawG/0 US!yQB  <_>C\2eK $ !!++..Y4X MC ((55>>BBEEFF;;`4!d H 22>>BBBBBBAAAAAACC;;Z4M  =D117788@@>>============??88_4**44 %1} ""77==^55<<::::::::::::::<<33Y 4Q==88$$ Sh''6699//u&w//99667777777777778800`4 2..8877''|, &&443355 Fq,,553333333333333355//Y 5553344''C% ..000022v/y++110000000000000011**Y 3f110000..  Z4((++,,,,..\s))..,,,,,,,,,,,,,,..((_ 3M --,,,,++((i8 %%&&((((**P y##**((((((((((((((**$$` ;B))((((''%% p5!!##%%%%''[ q ''%%%%%%%%%%%%&&''##n 6M &&%%%%$$!!n) !!""##oy##""""""""""""""##Y 4a ##""!!  d1q_4Pi  VrY,*~ ?2S yQRW(J=y) `~ ` G fr R35  Xx  xC "ep P7" K o tfO 0$M)+BfMAMbLE RgU[g]=LU !y*E>HNt* MFPx7=#PvޓyT(`3,B Zjpn dP?( 00GNUMail/Resources/Icons/send_12.tiff0100644000014600001460000004473010506157372017735 0ustar monotonemonotoneII*( ;Du+5]c-1} HNio59?DZ]3?pzR\G~ adobe:docid:photoshop:34101464-4caa-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM Z8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM$@@08BIM8BIM5nullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM  JFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IJIW~eA,L]Bf3u&эKN%O5I-j߱G2k?azvQWJvI$TI%)$IJI$RI )!w sXrJJ[KpcG.qr mgjŏl>qoua)s?V^G(>eZ^ ,wr͉ggbtKssm7uAC134458458134>AC =pwpw=gemuemugeQW_QW_edKRZKRZdgKRZKRZge_el_ele "$g`fm "$g  (1:2RI%../Resources/down_15.tiffHHImageMagick 5.5.7 12/23/03 Q16 http://www.imagemagick.org2002:08:18 15:56:058BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 7.200000000000000e+01 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-18T19:56:00Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-18T19:56:00Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1.000000000000000e+00 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-18T19:56:00Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 7.200000000000000e+01 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-18T19:56:00Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1.000000000000000e+00 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-18T19:56:00Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.000000000000000e+00 0.000000000000000e+00 7.340000000000000e+02 5.760000000000000e+02 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-18T19:56:00Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -1.800000000000000e+01 -1.800000000000000e+01 7.740000000000000e+02 5.940000000000000e+02 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-18T19:56:00Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2000-07-28T22:57:04Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.000000000000000e+00 0.000000000000000e+00 7.340000000000000e+02 5.760000000000000e+02 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-18T19:56:00Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -1.800000000000000e+01 -1.800000000000000e+01 7.740000000000000e+02 5.940000000000000e+02 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-18T19:56:00Z com.apple.print.ticket.stateFlag 0 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMM down_15.tiffnullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 0JFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?zڬclh;wmr]F/S¶'mHqO1bWE3(sk]>kw;=G[slc]dow/o#8BIM!UAdobe PhotoshopAdobe Photoshop 7.0GNUMail/Resources/Icons/drag_mail.tiff0100644000014600001460000005200410506157374020414 0ustar monotonemonotoneII*((:((12*R)>In'hiS ' 'Adobe Photoshop 7.02006:09:25 09:11:45 adobe:docid:photoshop:6ee30814-4ca3-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:10:23Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:10:23Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:10:23Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:10:23Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:10:23Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:10:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:10:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:10:23Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:10:23Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMQ((drag_mail.tiff((nullboundsObjcRct1Top longLeftlongBtomlong(Rghtlong(slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong(Rghtlong(urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM ((xJFIFHH Adobe_CMAdobed            (("?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?T`6w;H #gҵ7UEuRwI+Sa%]Ǵnk/~5嵪6?"*-$:wqGZoG*]2qW{LeczJKCؒ 8`kmc^hp$CD|J~|J~Y$8BIM!UAdobe PhotoshopAdobe Photoshop 7.0   jihУТУТТТТТТТТТТТУУУУУУУУФФФФФФФСНСССУKJI zywtrptsputqqqosrqutrutrutrutrutrutrutrutrutrutrutrutrutrvut{zx e***x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x**)x***x\((GNUMail/Resources/Icons/drag_mails.tiff0100644000014600001460000005215410506157374020605 0ustar monotonemonotoneII*((>;((12*R)>I'hi@T ' 'Adobe Photoshop 7.02006:09:25 09:16:26 adobe:docid:photoshop:f6128bf6-4ca5-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:10:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:10:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:10:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:10:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:10:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:16:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:16:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:10:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:10:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMS((drag_mails.tiff((nullboundsObjcRct1Top longLeftlongBtomlong(Rghtlong(slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong(Rghtlong(urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM x((x\JFIFHH Adobe_CMAdobed            (("?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?e,.qcqЅ^c] ?9oCrv64]{HGjn1x7 JCy3k?nic6YXَ{MsxfCu5$x;dD 1Mrk_iGc;lALUCkZG^uO $Ԓ5m?YA%U."ٸ7$Tʩ$'T?IOV+``$I'Ii $8BIM!UAdobe PhotoshopAdobe Photoshop 7.0 L<<;{(YXV_^^TPPO 7 6))(fPPNwvuWEDCBA@> ^]\/..yK- 8oml䡟~}{rrprqoqpnlljlkimljllioon..-xZ--,w-V$$$lVGV&VNX@@?f&&%mXXW"?>>..-o D WVU ---t~##"uR221}6RQP&XWV~|e|zyX}ELjLJLJLJLJLJLJLJLJLjLjLjLjȉɍ͏ѠVUT &4^EDC¿ݨ M -322z?)R^]]CCB!d|{z;K(''p((GNUMail/Resources/Icons/duplicate.tiff0100644000014600001460000000362410424672357020455 0ustar monotonemonotoneII*HF|_H;i_H ;iAu 3iJrQ{݌i "U݌i " 3i{H ;i>_Dhi ;\] "ig#ni ;8UwqgWi{i 3 3i;iU}}i " ;iwݲfH\]Jr̜i*;ii ; "i{U "iW>_i ;Hi 3i\ 3]Jr1Lj?o " " " "&  .f@JR(1:ZR../Resources/duplicate.tiffHHImageMagick 5.5.7 12/23/03 Q16 http://www.imagemagick.orgGNUMail/Resources/Icons/edit.tiff0100644000014600001460000000362010424672357017424 0ustar monotonemonotoneII*H*HH ;*HH ;*HH ; " b b ; " b b ; " b b ; ;iqUH ;iqUH ;iqUH 3i8Uw 3i8Uw 3i8Uw1LjDh1LjDh1LjDh&  .f@FN(1:VR../Resources/edit.tiffHHImageMagick 5.5.7 12/23/03 Q16 http://www.imagemagick.orgGNUMail/Resources/Icons/find_32.tiff0100644000014600001460000004436010506157374017727 0ustar monotonemonotoneII*  8 (12*R)>I\%hiH ' 'Adobe Photoshop 7.02006:09:25 00:42:54 adobe:docid:photoshop:cc75294d-4c5e-11db-8c81-d26e35c2cbb3 8BIM%8BIMM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-16T02:38:37Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-16T02:38:37Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-16T02:38:37Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-16T02:38:37Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-16T02:38:37Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:41:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:41:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2000-07-28T22:57:04Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-16T02:38:37Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-16T02:38:37Z com.apple.print.ticket.stateFlag 0 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMM find_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM f ` JJFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?@I\AQ6V^.M95nu;L,^q0zK~k(p!7 V뫢b>㶓[^eo}uç.XXs~=-f+ o7Maw\w9nvVU}=/noTQT6]waglfvNHv&4mT3LZx3 š[fC{w9*Jqp>i n?dOgVƹkn&Ae$8BIM!UAdobe PhotoshopAdobe Photoshop 7.02 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5.}}}{RRRwxxxzzKKK}|zwvuIIIXZZgfeFGGKKKrqpTSSYXXGGGPPPAAAIIIz||~???mmlMNNKLL[ZYAAA`aaUVW111---000=<&&&;;;5---5559 83331112(((---!  GNUMail/Resources/Icons/find_48.tiff0100644000014600001460000006011010506157374017725 0ustar monotonemonotoneII*00<0$(12*R)>I(hi` ' 'Adobe Photoshop 7.02006:09:25 00:42:50 adobe:docid:photoshop:cc75294e-4c5e-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:41:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:41:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:41:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:41:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:41:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:41:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:41:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:41:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:41:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMM00 find_48.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM Z00>JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?svs\ƾqM\,o 2H>Xd>1ₓnHRg#;ԳsX;Ρ@ǡ9b8yx-2k>?"0EFnձָl I;W',dg=CWuẜ7=F6+bbRǺ9 k:+[))_׳>X VS,n縼4As-\:RVtϫeUJe砦^>C,3yicZ?5mf}d4U4C`Zg?J}9>j|:0[/rG\-~=׀dWnD[kcj!Ի23:\99.mzo]6A>VU7S[jX chbٕ` 5qvѮmm]e!Otn w"zoLxU*IߞsRI$I%?8BIM!UAdobe PhotoshopAdobe Photoshop 7.0 &&%k̊XHHH**)wHHG)('vHHG)('vHHG)((vHHG)('vHGFYZY<<<:;;677555---'&&BBA)('vHGFwvt///RRS^`__^^))(vHGFdcc&&&uww$$%VVV*))vHGF001lmm***ooo*))vHGFSSRUUUuww,++*))vHGFvvuUUU///hgg*))vHGF]]\deeJKKHHH*))vHGFYYYjjj]__===*))vHGFOOOabbQRR===*))vGGFÿEEEMMM>??DDD*))vGGFMMMCCCwzz333MMM*))vGGFqpo===QRRSTT888ccb*))vGGEAAAVVVYZZcee554;;<*))vGGEwvuNNNAAAUTTYZZTUU11199:_^^*))vGGEyyx,,-)))788TTTNOOVWWgjjruuswxhklNOP666666667LLL*))vGGE--- dcb[ZYAAAONNDDD@@@===999::::99...@A@*))vGGEsrq%%%TTS222!!!-.....'''##$999{{z*))vGGEXXXPPO_^]SRQYXWjih*))vHHHCCC##"pon***v))(tԋȋȋȋȋȋȂΊ999 888ڈŐȌȌȌȌȌȌȌȌȌȍȍȍȌȌȌȌȌȍȍȍȍȍȍȍȍȍȍȏɖc I...677$$$ ) !J:::888"""qEEE555 $$$EEE--- p*000EEE)))r O666???&&& hzCCC;;;!!! T ><<<777!!! ]r)))!!!@);00GNUMail/Resources/Icons/forward_32.tiff0100644000014600001460000004441010506157374020447 0ustar monotonemonotoneII*  8 (12*R)>It%hiH ' 'Adobe Photoshop 7.02006:09:25 00:44:29 adobe:docid:photoshop:558da919-4c5f-11db-8c81-d26e35c2cbb3 8BIM%8BIMM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T01:44:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T01:44:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T01:44:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T01:44:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T01:44:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2000-07-28T22:57:04Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T01:44:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T01:44:22Z com.apple.print.ticket.stateFlag 0 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMS forward_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM x ` \JFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?U~t~윑,%^C [H%sfU"d49oʆ]BvE'c>X(*h#55/C$IO8BIM!UAdobe PhotoshopAdobe Photoshop 7.0 &E! S bm* k0$ Z S k0B_q8% _ ?/y888893 . 7^ ,LNit:-q> n/y@#|D$|E%}F'~H'H'I&I(J*J:XQkLgu<% ^ 'R",MKgQlRlRlRmSmSmSmSmSmSmQkNiPkLgr:# ZM 3SUoKfFbDaEaEaEaDaDaDaDaDaDaEaGcPjOis<# X c~CHd-M&~G&~G'~H'~H'~H'~H'~H'~H'~H'~H'~H'~H&~H%}G*KB_C``& /}A zC zB(~I(J(J(J(J(J(J(J(J(J(J(J(J(I%}Gu< o1J %%%b..-n**)m**)m**)m**)m+**l523u!V5j(v;w=v<v<v<v<v<v<v<v<v<v<v<v<v<v=t9g& n1AXH ¾Shb n1 n1 n1 n1 n0 m/ m/ m/ l/ l/ l/ l/ m/ n1 n1 l/e$ h+"p}bi)j+j*i)e#c c c c c c c!g&i)i*d" i,! j.d"g'g'f$!s@]lcrbpbpbpcr]n j.f%d"f(!o{f%d"e$o5i*c i-!tm3af'î^ i,!^m3|K4PƻWf!ž!¿!¿!!!!!!!"cb`DžDžDžDžDžDžDžDždždždždždždžLJLjLjljljljNJNJNjNjnjnjǍ~|  GNUMail/Resources/Icons/forward_48.tiff0100644000014600001460000006023010506157374020454 0ustar monotonemonotoneII*00j<0$(12*R)>I)hil` ' 'Adobe Photoshop 7.02006:09:25 00:44:21 adobe:docid:photoshop:558da91a-4c5f-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMS00forward_48.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 00JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TTzR+gio$$ճ~V.0"RՐcu%Y9k9Ddx?x?z@{@|A{ByA+KLgNiRl2Qc%# WBk(y@:XJfMhMhNiNiNiNiOiOjOjOjOjPjPjPjPjMhMhNiQk-Mb%! R ?n-7VQkPkNiNiNiNiNiNiNiNiNiNiNiNiNhNhNhMhMhMhMhNiPk.N_$ I/n+?\RlOjPkPkPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPkPkOjNiQl1Pa%$ X 7d%/OUoOjEa5T+K%}F$|E$|E$|E$|E$|E$|E$|E$|E$|E$|E$|E$|E$|E$|E$|E'~H/O=ZKgQkRl.Na%2 , r2Mh;Y$|Ex@zB%}F(I(J(J(J(J(J(J(J(J(J(J(J(J(J(J(J&~G"{Dy@"{D2RMiEaj+4Cx<2Qr7!{C*J+L*K*K*K*K*K*K*K*K*K*K*K*K*K*K*K*K*K*K+L+L'~Hv<u;r7h&.w%Jk*r6 zB!{C zB zB zB zB zB zB zB zB zB zB zB zB zB zB zB zB zB zB zB zB zB zB zCt9g'd N BccbPONEEDFEDFEDFEDFEDFEDFEDEEDLJJPQOb3g&s8t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t:t9o3h)c!r8jqR(('w+zHc! m/ o2 o2 o2 o2 o2 o2 o2 o2 o2 o2 o2 o2 n2 n2 n2 n2 n2 n2 o2 o2 o2 o2 o2k-g'c q;KJJ"""r6}Pc i*l-l-l-l-k-k,i*i)i)i)i)i)h)h)h)h)h)h)i)j,l-l-j*g'c m4CBA"""r\mbg'i*i*i*i*h(g'e$c bbcccbbbbe"g'h(i*h(g'c!q;@?>""!ri,e$g(g'g'g'g'd"m2AWL`J_J_J_J_J_J_J_Pc+xGe$g'g'g'c!n6??="!!rſTfcf&g'g'g'f$q:Mbcg'g'd!n5@?>""!r2{Mcf&g'g&d!o|þu?d"g'd!n5@@?&&%r9~Qc e#g&bYm k-e$d!n5FED(''rgup6d!bc \rn5ao7IHG(('rnyI^4P,JSlƬkwJIH(('rJJH(('rJJH(('rJJH(('rJJH(('rJJH(('rJJH(('rJJH(('rJJH(('rJJH(('rJJH(('rJJH(('rJJH(('rJJH(('rJJH))(sKKJ''&qHGF2YXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXY=00GNUMail/Resources/Icons/hand.tiff0100644000014600001460000002630610424672357017417 0ustar monotonemonotoneII*ffffff333333333333333fff333ffffffffffff333333fff333fff333333333333333333fff333333333333333333333333333fff333  &(1:.2hRIJ'|../Resources/hand.tiffHHImageMagick 5.5.7 12/23/03 Q16 http://www.imagemagick.org2002:12:08 21:12:448BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-12-09T02:09:43Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-12-09T02:09:43Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-12-09T02:09:43Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-12-09T02:09:43Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-12-09T02:09:43Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-12-09T02:09:43Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-12-09T02:09:43Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2000-07-28T22:57:04Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-12-09T02:09:43Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-12-09T02:09:43Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2000-07-28T22:57:04Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMI Untitled-1nullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 0JFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?:M]b˺O[_O̺A~ϣsw{^~ŝ kV}k2][ 쌲VEVznykV+2E>w5UR4tk12+l{miF͟f1}l'U:>3`68*ɷ*XQ6Wl8w!8BIM!UAdobe PhotoshopAdobe Photoshop 7.0GNUMail/Resources/Icons/mailbox_add_32.tiff0100644000014600001460000004566410506157374021262 0ustar monotonemonotoneII*  ; (12*R)>I(hiK ' 'Adobe Photoshop 7.02006:09:25 00:45:29 adobe:docid:photoshop:558da922-4c5f-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:44:53Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:44:53Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:44:53Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:44:53Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:44:53Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:44:53Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:44:53Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:44:53Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:44:53Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM[ mailbox_add_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM  ` JFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?ޡq0r2i -z\[C3[Z.nu=_mںo5Kh^i&Uf~\\1qݵhsx)2#=FFz=DWYۮ4f`~[̾jٻ`ك^Ok,xk#v5V^ƸH'-%$}Vumړ`l I:V]uus4wNұ]KuX̀~}#uɶmueq47]}y]m.l0k,߬?;`7!fzpzw~w~w~v}{[_\,E<_d|w~w~w~w~w~x#/B 4/=9}w~w~w~w~w~w~a2/ Th`zw~w~w~w~w~v}7;93 Anzxw~w~u|t{u|t{|fmi3dtyw~u|w2Q04/|v}rynux C1IMVN{hvn185  %#@KE{õ #!s .C qt?ICYh_GKH,@);E?$*&!&$%)((,**/-,1//421646:8152&.)Wd\vy ,KKCO[T/733;7z}y173072tz),lzq6?:9C==C?AFC5?9FPJZ-crhG7  GNUMail/Resources/Icons/create_20.tiff0100644000014600001460000004734210506157372020250 0ustar monotonemonotoneII*H             ___kɼƽƾƾƿƿƽƻļmmmq}}}/- |||baR^{{{;0/1{{{ލr8 izzzy+zzz=9zzzxӲ yyys yyy5: xxxlα xxxy xxx.@ xxx{ų wwwȐRo www xxx >>>P{{{yyyyyyzzzzzzzzzzzzzzz{{{{{{{{{{{{~~~VVVjJ  Rf@bj(1:r2R)I4create_20.tiffHHImageMagick 6.2.3 07/19/05 Q16 http://www.imagemagick.org2006:09:25 09:49:46 adobe:docid:photoshop:26a87500-4caa-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM Z8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM$@@08BIM8BIM5nullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM  JFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TĀ$V?Э)'ir_i8[IJM?K4)>%<ir_i?qO~%0E?K4~Q;bNM))ooKHp DC$I$U[B+*QoOIL$$I&JRS$)R$@p KNEQsw8))vX=w ӅC2yhuulc^]\ݙQ[ZC7徥>><ۈ.?G~u*;/Ƿ~K[ķ;XkoN=u׏V.Oz?AXB\2*7/^_wҧd=Z7oӵ=yS g9ƽp;,Q]~~b $/3'-\VKNI5{|]'>^>y_,zUmm%ݜ_˛r9=}?mbc!4/?nE8 hUc}']韏*۵hV¬h'"Wm ?-5,$I$U[B+*QoOIHnyTy$$KVd^^iCXǀF{a$j9Y]7F6W-q.}M=;m{>"!)W,rR2H /Aw{$_>w}?A\n. V{]ͭF:1b##JRZR"A*YlM)?lIMI%?U[pRZ@%e1:%9dc:8_T#KIM[=_)z;1WOOwbOWzp%zp$1wb1wb} } )oowKIM?"cY][p{ELisL%cRelgJJfI$8BIM!UAdobe PhotoshopAdobe Photoshop 7.08BIMmopt4TargetSettings interlacedboolTrnsboolMttCObjc NativeQuadGrn longBl longRd long fileFormatenum FileFormatPNG24transparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong noMatteColorbool8BIM-msetnullVersionlongGNUMail/Resources/Icons/drafts_32.tiff0100644000014600001460000005037010506157372020266 0ustar monotonemonotoneII*  @ (12*R)>Ib-hiP ' 'Adobe Photoshop 7.02006:09:25 01:12:36 adobe:docid:photoshop:265b998f-4c63-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:11:37Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:11:37Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM Z8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM5  nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM  ` JFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?ۤKv $k ~j D{s>y2rL5Iڒ {C,2,KV`i5p ,{\ks\kvIOm8PmfyOmNkVZ=wm8 FɏS6ԴAQj]ֻŇOUlEm1` IO8BIM!UAdobe PhotoshopAdobe Photoshop 7.08BIMmopt4TargetSettings interlacedboolTrnsboolMttCObjc NativeQuadGrn longBl longRd long fileFormatenum FileFormatPNG24transparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong noMatteColorbool8BIM-msetnullVersionlong. 6 5 5 5 5 5 5 5 5 6 4 !01 <EHYZ(((j...p#!!!!!!!!!!!!!!ZZZ̉LjLjLjLjLjLjLjLjLJLJljljljljljljljljNJLJppp  GNUMail/Resources/Icons/mailbox_rename_32.tiff0100644000014600001460000004566410506157374022001 0ustar monotonemonotoneII*  ; (12*R)>I (hiK ' 'Adobe Photoshop 7.02006:09:25 00:46:16 adobe:docid:photoshop:8d78ed96-4c5f-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:45:45Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:45:45Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:45:45Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:45:45Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:45:45Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:45:45Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:45:45Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:45:45Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:45:45Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMa mailbox_rename_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM  ` JFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?ޡq0r2i -z\[C3[.nu=_mںo5[EjN2k3sk{uȎ?E6ى]< ԍk]?K%֭wNóm>K 19^MYk~7'-z{˯Kcߠe6;w}gaYqEYMnOXi碌>~}ޠcYͳV'NEܬ{۹7bJӻꋺ=n.8X˛[W^殛|{sZFo,Lu^E/-]f scYjm6;!{w'gnԕ8BIM!UAdobe PhotoshopAdobe Photoshop 7.0 BdhQy eVe[y~EGFSf7+2.~{xx'̵C vxw~w~v}hki%=;#`tjzw~w~w~v}ýN.F>aa|w~w~w~w~v}|QVS.B 3/=9}w~w~w~w~w~y2/ Th_zw~w~w~w~w~xſ =3 ;nyxw~w~v}u|t{szk3gnywu|v}ý>B?3P.2-|u|qxpv|´oxr1JKTLyn~u084&-)Yh` .C m{oDNH.62ſ L,@'CNG &"!#!$" %#!%##(&%*()-+$(&2:5˿&*(~,HE;Vc[-503:6x{xhjg*2-AKDLUO,dqg7@:7@:?EB4=83;6qw{ ,gvm:D>9D=NRO=E@8X\XQWR>JCDPHbi((()))%$$+.,uyPWSOUQDIFZ\Z}{{zwxv~[][JPMMSOp{t?C@)))(((!!!mttt~~~PPPӉӈӐⴷ냃Ӈӈ^^^  XVf\9E>jqlCPH&-)QaqgHWNMXQ-3/TfvlTdZ|IUNYg^.51Uô-40]]] b d d d d d d d d d d c_]^2  GNUMail/Resources/Icons/mailboxes_32.tiff0100644000014600001460000004443410506157374020774 0ustar monotonemonotoneII*  8 (12*R)>I%hiH ' 'Adobe Photoshop 7.02006:09:25 00:47:26 adobe:docid:photoshop:8d78ed9b-4c5f-11db-8c81-d26e35c2cbb3 8BIM%8BIMM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:44:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:44:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:44:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:44:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:44:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:46:35Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:46:35Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2000-07-28T22:57:04Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:44:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:44:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMW mailboxes_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM  ` kJFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?Σ< Ϊ9 {.[e1M 9=_mط %"!#!$" %#!&$#(&&*((,*$)&:B=źbHZ[PKVO.51:A=|~{]`](/+JVO5;7Hz~5=85>8JOKsur3<64=8_mdIZh_I(hi` ' 'Adobe Photoshop 7.02006:09:25 00:47:18 adobe:docid:photoshop:8d78ed9c-4c5f-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:46:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:46:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:46:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:46:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:46:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:46:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:46:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:46:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:46:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMW00mailboxes_48.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM C00'JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?UERCWC.75i}GˍV:bG]Xz;&H1&Lb5RqGQ}r,c԰Ogj=_#*$4AUpv:c\״=Z *]-eԞiW~WQ^UX.e}{ِZMyY-z"/{@uneuRZD#y쎳%3ز}3[@?Qw^ӭRgk\>ߗAѰzN)#_H83*sr#cp-I!)v~E`:͏*l8~sId:LEAU.%)rsGR9 ZԊ$7F7>)Za DNHyw~w~w~y2,LJVOw~w~w~w~w~x$\~6 a4'-*~w~w~w~w~w~w~w~ž`c`"H_;4v}yw~w~w~w~w~w~w~~P#OH1"*'~w~w~w~w~w~w~w~w~{[a^#T#S*jO^U{w~w~w~w~w~w~w~w~y #X(7t|xw~w~w~w~w~w~w~w~xſX$Ey}w~w~w~w~w~w~w~w~w~w~ľ+.,%؍' 1;7}w~w~w~w~w~w~w~w~w~w~}]d`$oN\T{w~w~w~w~w~w~w~v}v}v}z!]j|ryw~w~w~v}u|u|w~yyy{ I{B  Hwxw~v}t|y "!uj7 w}w~u|xô{szszy?D@Z6 8B<|t{³]kc5=9$"#!084Wc\ipk J;_pgv~m|s'-*")%`og!8 L*pxWd\!NZSZ'T=/Q]U'-)$"%,'GRKǾ485VRF[i`*1,1:4+2.<@>DHECGEKNLMPNORPUXUUYVY]Z[^[_b`dfdNRP.61,3.MYQµZa\oymǸw}2:55=83;6?EA.515>8073ouô ʐEPI6>9:D=2;6IMJ6<87A;7@;=F@9#'$˩9B<=F@>HB083]`^FJG7@:>HA7?:pvƷjKUOͮǷ]kc7BLF=GAUcZôGQK gvmҝITMCMGEPICNG+1-vxuqsp3<6EQJCNGHSL㎢GSLHSLJUNBNG)0,8@;IUNHTLEQJ/񈜐JVOKWPN[S>HB,1.CJEJVOLXQGSK| @􈜐M[RO\TQ^U7@:5;8TYUHULP]TJVN| D􊞒Q^US`XP]U,50JPLÿgjgBOGTbYNZR~ D􋟓TbYXf]LXR(1-`ea:E>Yg^Q_V D􌠓Xf]\jaHSL(1-uyu¿¾ÿÿ5>9Zi`UcZ D􍢕\ka]kcCMF.836=8Yg^Yh_ D􎣖`oe]kb>IB7A;QVSO^U^mc D􏤘ctiUdZ>HB?HCuxuERJbrh DfvlP]UAMFFQJ?JDcsi DfvlNZRGSLNXQ¾>GAapg DdtjN[SKWPZd]CJE[ja DaqgQ_WN[Sjtl[a]RbY D]lcVd[P_Vz|wyudgeFMHSaY D\lc]lcTcZnveodkeI.hif ' 'Adobe Photoshop 7.02006:09:25 01:12:11 adobe:docid:photoshop:265b998f-4c63-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:11:37Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:11:37Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM Z8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM50000nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM O003JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?9K^%MK3W|b;ctD~JG{ns-l}XWi~{]WFZ+!-w{ Z5p@PǹZd?T ;]10}Fk#ml%|e񊭒ZL{RS8?fp$k/ԉ{fVsm58,:$Gs2pMUӖRR޶mՍcg{L%ίWCALsȸ;2?*lX!{dS\WscȨnxs\\UJ꽬 =`~sS':1hMUۥ;&GK2 H f"v3!hu69]@_$vo= ?\جb4g0v?msJ8BIM!UAdobe PhotoshopAdobe Photoshop 7.08BIMmopt4TargetSettings interlacedboolTrnsboolMttCObjc NativeQuadGrn longBl longRd long fileFormatenum FileFormatPNG24transparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong noMatteColorbool8BIM-msetnullVersionlong Uuuu:::x+++vGGG(((rGGG(((rGGG(((rFFF(((rGGG(((rFFF(((r444y(((rFFF(((r===(((r===(((rFFF(((r444y(((rFFF(((r===(((r555z)))r>>>&&&r!!!c(((rBBB(((rHHH(((rKKK(((rJJJ(((rJJJ(((rJJJ(((rJJJ(((rJJJ(((rJJJ(((rJJJ(((rJJJ(((rJJJ(((rJJJ(((rJJJ(((rJJJ(((rJJJ(((rJJJ(((rJJJ(((rJJJ(((rJJJ(((rJJJ(((rJJJ(((rKKK+++sOOO)))qIII2YXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXY=00GNUMail/Resources/Icons/pgp-mail-small.tiff0100644000014600001460000003563010506157374021317 0ustar monotonemonotoneMM*  :& D(12*R)>I&hi;l ' 'Adobe Photoshop 7.02006:09:03 20:22:07 adobe:docid:photoshop:55910c10-3724-11db-90cd-9ba53958bbf8 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T01:19:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T01:19:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T01:19:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T01:19:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T01:19:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T01:19:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T01:19:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T01:19:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T01:19:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMI Untitled-1 nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM h LJFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?s[ORX]EY͕+u=7l#KI$8BIM!UAdobe PhotoshopAdobe Photoshop 7.088000_000_  GNUMail/Resources/Icons/pgp-mail.tiff0100644000014600001460000006157010506157374020213 0ustar monotonemonotoneII*00J?0$4<(1D2XR>l I|(iLccreated with The GIMP ' 'Adobe Photoshop 7.02006:09:25 09:24:18 adobe:docid:photoshop:43bd4efe-4ca6-11db-8c81-d26e35c2cbb3 created with The GIMP xcreated with The GIMP8BIM!xcreated with The GIMP8BIM%NP[ Q8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:23:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:23:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:23:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:23:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:23:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:23:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:23:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:23:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:23:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMO00 pgp-mail.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 00JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TNUR@t k w_m $ ye q#G{7mQ8[.arJtAUg_k@!.cvW7SJ1/ MW7JC\psOpd,x6Yi_SCk1?A-We=OZH]FSk>r~5e vZY?6E`6Ɠ>NJ(}4nq*UsC)%[V?WK}1[hR?땠 ,3'S Hc8:y%ɋG!Js;5NϢַ^&/ܛ옿k4rT-d \ U+F&/ܜb4ژQ?8BIM!UAdobe PhotoshopAdobe Photoshop 7.0%>>>R___z^^^y<<n===n>==!! n@?>$$#nEEC&&%nIHG&&%nIHG&&%nYYY///---WWWIIG&&%nppp+++222333***mmm¿IIG&&%n~___+++111111+++^^^IIG&&%npppnnn******+++***lllppoIIG&&%nnnn}}}YYY777222WWW~~~lllIIG&&%n~}|fefxxxxxxeeeIIG&&%n}|{XXW\\]pppyyyyyypppYYYXXX~IIG&&%nsrqZ[ZIIIHHHZZZvvu¿IIG&&%nIIG&&%nIIG&&%nIIG&&%nIIG&&%nIIG&&%nIIG(('pNML h>==,QQOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPS600GNUMail/Resources/Icons/remove_bcc_32.tiff0100644000014600001460000004561410506157374021116 0ustar monotonemonotoneII*  `; (12*R)>I'hi`K ' 'Adobe Photoshop 7.02006:09:25 00:51:14 adobe:docid:photoshop:041b321e-4c60-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:50:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:50:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:50:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:50:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:50:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:50:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:50:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:50:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:50:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMY remove_bcc_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM  ` wJFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?߶2`5?G&}{mϋC';%sk]'A#t}ȡ0IMOu'a$OF'Jʯ 2q"~u4?Q}ra˩ .vsۜ*Z~tΥR軟׊ױeUYTc{qw>罾ֵU'Vj^GkGpwݗ>{=?8BIM!UAdobe PhotoshopAdobe Photoshop 7.02 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6.utrrqorqodcahhgddcmlkLLJqpnTSQWVUQQP~}zutqlkissqJIIQPNUTRomlUUSqpn~|xvuyxvllirromljvvtwv98>=섂봱! ,+'&|zyʇLJLJLJLJLJLJLJLJLJLjLjLjLjljMM[Zdji"*(99::0(77779-YO*PLq2JGS #AF3  GNUMail/Resources/Icons/remove_bcc_48.tiff0100644000014600001460000006032410506157374021120 0ustar monotonemonotoneII*00<0$(12*R)>I>)hi` ' 'Adobe Photoshop 7.02006:09:25 00:51:07 adobe:docid:photoshop:041b321f-4c60-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:50:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:50:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:50:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:50:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:50:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:50:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:50:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:50:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:50:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMY00remove_bcc_48.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 00JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I)n!eKCeIkkIψka Sp n!UQhD[Z;JG3'E"ŕN=A.@yŕ?+ l5Zov^?K5{m[m,x?uKs}fkNuUz~mQoo~[:X膺m֏}[(8gwҫcv#jStu Fp.ʩ$gD` #Qu$:&Szuv%\ߴռ!W|r,:v״;G rpYts]W챿eDcy^"YDÄ$=]9q/w-%&Jk}~ܟx;+0aⲍ-q~ϧb5}t˱Hnn8!i'AEP 7yrJ%q{Rxc?sōgW^/Kzn>`IJcF9^ܹ}W۽ncOKz5ȍ6v7|8";Wv>%r!.hs'(00{Xc/8BIM!UAdobe PhotoshopAdobe Photoshop 7.0 ''&lXNMK,++zHGF(('vHHG)('vHHG)('vHHG)('vHGF)('vHGF))(vHGF*))vHGF*))vHGF@??MLKMLJKJIusqQQO@@>AA@ggfkjhBBABA@PON*))vHGF433rro333A@?``^999ihfrqo@??_^];;:*))vHGF666cba[ZY:99DCC~{*))vHGF898\[ZlkiQPOWVU??>¿<;;*))vHGF434543665nmkrqoNNLjihXWVÿ*))vGGF010hgf`^]432YXVCCA~|jig211665llj~AA@VUT*))vGGFedchgfcbamlk|{xVUS^^[aa^VVUyxv*))vGGF*))vGGE*))vGGE*))vGGEigB@6676GFus*))vGGEIH  _\*))vGGE매..*))vGGE벯  *))vIIG54JI+**w@@?~ʒ&&%s%7666666666666666666666646tA$2>AAAAHJ^^^^T80000SEw[*OxmV:&^5zj6/Q:{DTSBZ/ !%" 00GNUMail/Resources/Icons/remove_cc_32.tiff0100644000014600001460000004560410506157374020753 0ustar monotonemonotoneII*  V; (12*R)>I'hiXK ' 'Adobe Photoshop 7.02006:09:25 00:52:05 adobe:docid:photoshop:66c1dfd9-4c60-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:51:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:51:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:51:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:51:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:51:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:51:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:51:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:51:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:51:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMW remove_cc_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM  ` oJFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?߶2`5?G&3׺&]x ,{m`0P=?S7~b[w'ɨ;6<1s\cC`1gD+ml۾5-MHVqs[70t>jt}Ȩ9nuN%ńڵJ={e);~MihCN,k]M%iusC͎?oW׋u+ElݎV潍{,v}Vz?Pۍo=enry=ڳW8?\?9c8BIM!UAdobe PhotoshopAdobe Photoshop 7.02 6 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6.`_]~aa_kih|{yqpn{zxedbVUScb``_^hhf^^\hfdihfwv98>=섂봱! ,+'&|zyʇLJLJLJLJLJLJLJLJLJLjLjLjLjljMM[Zdji"*(99::0(77779-YO*PLq2JGS #AF3  GNUMail/Resources/Icons/remove_cc_48.tiff0100644000014600001460000006021410506157374020754 0ustar monotonemonotoneII*00^<0$(12*R)>I(hi`` ' 'Adobe Photoshop 7.02006:09:25 00:52:03 adobe:docid:photoshop:66c1dfda-4c60-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:51:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:51:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:51:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:51:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:51:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:51:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:51:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:51:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:51:28Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMW00remove_cc_48.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 00xJFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I)n!eKCeIkkIψka Sp n!UQhD[Z;JG3'E"ŕN=A.@y6/ࠗeۙmu6bﲳ5I6./ɿ2oʲ0:9kw~n} Mg h.3zGJyLOZk Y0!)HcI.(y'C2ZG OH.uLپeAԯc5ɰ r`IJcF9^ܹ}W۽ncOKz5ȍ6v7|8";Wv>%r!.hs'(00{Xc/8BIM!UAdobe PhotoshopAdobe Photoshop 7.0 ''&lXNMK,++zHGF(('vHHG)('vHHG)('vHHG)('vHGF)('vHGF))(vHGF*))vHGF*))vHGFmljBA@@?>MLKIHGA@?DCBwvu*))vHGFhhf;:9edb665988utr100zyw*))vHGFA@@vutxwuDDB*))vHGFÿ<;;a`_MMK*))vHGFIHF_^]VWU<;:¾``_*))vGGF444hge}CCBLLJFEDPON__]222*))vGGF`_]TSQusr¿qpnTSQedb*))vGGF*))vGGE*))vGGE*))vGGEigB@6676GFus*))vGGEIH  _\*))vGGE매..*))vGGE벯  *))vIIG54JI+**w@@?~ʒ&&%s%7666666666666666666666646tA$2>AAAAHJ^^^^T80000SEw[*OxmV:&^5zj6/Q:{DTSBZ/ !%" 00GNUMail/Resources/Icons/reply_32.tiff0100644000014600001460000004442010506157374020137 0ustar monotonemonotoneII*  8 (12*R)>I|%hiH ' 'Adobe Photoshop 7.02006:09:25 00:53:23 adobe:docid:photoshop:8852e30d-4c60-11db-8c81-d26e35c2cbb3 8BIM%8BIMM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T01:46:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T01:46:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T01:46:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T01:46:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T01:46:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:52:35Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:52:35Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2000-07-28T22:57:04Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T01:46:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T01:46:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMO reply_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM  ` hJFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?쾴h5 r*i»ctbSfVEm/u'Vwun.K \ocwLY:Y1unȝ @#êM>`[+~.Kcs_sv3cXR߭lkf.CNK0VwY.3v^}-oy:CNu96`bmm7R ͘jC]Z+xf+nٴ>:Ra?>]AM\,*qw jc̸R{KUMhɗ䛋?>]R2H]\a8BIM!UAdobe PhotoshopAdobe Photoshop 7.0+ e'9+8O 0(9T^rAMc(9T^r`iz#1I-#&%%%%%" S #4O[nir_hzGReFPeEPeDPdCOcCNbBMaAL`?K_=I^0=S%8 :#1NYmiqenfoiriririririririqhqhqenS^p(4I W$3PZoksbk|^gx\fx\fx\fx\fx]fx]fx]fx]fx]fx]fx]gx`i{ir]gy)5J ,u:F^enNXkCNcBLaCMbCMbCMbCMbCMbCMbCMbCMbCMbCNbCMbBMaEPeZdvQ[n*~+D1=TGZ^eq!EDC!EDC!DDC¾!DDC!DDC!DDC!DDC!DDC!DDC!JJI"(('rDžDžDžDžDžDžDžDždždždždždždžLJLjLjljljljNJNJNjNjnjnjǍ~|  GNUMail/Resources/Icons/reply_48.tiff0100644000014600001460000006020010506157374020140 0ustar monotonemonotoneII*00T<0$(12*R)>I(hiT` ' 'Adobe Photoshop 7.02006:09:25 00:53:16 adobe:docid:photoshop:8852e30e-4c60-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:52:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:52:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:52:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:52:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:52:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:52:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:52:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:52:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:52:36Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMO00 reply_48.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 00uJFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?7i{kZ s䒸<\'WK}tc@%ΏJ?GSg;IցnA_zݙSMtq$Tz%}#cOٯ{_[Tf=ǜL}DH?ʍKW,}_F0-p,7c6%ѽQF꾲}WdyM/J YCr OQ=]XM -dSUX^py7rwIum\no:3" m[k9gOnȭ[&IջG:-ck RW>'BzNCI@'.s2ócgDoONUM7unh$uխN5Maelc͵Ak@1We ʵ1~=59*.?M\5 ˴:y-{c۸4xLM SMFf`3I34LYOqe_/=s?_c$=2 ioc9R8BIM!UAdobe PhotoshopAdobe Photoshop 7.0 f) 2%+D!.F)#'4L4?U!.G)(&3KWas\fw"0Io#'3LU_rjr@K`+E F"(5MW`rirWas -E)@"1/1000000001,"| <"(5NXatgpen[ew=I^I]=H]=H]=H]=H]=H]=H]=H]=H]=H]=H]=H]=H]=H]=H]=H]=H]=H]=H]=H]=H]=H]=H]>I^7CX)5L$2L j 4DDB^dk%2I*C%2I0I[??>Ŀ~"/G+D!.F!.F -E#0GQYh^eq\cp]cp\cp\cp]cp]cp^dq]dqBK],D -E!.F!.F!.F!.F!.F%>sx??=¿y} .F+D!.F -E ,Eciu+D!-E!.F!.F!.F)B1=Q@?>pt~ -E+C!.F%?{/:O+C!.F!.F)B%1I@@?z~#0G*C#I&hih> ' 'Adobe Photoshop 7.02006:09:25 09:32:01 adobe:docid:photoshop:022e8d37-4ca8-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:30:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:30:07Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMUretrieve_16.tiffnullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 0JFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?3zwz[,-(9#솬XkĸG[Pg3#$'qMAm\ܫ~nTl`HpB[`c:u8BIM!UAdobe PhotoshopAdobe Photoshop 7.0=h.b,b-b-b-b-b-b-b-b-b-b-ˈj. @4(W>x_/{a.{`.z`-z_-z_-z_-z_-z_-|a.y`0? \$ ]AA! b3'gFG' lF6oFºH.#s@0xJ~~ƛJ5(}E5ǛJɝJ=/`IƚHýɾ˟JG6`IǛIʝJP=iP!ėEÿƙEZEh2VۭTۭUݭPz|ޭPܭU۬UXgQ'~YҖ͒ΒΑXADAXΑΒ͒֙qbFxNɃŀŁŀO9<9OŀŁŀ͆o^>rAmkkkܮUޫMݫNޫMܮUkkkomY3x<_]]]dfffd]]]ax_/7*x_I!\G \G \G \G\G\G\G\G\G \G \G `J","sGNUMail/Resources/Icons/retrieve_32.tiff0100644000014600001460000004452010506157374020632 0ustar monotonemonotoneII*  "9 (12*R)>I%hi$I ' 'Adobe Photoshop 7.02006:09:25 09:30:44 adobe:docid:photoshop:022e8d38-4ca8-11db-8c81-d26e35c2cbb3 8BIM%8BIMM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:38:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:38:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:38:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:38:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:38:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:30:08Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:30:08Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2000-07-28T22:57:04Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:38:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2002-08-15T22:38:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMU retrieve_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM  ` JFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?:~U=_sN4 ]bc|!YXne}cטmB 疻ʇP 8~~i]LmQa"y% $gK$j$ Im֓{$Oҏ6,NL]=p#_UY?X+nnֶ`b8 Kd8ez y e:k]]21{S9{sZH oo7`_|zض?o+6R͋91|BD#qq08dcw}-=l A;uR]:Lʬ. ~R]Cű" <bњrjMKH5R>xٔFRx#"c8BIM!UAdobe PhotoshopAdobe Photoshop 7.0.,233333333333333333331,/cK ڨG—DкŨĥĦŦŧŦŦŧƧƧƨƨǨǨǨǨξʲ–A߬IH7vZ&Ai;ƺf6ʛEXDd*@zd:Žzb5ĘDbKq/ƴ@zd:žyb4×DpV$v1ζ@~f;ʿĴ|c4ėDx\' 7ؼAr=ȼIJn6ɛDe* =ὒAv>ʾþ¯r8ɛDq0 ŗA뾓Aw?¶ɿs9ɛEy3ΞCBz@ſ}rut}synǼw:ʜE8ӢEB|Aûshtpdg[QCźy;ʜE=(֤FÖBA|q|ujlaWIù|;˜DƘA 2ܩHŘCAÿÿÿÿƷ}q{ujlaWI̼Žƾƿǿ<̝EΞC! DFFFFF<h~u{ujlaYMi>====>3iwv{ujlaXMjy4=====>?ϠFץF5NKɜE?@@@@;m{q_kZx{ujla\PkYn[m{;@@@@@РFܩG > YLȚE?@@@@;jei_zqzujlaaSWKUJph;@@@@@ΟFI G! bMC{<~=~=>>>{4{b`wk|tima]Q[Nfa7>>=~=~=|=ɛEJQ,!lN̝E@AAAABB4hYvjvkeZ]Om[6BBAAAAAѡFK [3'wJEEEEEEEFB6kZxltj[Mp\7–BFEEEEEEEG  e9.leeeeeefcC@5iafVlb7?Geeeeeeeei&n?7(ޣИИИИИИљ͓F?B::??I8)hi` ' 'Adobe Photoshop 7.02006:09:25 09:30:28 adobe:docid:photoshop:022e8d39-4ca8-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:40Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:30:08Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:30:08Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:53:41Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMU00retrieve_48.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 00JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?>,阢48$89=W**խ`ovB pC|Yg{01AMcQС'4f#A![6L?BS܊BV@kdG<)W]ϗ JYlz^5͡^4z.?#7oV=hZ w>T@.$kY_RF?~J9Ȍ qxW\&Hګ~C,kcWEUc-;XƉ>y_;.sD~t6K.ϫeәm-l1 IU9U+ 5 ^x!ϐ nXddT 8[G,kqp~8huzu26_$|B?k+?\r#A\>5k<(g93bG[#uzzgچ'4+g*܆>Pf9ip㔆 WSmV}n=]H6Vׂx#% B5W*qcŜӋ>Vր}?4aVV&ey}9htj!K9=^9{c*:w8BIM!UAdobe PhotoshopAdobe Photoshop 7.0lS#w[&x\&uZ'jS)hR*hS*hS*hR*hR*hR*hR*hR*hR*hR*hR*hR*hR)hR)hR)hR)hR)hR)hR)hR)hR)hR)hR)hR)hR)hR)gQ)hR)gQ)kT(x['x[&w['XC $KL͞D̠NӲ˜DϠFN•@-٦FǙE|c3j?³za3h6ުI> 4ۨGǙE{b3j?ya3g6ݪIƘ@  =JƙE|c3j?{b4h6ܪIΞD&EKƙD|c3j?û{b4h6ܩIӢE/NLŘD{b3i?ǿxa3g6ܩIإG 8 WLǙEf4m@~d4k7ݪI٧G A  _MʜEp6vAn6u9ݪIݩH J+!hNʜEr7xB¿p7w:ܩIJR0%qNʜEs8xCǾq8x;ܩIJ[4(zO˜Eu8zC»üýľžſÿƼr8z;ܩIK d9,O̝Fw9|D¾ÿŻu9{<ܩIK! mO<M̝Fy:}D{qaUi]fYeXdWbU]PyoĹw9|<ܩHL* v^HM͞Fz:~C`T~synshnceXZM^R·x9}<ۨHM3'gO!MΟF|;DƿbVy|qujpegZ[NaUz:=ۨHN9+pV%MΟF~;DļbVy|qujpegZ\NaU|:=ۨHN>/h,LϠF;EbVy|qujpegZ\NaT;=ܩHNJ8}5KРF=A{aTz|qujpegZ\O`Rk=?ܩHM\G 9KРF?>5455555552v:aS||qujpegZ\O_Pz<255~5~4~4~4~4~47?@ܩHMiQ"=KѡF??????????;8AbT||qujpefZ[O_QD8;?????????@ܩHMrX&ƗBKҡG@@@@@@@@?@{[y^{LcT||qujpefZ[O_QOz_{[@?@@@@@@@AܩHLb) ϞDJҡG@@@@@@@@>KbR]QcS]P}|qujpegZ]P\OcSYMbSK>@@@@@@@AܩHKt1%ѠDJҡF?@@@@@@@?=jWlbwqe|qujpegZ_R[NYMUJp\@?@@@@@@@@ܩHK7-գFJСF?????????:o=gVyo|qujpegZ`S[NWLgUvA{6j;hV|rttipegZ^QWLgVp>8>=======~=>ۨHKė@ =߬HJΟF==========>|6p9jWyo|rgpfaUWKiWv<8>========~=>ۨHJ͝C&FKIުIۨHۨHۨHۨHۨHۨHۨHۨHۨHۨH߫IC7s=iW{qvkeYXKhVz@9ƙEުIۨHۨHۨHۨHۨHۨHۨHۨHۨHۨH߫IJҡE/OIGߪGGGGGGGGGGGHB@8sGњӠӟӟӟӟӟӟӟӟӟӟաϜ G_ӗΔ͓͓͓͓͓͓͓͓͓͓ϖăB?AAA=9?AAA>FˏΔ͓͓͓͓͓͓͓͓͓͓ϕʐ H_Ώʌɋɋɋɋɋɋɋɋɋɋˎ}A>@@@AAA@@@>ELJʌɋɋɋɋɋɋɋɋɋɋˍƉ H_̈ȅDŽDŽDŽDŽDŽDŽDŽDŽDŽDŽɆw@y;|<|<|<|<|=|<|<|<|I&hi`> ' 'Adobe Photoshop 7.02006:09:25 00:56:11 adobe:docid:photoshop:f1fe51f7-4c60-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMM send_16.tiffnullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 0JFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?seffl ;A Y[jsnۿ16}6;/̆7:l3'FkG9ŮHZY)8BIM!UAdobe PhotoshopAdobe Photoshop 7.0 ?D***hxxx###c 8RRR,,,nyyy =XXX000r::: 6&zzz ?zzzRRR999O,,,444###biii666,777Xz\ GNUMail/Resources/Icons/send_32.tiff0100644000014600001460000004545010506157374017741 0ustar monotonemonotoneII*  : (12*R)>I'hiJ ' 'Adobe Photoshop 7.02006:09:25 00:56:04 adobe:docid:photoshop:f1fe51f8-4c60-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:14Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:14Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:14Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:14Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:14Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:14Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:14Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:14Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:14Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMM send_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM ; ` JFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?T{o%7cK3:j͹mƏ6σjoIM˳hY2 u ְ )?w(Wĵof7>> UzzzxxxH'''h ;PPPvvv"""a}}}222w HHHrrr ;C\fff ---q `ggg***|||AAA999QQQ޹B \\\ƚ8EEE ^^^ΐ,,,r =nnn[[[ҋppp !!!b000t QQQ͕&&&r-EEE›C ~!!!z  $')+++++*)'%!  !#$$$$#!    GNUMail/Resources/Icons/send_48.tiff0100644000014600001460000005774410506157374017761 0ustar monotonemonotoneII*00;0$(12*R)>IN(hi_ ' 'Adobe Photoshop 7.02006:09:25 00:55:57 adobe:docid:photoshop:f1fe51f9-4c60-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:55:15Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMM00 send_48.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 00JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TQ}n{GL$I }C2Jm;h`vI%6:5 .'|nvn>ꅏgH,%n6.H'u kOC5tm4~=-J+G$-'ү mʿP-s+\YRӁ-큇Vt~gJiEUP2bē'^Y}^cu o"?rG~c?GswU},?6n)3npg>JCuwfOGGIOUu{974}-_&-v8}JEIc,?&ùnud9PFY?":Rw-II/`;P‘DIO8BIM!UAdobe PhotoshopAdobe Photoshop 7.0 K(((r444tɵYYY EMMM###b\{{{ttt*3JJJvvv{{{\gggxxxqqq000u+...ufffwww @JjjjHHH'''jEEEsss ?Zorrr'''000s000 T B0>>>&&&s _BBBUUU333xMMMBBB$CCCI??? <6VVV888]Q***q+++PPPykkkAWWW5   $&)++,--------,,+*)&#  #&'())*******))(&%#    00GNUMail/Resources/Icons/show_all_headers_32.tiff0100644000014600001460000004556410506157374022321 0ustar monotonemonotoneII*  H; (12*R)>I'hiHK ' 'Adobe Photoshop 7.02006:09:25 00:57:13 adobe:docid:photoshop:140f3d2b-4c61-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:56:23Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:56:23Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:56:23Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:56:23Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:56:23Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:56:23Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:56:23Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:56:23Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:56:23Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMe show_all_headers_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM p ` TJFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?;z;o~>5[QC0.u5C^01`lVwֵ˚c7:዗Mۼ=]oc_Y͒1^͕bZ68?v$U_ggA7(OoY,0%+2U4k߻?I%?3F\#ًKic-M$ɭLޅhIO7zGGau!S߫([8$~o56wG}Bי]c"p湻\dSH2+lB8BIM!UAdobe PhotoshopAdobe Photoshop 7.0  +))).//9:;:<>=**)222삃EEE>=rrq333]``LLLBBB]]\)))=>>RTU`cd^`aWXX@?@:::555,,+ihg222(()''')))+++OONvus??>{zy{{y+,, !!utsZZYCBC !!:::&&&///} )))jih *-,,,,,,,,,,,,,,,,&l---%,,,,,* > o  GNUMail/Resources/Icons/show_all_headers_48.tiff0100644000014600001460000006172010506157374022320 0ustar monotonemonotoneII*00?0$4<(1D2XR>l I(icCreated with The GIMP ' 'Adobe Photoshop 7.02006:09:25 00:57:06 adobe:docid:photoshop:140f3d2c-4c61-11db-8c81-d26e35c2cbb3 Created with The GIMP xCreated with The GIMP8BIM!xCreated with The GIMP8BIM%hrum~hD8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:56:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:56:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:56:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:56:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:56:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:56:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:56:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:56:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:56:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMe00show_all_headers_48.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 800JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?T˒nC)/aZ=*j7 {KkgU{z-Wzh?5+n87$IbtQݒ33朦437_oA%6U7G},^}M{ 62~c5ȀMOX5}{2Lw]VS\q> o]\]'uJ96&CM} Y_Qa.m l`#cZ<:~v[mݒ.cyf6O5VWVYg.Zɣ-[2Rؗp?#A~uz%ABc@}JD?*ϕs|6\IIγr|qȫ$g"}Pfb9[Z2X 5$sO,'b}'ޟvnoéx p`A$\?w*I)8BIM!UAdobe PhotoshopAdobe Photoshop 7.0    """[244)++)))+,,466678 !!^  P***&&&99:[]^wyy|}~iiiHHH<<<)**B  /.-umml)()AAABBB..-hgfЧХѥѥѥѥѥѥѥѥѥѥѥѥѥѥѥѥѥѥѥѥџўѢѡѡѡѣ`PON;;:PRQ=>>CCB+**y988`__333===]\\)('v&&&555PPP(('vEEE<<>>QQQAAA*))v&DDD766twwdggKKKDCC*))v(((EEE>??PPP:::wvt*))v''&RSS555OQQUVVWVVDDD*))vHHG999666>>>kmnx{|QQQVVV555IIIZZZ*))vJJI[[Z223888444=>>UWWacd`ccTVWKLLOOOOOO222..-""#!!"edc*))vHGF``_***777;;;999999???GGGKKK445kjiAA@%%%nmm*))vGGFRRR+++"""###"##DDCxwvRRR*))vGGFyywssq~}{@@@*))vGGF777*))vGGE~000ssr*))vGGE)))[ZY*))vGGE)))HHH*))vGGE%%&ABB*))vGGE"""###9::rrq*))vGGE%%% 556YXX*))vIIG%%%777FFF+**w@@?&&& 445@@@&&%r%7666666666666666666666666660\!!!000999,666666667'D!!!)))3700GNUMail/Resources/Icons/sort_down.tiff0100644000014600001460000004223410506157374020517 0ustar monotonemonotoneMM*C4<(1D2XR>l I,·iDpCreated with The GIMP ' 'Adobe Photoshop 7.02006:09:03 19:34:15 adobe:docid:photoshop:b1b02524-371d-11db-90cd-9ba53958bbf8 Created with The GIMP xCreated with The GIMP8BIM!xCreated with The GIMP8BIM%hrum~hD8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMSsort_right.tiffnullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM Y=JFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?t{߱NݯSIxrI)8BIM!UAdobe PhotoshopAdobe Photoshop 7.08BIMmopt4TargetSettings interlacedboolTrnsboolMttCObjc NativeQuadGrn longBl longRd long fileFormatenum FileFormatPNG24transparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong noMatteColorbool8BIM-msetnullVersionlongxxyooq===|~~~~::;v WWWWWW l I,·iDtCreated with The GIMP ' 'Adobe Photoshop 7.02006:09:03 19:33:52 adobe:docid:photoshop:b1b02524-371d-11db-90cd-9ba53958bbf8 Created with The GIMP xCreated with The GIMP8BIM!xCreated with The GIMP8BIM%hrum~hD8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMSsort_right.tiffnullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM [?JFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?X?w}77o?$8BIM!UAdobe PhotoshopAdobe Photoshop 7.08BIMmopt4TargetSettings interlacedboolTrnsboolMttCObjc NativeQuadGrn longBl longRd long fileFormatenum FileFormatPNG24transparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong noMatteColorbool8BIM-msetnullVersionlongJJKIIJ 666nxxyvvw001bAC134458458134>AC  0lt}lt} 0I'hiK ' 'Adobe Photoshop 7.02006:09:25 08:56:48 adobe:docid:photoshop:3e0f4902-4ca3-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:55:58Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:55:58Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:55:58Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:55:58Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:55:58Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:55:58Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:55:58Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:55:58Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:55:58Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMK raw_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM J ` .JFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?۝WsZ`;ݗC1ii$~c5Mmub78~Vd0ݜ]RSwܜ.Ƿu%[>Ā8d65-Uqzli69f!'kG@An$+7+z݇{t8Z&Jv>KKqW:dԾ >1`ޛ>D6]k~y֤8BIM!UAdobe PhotoshopAdobe Photoshop 7.0" 8 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 50)# ___!!!`eee+++qddd~~000xcccqppyyy888}bbb>>> Clkk) :SRP655|*XWVG}%%$c DCBfecihfihfihfihfihfihfihfihfhhfhhfhhfhhfhhfhgfjji{yxʇLJLJLJLJLJLJLJLJLJLjLjLjLjljljljljNJNJNjNjNjnjnjnjǚ<;:  GNUMail/Resources/Icons/raw_48.tiff0100644000014600001460000006007410506157374017607 0ustar monotonemonotoneII*00<0$(12*R)>I(hi` ' 'Adobe Photoshop 7.02006:09:25 08:56:54 adobe:docid:photoshop:3e0f4903-4ca3-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:55:58Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:55:58Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:55:58Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:55:58Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:55:58Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:55:58Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:55:58Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:55:58Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T13:55:58Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMK00 raw_48.tiff00nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM R006JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ? 9{^ȉ=w?rcYCIktmUĹť%]W~ssp ۀ1I)w\¦̚q6f +Cw};Yհn2.7<@ =ö~c vF>VJzgO[V;c>C==42(sP.2A K{&pG! [Ccu]f$Yͬw~ɏ'Վ[üYKLOϖ*>g".AMv aĂ\D-ULƋ/{;:i#+X}ӵՍ@>KeUhgr*zA _svŲS={~-E) ~ϖ''FÜ='[9xOo&?AL Ou>L 6ϽQ$kJoT7{>Dyk}ni.ql k8BIM!UAdobe PhotoshopAdobe Photoshop 7.0 &&&izzzssskkkaaaKKKEEE444tMMM*GGG-GGG/GGGggg]\\}}}2GGGxwwsrr||| :GGGxwwvuulkkVUUeeeAFFFIOOOb QQPN"!!u, ]FEDyyw0L//.t&RQP =sqpW::9$IHF1HGF0HGF0HGF0HGF0HGF0HGF}||~~|{{}||0HGF0HGF0HGF0HGF0HGF0HGF0HGF0GGF0GGF0GGF0GGE0GGE0GGE0GGE0GGE0GGE0HHF0EED08YXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXV 00GNUMail/Resources/Icons/sort_left.tiff0100644000014600001460000004223410506157374020502 0ustar monotonemonotoneMM*C4<(1D2XR>l I,·iDpCreated with The GIMP ' 'Adobe Photoshop 7.02006:09:03 19:33:07 adobe:docid:photoshop:b1b02524-371d-11db-90cd-9ba53958bbf8 Created with The GIMP xCreated with The GIMP8BIM!xCreated with The GIMP8BIM%hrum~hD8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-04T00:31:48Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMSsort_right.tiffnullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM Z>JFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ??X?;۵IxI)8BIM!UAdobe PhotoshopAdobe Photoshop 7.08BIMmopt4TargetSettings interlacedboolTrnsboolMttCObjc NativeQuadGrn longBl longRd long fileFormatenum FileFormatPNG24transparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong noMatteColorbool8BIM-msetnullVersionlong ::;vooq5WWW~~ 001bfffˁIIJvvw뀀JJKxxy666nhhjҁI (hitK ' 'Adobe Photoshop 7.02006:09:25 00:34:42 adobe:docid:photoshop:90dd1faa-4c5d-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM[ AddressBook_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM  ` JFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?iOxX[fH=k'ẉU%}=G\~?QmQ]S]ϲ9ѷk>)!B$V;z69-\?j}Fzʯ=i?<c\Qk*܌ZXs}qYE,A-KVHj_?sFޗ.qo v9TgOT=ݻ³YN~=M}O~=N}:K{5Fx4Ew,=q]k!mLKJ$&-IVSaHW:K{3Dv,>rYg nLKJ$'.JXTbGV=M}3Ew->rZh!nLKJ$'.LYVcIWAAAyyxXXVbcg=M}4Ew1Cw6Be ALKJ%'.M[WeKYklo LLLRRR???(((>N}5Fx1Cw;Fi 9LKJ%(.O\YfLZpqv "!"?O~6Gx/@tZi!nLKJ&(/Q^ZhN\,,- fgk@P~6Gy0AtWfnLKJ&(/R_\iO^UVXDEGrsw@P7Hy1BtYh!oKKJ&(/Ta]jQ_wx|TUWHHJCCDLMO\\_BR9Iz7Hz0<]9KKJ')/Vb_kR` 665BS:J{6GyBOs CKKJ')0Wd`mTblmo@@?222$$$!!!('':::FFEDT;K{4EvZh nKKJ'*0YfbnUc`ad,++???AAAAAAA@@;;;---EUN}=N+6T'KKJ)+1]jfrbnbnepbngtlxiugserdpbo_mR`P]LZCSBQ:K{TaZKKJ)+1_kgsdp`m]j[iXgWdUbSaQ_O]L[JXGWEUDTDSCR:K{ZioKKJ)+1aliuercp`n_l]j[hYfWdTaR`P_M]L[JYHVEUDTI (hitK ' 'Adobe Photoshop 7.02006:09:25 00:34:42 adobe:docid:photoshop:90dd1faa-4c5d-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:33:24Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM[ AddressBook_32.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM  ` JFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?iOxX[fH=k'ẉU%}=G\~?QmQ]S]ϲ9ѷk>)!B$V;z69-\?j}Fzʯ=i?<c\Qk*܌ZXs}qYE,A-KVHj_?sFޗ.qo v9TgOT=ݻ³YN~=M}O~=N}:K{5Fx4Ew,=q]k!mLKJ$&-IVSaHW:K{3Dv,>rYg nLKJ$'.JXTbGV=M}3Ew->rZh!nLKJ$'.LYVcIWAAAyyxXXVbcg=M}4Ew1Cw6Be ALKJ%'.M[WeKYklo LLLRRR???(((>N}5Fx1Cw;Fi 9LKJ%(.O\YfLZpqv "!"?O~6Gx/@tZi!nLKJ&(/Q^ZhN\,,- fgk@P~6Gy0AtWfnLKJ&(/R_\iO^UVXDEGrsw@P7Hy1BtYh!oKKJ&(/Ta]jQ_wx|TUWHHJCCDLMO\\_BR9Iz7Hz0<]9KKJ')/Vb_kR` 665BS:J{6GyBOs CKKJ')0Wd`mTblmo@@?222$$$!!!('':::FFEDT;K{4EvZh nKKJ'*0YfbnUc`ad,++???AAAAAAA@@;;;---EUN}=N+6T'KKJ)+1]jfrbnbnepbngtlxiugserdpbo_mR`P]LZCSBQ:K{TaZKKJ)+1_kgsdp`m]j[iXgWdUbSaQ_O]L[JXGWEUDTDSCR:K{ZioKKJ)+1aliuercp`n_l]j[hYfWdTaR`P_M]L[JYHVEUDT adobe:docid:photoshop:2dc9e753-4caa-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM5nullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM f JJFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TUl8Ϭ |o=)O2?"e խ式O/v͠<͡9Fy-osѤmG3}4\}Nۣoomk,7i~~Gw8D׋Xk3!d$ \e΍-w]ϵcgXm u6$1U50}u˾AE%7ՍKXpMRr+biwoMU:n\KYIMߵcgV7f?QeUZd7څmxVɛPy0=¦5ݷHw*tՍRe>i,m۶iqy$љk1◷sYm17+%uUhV)ȪHx K^j#$$hJ$nU rXI +s=8sVβ3%;CE1hYiƚHmM#+_ GyFN;^@k]Ի&濮h+c<FkǥT!w{$O5.U}RS kİK^qcknSl~5ܻu`BR*_/w6ی:mcrOVgR}V?4 rf^>a?k[swCw )T~_?mc1+t>j1{"KZEUϻg5V'Jcj m|:l uP)NE-}ǡKkiq;SaP1 }j ;_oQW[ L?KI w7?UwU]Eh,587q1[MM )`m`=-MV>3O۪}}{` شG*}r=gR/>.6wrtPU%ܥ~[|8KTt[--PM%ۣ̔-J[̡ĪKC ;m0YW 1U^ڲ}y66֗}!xۃH 5WZzC k^pq}0qum3~_k}?RKےG m||P%%p nyB\J-)Lj^ȴ+iVUi{cjo׌o_ء w4tV5NLw4nVIi<1'Uqxap3? 0|]#+Ńճ`[_Y*5>Ws؄D,HdƸ;/ɀikX~-kX"RۑwǡOLsX9UYA n:7%%O}[(sΫ&}c@PQhnT~}_kȦg\{+ޯIeqøC~RT>g]{'gGu\q>JUuWr7Y {t=bR *EYcxc?[g3/aE۱bjӪ645z=JHT4Z{eh4TI%)$IJI$RI$I%)$IJI$RI$8BIM!UAdobe PhotoshopAdobe Photoshop 7.0GNUMail/Resources/Icons/recent-flag.tiff0100644000014600001460000003747410506157374020702 0ustar monotonemonotoneII*  = D4<(1D2XR>l I&i?Created with The GIMP ' 'Adobe Photoshop 7.02006:09:25 00:50:11 adobe:docid:photoshop:041b3219-4c60-11db-8c81-d26e35c2cbb3 Created with The GIMP xCreated with The GIMP8BIM!xCreated with The GIMP8BIM%hrum~hD8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:49:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:49:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:49:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:49:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:49:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:49:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:49:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:49:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:49:56Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMU recent-flag.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM o SJFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?PΪX)N2}ߢN]I-BEGӃ~=R|?8BIM!UAdobe PhotoshopAdobe Photoshop 7.0/(``YMwgYM/(``/(``yh|k|k|kyh/(``YM|k|k|k|k|kYMwg|k|k|k|k|kwgYM|k|k|k|k|kYM/(``yh|k|k|kyh/(``/(``YMwgYM/(``  GNUMail/Resources/Icons/flagged-flag.tiff0100644000014600001460000003746010506157374021006 0ustar monotonemonotoneII*  = D4<(1D2XR>l I&i?Created with The GIMP ' 'Adobe Photoshop 7.02006:09:25 00:43:28 adobe:docid:photoshop:1ccc4249-4c5f-11db-8c81-d26e35c2cbb3 Created with The GIMP xCreated with The GIMP8BIM!xCreated with The GIMP8BIM%hrum~hD8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:43:03Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMW flagged-flag.tiff nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM ` DJFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?,Xs/#32MB66QE54SJ87UF43TE43TB62Q?44N<33K811G3..B/,,=+**8(((2!!!,'!   ')((54.-AA40NN60ZY42ed62op82xs73y84;5=8@:?9<896<9>;>:<8{98t85o96}f75v^54nX66fK44]B33T900J1..?)))3)  $)&&4:,*GM-+Yc.+lt2+}80?6:3CϼF?лC<йC<ιC=ͷC=ʳC<ǯA=é@@?<;77}44p10c/.zU/0kF11\700J,**: +  $$$-1,+?I-+Vc'"n|70MEH@VNb[bVi`e[i`j`f\aWbVXPRIJCIBG@IBGAF?FAGBFBFCGD߹IFڵFD԰B@Χ?=ř>:54y11b,.Q+-vF23a600L'&&6%  "!!,8++FW-(bo)"{.%A:c[pe|uڑۊ݂{|xro{yXTD?C>KHB@962.2..,-,-+-*1/212213688<8<6;7<6=49߁39x27h-2[(.N(.E.1q:23V-++>' '""1IWl%/%2$:-G=NC^Wkcle[VTMD=4-2+/(,'*%)%(%%#'%)'(%($*&+(+)-.+/28283:4:5=|8Bx:Dt9Cl7Ck8Ei:F`5@R,4F%,;&+w5,.U'&&4  !=&$Mj (-3#8(B49+?42'\RJDgaNIKFD<2,C<93*%0+)%+*($�..)'%-.)%+,.2,-3849489A7?=H>JCPHVHUJW|JRp8@Z+2A&4*-X$$$-  *G64`)6):(I:F8KdXLCLD]URMleJEMFUN& YTF>XU:3"0..("!76-)&(35-.29-0163<06}6@{7BBNn9ECOz@LCOx;Fp7@Y-3LBDt+++= +F<;c'6)REF7ZMOCVI8,_VB:qhLFRO[U40B>@=*'JH52!@>0/'&$"&&&())+.-1/2175;/4294:7>|9C}8AGSm=H{ERs=Iz>Iy7@r7A_2;QJK|,,,@ &>::[|' #Ӫ! #+'-)*(+("/,'%%"$"!# "# %$##~!#{"%t!%o!'o#)p&+m'.q)0v,3y08}6>>HEPGRO[U`NZOYDL@Hw>Ea;@KHGs)))9222J\LJ    ("4/74?=ECIHKKMNOORSPREGEHFIDHDIINKQOVQXV]W_X_QYDJ6<~4;>>fd65 ͟   "!+(4196?=?<>;<9<91-0,33368<9=8=:A?FCKFMBJAH;B9?:A:A6=4;}06}/5}-319y8DvHSt]]A@?w...C ---B@??ut-)Ϭ  "+(1/422/0/1/,((#)&*))*-/)+~*.|).,03849{.4y).-29ABLHRJVHR9A,222z'.v.9|^aFCB333P' #111IIFEyiNJ}<9~   #!63/,+)*($#zung`ZTNNMOSY"a 'f#*k&.o)2o)2t*3u(/u&-|28KOnn܂nkKIH666X$$$- &222M<<<}lKI ۺ$, 5*KBpeu}rtindkbg]^VJF+'#wmfa[[$\ )^$.c(0f'0b 'g%i&.cPR=<<777[$$$1 ###/;::[x,( ̽$#;'L:cVwwUPQJLD>6-#'#!!{se!_#_$^"a%a'-[EG;::l(((8...CZ?=&#C5O>2#/(<8DC[YTTLKOMNMHH/1)(..97x44`!"PI^Vfrgem p!$o%*r&*k&,a#*l*1d'.f*1pBGbWW555R#  $$$1A@@j~50+>1,"65:9LMklaaGGBB??><+*HET48BIQIKMaIG+,DCGDHO U"Z%c#+p)2`%-h)0X$+d.3_-2A99...B $666Vq94 06">0D9]WmhrntsYW=:SMqKN32Z|snjg#g &o*1s/7{/7j&.f"(V!)^)1T'+<78s'''6000Gh20 ,02!6&LA^Vje~|v_ZVRF>\UyNM@;A=412/-*%!  $$%%z'+g(.p.6u08s'-o 'q"'e'.R$(844` ( (((7S<:u%,-09,9.<1+`5 80' "   !   " !*Bgp(/b'/n.6v09}(-u &w"'g+-Q!$833` ( &&&4Q?=r$-/2">1KB?44&*<        % s'._'0i/7w19).w"'y"&i+.S"%845` ( (((2O=:p%./.B5QH;14&-"I             D o'.c(0k/8v1:y(.v!&y"&l+.R"%944_' (((2N<:n%-0/t8:n03k&(""]"f!w#',22:4<+1z!%{%(f%,O$'766Z$  !!!,H=~5>,0#'|$(b!'M$'645X# +D42e ! $#$%%#"$, iGG}v($UPb!z+25>{4=+0"&{$'c"*N&)655X# +E64e $"$$##"#)lKJތ)#XQb!{,36?{5>+0}!&w#'c#*N')644W" *D76d  #! !""!#"'nMK唎)"[Se!~-46?{6?+1{!'v"(d#*R.0655W" *D76d  #! """ " &oNM蜔("_Vd"|.57A{6?,1|"'x#'c!&]89655W" *D76d  "! #"  "'oML꜓&`Wd"{.47@6?,1{"(*,i#*V14545V" *D76d  ! ""!!"%nMK뜒$`Yd#x-46@6?,1|"(~(+k$*P',544V! *E65d  "  !"!"!$oNK뜑$cY e$z.57@~6?+1|"(u%+j$)Q&*544V! *D65d  "  ""!!!#nMKĿꔊ dX d %{.67?6>+0|#(t%*f#T*-877U! *D87d  !  !""  !nKK萅dV c#z-46?6?+0{#)u&,g$R,/844T  *D98c  !    " $pKK萇!cUd${,36?5>*0{$)v&-h!&R23544S )D:9b    " #iAB獅!dUd$},37>~6?+1}#(x(0l$(Q13333P )C:9a     !!jDFɾ菈aUh#{-46>6?+1}#'x)-i %R34333O )C;:a      " pEE튀aUm$v-35>6>)/}"'x(-i$M-/444N 'A:9_    !  80ngڂ{㌄߅}vxooekai`_WTJ)%bQb%s-47>~6?)/}"&w',g#M00222M 'A::^    !".*7441('$#! }xu u%&455612`N`#r-4z6@|6?*/~!%x'+fO03222M &@>>]~    kfP F B D H A ?g#'p"%h[Pe#t-4{7@{6?)-}!$x',f!P36222M &@>>]~    oc c ] S N F K cZ\XQf"y/6y6@r2:(-|#w%*g P47333M &@>>]}  ؿ  {qlk`haXf"y/6o4>^%-(,|"w%*hO37222L &@>>]} ٿ     +&3-}zymce"x/6s6?r19(-z!w&+iO57222K &@::]}  ٿ       8161 vhh z/6x8B5>(,y w$*hP58222K &A>>]}       A:F?KB4.61' !om#|-4{7@5<',uw$)iP89111J %@;;\| ؿ         G?UP"3.ll |qs$x+3y6@~4=&+wz$)iQ79000H %?::[{  ؿ          &2+IDAIA3/=5!!}v:871$%%&+}{$'gQ@@///F $?::[zؾ          ( ,% ! }"""{y}| yrD=#%.4*/{#(hQ;?///E $>66[z ؽ        LD<4*$D=%0./0t~ "s" ++*,9?6;&,ty#(h M66///E $=55[z  ؽ       JBbXaX3-& !!#u}"+14:07{#)gr#)gM78000D $?;:[y ؽ        C;PH7411.---89=>15{|!".25<07v$*]l$*hM89000D $?::[y ؽ       " +')%)(%&z#$*,04x$(v'(/58?18t#)Yk#*iL55000D $?;:[z ؼ      z u  --057>18z$)\o#)hM77000D $>77[y  ׼                 ')278>16{%)`t&+hL88000D $=66Zy  ׼      !#  } "149?15z$(iw$)eL::...C $<76Yxֻ    2*("&!   } 149?04|#&qz'+eM>>---B#;::Wwչ        ~169>/2#%tz'+cN??---A";87Vuӹ         ""269=/2#&x|'*cM@@,,,@!=;;UxӸ         "!    $z~! 479?/3#%w~),eNBB,,,? 966Ssҹ        4.A;-(/)   ~tw139?/2"$u{'+eMAB+++>987Srҷ              qr./9?.2!#vw%(dMBB~+++>844Sq Ҹ              138=.2!"wv'+cNCC~,,,> 884Ts Һ     !     !**&)047=.2 !tv&*dOEE~+++="=;;Uxӹ       #-)1-1-86! *'($0.# >>PS68 #047=.1!st%(dPFF~+++= #;:6Wx չ      $ (# !!}py048=-/ uq"%cPGF~+++= $=99Yy ֺ           {p~137=,/ tt#&cPFF~+++= %?==[{ ׺     |w046=,. rt%)cPFF~+++= %?=<[| ع     ws026<+-pt#&eTII~+++= %@>=\| غ       zw025;+-zpx%'eTII~+++=  %@==\ ع $$*#5/ ! /149),|px%'cTHH~+++= 'A>>^~ ع '/( &"#("#"94!  " $%/138'){q|#%bRJJ,,,? +C@@d ۼ.*%!'!$&!  #$w%'.126()y t|!"cTKK000D&&&5GEDp# ")$"%!!&!##(#'#*'%"*(,-/169/216&(w w"#gVKK333O///F[XX0+ ",(% #!+'+(0.,(-*)%1032-.|+.')-038')v y##olYY999b$$$-  &;;;[^GF80ҹ    ~rfx+.37*-s y! |fhJKK|,,,@(((3;<=n-&,:5 }ul{(+05x)+n|T4<:AG444S" +++=669| E+/+( $#zr),t05s(+o" U !334b + 000D%%,  "#(4q>B0+$"| !*-y-2+-y#%&&p "  $,567l###0 000F()0  ##.;C8Bv:<;:53.,+%# "##&x&+h&,Z+0="*<%.   '124o)))3 ///E:?B   $(#2+6ERR^on\[POD@52*('#& ##"| !$$w%&f#&W!'='$'** %  124o(((2 000DBFJ+" &%.9mwzw]boOO]C>KA5@<2=71=,*6*%0/(2%",$"")$5%7%6%6+*.5779l###0 ...CCGJ!'3(" - -&%  *.18LOTX]`U]e:CN&/>$2+%"        "#)9"(8&)8#2%!!26>889i""". ...CDHK '4"  %"0#+8*2?7@J'-5(,5 +           $)$3$3"'6"0)!&29>677g!!!, ...BDGK#)6" #"$* (66G(/<'-:!-# '&%%(&)-!/"&4!/"/%#/48@567d + ...BDHL!'4# .08D&-8%2'5%4-*%)6-1<&*5%*6".!-*%!!#)))(+&4%2$1%,;%4 .%3$)7#(4',78=E677b * ...BFJM"(5$ *#0#0-4A+4A ./6A;BK#)7"'3+3?18D$*6!&1".')"!* ,")6%,;")7"/&!(6%,:*2A).=)/=,2@)1<-3?9>E677a ( ...BDIM'*7& & (7!.&4!0 .!)6%,9%,:&-9@HROV\6>F?GO(/;'/;%,9,) &4)1?)1?$2(0?09H2:J4.5A:?F677a (  ...BDHM'*7+  $1$,:!)8'/>*2A%4%->,4E%4.,&5$2#)6#/'!-#(5.5D)/>-6E+3B2DS4=L4L:DR5?N318G4CI677^' ---AFJN'+9-'""#+:*3A%,;%4%,<+2?/6BCKU+2>,4@5?L2;I28DAJWHRa6?N5=L'.;$+9-#2/7G2GW9AQ7@O=GW9BR6>M49HFS>HVFR`ALZ?JY@KY9AO7@N(/>@IXOWeKUdMYhQ^lTapXesOZh@IWGQa?G445W",,,@CHN'/:!1, "#+#3#)9(.?)0A/7G1:J3;J7?N7AO@KZBMZ9AO8AO6@M?HVLUcNXfGQ`CN\CN]>GV3;K5?O>HXAL\DO_BM\CM\>GV:BQ4:FD444T ---AAFI.6@%3,*&.%5"*:)0@,4D1:K2N4>N4?N6@O9CR9ES:DS9DR8BQ9CRIY@K[BL]DN^CL]AKZBL[DM]DM]>GV;BR39FM5?O7BQ:ET:FT8CR8BQ:ETIX>IX?J[BL]CM]EN^DN^CM\EO_FO_FO^?HW:AP39F>AF444S///EHMQ/6B!'6.+'*&5#,<(0@-5F19J3IW?IY>IX>HYBL\BL\CL\CL]DM]DM]EN_EN]EM]?GV:AQ5;E?BH778U!000DCIM47C '6.))-&5$-;(0@.6F1;L5?O4?N6@P8CR?EI|.7B &4 /(+!0%3%,<)1A-6F2IXBL[BL[@JZBK\CL\CM\DN]GQ`IQ`IRcHRbFP_=FU6>M/5A7IX>IX>IW@IXALZAL[AKZ@L[CM]DM]EN^CM]DO^EO_EO^FQ`GQaFO_@IX:CR3:G)/:.27...G !123L ') - +!.$4&6$+;(0A-6G2GU5 %/$&*j&&&5 $$$-*+.X%+!0"1"2")9)1B.7H3JX?JY@KZAL\BM[CM\EO]DN]FP`EO^DO^EP_GP_FQ`DM]CN]AJ[=FV8?N+2?#.!}(()I! $$$0"#&W !(,!/ (7%-=)2C.8I1HW>JX?KYAM[BM\AL[CN]EP^DN^EP_EP_GQ`GQ`CM\BM[BL[@IYIY>IW>JX@KYBL[@KZBLZAK[AL[@KY?IW@HV=FS8@N18D%,6$l++,G) #,,,<"X u *%1$,9*3A0:H3=N8AO8BP:ER=FU>HW?IX?IW?IW?HW>HV>HV=FU !%Wn*"(2%-8+3?.6B2:E5>I6?L7@L8AM8@M8AL7@M6?K8@L3;F/6A,3>'.8!'1")$'l*+.U)))= (  $%%&5***F"%(X %h$w'#, &0#)3&-6&-6'.8'.8(/9%,6#)3!(1 (0#+|!%*o$'+a&'*Q&&'B'''3#  $""#/''(9'()C()+M'(+T&*+Z"$(]$'+`$'+`%'+`$%(]**0Z+-/U)*,N**+F'()='''3)    !$' ( ( (&$!  @ (R/Users/chneeb/tmp/GNUMail.tiffHHGNUMail/Resources/Icons/restart_32.tiff0100644000014600001460000001040610424672357020467 0ustar monotonemonotoneII* '''-===B...5sssy{{{||wxnoqs./Dg  HIL]`cglkpmrnsnssxW\8  rrsy~~335Zkoototototot }'  PPQ_^`kp!+++ginotototototqvWXa$ +mnxmqotmr{|"gfjotototototot> RRSlaeotototns{| ]ehototototototot_atnnvnsototototns./=dUilototototototot$ >fhotototototx|#oMikpuuyotototototy}&_ ///^bfototototpuIKj?Bbctgi9:Clpototototot>@V===ihlototototrw/0D4 379D !!!fjotototototPRo"<<A`C .rilototototototnsgjxyxyxytu}\^sdhnsototototottx . R$rvotototototototnsnsnsnsnsototototototuy.0LV3p=>KqvototototototototototototototototrwILj 3EABSrwototototototototototototototsxJMkE "O/0=rvototototototototototototuy7:TO"  %O RTktwpuototototototputxWYx%O%  "En 11BY\xkmptqukm]_~35I  oE"  0Nl   lN0 ,>NZ``ZN>, !!    @(R/tmp/restart_32.tifHHGNUMail/Resources/Icons/stop_32.tiff0100644000014600001460000001040410424672357017766 0ustar monotonemonotoneII*UKK^U66cOOЂVLLg &IIؔJ;;^ RRCCCCςSKKi &IICCCCԉvWW RRCCCCCCCC͂OGGh 'FFCCCCCCCC 9FFCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCɂSKKz ,IICCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCĈTLLm'IICCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC͂TKKl 'FFCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC͂OGGh )FFCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC΂TKKl f^^yIICCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCvv '.gUUCCCCCCCCCCCCCCCCCCCCCCIIj::TTCCCCCCCCCCCCCCCCCCCCCCEEDD%R ?UUCCCCCCCCCCCCCCCCCCHHi22 ®TTCCCCCCCCCCCCCCCCCCCCBB%*3c+UUCCCCCCCCCCCCCCIIo11 UUCCCCCCCCCCCCCCEEBBK" Cr UUCCCCCCCCCCHHp11fR[| UUCCCCCCCCCCEEDD]2%HuPPCCCCCCIIr22\8'/Lw TTCCCCCCEEDDb7 %Iu UUCCHHs22Z3'Jw TTCCCCBBb8 %HrVVw11Y2 &Iu UUBB`8 %CcxR1%FgX6  3?:)"7D@-      @(R/tmp/stop_32.tifHHGNUMail/Resources/Icons/GNUMail.icns0100644000014600001460000013153210424672357017743 0ustar monotonemonotoneicnsZics#His32Ƽ¾yqnkƀѬnmwĺvƷܢsùxġw׿Ծɯîv-dM6##&+4,=?9KGZ̐fSi҂h,A'$'?Y8%6&+)/v=&$1p"%%{B(&-"$.!2%3$!&"=!#259?6HICUPd_Qi҂c%>'(02T5+% 3$r=.&q)xC0 1 3 43 (.C& )3@CHN-FVYT^_ns8mkLkkU* S |}|yvspn0@@ )| @fICN#????il32 І ĵ Ĺ} ׮ž~wsp ϖrjb i`hrs Y\Pnr{ Ǧr{ ˱yw~ §ѿn m ݖn êm Ƥ|kdk ŶzxƆ įĆ x̆ ľdž úņ üІ ø̆ І ö t+gO0E A:[ "('%./m #2578:@;t 278=BD?t 2:>@CG=r:-9?A?;>̣oVN\ẅ ϯ|oip{І M^aD3+).0:O o)862/295>8 QGR5 !$*(\݅ ,`UN*!" *BW>7")* ,7 +) ,+))!+) *$$LM="), '!z9$, & |D#- %xA$- #_3&, "(- ! /)( ,9$.& ) ,& +% )' !*$ņ '#̆ " (#† ( y6N4!"H (JAa )0/%",67p *:>@ADJD{ ':ABGLNIx (T[>.'&06DZ i"44106?=IC KAL2!(03`݅ [RJ''* 6Q=5!01 ) 20  #"2/ FI;"02  t9,2  vB,3  u@,3  [3.3  02  )/-  %4#/+  %0+  .)  +(  -%ņ  *$̆ +$† * ~8L3* Q 6QK( !+*g 7=<20;EEz 9HKNORZU &7KPQV\^X #7LTWY\`VU-FUYZYVṚkfq̈l8mk   P{e8 U<rVQ45&1&0%.$,#,"+ )('''%#%&;&gRmXkQkMkHlH6& 'z˰y%   27/ ich#H??????????????????????????????????????????ih32 3 ԪĿĹ||Ǿ׉ϣ·}rlhiӊҼȿtynfhj^zʋܥtnfzSH@=:Wtpx̋@QNF>nxq|̋Ƽnwz̋ιnqyy̋§zv|Мsgϡ}d}΢߃eΠބe}Νڃe}ʨւcɲ{g`sdc}~̋vlciv}̋ǿ|n|¸ſæ|zĿovĻ~÷|}¹{özzý{}¸y~Ӌ*LɾygS<RpYOD7#I  0+  .I "-+)"%,,=L "-/,.*'*6>;FO ,4889:<@B@ADECK̋P'38<@@BCEH?B'3:>ADEFGB/b>"*7=@A@??B׌ fTRZf}ݎ z}|jYMB<<=BEHVp4DR_S=5.'()-039AA$03@@:94.-1628DF9׉7,54..28<8<;5[Ϟ/ CkbK(&#J}ӊj/FszZ?F3$ Kŋ":`{^tY&,$M3B9!&,$Ő 4? (-$R̋".1,-%#)-$Ű"+*%4+%'.%T̋")%"AF551%/%W&$ %m!!1%X!#"*$ 2#` "!($!2&^"!'#"2%V $#"2%f-""1%b!##0"f̋$. i̋17#"0l96%/*s<5&.-q %)&'-t(/w%/$%/!)-! "(,$+# &)$#"%&&','w$(XӋ-!)1-#'CLtoG( #P)97%#3P')41.%)-43BU%*57461.1@HCNW!4;@@BBEJLJFPY.9=B?ELKLLJRȋ\/:@DFFHKMOLT̋X!/y68:`̤ Ը3 !:D@26:5364,5/7&0)-0(144=:=d-Ը3#*%%+/C+,522AH65'$/20:>97=;:?b,Ҹ5 -5/1/2-+.*+2B:0'0795CNMVE=@:;@`Ƥ,һ1$097>>FA?@97(@OKMQTXO@G<;@fҿ,ҷ5 #()/1377@B986?LNGCC>35>ADBC@?Adж,ҷ; #)-010112651635:;9:@BDCABDD@hն,Զ;$#(,13457::88:<9<>>?BCEDCEFFA?@lն"ֵ?%#(-135689:<=<<>?>>BBCCDDEA?BiжַD$$(.15468<<;B@=A`ж,ܽA%%)-2568:BB@BCCDGIIHF?;@A@CDECDEEFGFB=:8\תЫ8% $(-2589;<=?ABDDEEFEFHGCA;54[Ԫ*$).368:=>?@ABCEDFEDEGFFEDA?6/3̥)i#'+037<>>?ABACEDEEGGEDEDB@9.'ʇ""(,357;;=?@BDBD CFECA8*6Ԫӻ\*,/389<=?ABCDCD EFEC>/0xߪͬc.$)36;>??B?>=?CPc}ת÷|qbddghw̬ р ж̪̀߹̶̪̪#Ŀж ʼwqoqmhbhnppnqx{ڿĥqffi]efZUZYXTUUWXWXY^a_]]`ft0̺_lmww}uwwqji_XPOMOMLNOOPSWVTTUQRTaԪʣzYRbw[GEMD;440/349<<;=>=?BMlЪ(ػI8>C@DOTcoo]VD62/,*)(%')((*++--24567;= AGGCBUƠ5Є(<9;=FϪ5Δ,4<=KHKJdLL]RlJMU&YFX:"0."7-&3-2-13067B;ECGACF5ɟ>AWHZOV8_BqLR[4B@*J5!@0'$&&)+-/15/24798G=E?@:@H5ШB,$  #+-*+"/'%$!#"#%#!"!!#&'),06>EGOUNOFDHV֪5ӳ(47?EIKMORPEEFDDIKOQVWXQD64<@DFFA<6Afנ4țY"!+49??><<1033898:?CFBA;9::640//3=UѶ3ӵG"+14201,()*)-)*),34.)-9BHJH9.3+7ӲzL #6/+*$ #&))*(&4QԪ0Ь~n!&,5Kp}tnkg^J+# $('"!,lnض ȨN((%;LcUQL>-'#!! !0lԿ,Ѷ6LR4/+H4IKI+#)%)&3>t̤+ͦc$38>D]mrtY=SK3 *//&$$0:~᪤*׳a%1226L^j|_VF\N@!+..%$%3=ץ*ںt ,./-BPDMediA42-%  $%'(.0'"%0;̥‡+.-099<+  ('.0("%36̥đ*//2>K?4* ''/1)$%37̥̏"+0/.BQ;4-  '(/1(#%38̥+̏"+00/ӿ)Ɉ%('%$%%#"$,Gø}(+54+$'+Aӿɍ'$ ##"#)KΌ),65+#&,Cҿ*Α$%&#!""!#"'Mה)-66+#%,NҿΑ$$&#" " &Nۜ(.76,$&*_ҿ*Α$$%##" "'Mܜ&.76,$.,SҿΑ$$#"!!!"%Mݜ$-66,$,.CпΎ%$% !"!"!$Ǹܜ$.76+$).BжΎ%$%!""!#M۔  .76+%)%Fж)Γ$#$ !"" !Kِ-66+%*(M϶Η$#$ " $Kא!,65*&*+Uն͜##  " #Aˍ!,76+%,-Xݶ)͝##! !!D¸-66+%-*\Ӫ)͠"!! "EƊ-56)$,)RӪ)ʡ"  !  8nxoki_T)-76)$+(UӪ)Ѣ# !".74($! %451-66*#+$XѪ)Ъ$ #"-76)#+%]ѪЪ&    /62(!)%_Ѫ)Ъ"/4%( )$^ڪ)Ъ!+3/61(*&b̥Ф! 86 /85((#c̥Ъ"  AFK46'! -75'(%g̥ Ω!GU"3 +64&(%h̥Ψ&2IAN45% '32&(!n̥)Υ//8FI3=!:7$%&)!x̥ͨ#(, ! "" yD#.*'$s̥͜L<*D%0/ "+*96&('g)͚Jba3&!!+40#(#l̥)ͪ CP71.-8=1!.50$)'n̥)ͨ "+))%#*0$'/81#('h̥)ͪ -071$("l̥ ͟   '281%+#o̥͞!!# 191$)s)ͣ"2(& 190#,!|*Ӫ#  19/#,ҫ& "29/#, б( "!$!49/#/*Ϭ& 4A-/19/"-*ղ( .9.!*ե'  18.!-*Ϫ(! !*&07. +*ұ)#-118!*(0#>P6 07.*ت*Ӫ'$(!!08-'تԩ& 17,(تΰ+  06,*تΰ. 06+( تα. 05+*"ή.$$*5 !/4)*)ѭ,'/ &#(#"9!  "$/3'()ɨ,.%!'$&  #%.2(&*5")"%!&##('*%*,/6/1&&տ+ײB ",%#!++0,-)13-+'-3'&ڪ ЪxD+3*$̤,ȏ:D(0)!BtƤܼs1- $#)0(")Ԥ,ַK*>0$" *-+#&" 7ڤ׶P.8:;5.+# "#&&+"%0wڤ,׵x#6Ro\PD5*'&##" !$%#! $wڤ"ַ*.wĽbO>521*%("$%Eڤ,Զ5  1O]]C/$ )()#Sפ,Զ5"+2@-,   $$'"!UԤԹ8(/-!!&!"*XФ,Թ58-%'%)1**"!&%$,% %++4`̤,Թ6##44 6B)'38*&" ),)"(,2./43=b̤,Թ9(!&! ),,-HV>G//,&11$09:<:?OK33@e̤,Թ9 $,)/2%-4%&$)#!(5/63<;GSDS_D?@Bh̤-Ը:"(&'&'AMJ<>D?>?@CEDDBCFIKIKLNLKLMMIGGmն"ԶF+!%,04:<>?BEFCBEFCGIIJLMNNMOJFGqնֵH,!&,059;`Ԫ*̂$%"%%$+17<@CEHJJKLMMONPOOPPQOPMJG?69̥l"$%%+/4:>BFHJKMMLNPNPPQQO NLHC6-'ʋ#(),05=@BFFHJKKLMNMNNOONOOMIB3=Ԫӻ_%&048=CDGGJKMNMNONMMNOLH86{ߪ#Ͱf5.3XCDUMeEFN T>U3.(!6)(5.906<6@BNGQOTMNO5ɝ12I9MCI,V:hFOU0>='H2>/&"&().127;49:>CASHRKKDKT5Ш7!')((,%""  $##%%')+.038>HPR[`ZYNLP_֪5ӳ"/4=CHKNOSRGHIHINQVX]__YJ<;EJPRPLE=IkנțU )(16=<;99-,36<==AFKMJHB?AA=;655;JdѶӵA(/2/(#&)*/+..0894.2ALRVRA452D3ӲtH !3,)(#"'*.223/-:UԪЬ~l *Beuridb]VF'$).00)(5onض.ȨD':VwwPJD6#!#$$)7oԿ,Ѷ~2=A%(8CYTKMMH1(.74" $**,*106\̤,ŞK&3!59MlaGB?<*E8QMG, "%+2-0-:Et̤+ͦ[$09WhnsW:MN2#&177.*,:@᪤*׳Z!&AVe~vZR>UM<"&376,++9Cץ*ںl 5G*Ņ#$)",4'$' 7(39:-)*6=*Ċ! $!&9910&  $*28:-(*8;*ċ$)# ,/-049;.(+5=Č$ "'*+2::3(""!'2:<1',7B)ʙ 2wjdYSMI("!#2<=1(-3Bӿ)ɚ AоvN&"3>>0),1Cӿ)Ƀ Gĸv$!2>=0(+3Fӿ)ɈJυ#!3?>0(+4Fҿ*ΎK׎"!4??1),4RҿΎ$Mڔ""5A?1)+0aҿΎ!Lړ"4@?1*03Xҿ*Ύ Kے#4@?1*/5Lп*Ό Kّ $5@?1*/4Hж*Ό K׊ %6?>0*.-Kж)Α Kօ #4??0+0.R϶Ε  KՇ$3?>0+11Zն)͙ B˅$3>?1*32[ݶ)͛ F#4>?1)20^Ӫ)͝  EÀ$3>>/)2/VӪ)ʞ 0g{}voea`WJ%%4>?/(1.VӪѢ *41'#  &562#4@?/'0)]ѪЪ '%#4@?-&1,cѪЪ  "6@:-%.*dѪЪ "6>-,$/)eڪ)Ъ   &-"6?9-#0)f̥)Ф   11  6B>,"/'h̥)Ъ   :?B.1 #4@<, .*k̥)Ω   ?P. $3@=+.*l̥Ψ   +DA/5!81%+,%x̥ ͨ    %"r=%4/-)w̥)͜   D4$=.0" +,?;,-,i ͚   BXX- #"1:7).'n̥ ͨ     ;H41--9>5"2<7*/+p̥ͨ    '%(&$,4((5?8)/*h̥)ͨ    -5>8).$l̥͟    )7>6)0$o̥)͛     "4?5(.s͠  *"!   4?4&1!|*Ӫ    6>2%1*ҩ     "6=2&0б    7?3%2*Ϭ   .;() 3?2$1կ"    /?2#.*ե     3=2"1ϣ       *)4=2!0ұ#  )--6 '$. >S8#4=1!.ت*Ӥ    # 4=/ *تԩ   3=/ +تΰ!  4=. /تέ&  2<-+تή&"   2;--)ή&#/  19,-ѭ$ (""4 %18)*)ɨ& *!!$'16) '*,$!!##'"(-1926( 'տ+ײ;( '(.(*%02..)08) &ڪ+Ъv<  .7- #̤ȒC> +5+K~Ƥܼy$6*,5+"'6Ԥ,ַU&6B+!-2-%&$Cڤ׶Z %;B<:3,%#&+,0*.:|ڤ,׵$$(2E^n[O@2(# $&&''$'**% ,|ڤ,ַ:& &9zo]K@==602,$"")5766-Pڤ,ԶD-$--&%*8T`eN>2+%""9882'$'^פ,ԶE&%08?J55+  $)3360)$-_Ԥ,ԹI&#"$*6G[edRIG<:-# '&%%(&)-/4//(8dФԹF' .D8254-*6<56.-*%!!#)(+421;4.397Bl̤,ԹG)!*00AA.AK73?D61.')"!*,6;7/&6:A==B@Km̤,ԹJ+!&7.40.69:9R\FO;;9,)4??2?HJLIO_XABNo̤,ԹJ0"1:8>A4>E4.,526/'-5D>EBKJWbRbmSNOPs̤-ԸM1)""75446MXWILRNINLBMCN9/H@DG>GLKVSTv-ԸM2)"":A;4@LIDWaNL;9-2GKJTWQOWTRUs,ҸN1($$6DNGHEGDAD@AEYRH3XedhlpshWaUW[ZWUVxҿ,ҷN7."#+39?AGJJNOZZOOMVcf`\]VKOX\_\\XWWxж,ҷR70%%,4;ADHJIJJKONHOKNTUSTX]`]^][]YWWv϶ҸV9.*&.5:@DKKNORSSRQRUYZY[]^]Z[]]XXWwն,ԶU;0)&+5;@DKMMOQTTRQTURVXX[]]^^\__^YVVyնֵX<0+'*5<@FJLNPQRTUVTUWYXY\] _]]XWUxжַZ<0))-5;@FLONPRTYXUVY[[\\[\_``a`XUTtжܽZ;2*+03' 1WŮwU4  !M̰X- *`֫t= +c|@ &[s9JΙ^, 3fدwC Bu۷P' #IyܸX-&M}[1/[קl8CʑR# 1j濁B $Vs6Gܫh. ?٥b) :yؤ`( 7uפ`( 4rפ`( 2pף_' 2nף^' 1m֢^' 0m֢]&  0l֡]&  0k֡\&  /kՠ\&  /k՟[%  .jԟZ%  -iӞZ$  ,gӝX# +eӜX# +eҜX# +eҜW" *dқW" *dқW" *dқV" *dҚV! *dњV! *dљU! *dϘT  *cΖS )b̓P )a˒O )aˑN '_ːM '^ʐM &]ʐM &]ʐM &]ɏL &]ɎK &]ȍK &]njJ %\ƋH %[ŊG %[ĈF $[ÇE $[ÇE $[†D $[†D $[†D $[†D $[…D $ZC $Y鿃B#W龂A"V齁@!U轀? S>S~>S~> T~="U~=#W~= $Y~= %[~= %[~= %\~= %\~= '^輀? +dD5pǏOFԢb- &[|@3n̓S" =|٥b+ Dl0Fo3Eo2Dl0Ci. Cޫg, Bݨd+ Bܧb* Bۦa( Bۤa( Bڤ`( A٢^' Aء\& A֞Z$ @՛W"@әU!@җT AҗSCҗSEәU!DәU!>|ΔQ2iG !LѦj5-XҬ}I! 0Wǥ{P),MrȰlG)#WnƼlU=(  $5FXhw|oaQB3#  $/9CMTZ]```]ZUNF=3)   !$'(((&$!   GNUMail/Resources/Icons/folder_16.tiff0100644000014600001460000003720010506157372020255 0ustar monotonemonotoneII*R:(12*R)>I&hiT> ' 'Adobe Photoshop 7.02006:09:25 00:48:21 adobe:docid:photoshop:cb9b9973-4c5f-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:47:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:47:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:47:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:47:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:47:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:47:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:47:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:47:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:47:39Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMSopenFolder.tiffnullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 0oJFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?:\F5EmmZGF X[lvEa?5\\"'zdv68BIM!UAdobe PhotoshopAdobe Photoshop 7.0 766G 򈈈xww {|oO a OF-Wֺ80>Ġ $Ӹ ͦ߻ܷܵ۴۲ڱگگ٭٬۱\sqm˙ԨҤѣСРПϞОϝΜҢtAd_WʑɖȔǒǑǐǐƏƎƏƏʔt\+}`VHƋˆÊɌ;-faS>ΉdždždžȇȇȈɉɊʋ͍͉QmWC&UB%UB%TA%S@%R?%Q?%Q?%Q?%R@&TA&O>#1GNUMail/Resources/Icons/folder_20.tiff0100644000014600001460000004462010506157372020254 0ustar monotonemonotoneII*H     TTTXï¯hhhniiioLLLWNMMYNMMYNNNYNMMYMMNYNNOZ<<=Gbaai÷YTEUNH7F```c̳&! WVV^|RRRXvmVhQPPSWO:KGGGM:3"2AAAH׶˙#==>Cҩݸܶ۵۳ڲڱٰٯٮ٭جثܭDZ{334>̜ӧҥҤѣѢСРППОϝϝԟ_../9ƑʗɖɕȔȓȒȒǑǑǐǐǐ͒wF))*5‰ˆˆ‰ÊƉoX.i 1u迁羂澂澂濂濃濃ˆO;O0VΣeͣeͣe̢fʡfɡfɡgȡgȡgȡhȢiʤi˦j]. =2>@?????????>;3J  Rf@bj(1:r2R)I/folder_20.tiffHHImageMagick 6.2.3 07/19/05 Q16 http://www.imagemagick.org2006:09:25 09:48:42 adobe:docid:photoshop:2dc9e753-4caa-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:13Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM5nullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM f JJFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TUl8Ϭ |o=)O2?"e խ式O/v͠<͡9Fy-osѤmG3}4\}Nۣoomk,7i~~Gw8D׋Xk3!d$ \e΍-w]ϵcgXm u6$1U50}u˾AE%7ՍKXpMRr+biwoMU:n\KYIMߵcgV7f?QeUZd7څmxVɛPy0=¦5ݷHw*tՍRe>i,m۶iqy$љk1◷sYm17+%uUhV)ȪHx K^j#$$hJ$nU rXI +s=8sVβ3%;CE1hYiƚHmM#+_ GyFN;^@k]Ի&濮h+c<FkǥT!w{$O5.U}RS kİK^qcknSl~5ܻu`BR*_/w6ی:mcrOVgR}V?4 rf^>a?k[swCw )T~_?mc1+t>j1{"KZEUϻg5V'Jcj m|:l uP)NE-}ǡKkiq;SaP1 }j ;_oQW[ L?KI w7?UwU]Eh,587q1[MM )`m`=-MV>3O۪}}{` شG*}r=gR/>.6wrtPU%ܥ~[|8KTt[--PM%ۣ̔-J[̡ĪKC ;m0YW 1U^ڲ}y66֗}!xۃH 5WZzC k^pq}0qum3~_k}?RKےG m||P%%p nyB\J-)Lj^ȴ+iVUi{cjo׌o_ء w4tV5NLw4nVIi<1'Uqxap3? 0|]#+Ńճ`[_Y*5>Ws؄D,HdƸ;/ɀikX~-kX"RۑwǡOLsX9UYA n:7%%O}[(sΫ&}c@PQhnT~}_kȦg\{+ޯIeqøC~RT>g]{'gGu\q>JUuWr7Y {t=bR *EYcxc?[g3/aE۱bjӪ645z=JHT4Z{eh4TI%)$IJI$RI$I%)$IJI$RI$8BIM!UAdobe PhotoshopAdobe Photoshop 7.0GNUMail/Resources/Icons/retrieve_12.tiff0100644000014600001460000005312210506157372020624 0ustar monotonemonotoneII*H& ,4(@3'?3'?3'?3'?3'?3'?4(@& - e-q9n9n8n8n8n8n8q9d-  n4úĻŽm3  x8Ĺw8 ;ǻ~;=ǻ<  ">ݸµ= %& )FɦḙsIJѲw̩hF% ,)#-ӳvǂŀƤcTTƤcŀƂҲv)#1)".ЭiuuөZƚFƚFөZuuЭi)"1&-ƜNܮWۭVۭWܮWܮWۭWۭVܮWƜN&0 A3SI8]I8\I8\I8\I8\I8\I8\I8]A3T   J  R@dl(1:t2RI:Nretrieve_12.tiffHHImageMagick 6.2.3 07/19/05 Q16 http://www.imagemagick.org2006:09:25 09:47:58 4294967295 256 256 1 72/1 72/1 2 2005-02-14T21:04:06-06:00 2005-02-15T12:43:10-06:00 2005-02-15T12:43:10-06:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:2dc9e758-4caa-11db-8c81-d26e35c2cbb3 application/vnd.adobe.photoshop 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:18Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:18Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM5nullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM ~JFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TYXm*7Z FS2)|"t#!Ip?XF.C5ϯn%/c:k*$1K]wf>_?/_?/̾{"KMxޤMxޤ/2Uc/;5z5zW?|}$tKtK3/^>_?f5vn_d7Zřwѯ<Zk~?|}~uQsm{g%YZ>8F`WaxdcU-Z/Sq`l5pYۿA۷c?E}^qp1Ydxy^$ 2Ɋ|dxգaڶգLTT_d?U[~~[)6(e[sqf}\&}-bzs_qd7XYׇ<}atW(n88wQ?'Wsd(*J?ht΁\w0}Lj>6oCD?oIX}m}*[/bwoRaOlL_iܦ:O_ԔaOm3L_iܦ:wOO;v}IH?&7 1ѫ]wm sW i[gVwS?o>Cn~~A'kl,1ߺNWC 1i!HmtÅXչގ?\A&I'!>}r Amc7Sw{7'.?v<"Oaʧ~^ޙgw~o,i\;tmơ9tI܉?)5_U}c3C|*qW9X<)oUOw18<ywK]}.-Ŭ e}gk-Ļ<'*|gq$_`J>.kղv:۶L=8uuRܩ?2ʹkn`dP2??%7U)eZ?=F))8rXYޘ"kz.ӟV4:%H6EtΙcfkӳys96/ޯ)%7^KʥOQ?ɱʊ$z:5]"z:?WLeIo3Uu=OK+JW/K|X!t8|oD'Һ, x[i54' ]{V\N&A?g\St(_FD:` 4R,vin? m+/,] s۵p}:P?oEC*zz~A:_gYEAɿa{JJnU{[psd8"4X/oA9,՟w] 18cRIˏ«?+3n13k HXw>zpc8I(Yxq#X+\J1ϛ.I"?濜?UuL\:Ca, p 1UGn}!PS8?Oɛ$Lعa}$s5p+,fi}7YgbeƵ @n'z[/-UgK8aGY}C$`WQqsA[ޱj .K~`yb*he+?~V@2e%Wq2ֽX4 $S;AiǤ֪Z- rK9ϸoƳ%v[}w?U.}PeUem8`]B#צV-F"8f UF}Mb5ԝG$)S5?f XKz6 mYVmw1M> rm/vX0qqш&r Gdcݟ S-N9$*rl*ŗq&qcݟ S$:1$FD@5L= odT8i\Y{6XnwMf>,j.]["C};5Kzw)6Kz\jlrh6rq ʺ/ڜȩRUW2Z-Ľ>#s @G|<}%އ2bȚ[>gNӿ5_W׬{W;@ym}o#]OΝq0%3j ?_{W;@ym}o#]OΝq0%3j ?_{W;@ym}o#]OΝq0%3j ?_{W;@ym}o#]OΝq0%3j ?_{W;@ym}o#]OΝq0%3j ?_{W;@y$:֪aVetVǷB=qq܌x5\S= W 8BIM!UAdobe PhotoshopAdobe Photoshop 7.08BIMmoptHTargetSettingsMttCObjc NativeQuadBl longGrn longRd longTrnsbool addMetadatabool fileFormatenum FileFormatPNG24 interlacedbool noMatteColorbooltransparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong8BIM-msetnullVersionlong8BIMms4wGNUMail/Resources/Icons/retrieve_20.tiff0100644000014600001460000005512210506157372020625 0ustar monotonemonotoneII*H  lR#{x\(v[(v[(v[(v[(v[(v[(v[(v[(v[(v[(v[(v[(x\(kR#} <ٔt:o7o7o7o7o7o7o7o7o7o7o7o7u:; ;nA}[]]]^^^^^^~\|ZnA; ## %;堋ba;" ** +>꩑ed=( 1/$3?ﬓfe?.#87*:Ƙ@ihŗ@5)@>/CʛBggʚA<.IE5KϞCegΞBD4RN<TҠDbdѠDL:[UA]ѠDZ\ѠDS@d_HgۨGɝJơ\ʥ`˦`Ωcͩdɥ_ʞKۨG\FneT2psrqpoãgz{ĤhopprseS2vgY>r̎ʍʍʍʍğ[<==<ğ[ʍʍʍʍ̎gY>yfU5r{zzzyɡU?@@?ɡUyzzz{fU5ydR.rihhhh߱[UUUU߱[hhhhidR.yeP'r[ZZZZ^````^ZZZZ[eP'yE6U|7{7{7{7{7z7z7z7z7z7z7{7{7{7{7|7E6[                J  Rf@dl(1:t2RI:N retrieve_20.tiffHHImageMagick 6.2.3 07/19/05 Q16 http://www.imagemagick.org2006:09:25 09:47:58 4294967295 256 256 1 72/1 72/1 2 2005-02-14T21:04:06-06:00 2005-02-15T12:43:10-06:00 2005-02-15T12:43:10-06:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:2dc9e758-4caa-11db-8c81-d26e35c2cbb3 application/vnd.adobe.photoshop 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:18Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:18Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM5nullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM ~JFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TYXm*7Z FS2)|"t#!Ip?XF.C5ϯn%/c:k*$1K]wf>_?/_?/̾{"KMxޤMxޤ/2Uc/;5z5zW?|}$tKtK3/^>_?f5vn_d7Zřwѯ<Zk~?|}~uQsm{g%YZ>8F`WaxdcU-Z/Sq`l5pYۿA۷c?E}^qp1Ydxy^$ 2Ɋ|dxգaڶգLTT_d?U[~~[)6(e[sqf}\&}-bzs_qd7XYׇ<}atW(n88wQ?'Wsd(*J?ht΁\w0}Lj>6oCD?oIX}m}*[/bwoRaOlL_iܦ:O_ԔaOm3L_iܦ:wOO;v}IH?&7 1ѫ]wm sW i[gVwS?o>Cn~~A'kl,1ߺNWC 1i!HmtÅXչގ?\A&I'!>}r Amc7Sw{7'.?v<"Oaʧ~^ޙgw~o,i\;tmơ9tI܉?)5_U}c3C|*qW9X<)oUOw18<ywK]}.-Ŭ e}gk-Ļ<'*|gq$_`J>.kղv:۶L=8uuRܩ?2ʹkn`dP2??%7U)eZ?=F))8rXYޘ"kz.ӟV4:%H6EtΙcfkӳys96/ޯ)%7^KʥOQ?ɱʊ$z:5]"z:?WLeIo3Uu=OK+JW/K|X!t8|oD'Һ, x[i54' ]{V\N&A?g\St(_FD:` 4R,vin? m+/,] s۵p}:P?oEC*zz~A:_gYEAɿa{JJnU{[psd8"4X/oA9,՟w] 18cRIˏ«?+3n13k HXw>zpc8I(Yxq#X+\J1ϛ.I"?濜?UuL\:Ca, p 1UGn}!PS8?Oɛ$Lعa}$s5p+,fi}7YgbeƵ @n'z[/-UgK8aGY}C$`WQqsA[ޱj .K~`yb*he+?~V@2e%Wq2ֽX4 $S;AiǤ֪Z- rK9ϸoƳ%v[}w?U.}PeUem8`]B#צV-F"8f UF}Mb5ԝG$)S5?f XKz6 mYVmw1M> rm/vX0qqш&r Gdcݟ S-N9$*rl*ŗq&qcݟ S$:1$FD@5L= odT8i\Y{6XnwMf>,j.]["C};5Kzw)6Kz\jlrh6rq ʺ/ڜȩRUW2Z-Ľ>#s @G|<}%އ2bȚ[>gNӿ5_W׬{W;@ym}o#]OΝq0%3j ?_{W;@ym}o#]OΝq0%3j ?_{W;@ym}o#]OΝq0%3j ?_{W;@ym}o#]OΝq0%3j ?_{W;@ym}o#]OΝq0%3j ?_{W;@y$:֪aVetVǷB=qq܌x5\S= W 8BIM!UAdobe PhotoshopAdobe Photoshop 7.08BIMmoptHTargetSettingsMttCObjc NativeQuadBl longGrn longRd longTrnsbool addMetadatabool fileFormatenum FileFormatPNG24 interlacedbool noMatteColorbooltransparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong8BIM-msetnullVersionlong8BIMms4wGNUMail/Resources/Icons/send_20.tiff0100644000014600001460000004573010506157372017735 0ustar monotonemonotoneII*(  5;v"+PX $*ox adobe:docid:photoshop:34101464-4caa-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-06T07:14:05Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM Z8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM$@@08BIM8BIM5nullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM  JFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IJIW~eA,L]Bf3u&эKN%O5I-j߱G2k?azvQWJvI$TI%)$IJI$RI )!w sXrJJ[KpcG.qr mgjŏl>qoua)s?V^G(>eZ^ ,wr͉ggbtKssm7u adobe:docid:photoshop:34101466-4caa-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM5nullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM78BIM ( JFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI1'\~ 噓n<iuT <X+vgH~mneVn_eu*wntEP KUo5ߢOIORrK9U LUPZأGYTd6?7u.>{!J{$y ݃anL0׽I$$I)TI%)&Vgw~:康Zj`gQ]yntWVEvf9u]қW$qRUk+ZV2$r[J9U,בHiv˚ > mkR)3~d^N5cYn%Xi-gYj𞇤Jfk0i.HO;\=HzYX)|ノ\KjdNѩVRI$TI%)rYcmJmV {}K׷__.a}m8"u8!?gDv2X?JhUX&#nyG-gSΥ9Woſk^_F)cSSG#tV]԰sսYdQmdvƥ킚E{kgЮ1'1 IJjeu#c\Efϴ, msec\F;7?1_ʁ$O8s:~k)eHocSl1]C?ޒcI)I$JTI%)b}s_?u-ךii)A:oYOZs-uݕk_M[g?]3ss/ v]ZWOmZM~=eg鎫aGhomޯ[%;zK2qgJZ_̰: }WV&7=Ώԋ&\G}dN0ɴdO:>S}'m_7ULlWߎ_p@X k!ߐJA3lymAK__g]Gl}lrRKo]n߭BaI$RI$TI%)Q_m֯>V*=kMS+C>va =G(?%/ :qz 0G'hj1K%or-54?IOwt]h(f ?~@=RWW Fɪ3^<RRݿ[/E_JWE,[mBWI$RI$TI%)Q_m֯>V,޷k>W9%<eoz֏Q;eoz֏Q;Jo}r7{X?_^/w+gbbJqGS?BXeWȴ3fGc?#RSիoqmB2kWB6^v>.,rJ}m%O :2$$I)TI%, %qo<\Ra=̱cƬ\g ˱nǡC뵗+H]Cώ}`c?n&g}{){-QzؙBM`t\[V~cGc?$7{XpX=س~YvgMc1]NM7۫lT7dzc~fj.xm.=ս c}O^hgHYO 5Z?MuV1coUk 2_渀׳vno%9yX:5hU ou6`>G_ϵ8v[ˏY[q˴$-+Xe?,נ0C@ILI$TI%)WŮ*I)Z. Bw6]e5*E A =vUrǰOA }\sOENܴ!4})qha#C8o#Gk_?u"1揹6В9i%\L]MMD5u,Ʃ4"Jk׎!YI$I%?8BIM!UAdobe PhotoshopAdobe Photoshop 7.0GNUMail/Resources/Icons/trash_16.tiff0100644000014600001460000004073410506157374020133 0ustar monotonemonotoneII*==&(1.2BR*VI 'iA ' 'Adobe Photoshop 7.02006:09:25 01:13:22 adobe:docid:photoshop:9fdcec60-4c5e-11db-8c81-d26e35c2cbb3 = x=8BIM x=8BIM%+ѠUɦL{Z8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:38Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:38Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:38Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:38Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:38Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:13:12Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:13:12Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:38Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T05:38:38Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMQdelete_16.tiffnullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM 0JFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?ub){?V}Z@\Iup#^SZCVum/]9b7b<bdx,;]{mIO8BIM!UAdobe PhotoshopAdobe Photoshop 7.0***.FFFvjjj͋cccIHH)((Jzzzzzzwvvkjj ---m}||ZYYq ؾnnnQQQ555UFFFrrrEEEXXX___ZZZ]\\WWWKJJ433nnnqqqbaaUTTGFF544 nnnfeeIII---qpp{{{YYY:99WWWeddA@@FFFfffFFFLQQQοoooIHH&{zz```O&%%+++(((PGNUMail/Resources/Icons/trash_20.tiff0100644000014600001460000004512210506157372020120 0ustar monotonemonotoneII*H"""!<<<\rrrrrrGGGm999Y! .%%%੨jii%%%2gffqpputtihh *pppxww\\\666*hhhsssYYY@@@...)))WzzzWWW333...Ucccdddjjjqqqiii\\\EEE***<<>>`oooSSS''' :::qppUUU'''m񫫫wvvUUU6YYYˀ鈇rqqIII<= ^v s\?  J  Rf@bj(1:r2R)Ih0delete_20.tiffHHImageMagick 6.2.3 07/19/05 Q16 http://www.imagemagick.org2006:09:25 09:46:11 adobe:docid:photoshop:34101466-4caa-11db-8c81-d26e35c2cbb3 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T14:45:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-23T11:40:51Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM5nullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM78BIM ( JFIFHH Adobe_CMAdobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI1'\~ 噓n<iuT <X+vgH~mneVn_eu*wntEP KUo5ߢOIORrK9U LUPZأGYTd6?7u.>{!J{$y ݃anL0׽I$$I)TI%)&Vgw~:康Zj`gQ]yntWVEvf9u]қW$qRUk+ZV2$r[J9U,בHiv˚ > mkR)3~d^N5cYn%Xi-gYj𞇤Jfk0i.HO;\=HzYX)|ノ\KjdNѩVRI$TI%)rYcmJmV {}K׷__.a}m8"u8!?gDv2X?JhUX&#nyG-gSΥ9Woſk^_F)cSSG#tV]԰sսYdQmdvƥ킚E{kgЮ1'1 IJjeu#c\Efϴ, msec\F;7?1_ʁ$O8s:~k)eHocSl1]C?ޒcI)I$JTI%)b}s_?u-ךii)A:oYOZs-uݕk_M[g?]3ss/ v]ZWOmZM~=eg鎫aGhomޯ[%;zK2qgJZ_̰: }WV&7=Ώԋ&\G}dN0ɴdO:>S}'m_7ULlWߎ_p@X k!ߐJA3lymAK__g]Gl}lrRKo]n߭BaI$RI$TI%)Q_m֯>V*=kMS+C>va =G(?%/ :qz 0G'hj1K%or-54?IOwt]h(f ?~@=RWW Fɪ3^<RRݿ[/E_JWE,[mBWI$RI$TI%)Q_m֯>V,޷k>W9%<eoz֏Q;eoz֏Q;Jo}r7{X?_^/w+gbbJqGS?BXeWȴ3fGc?#RSիoqmB2kWB6^v>.,rJ}m%O :2$$I)TI%, %qo<\Ra=̱cƬ\g ˱nǡC뵗+H]Cώ}`c?n&g}{){-QzؙBM`t\[V~cGc?$7{XpX=س~YvgMc1]NM7۫lT7dzc~fj.xm.=ս c}O^hgHYO 5Z?MuV1coUk 2_渀׳vno%9yX:5hU ou6`>G_ϵ8v[ˏY[q˴$-+Xe?,נ0C@ILI$TI%)WŮ*I)Z. Bw6]e5*E A =vUrǰOA }\sOENܴ!4})qha#C8o#Gk_?u"1揹6В9i%\L]MMD5u,Ʃ4"Jk׎!YI$I%?8BIM!UAdobe PhotoshopAdobe Photoshop 7.0GNUMail/Resources/Icons/headers_32.tiff0100644000014600001460000005372410524045777020431 0ustar monotonemonotoneII*  G (12*R>I-iW ' 'Adobe Photoshop 7.02006:09:25 01:23:25 4294967295 256 256 1 72/1 72/1 2 2005-02-14T21:04:06-06:00 2005-02-15T12:43:10-06:00 2005-02-15T12:43:10-06:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:ee1a31fe-4c63-11db-8c81-d26e35c2cbb3 application/vnd.adobe.photoshop 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:21:30Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:21:30Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@L8BIM8BIM5  nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIMN8BIM p ` TJFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?;z;o~>5[QC0.u5C^01`lVwֵ˚c7:዗Mۼ=]oc_Y͒1^͕bZ68?v$U_ggA7(OoY,0%+2U4k߻?I%?3F\#ًKic-M$ɭLޅhIO7zGGau!S߫([8$~o56wG}Bי]c"p湻\dSH2+lB8BIM!UAdobe PhotoshopAdobe Photoshop 7.08BIMmoptHTargetSettingsMttCObjc NativeQuadBl longGrn longRd longTrnsbool addMetadatabool fileFormatenum FileFormatPNG24 interlacedbool noMatteColorbooltransparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong8BIM-msetnullVersionlong8BIMms4w  +))).//9:;:<>=**)222삃EEE>=rrq333]``LLLBBB]]\)))=>>RTU`cd^`aWXX@?@:::555,,+ihg222(()''')))+++OONvus??>{zy{{y+,, !!utsZZYCBC !!:::&&&///} )))jih *-,,,,,,,,,,,,,,,,&l---%,,,,,* > o  GNUMail/Resources/Icons/headers_48.tiff0100644000014600001460000006623410524045777020440 0ustar monotonemonotoneII*00pH0$(12*R>I.ipl ' 'Adobe Photoshop 7.02006:09:25 01:23:04 4294967295 256 256 1 72/1 72/1 2 2005-02-14T21:04:06-06:00 2005-02-15T12:43:10-06:00 2005-02-15T12:43:10-06:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:ee1a31fe-4c63-11db-8c81-d26e35c2cbb3 application/vnd.adobe.photoshop 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:21:30Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:21:30Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@L8BIM8BIM50000nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIMN8BIM 800JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?T˒nC)/aZ=*j7 {KkgU{z-Wzh?5+n87$IbtQݒ33朦437_oA%6U7G},^}M{ 62~c5ȀMOX5}{2Lw]VS\q> o]\]'uJ96&CM} Y_Qa.m l`#cZ<:~v[mݒ.cyf6O5VWVYg.Zɣ-[2Rؗp?#A~uz%ABc@}JD?*ϕs|6\IIγr|qȫ$g"}Pfb9[Z2X 5$sO,'b}'ޟvnoéx p`A$\?w*I)8BIM!UAdobe PhotoshopAdobe Photoshop 7.08BIMmoptHTargetSettingsMttCObjc NativeQuadBl longGrn longRd longTrnsbool addMetadatabool fileFormatenum FileFormatPNG24 interlacedbool noMatteColorbooltransparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong8BIM-msetnullVersionlong8BIMms4w    """[244)++)))+,,466678 !!^  P***&&&99:[]^wyy|}~iiiHHH<<<)**B  /.-umml)()AAABBB..-hgfЧХѥѥѥѥѥѥѥѥѥѥѥѥѥѥѥѥѥѥѥѥџўѢѡѡѡѣ`PON;;:PRQ=>>CCB+**y988`__333===]\\)('v&&&555PPP(('vEEE<<>>QQQAAA*))v&DDD766twwdggKKKDCC*))v(((EEE>??PPP:::wvt*))v''&RSS555OQQUVVWVVDDD*))vHHG999666>>>kmnx{|QQQVVV555IIIZZZ*))vJJI[[Z223888444=>>UWWacd`ccTVWKLLOOOOOO222..-""#!!"edc*))vHGF``_***777;;;999999???GGGKKK445kjiAA@%%%nmm*))vGGFRRR+++"""###"##DDCxwvRRR*))vGGFyywssq~}{@@@*))vGGF777*))vGGE~000ssr*))vGGE)))[ZY*))vGGE)))HHH*))vGGE%%&ABB*))vGGE"""###9::rrq*))vGGE%%% 556YXX*))vIIG%%%777FFF+**w@@?&&& 445@@@&&%r%7666666666666666666666666660\!!!000999,666666667'D!!!)))3700GNUMail/Resources/Icons/print_32.tiff0100644000014600001460000005366410524045777020155 0ustar monotonemonotoneII*  G (12*R>I-iW ' 'Adobe Photoshop 7.02006:09:25 01:22:32 4294967295 256 256 1 72/1 72/1 2 2005-02-14T21:04:06-06:00 2005-02-15T12:43:10-06:00 2005-02-15T12:43:10-06:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:ee1a31ff-4c63-11db-8c81-d26e35c2cbb3 application/vnd.adobe.photoshop 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:21:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:21:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM5  nullboundsObjcRct1Top longLeftlongBtomlong Rghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong Rghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM Q ` 5JFIFHH Adobe_CMAdobed             "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?>% kshN\T U:VC \͏e=OS0GJz4?ޭ`} #խ ˖O`ަ][ G_UԱaoRSԬ߲nƳIo\Ϯs][Kج}s]@db,$_ )`߮Dǭ+Q۱g(~Io.,&{`k?YfY[붻_t9u_8BIM!UAdobe PhotoshopAdobe Photoshop 7.08BIMmoptHTargetSettingsMttCObjc NativeQuadBl longGrn longRd longTrnsbool addMetadatabool fileFormatenum FileFormatPNG24 interlacedbool noMatteColorbooltransparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong8BIM-msetnullVersionlong8BIMms4w'$$$A((((E((((DNNNccc UUUkjjSSShhhSRRfeeUUUԴeddXXXҨdcc<;;iSRRUTTRRRdddvvv}}}|||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{|||}}}xxxYYYGEEWVVSQQBAAt YXXjii ¿¿! %%%- ¿¿ƿww!!!, 𳰰, 𱮮, 𰭭, 𰭭lkk999999888888888888888888888888888888888888888888888988VUU, 𮫫DDD$$$+++*********************************************'''///,𧤤DDD+,,DDDDDDDDDCCCDDDCCCDDDDDDDDDCCCDDDCCCDDDCCCCCCFFF333///,𝛛???777kkkgggfffggggggfffggggggfffggggggfffhhhffffffnnnHGG,,,0$|zz򎌌DDDQQQhhh::::6pnn~|||zz}}]\\qqqSRR}}|zz~||wuuHJfeeqoomll|zzqppecckjjpnnljjY ZONNXWWSRRtssrqqommRQQWVVTSSe 2UXZ655mkkrppQPPdXU2988nmmlkkYXX'MLLqppmkkuss/0//@??&%%'111KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLDCC/  GNUMail/Resources/Icons/print_48.tiff0100644000014600001460000006621410524045777020157 0ustar monotonemonotoneII*00^H0$(12*R>I.i`l ' 'Adobe Photoshop 7.02006:09:25 01:22:03 4294967295 256 256 1 72/1 72/1 2 2005-02-14T21:04:06-06:00 2005-02-15T12:43:10-06:00 2005-02-15T12:43:10-06:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:ee1a31ff-4c63-11db-8c81-d26e35c2cbb3 application/vnd.adobe.photoshop 8BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:21:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-09-25T06:21:32Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2005-02-15T03:01:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIMHH8BIM&?8BIM Transparency8BIM Transparency8BIMd8BIM8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM50000nullboundsObjcRct1Top longLeftlongBtomlong0Rghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong0Rghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM8BIM8BIM )00 JFIFHH Adobe_CMAdobed            00"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?U]YcAsDH;wHr9 &\Pn?\;>c_ )=a)z#W;Y>k7ޒ,C*6{kZ[GFj\<_װ} )z)c[0$Y#tWljW=5\wΣNuX1))~~u%;o՟ͤxuW?KxuW?IOjzoDkV}VMwwl;{y7jƭ]:J~=H0/xC=VX4lϺձ(ǩk}F48$8BIM!UAdobe PhotoshopAdobe Photoshop 7.08BIMmoptHTargetSettingsMttCObjc NativeQuadBl longGrn longRd longTrnsbool addMetadatabool fileFormatenum FileFormatPNG24 interlacedbool noMatteColorbooltransparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong8BIM-msetnullVersionlong8BIMms4w////S2444X2333W2444W 444^PPP~YZsssuttZuttvuuZtsstttZtsssrrZtssqppZuttpooZxxxqpp 465*433}kjjcbb+++ '556 100Q{yyۋYXXjiimllmllmllmlllllllllllllllllllllkklkklkklllllllllllllllmllmllmllmlllkkONNuttBAAp322PNMM}Ȳ¿ (''2 +++5 ¿y*))5 𻹹fсϺtĶ}'&&5 𴲲%%%5 𳰰%%%5 𰭭%$$5 𰭭%$$5 𰭭XXXMLLNMMMLLMLLMLLMLLMLLMLLMLLMLLMLLMLLMLLMLLMLLMLLMLLMLLMLLMLLMLLMLLMLLMLLMMMNMMNNN|{{%$$5 𰭭XWW"""%%%""" !!!$$$$$$444%$$5 𮫫MMM)))+++........................................................................,,,+++111%%%5𨦦MLL''',,,===<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<;;;;;;<<<;;;<<<<<<;;;<<<<<<>>>444(((0005𣡡JJJ%%%333UUURRRQQQRRRQQQQQQRRRPPPQQQQQQRRRRRRQQQQQQRRRRRRQQQQQQRRRQQQQQQQQQQQQWVVDDD&&&/// 5𜙙GGG"##???sssllllllllllllmmmmmmlllllllllmmmkkkkkkkkkllllllmmmkkkmmmmmmjjjkkkkkkttt[[[%%%///{yy:#~~򓐐KKK'''OOO|||www+**9::zyyB 0xvv󈆆[ZZ544ggg:::JJJ{zzL?omm}{{{yy{yy{yy}}nmm@??LKK]\\zxx{yy{yy|zzxvv X Pfddsqqqooqooomm~~LKK`__iggommqooqoorppnll f$`_^^jiihgghggcbbWVVpookiihgggffhggihhfee s )gMMMWWWTTTTTTMMM]\\|{{edd[ZZSSSTTTVVVSSSx#!Iinmo|kii|yycaa^]] smmhI &'&+FrqqnmmgffYXXh2''%  6}{{eddnmmZXXj >][[uttZYY'&&~ Mywwdcccaaxvv+++ 5ONN[ fܦݣܣܣܣܣܣܣܣܣܣܣܣܣܣܣܣܣܣܤܥܥܥܤܲEDD +355555555555555555555555/ 00GNUMail/Resources/Goodies/0040755000014600001460000000000010424672357016145 5ustar monotonemonotoneGNUMail/Resources/Goodies/Welcome0100644000014600001460000000270010505707146017452 0ustar monotonemonotoneFrom - Date: Sun, 24 Sep 2006 15:49:44 -0400 Subject: Welcome! Bienvenue! Message-ID: <1234567890abcdefghijklmnopqrstuvxyz> MIME-Version: 1.0 (Generated by Pantomime) From: Ludovic Marcotte To: new-gnumail-user Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="iso-8859-1" User-Agent: GNUMail [ Welcome to GNUMail! ] Congratulations! You've installed the application successfully. Note that you are currently using a pre-release of GNUMail. Feedback, comments or suggestions are highly welcome. Please visit the official website of the application for details on mailing lists, FAQ and other stuff: http://www.collaboration-world.com/gnumail/ Finally, you can also look at the GNUMail User Guide here: http://gnustep.made-it.com/Guides/GNUmail.html Thanks a lot for using GNUMail! Ludovic Marcotte [ Bienvenue =E0 GNUMail! ] Bravo! Vous avez install=E9 l'application avec succ=E8s! Notez que vous utilisez pr=E9sentement une version b=EAta de GNUMail. Les commentaires ou les suggestions sont les bienvenues. S'il vous plait, visitez le site officiel de l'application pour de plus amples d=E9tails sur les listes de diffusion, la foire aux questions et autres: http://www.collaboration-world.com/gnumail/ Finalement, vous pouvez regarder le guide de l'utilisateur de GNUMail =E0 l'adresse suivante: http://gnustep.made-it.com/Guides/GNUmail.html Merci beaucoup d'utiliser GNUMail! Ludovic Marcotte GNUMail/ScriptingInfo.plist0100644000014600001460000000065310424672357016436 0ustar monotonemonotone{ /* STScriptingInfoClass = GNUMailScriptingInfo; */ /* Uncomment following line to iclude GNUMail scripting environment. (not yet implemented) */ /* STSCriptingEnvironment = GNUMail; */ STClasses = ( AddressBook, BccRecipient, CcRecipient, InternetAddress, MessageComposition, ToRecipient ); STObjects = { }; } GNUMail/GNUMail.xcodeproj/0040755000014600001460000000000010432177361016024 5ustar monotonemonotoneGNUMail/GNUMail.xcodeproj/project.pbxproj0100644000014600001460000110730710601706270021101 0ustar monotonemonotone// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 42; objects = { /* Begin PBXApplicationTarget section */ 29B97326FDCFA39411CA2CEA /* GNUMail */ = { isa = PBXApplicationTarget; buildConfigurationList = 827707EC0A13F3D90009F1A9 /* Build configuration list for PBXApplicationTarget "GNUMail" */; buildPhases = ( 29B97327FDCFA39411CA2CEA /* Headers */, 29B97328FDCFA39411CA2CEA /* Resources */, 29B9732BFDCFA39411CA2CEA /* Sources */, 29B9732DFDCFA39411CA2CEA /* Frameworks */, F59B4C8702909B7901A80205 /* CopyFiles */, F588414E024986D601A80205 /* CopyFiles */, 82E5FAF60B74C8D7005B155C /* CopyFiles */, ); dependencies = ( F5BC733802F8A3CC01000002 /* PBXTargetDependency */, F5BC733A02F8A3CC01000002 /* PBXTargetDependency */, F5BC733B02F8A3CC01000002 /* PBXTargetDependency */, F5BC733C02F8A3CC01000002 /* PBXTargetDependency */, F5BC733E02F8A3CC01000002 /* PBXTargetDependency */, F5BC733F02F8A3CC01000002 /* PBXTargetDependency */, F5BC734002F8A3CC01000002 /* PBXTargetDependency */, F5BC734102F8A3CC01000002 /* PBXTargetDependency */, 43376E1603C623F60085F876 /* PBXTargetDependency */, 43376E3803C627140085F876 /* PBXTargetDependency */, 43974D550411792000442E8B /* PBXTargetDependency */, 43974D7104117BB800442E8B /* PBXTargetDependency */, 43974D8704117DFB00442E8B /* PBXTargetDependency */, 439CDE3B05153D050025822F /* PBXTargetDependency */, 4360B2E30542198E0029C389 /* PBXTargetDependency */, ); name = GNUMail; productName = GNUMail; productReference = 17587328FF379C6511CA2CBB /* GNUMail.app */; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable GNUMail CFBundleGetInfoString 1.2.0 CFBundleIconFile GNUMail.icns CFBundleIdentifier com.collaboration-world.GNUMail CFBundleInfoDictionaryVersion 6.0 CFBundleName GNUMail CFBundlePackageType APPL CFBundleShortVersionString 1.2.0 CFBundleSignature GNUM CFBundleVersion 1.2.0 NSAppleScriptEnabled YES NSMainNibFile MainMenu NSPrincipalClass NSApplication "; }; /* End PBXApplicationTarget section */ /* Begin PBXBuildFile section */ 1058C7A3FEA54F0111CA2CBB /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; 43376E1703C623F60085F876 /* PGP.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 43376E1503C623F60085F876 /* PGP.bundle */; }; 43376E1803C624010085F876 /* PGPController.m in Sources */ = {isa = PBXBuildFile; fileRef = F533894E02F8A00801000002 /* PGPController.m */; }; 43376E1A03C624020085F876 /* PGPViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F533895002F8A00801000002 /* PGPViewController.m */; }; 43376E1B03C624020085F876 /* PGPController.h in Headers */ = {isa = PBXBuildFile; fileRef = F533895202F8A00801000002 /* PGPController.h */; }; 43376E1D03C624030085F876 /* PGPViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = F533895402F8A00801000002 /* PGPViewController.h */; }; 43376E1E03C624050085F876 /* pgp-mail.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F533895802F8A00801000002 /* pgp-mail.tiff */; }; 43376E2103C6241D0085F876 /* PGPView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 43376E1F03C6241D0085F876 /* PGPView.nib */; }; 43376E2603C6244B0085F876 /* clear_20.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 43376E2203C6244B0085F876 /* clear_20.tiff */; }; 43376E2703C6244B0085F876 /* encrypted_20.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 43376E2303C6244B0085F876 /* encrypted_20.tiff */; }; 43376E2803C6244B0085F876 /* signed_20.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 43376E2403C6244B0085F876 /* signed_20.tiff */; }; 43376E2903C6244B0085F876 /* unsigned_20.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 43376E2503C6244B0085F876 /* unsigned_20.tiff */; }; 43376E2A03C6249A0085F876 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; 43376E2C03C624E50085F876 /* GNUMail.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58841420249864E01A80205 /* GNUMail.framework */; }; 43376E3903C627140085F876 /* Face.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 43376E3703C627140085F876 /* Face.bundle */; }; 43376E3E03C627330085F876 /* Face.h in Headers */ = {isa = PBXBuildFile; fileRef = 43376E3A03C627330085F876 /* Face.h */; }; 43376E3F03C627330085F876 /* Face.m in Sources */ = {isa = PBXBuildFile; fileRef = 43376E3B03C627330085F876 /* Face.m */; }; 43376E4003C627330085F876 /* FaceController.h in Headers */ = {isa = PBXBuildFile; fileRef = 43376E3C03C627330085F876 /* FaceController.h */; }; 43376E4103C627330085F876 /* FaceController.m in Sources */ = {isa = PBXBuildFile; fileRef = 43376E3D03C627330085F876 /* FaceController.m */; }; 43376E4303C627A70085F876 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; 43376E4403C627A90085F876 /* GNUMail.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58841420249864E01A80205 /* GNUMail.framework */; }; 4360B2E40542198E0029C389 /* Import.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 4360B2E20542198E0029C389 /* Import.bundle */; }; 4360B2EB05421A350029C389 /* MailboxImportController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4360B2E905421A350029C389 /* MailboxImportController.m */; }; 4360B2EC05421A350029C389 /* MailboxImportController+Filters.m in Sources */ = {isa = PBXBuildFile; fileRef = 4360B2EA05421A350029C389 /* MailboxImportController+Filters.m */; }; 4360B2EF05421A4C0029C389 /* MailboxImportController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4360B2ED05421A4C0029C389 /* MailboxImportController.h */; }; 4360B2F005421A4C0029C389 /* MailboxImportController+Filters.h in Headers */ = {isa = PBXBuildFile; fileRef = 4360B2EE05421A4C0029C389 /* MailboxImportController+Filters.h */; }; 4360B2F205421A990029C389 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; 4360B2F305421AFA0029C389 /* GNUMail.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58841420249864E01A80205 /* GNUMail.framework */; }; 4360B2F905421D910029C389 /* Import.bundle in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4360B2E20542198E0029C389 /* Import.bundle */; }; 438220450411990B00E574E2 /* HeadersWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = 438220430411990B00E574E2 /* HeadersWindow.nib */; }; 4396BCFC05191438004D63F0 /* stamp.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 4396BCFB05191438004D63F0 /* stamp.tiff */; }; 4396BD000519147F004D63F0 /* encrypted_80.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 4396BCFD0519147F004D63F0 /* encrypted_80.tiff */; }; 4396BD010519147F004D63F0 /* signed_80.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 4396BCFE0519147F004D63F0 /* signed_80.tiff */; }; 4396BD020519147F004D63F0 /* signed+encrypted_80.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 4396BCFF0519147F004D63F0 /* signed+encrypted_80.tiff */; }; 43974D440411736F00442E8B /* HeadersWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = 43974D420411736F00442E8B /* HeadersWindowController.h */; }; 43974D450411736F00442E8B /* HeadersWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 43974D430411736F00442E8B /* HeadersWindowController.m */; }; 43974D560411792000442E8B /* Account.prefs in Resources */ = {isa = PBXBuildFile; fileRef = 43974D540411792000442E8B /* Account.prefs */; }; 43974D60041179A800442E8B /* AccountEditorWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = 43974D5C041179A800442E8B /* AccountEditorWindowController.h */; }; 43974D61041179A800442E8B /* AccountEditorWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 43974D5D041179A800442E8B /* AccountEditorWindowController.m */; }; 43974D62041179A800442E8B /* AccountViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 43974D5E041179A800442E8B /* AccountViewController.h */; }; 43974D63041179A800442E8B /* AccountViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 43974D5F041179A800442E8B /* AccountViewController.m */; }; 43974D65041179D000442E8B /* account.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 43974D64041179D000442E8B /* account.tiff */; }; 43974D6704117A8B00442E8B /* GNUMail.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58841420249864E01A80205 /* GNUMail.framework */; }; 43974D6904117B4F00442E8B /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; 43974D7204117BB800442E8B /* Colors.prefs in Resources */ = {isa = PBXBuildFile; fileRef = 43974D7004117BB800442E8B /* Colors.prefs */; }; 43974D7B04117CA400442E8B /* colors.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 43974D7804117CA400442E8B /* colors.tiff */; }; 43974D7C04117CA400442E8B /* ColorsViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 43974D7904117CA400442E8B /* ColorsViewController.h */; }; 43974D7D04117CA400442E8B /* ColorsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 43974D7A04117CA400442E8B /* ColorsViewController.m */; }; 43974D7E04117D1D00442E8B /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; 43974D7F04117D2D00442E8B /* GNUMail.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58841420249864E01A80205 /* GNUMail.framework */; }; 43974D8804117DFB00442E8B /* Advanced.prefs in Resources */ = {isa = PBXBuildFile; fileRef = 43974D8604117DFB00442E8B /* Advanced.prefs */; }; 43974D9104117E9B00442E8B /* advanced.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 43974D8E04117E9B00442E8B /* advanced.tiff */; }; 43974D9204117E9B00442E8B /* AdvancedViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 43974D8F04117E9B00442E8B /* AdvancedViewController.h */; }; 43974D9304117E9B00442E8B /* AdvancedViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 43974D9004117E9B00442E8B /* AdvancedViewController.m */; }; 43974D9404117EC600442E8B /* GNUMail.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58841420249864E01A80205 /* GNUMail.framework */; }; 43974D9504117EC800442E8B /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; 43974D98041181BF00442E8B /* AccountView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 43974D96041181BF00442E8B /* AccountView.nib */; }; 439CDE3C05153D050025822F /* Emoticon.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 439CDE3A05153D050025822F /* Emoticon.bundle */; }; 439CDE5105153D790025822F /* emoticon-face1.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 439CDE4105153D790025822F /* emoticon-face1.tiff */; }; 439CDE5205153D790025822F /* emoticon-face2.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 439CDE4205153D790025822F /* emoticon-face2.tiff */; }; 439CDE5305153D790025822F /* emoticon-face3.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 439CDE4305153D790025822F /* emoticon-face3.tiff */; }; 439CDE5405153D790025822F /* emoticon-face4.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 439CDE4405153D790025822F /* emoticon-face4.tiff */; }; 439CDE5505153D790025822F /* emoticon-face5.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 439CDE4505153D790025822F /* emoticon-face5.tiff */; }; 439CDE5605153D790025822F /* emoticon-face6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 439CDE4605153D790025822F /* emoticon-face6.tiff */; }; 439CDE5705153D790025822F /* emoticon-face8.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 439CDE4705153D790025822F /* emoticon-face8.tiff */; }; 439CDE5805153D790025822F /* emoticon-face9.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 439CDE4805153D790025822F /* emoticon-face9.tiff */; }; 439CDE5905153D790025822F /* emoticon-face10.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 439CDE4905153D790025822F /* emoticon-face10.tiff */; }; 439CDE5A05153D790025822F /* emoticon-face11.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 439CDE4A05153D790025822F /* emoticon-face11.tiff */; }; 439CDE5B05153D790025822F /* emoticon-face13.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 439CDE4B05153D790025822F /* emoticon-face13.tiff */; }; 439CDE5C05153D790025822F /* emoticon-face14.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 439CDE4C05153D790025822F /* emoticon-face14.tiff */; }; 439CDE5D05153D790025822F /* emoticon-face15.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 439CDE4D05153D790025822F /* emoticon-face15.tiff */; }; 439CDE5E05153D790025822F /* emoticon-face19.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 439CDE4E05153D790025822F /* emoticon-face19.tiff */; }; 439CDE5F05153D790025822F /* EmoticonController.h in Headers */ = {isa = PBXBuildFile; fileRef = 439CDE4F05153D790025822F /* EmoticonController.h */; }; 439CDE6005153D790025822F /* EmoticonController.m in Sources */ = {isa = PBXBuildFile; fileRef = 439CDE5005153D790025822F /* EmoticonController.m */; }; 439CDE6105153DDC0025822F /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; 43B32B610411891200799887 /* AdvancedView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 43B32B5F0411891200799887 /* AdvancedView.nib */; }; 43B32B6404118A8600799887 /* ColorsView.nib in Resources */ = {isa = PBXBuildFile; fileRef = 43B32B6204118A8600799887 /* ColorsView.nib */; }; 43B8D36103C606D000B85C1B /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43B8D36003C606D000B85C1B /* AddressBook.framework */; }; 43B8D36203C608B700B85C1B /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43B8D36003C606D000B85C1B /* AddressBook.framework */; }; 43C89DD805422080008048D1 /* MailboxImport.nib in Resources */ = {isa = PBXBuildFile; fileRef = 43C89DD605422080008048D1 /* MailboxImport.nib */; }; 43FE861B0411B29A008E9F6C /* Account.prefs in CopyFiles */ = {isa = PBXBuildFile; fileRef = 43974D540411792000442E8B /* Account.prefs */; }; 43FE861C0411B29A008E9F6C /* Colors.prefs in CopyFiles */ = {isa = PBXBuildFile; fileRef = 43974D7004117BB800442E8B /* Colors.prefs */; }; 43FE861D0411B29A008E9F6C /* Advanced.prefs in CopyFiles */ = {isa = PBXBuildFile; fileRef = 43974D8604117DFB00442E8B /* Advanced.prefs */; }; 43FE86200411B8E6008E9F6C /* AccountEditorWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = 43FE861E0411B8E6008E9F6C /* AccountEditorWindow.nib */; }; 82137F070B6D267E0049FAE9 /* Pantomime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82137F060B6D267E0049FAE9 /* Pantomime.framework */; }; 82137F080B6D267E0049FAE9 /* Pantomime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82137F060B6D267E0049FAE9 /* Pantomime.framework */; }; 82137F090B6D267E0049FAE9 /* Pantomime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82137F060B6D267E0049FAE9 /* Pantomime.framework */; }; 82137F0A0B6D267E0049FAE9 /* Pantomime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82137F060B6D267E0049FAE9 /* Pantomime.framework */; }; 82137F0B0B6D267E0049FAE9 /* Pantomime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82137F060B6D267E0049FAE9 /* Pantomime.framework */; }; 82137F0C0B6D267E0049FAE9 /* Pantomime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82137F060B6D267E0049FAE9 /* Pantomime.framework */; }; 82137F0D0B6D267E0049FAE9 /* Pantomime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82137F060B6D267E0049FAE9 /* Pantomime.framework */; }; 82137F0E0B6D267E0049FAE9 /* Pantomime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82137F060B6D267E0049FAE9 /* Pantomime.framework */; }; 82137F0F0B6D267E0049FAE9 /* Pantomime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82137F060B6D267E0049FAE9 /* Pantomime.framework */; }; 82137F100B6D267E0049FAE9 /* Pantomime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82137F060B6D267E0049FAE9 /* Pantomime.framework */; }; 82137F110B6D267E0049FAE9 /* Pantomime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82137F060B6D267E0049FAE9 /* Pantomime.framework */; }; 82137F120B6D267E0049FAE9 /* Pantomime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82137F060B6D267E0049FAE9 /* Pantomime.framework */; }; 82137F130B6D267E0049FAE9 /* Pantomime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82137F060B6D267E0049FAE9 /* Pantomime.framework */; }; 82137F140B6D267E0049FAE9 /* Pantomime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82137F060B6D267E0049FAE9 /* Pantomime.framework */; }; 82137F150B6D267E0049FAE9 /* Pantomime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82137F060B6D267E0049FAE9 /* Pantomime.framework */; }; 82137F160B6D267E0049FAE9 /* Pantomime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 82137F060B6D267E0049FAE9 /* Pantomime.framework */; }; 82137F660B6D29880049FAE9 /* Pantomime.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 82137F060B6D267E0049FAE9 /* Pantomime.framework */; }; 823AA8E80A160B8D004CC486 /* AboutPanelController.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8580A160B8C004CC486 /* AboutPanelController.h */; }; 823AA8E90A160B8D004CC486 /* AboutPanelController.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8590A160B8C004CC486 /* AboutPanelController.m */; }; 823AA8EA0A160B8D004CC486 /* AddressBookController.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA85A0A160B8C004CC486 /* AddressBookController.h */; }; 823AA8EB0A160B8D004CC486 /* AddressBookController.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA85B0A160B8C004CC486 /* AddressBookController.m */; }; 823AA8EE0A160B8D004CC486 /* AddressTaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA85E0A160B8C004CC486 /* AddressTaker.h */; }; 823AA8EF0A160B8D004CC486 /* ApplicationIconController.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA85F0A160B8C004CC486 /* ApplicationIconController.h */; }; 823AA8F00A160B8D004CC486 /* ApplicationIconController.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8600A160B8C004CC486 /* ApplicationIconController.m */; }; 823AA8F10A160B8D004CC486 /* AutoCompletingTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8610A160B8C004CC486 /* AutoCompletingTextField.h */; }; 823AA8F20A160B8D004CC486 /* AutoCompletingTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8620A160B8C004CC486 /* AutoCompletingTextField.m */; }; 823AA8F50A160B8D004CC486 /* ConsoleWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8650A160B8C004CC486 /* ConsoleWindowController.h */; }; 823AA8F60A160B8D004CC486 /* ConsoleWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8660A160B8C004CC486 /* ConsoleWindowController.m */; }; 823AA8F70A160B8D004CC486 /* Constants.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8670A160B8C004CC486 /* Constants.h */; }; 823AA8F80A160B8D004CC486 /* Constants.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8680A160B8C004CC486 /* Constants.m */; }; 823AA8FB0A160B8D004CC486 /* EditWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA86B0A160B8C004CC486 /* EditWindowController.h */; }; 823AA8FC0A160B8D004CC486 /* EditWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA86C0A160B8C004CC486 /* EditWindowController.m */; }; 823AA8FD0A160B8D004CC486 /* EditWindowToolbar.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA86D0A160B8C004CC486 /* EditWindowToolbar.h */; }; 823AA8FE0A160B8D004CC486 /* EditWindowToolbar.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA86E0A160B8C004CC486 /* EditWindowToolbar.m */; }; 823AA8FF0A160B8D004CC486 /* ExtendedCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA86F0A160B8C004CC486 /* ExtendedCell.h */; }; 823AA9000A160B8D004CC486 /* ExtendedCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8700A160B8C004CC486 /* ExtendedCell.m */; }; 823AA9010A160B8D004CC486 /* ExtendedFileWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8710A160B8C004CC486 /* ExtendedFileWrapper.h */; }; 823AA9020A160B8D004CC486 /* ExtendedFileWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8720A160B8C004CC486 /* ExtendedFileWrapper.m */; }; 823AA9030A160B8D004CC486 /* ExtendedMenuItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8730A160B8C004CC486 /* ExtendedMenuItem.h */; }; 823AA9040A160B8D004CC486 /* ExtendedMenuItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8740A160B8C004CC486 /* ExtendedMenuItem.m */; }; 823AA9050A160B8D004CC486 /* ExtendedOutlineView.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8750A160B8C004CC486 /* ExtendedOutlineView.h */; }; 823AA9060A160B8D004CC486 /* ExtendedOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8760A160B8C004CC486 /* ExtendedOutlineView.m */; }; 823AA9070A160B8D004CC486 /* ExtendedTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8770A160B8C004CC486 /* ExtendedTableView.h */; }; 823AA9080A160B8D004CC486 /* ExtendedTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8780A160B8C004CC486 /* ExtendedTableView.m */; }; 823AA9090A160B8D004CC486 /* ExtendedTextAttachmentCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8790A160B8C004CC486 /* ExtendedTextAttachmentCell.h */; }; 823AA90A0A160B8D004CC486 /* ExtendedTextAttachmentCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA87A0A160B8C004CC486 /* ExtendedTextAttachmentCell.m */; }; 823AA90B0A160B8D004CC486 /* ExtendedTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA87B0A160B8C004CC486 /* ExtendedTextView.h */; }; 823AA90C0A160B8D004CC486 /* ExtendedTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA87C0A160B8C004CC486 /* ExtendedTextView.m */; }; 823AA90D0A160B8D004CC486 /* ExtendedWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA87D0A160B8C004CC486 /* ExtendedWindow.h */; }; 823AA90E0A160B8D004CC486 /* ExtendedWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA87E0A160B8C004CC486 /* ExtendedWindow.m */; }; 823AA90F0A160B8D004CC486 /* Filter.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA87F0A160B8C004CC486 /* Filter.h */; }; 823AA9100A160B8D004CC486 /* Filter.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8800A160B8C004CC486 /* Filter.m */; }; 823AA9110A160B8D004CC486 /* FilterManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8810A160B8C004CC486 /* FilterManager.h */; }; 823AA9120A160B8D004CC486 /* FilterManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8820A160B8C004CC486 /* FilterManager.m */; }; 823AA9150A160B8D004CC486 /* FindWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8850A160B8C004CC486 /* FindWindowController.h */; }; 823AA9160A160B8D004CC486 /* FindWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8860A160B8C004CC486 /* FindWindowController.m */; }; 823AA9170A160B8D004CC486 /* FolderNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8870A160B8C004CC486 /* FolderNode.h */; }; 823AA9180A160B8D004CC486 /* FolderNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8880A160B8C004CC486 /* FolderNode.m */; }; 823AA9190A160B8D004CC486 /* FolderNodePopUpItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8890A160B8C004CC486 /* FolderNodePopUpItem.h */; }; 823AA91A0A160B8D004CC486 /* FolderNodePopUpItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA88A0A160B8C004CC486 /* FolderNodePopUpItem.m */; }; 823AA91B0A160B8D004CC486 /* GetURLScriptCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA88B0A160B8C004CC486 /* GetURLScriptCommand.h */; }; 823AA91C0A160B8D004CC486 /* GetURLScriptCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA88C0A160B8C004CC486 /* GetURLScriptCommand.m */; }; 823AA91D0A160B8D004CC486 /* GNUMail.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA88D0A160B8C004CC486 /* GNUMail.h */; }; 823AA91E0A160B8D004CC486 /* GNUMail.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA88E0A160B8C004CC486 /* GNUMail.m */; }; 823AA91F0A160B8D004CC486 /* GNUMail+Extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA88F0A160B8C004CC486 /* GNUMail+Extensions.h */; }; 823AA9200A160B8D004CC486 /* GNUMail+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8900A160B8C004CC486 /* GNUMail+Extensions.m */; }; 823AA9210A160B8D004CC486 /* GNUMail+Services.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8910A160B8C004CC486 /* GNUMail+Services.h */; }; 823AA9220A160B8D004CC486 /* GNUMail+Services.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8920A160B8C004CC486 /* GNUMail+Services.m */; }; 823AA9230A160B8D004CC486 /* GNUMailBundle.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8930A160B8C004CC486 /* GNUMailBundle.h */; settings = {ATTRIBUTES = (Public, ); }; }; 823AA9240A160B8D004CC486 /* GNUmakefile in Resources */ = {isa = PBXBuildFile; fileRef = 823AA8940A160B8C004CC486 /* GNUmakefile */; }; 823AA9250A160B8D004CC486 /* ImageTextCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8950A160B8C004CC486 /* ImageTextCell.h */; }; 823AA9260A160B8D004CC486 /* ImageTextCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8960A160B8C004CC486 /* ImageTextCell.m */; }; 823AA9270A160B8D004CC486 /* LabelWidget.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8970A160B8C004CC486 /* LabelWidget.h */; }; 823AA9280A160B8D004CC486 /* LabelWidget.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8980A160B8C004CC486 /* LabelWidget.m */; }; 823AA92B0A160B8D004CC486 /* MailboxInspectorPanelController.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA89B0A160B8C004CC486 /* MailboxInspectorPanelController.h */; }; 823AA92C0A160B8D004CC486 /* MailboxInspectorPanelController.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA89C0A160B8C004CC486 /* MailboxInspectorPanelController.m */; }; 823AA92F0A160B8D004CC486 /* MailboxManagerCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA89F0A160B8C004CC486 /* MailboxManagerCache.h */; }; 823AA9300A160B8D004CC486 /* MailboxManagerCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8A00A160B8C004CC486 /* MailboxManagerCache.m */; }; 823AA9310A160B8D004CC486 /* MailboxManagerController.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8A10A160B8C004CC486 /* MailboxManagerController.h */; }; 823AA9320A160B8D004CC486 /* MailboxManagerController.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8A20A160B8C004CC486 /* MailboxManagerController.m */; }; 823AA9330A160B8D004CC486 /* MailboxManagerToolbar.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8A30A160B8C004CC486 /* MailboxManagerToolbar.h */; }; 823AA9340A160B8D004CC486 /* MailboxManagerToolbar.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8A40A160B8C004CC486 /* MailboxManagerToolbar.m */; }; 823AA9350A160B8D004CC486 /* MailHeaderCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8A50A160B8C004CC486 /* MailHeaderCell.h */; }; 823AA9360A160B8D004CC486 /* MailHeaderCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8A60A160B8C004CC486 /* MailHeaderCell.m */; }; 823AA9390A160B8D004CC486 /* MailWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8A90A160B8C004CC486 /* MailWindowController.h */; }; 823AA93A0A160B8D004CC486 /* MailWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8AA0A160B8C004CC486 /* MailWindowController.m */; }; 823AA93B0A160B8D004CC486 /* MailWindowToolbar.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8AB0A160B8C004CC486 /* MailWindowToolbar.h */; }; 823AA93C0A160B8D004CC486 /* MailWindowToolbar.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8AC0A160B8C004CC486 /* MailWindowToolbar.m */; }; 823AA93D0A160B8D004CC486 /* MessageComposition.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8AD0A160B8C004CC486 /* MessageComposition.h */; }; 823AA93E0A160B8D004CC486 /* MessageComposition.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8AE0A160B8C004CC486 /* MessageComposition.m */; }; 823AA9410A160B8D004CC486 /* MessageViewWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8B10A160B8C004CC486 /* MessageViewWindowController.h */; }; 823AA9420A160B8D004CC486 /* MessageViewWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8B20A160B8C004CC486 /* MessageViewWindowController.m */; }; 823AA9430A160B8D004CC486 /* MessageViewWindowToolbar.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8B30A160B8C004CC486 /* MessageViewWindowToolbar.h */; }; 823AA9440A160B8D004CC486 /* MessageViewWindowToolbar.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8B40A160B8C004CC486 /* MessageViewWindowToolbar.m */; }; 823AA9450A160B8D004CC486 /* MimeType.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8B50A160B8C004CC486 /* MimeType.h */; }; 823AA9460A160B8D004CC486 /* MimeType.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8B60A160B8C004CC486 /* MimeType.m */; }; 823AA9470A160B8D004CC486 /* MimeTypeManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8B70A160B8C004CC486 /* MimeTypeManager.h */; }; 823AA9480A160B8D004CC486 /* MimeTypeManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8B80A160B8C004CC486 /* MimeTypeManager.m */; }; 823AA9490A160B8D004CC486 /* NavigationToolbarItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8B90A160B8C004CC486 /* NavigationToolbarItem.h */; }; 823AA94A0A160B8D004CC486 /* NavigationToolbarItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8BA0A160B8C004CC486 /* NavigationToolbarItem.m */; }; 823AA94D0A160B8D004CC486 /* NewMailboxPanelController.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8BD0A160B8C004CC486 /* NewMailboxPanelController.h */; }; 823AA94E0A160B8D004CC486 /* NewMailboxPanelController.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8BE0A160B8C004CC486 /* NewMailboxPanelController.m */; }; 823AA94F0A160B8D004CC486 /* NSAttributedString+Extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8BF0A160B8C004CC486 /* NSAttributedString+Extensions.h */; }; 823AA9500A160B8D004CC486 /* NSAttributedString+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8C00A160B8C004CC486 /* NSAttributedString+Extensions.m */; }; 823AA9510A160B8D004CC486 /* NSAttributedString+TextEnriched.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8C10A160B8C004CC486 /* NSAttributedString+TextEnriched.h */; }; 823AA9520A160B8D004CC486 /* NSAttributedString+TextEnriched.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8C20A160B8C004CC486 /* NSAttributedString+TextEnriched.m */; }; 823AA9530A160B8D004CC486 /* NSBezierPath+Extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8C30A160B8C004CC486 /* NSBezierPath+Extensions.h */; }; 823AA9540A160B8D004CC486 /* NSBezierPath+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8C40A160B8C004CC486 /* NSBezierPath+Extensions.m */; }; 823AA9550A160B8D004CC486 /* NSBundle+Extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8C50A160B8C004CC486 /* NSBundle+Extensions.h */; }; 823AA9560A160B8D004CC486 /* NSBundle+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8C60A160B8C004CC486 /* NSBundle+Extensions.m */; }; 823AA9570A160B8D004CC486 /* NSColor+Extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8C70A160B8C004CC486 /* NSColor+Extensions.h */; }; 823AA9580A160B8D004CC486 /* NSColor+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8C80A160B8C004CC486 /* NSColor+Extensions.m */; }; 823AA9590A160B8D004CC486 /* NSFont+Extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8C90A160B8C004CC486 /* NSFont+Extensions.h */; }; 823AA95A0A160B8D004CC486 /* NSFont+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8CA0A160B8C004CC486 /* NSFont+Extensions.m */; }; 823AA95B0A160B8D004CC486 /* NSPasteboard+Extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8CB0A160B8C004CC486 /* NSPasteboard+Extensions.h */; }; 823AA95C0A160B8D004CC486 /* NSPasteboard+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8CC0A160B8C004CC486 /* NSPasteboard+Extensions.m */; }; 823AA95D0A160B8D004CC486 /* NSUserDefaults+Extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8CD0A160B8C004CC486 /* NSUserDefaults+Extensions.h */; }; 823AA95E0A160B8D004CC486 /* NSUserDefaults+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8CE0A160B8C004CC486 /* NSUserDefaults+Extensions.m */; }; 823AA9610A160B8D004CC486 /* PasswordPanelController.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8D10A160B8C004CC486 /* PasswordPanelController.h */; }; 823AA9620A160B8D004CC486 /* PasswordPanelController.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8D20A160B8C004CC486 /* PasswordPanelController.m */; }; 823AA9630A160B8D004CC486 /* PreferencesModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8D30A160B8C004CC486 /* PreferencesModule.h */; settings = {ATTRIBUTES = (Public, ); }; }; 823AA9660A160B8D004CC486 /* PreferencesWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8D60A160B8C004CC486 /* PreferencesWindowController.h */; }; 823AA9670A160B8D004CC486 /* PreferencesWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8D70A160B8D004CC486 /* PreferencesWindowController.m */; }; 823AA9680A160B8D004CC486 /* StripeTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8D80A160B8D004CC486 /* StripeTableView.h */; }; 823AA9690A160B8D004CC486 /* StripeTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8D90A160B8D004CC486 /* StripeTableView.m */; }; 823AA96C0A160B8D004CC486 /* Task.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8DC0A160B8D004CC486 /* Task.h */; }; 823AA96D0A160B8D004CC486 /* Task.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8DD0A160B8D004CC486 /* Task.m */; }; 823AA96E0A160B8D004CC486 /* TaskManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8DE0A160B8D004CC486 /* TaskManager.h */; }; 823AA96F0A160B8D004CC486 /* TaskManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8DF0A160B8D004CC486 /* TaskManager.m */; }; 823AA9700A160B8D004CC486 /* ThreadArcsCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8E00A160B8D004CC486 /* ThreadArcsCell.h */; }; 823AA9710A160B8D004CC486 /* ThreadArcsCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8E10A160B8D004CC486 /* ThreadArcsCell.m */; }; 823AA9720A160B8D004CC486 /* Utilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8E20A160B8D004CC486 /* Utilities.h */; }; 823AA9730A160B8D004CC486 /* Utilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8E30A160B8D004CC486 /* Utilities.m */; }; 823AA9740A160B8D004CC486 /* WelcomePanel.h in Headers */ = {isa = PBXBuildFile; fileRef = 823AA8E40A160B8D004CC486 /* WelcomePanel.h */; }; 823AA9750A160B8D004CC486 /* WelcomePanel.m in Sources */ = {isa = PBXBuildFile; fileRef = 823AA8E50A160B8D004CC486 /* WelcomePanel.m */; }; 823AA9F30A160CA8004CC486 /* add_bcc_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9A00A160CA8004CC486 /* add_bcc_32.tiff */; }; 823AA9F40A160CA8004CC486 /* add_bcc_48.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9A10A160CA8004CC486 /* add_bcc_48.tiff */; }; 823AA9F50A160CA8004CC486 /* add_cc_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9A20A160CA8004CC486 /* add_cc_32.tiff */; }; 823AA9F60A160CA8004CC486 /* add_cc_48.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9A30A160CA8004CC486 /* add_cc_48.tiff */; }; 823AA9F70A160CA8004CC486 /* add.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9A40A160CA8004CC486 /* add.tiff */; }; 823AA9F80A160CA8004CC486 /* Address_bcc.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9A50A160CA8004CC486 /* Address_bcc.tiff */; }; 823AA9F90A160CA8004CC486 /* Address_cc.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9A60A160CA8004CC486 /* Address_cc.tiff */; }; 823AA9FA0A160CA8004CC486 /* Address_to.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9A70A160CA8004CC486 /* Address_to.tiff */; }; 823AA9FB0A160CA8004CC486 /* AddressBook_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9A80A160CA8004CC486 /* AddressBook_32.tiff */; }; 823AA9FC0A160CA8004CC486 /* addresses_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9A90A160CA8004CC486 /* addresses_32.tiff */; }; 823AA9FD0A160CA8004CC486 /* addresses_48.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9AA0A160CA8004CC486 /* addresses_48.tiff */; }; 823AA9FE0A160CA8004CC486 /* AddressManager_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9AB0A160CA8004CC486 /* AddressManager_32.tiff */; }; 823AA9FF0A160CA8004CC486 /* anim-logo-1.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9AC0A160CA8004CC486 /* anim-logo-1.tiff */; }; 823AAA000A160CA8004CC486 /* anim-logo-2.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9AD0A160CA8004CC486 /* anim-logo-2.tiff */; }; 823AAA010A160CA8004CC486 /* anim-logo-3.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9AE0A160CA8004CC486 /* anim-logo-3.tiff */; }; 823AAA020A160CA8004CC486 /* anim-logo-4.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9AF0A160CA8004CC486 /* anim-logo-4.tiff */; }; 823AAA030A160CA8004CC486 /* anim-logo-5.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9B00A160CA8004CC486 /* anim-logo-5.tiff */; }; 823AAA040A160CA8004CC486 /* anim-logo-6.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9B10A160CA8004CC486 /* anim-logo-6.tiff */; }; 823AAA050A160CA8004CC486 /* anim-logo-7.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9B20A160CA8004CC486 /* anim-logo-7.tiff */; }; 823AAA060A160CA8004CC486 /* anim-logo-8.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9B30A160CA8004CC486 /* anim-logo-8.tiff */; }; 823AAA070A160CA8004CC486 /* answered-flag.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9B40A160CA8004CC486 /* answered-flag.tiff */; }; 823AAA080A160CA8004CC486 /* attach_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9B50A160CA8004CC486 /* attach_32.tiff */; }; 823AAA090A160CA8004CC486 /* attach_48.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9B60A160CA8004CC486 /* attach_48.tiff */; }; 823AAA0A0A160CA8004CC486 /* common_Unknown.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9B70A160CA8004CC486 /* common_Unknown.tiff */; }; 823AAA0B0A160CA8004CC486 /* create_16.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9B80A160CA8004CC486 /* create_16.tiff */; }; 823AAA0C0A160CA8004CC486 /* create_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9B90A160CA8004CC486 /* create_32.tiff */; }; 823AAA0D0A160CA8004CC486 /* create_48.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9BA0A160CA8004CC486 /* create_48.tiff */; }; 823AAA0F0A160CA8004CC486 /* delete_20.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9BC0A160CA8004CC486 /* delete_20.tiff */; }; 823AAA100A160CA8004CC486 /* delete_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9BD0A160CA8004CC486 /* delete_32.tiff */; }; 823AAA110A160CA8004CC486 /* delete_48.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9BE0A160CA8004CC486 /* delete_48.tiff */; }; 823AAA120A160CA8004CC486 /* down_15.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9BF0A160CA8004CC486 /* down_15.tiff */; }; 823AAA140A160CA8004CC486 /* drag_mail.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9C10A160CA8004CC486 /* drag_mail.tiff */; }; 823AAA150A160CA8004CC486 /* drag_mails.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9C20A160CA8004CC486 /* drag_mails.tiff */; }; 823AAA160A160CA8004CC486 /* duplicate.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9C30A160CA8004CC486 /* duplicate.tiff */; }; 823AAA170A160CA8004CC486 /* edit.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9C40A160CA8004CC486 /* edit.tiff */; }; 823AAA180A160CA8004CC486 /* find_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9C50A160CA8004CC486 /* find_32.tiff */; }; 823AAA190A160CA8004CC486 /* find_48.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9C60A160CA8004CC486 /* find_48.tiff */; }; 823AAA1A0A160CA8004CC486 /* flagged-flag.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9C70A160CA8004CC486 /* flagged-flag.tiff */; }; 823AAA1B0A160CA8004CC486 /* forward_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9C80A160CA8004CC486 /* forward_32.tiff */; }; 823AAA1C0A160CA8004CC486 /* forward_48.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9C90A160CA8004CC486 /* forward_48.tiff */; }; 823AAA1D0A160CA8004CC486 /* GNUMail_128.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9CA0A160CA8004CC486 /* GNUMail_128.tiff */; }; 823AAA1E0A160CA8004CC486 /* GNUMail_big.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9CB0A160CA8004CC486 /* GNUMail_big.tiff */; }; 823AAA1F0A160CA8004CC486 /* GNUMail_Full.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9CC0A160CA8004CC486 /* GNUMail_Full.tiff */; }; 823AAA200A160CA8004CC486 /* GNUMail.icns in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9CD0A160CA8004CC486 /* GNUMail.icns */; }; 823AAA210A160CA8004CC486 /* GNUMail.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9CE0A160CA8004CC486 /* GNUMail.tiff */; }; 823AAA220A160CA8004CC486 /* hand.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9CF0A160CA8004CC486 /* hand.tiff */; }; 823AAA230A160CA8004CC486 /* mailbox_add_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9D00A160CA8004CC486 /* mailbox_add_32.tiff */; }; 823AAA260A160CA8004CC486 /* mailbox_rename_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9D30A160CA8004CC486 /* mailbox_rename_32.tiff */; }; 823AAA270A160CA8004CC486 /* mailboxes_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9D40A160CA8004CC486 /* mailboxes_32.tiff */; }; 823AAA280A160CA8004CC486 /* mailboxes_48.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9D50A160CA8004CC486 /* mailboxes_48.tiff */; }; 823AAA2B0A160CA8004CC486 /* pgp-mail-small.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9D80A160CA8004CC486 /* pgp-mail-small.tiff */; }; 823AAA2C0A160CA8004CC486 /* pgp-mail.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9D90A160CA8004CC486 /* pgp-mail.tiff */; }; 823AAA2D0A160CA8004CC486 /* raw_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9DA0A160CA8004CC486 /* raw_32.tiff */; }; 823AAA2E0A160CA8004CC486 /* raw_48.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9DB0A160CA8004CC486 /* raw_48.tiff */; }; 823AAA2F0A160CA8004CC486 /* recent-flag.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9DC0A160CA8004CC486 /* recent-flag.tiff */; }; 823AAA300A160CA8004CC486 /* remove_bcc_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9DD0A160CA8004CC486 /* remove_bcc_32.tiff */; }; 823AAA310A160CA8004CC486 /* remove_bcc_48.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9DE0A160CA8004CC486 /* remove_bcc_48.tiff */; }; 823AAA320A160CA8004CC486 /* remove_cc_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9DF0A160CA8004CC486 /* remove_cc_32.tiff */; }; 823AAA330A160CA8004CC486 /* remove_cc_48.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9E00A160CA8004CC486 /* remove_cc_48.tiff */; }; 823AAA340A160CA8004CC486 /* reply_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9E10A160CA8004CC486 /* reply_32.tiff */; }; 823AAA350A160CA8004CC486 /* reply_48.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9E20A160CA8004CC486 /* reply_48.tiff */; }; 823AAA360A160CA8004CC486 /* restart_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9E30A160CA8004CC486 /* restart_32.tiff */; }; 823AAA370A160CA8004CC486 /* retrieve_16.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9E40A160CA8004CC486 /* retrieve_16.tiff */; }; 823AAA380A160CA8004CC486 /* retrieve_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9E50A160CA8004CC486 /* retrieve_32.tiff */; }; 823AAA390A160CA8004CC486 /* retrieve_48.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9E60A160CA8004CC486 /* retrieve_48.tiff */; }; 823AAA3A0A160CA8004CC486 /* send_16.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9E70A160CA8004CC486 /* send_16.tiff */; }; 823AAA3B0A160CA8004CC486 /* send_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9E80A160CA8004CC486 /* send_32.tiff */; }; 823AAA3C0A160CA8004CC486 /* send_48.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9E90A160CA8004CC486 /* send_48.tiff */; }; 823AAA3D0A160CA8004CC486 /* show_all_headers_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9EA0A160CA8004CC486 /* show_all_headers_32.tiff */; }; 823AAA3E0A160CA8004CC486 /* show_all_headers_48.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9EB0A160CA8004CC486 /* show_all_headers_48.tiff */; }; 823AAA3F0A160CA8004CC486 /* sort_down.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9EC0A160CA8004CC486 /* sort_down.tiff */; }; 823AAA400A160CA8004CC486 /* sort_left.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9ED0A160CA8004CC486 /* sort_left.tiff */; }; 823AAA410A160CA8004CC486 /* sort_right.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9EE0A160CA8004CC486 /* sort_right.tiff */; }; 823AAA420A160CA8004CC486 /* sort_up.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9EF0A160CA8004CC486 /* sort_up.tiff */; }; 823AAA430A160CA8004CC486 /* stop_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9F00A160CA8004CC486 /* stop_32.tiff */; }; 823AAA440A160CA8004CC486 /* up_15.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AA9F10A160CA8004CC486 /* up_15.tiff */; }; 823AAA550A160DF3004CC486 /* AboutPanel.nib in Resources */ = {isa = PBXBuildFile; fileRef = 823AAA4B0A160DF3004CC486 /* AboutPanel.nib */; }; 823AAA560A160DF3004CC486 /* AddressBookPanel.nib in Resources */ = {isa = PBXBuildFile; fileRef = 823AAA4D0A160DF3004CC486 /* AddressBookPanel.nib */; }; 823AAA570A160DF3004CC486 /* ConsoleWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = 823AAA4F0A160DF3004CC486 /* ConsoleWindow.nib */; }; 823AAA580A160DF3004CC486 /* EditWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = 823AAA510A160DF3004CC486 /* EditWindow.nib */; }; 823AAA590A160DF3004CC486 /* FindWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = 823AAA530A160DF3004CC486 /* FindWindow.nib */; }; 823AAA680A160E12004CC486 /* MailboxInspectorPanel.nib in Resources */ = {isa = PBXBuildFile; fileRef = 823AAA5A0A160E12004CC486 /* MailboxInspectorPanel.nib */; }; 823AAA690A160E12004CC486 /* MailWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = 823AAA5C0A160E12004CC486 /* MailWindow.nib */; }; 823AAA6A0A160E12004CC486 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 823AAA5E0A160E12004CC486 /* MainMenu.nib */; }; 823AAA6B0A160E12004CC486 /* MessageViewWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = 823AAA600A160E12004CC486 /* MessageViewWindow.nib */; }; 823AAA6C0A160E12004CC486 /* NewMailboxPanel.nib in Resources */ = {isa = PBXBuildFile; fileRef = 823AAA620A160E12004CC486 /* NewMailboxPanel.nib */; }; 823AAA6D0A160E12004CC486 /* PasswordPanel.nib in Resources */ = {isa = PBXBuildFile; fileRef = 823AAA640A160E12004CC486 /* PasswordPanel.nib */; }; 823AAA6E0A160E12004CC486 /* PreferencesWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = 823AAA660A160E12004CC486 /* PreferencesWindow.nib */; }; 823AAAB40A1612B7004CC486 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 823AAAB20A1612B7004CC486 /* InfoPlist.strings */; }; 823AAAB70A1612E8004CC486 /* GNUMail.scriptTerminology in Resources */ = {isa = PBXBuildFile; fileRef = 823AAAB50A1612E8004CC486 /* GNUMail.scriptTerminology */; }; 823AE3BD0BB6F7600054A9F4 /* 3-pane_96x96.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AE3BB0BB6F7600054A9F4 /* 3-pane_96x96.tiff */; }; 823AE3BE0BB6F7600054A9F4 /* drawer_96x96.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AE3BC0BB6F7600054A9F4 /* drawer_96x96.tiff */; }; 823AE3C00BB6F77E0054A9F4 /* floating_96x96.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AE3BF0BB6F77E0054A9F4 /* floating_96x96.tiff */; }; 823AE3C20BB6F79B0054A9F4 /* widescreen_96x96.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 823AE3C10BB6F79B0054A9F4 /* widescreen_96x96.tiff */; }; 824C14E20AC88BD40032E967 /* create_12.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 824C14D60AC88BD40032E967 /* create_12.tiff */; }; 824C14E30AC88BD40032E967 /* create_20.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 824C14D70AC88BD40032E967 /* create_20.tiff */; }; 824C14E40AC88BD40032E967 /* folder_12.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 824C14D80AC88BD40032E967 /* folder_12.tiff */; }; 824C14E50AC88BD40032E967 /* folder_16.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 824C14D90AC88BD40032E967 /* folder_16.tiff */; }; 824C14E60AC88BD40032E967 /* folder_20.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 824C14DA0AC88BD40032E967 /* folder_20.tiff */; }; 824C14E70AC88BD40032E967 /* retrieve_12.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 824C14DB0AC88BD40032E967 /* retrieve_12.tiff */; }; 824C14E80AC88BD40032E967 /* retrieve_20.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 824C14DC0AC88BD40032E967 /* retrieve_20.tiff */; }; 824C14E90AC88BD40032E967 /* send_12.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 824C14DD0AC88BD40032E967 /* send_12.tiff */; }; 824C14EA0AC88BD40032E967 /* send_20.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 824C14DE0AC88BD40032E967 /* send_20.tiff */; }; 824C14EB0AC88BD40032E967 /* trash_12.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 824C14DF0AC88BD40032E967 /* trash_12.tiff */; }; 824C14EC0AC88BD40032E967 /* trash_16.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 824C14E00AC88BD40032E967 /* trash_16.tiff */; }; 824C14ED0AC88BD40032E967 /* trash_20.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 824C14E10AC88BD40032E967 /* trash_20.tiff */; }; 824C14F30AC88CD40032E967 /* drafts_32.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 824C14F10AC88CD40032E967 /* drafts_32.tiff */; }; 824C14F40AC88CD40032E967 /* drafts_48.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 824C14F20AC88CD40032E967 /* drafts_48.tiff */; }; 828883DF0BA46B110073F597 /* GNUMail+MenuValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = 828883DD0BA46B110073F597 /* GNUMail+MenuValidation.h */; }; 828883E00BA46B110073F597 /* GNUMail+MenuValidation.m in Sources */ = {isa = PBXBuildFile; fileRef = 828883DE0BA46B110073F597 /* GNUMail+MenuValidation.m */; }; 82E5FAF50B74C892005B155C /* Welcome in Resources */ = {isa = PBXBuildFile; fileRef = 82E5FAF40B74C892005B155C /* Welcome */; }; 82E5FAF80B74C918005B155C /* Welcome in CopyFiles */ = {isa = PBXBuildFile; fileRef = 82E5FAF40B74C892005B155C /* Welcome */; }; DD0F41DE05768621001625E2 /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43B8D36003C606D000B85C1B /* AddressBook.framework */; }; DDAE831703E303C700A8A065 /* GNUMail.scriptSuite in Resources */ = {isa = PBXBuildFile; fileRef = DDAE831603E303C700A8A065 /* GNUMail.scriptSuite */; }; F5136EF702F892E301000002 /* GNUMail_main.m in Sources */ = {isa = PBXBuildFile; fileRef = F5136EF502F8926A01000002 /* GNUMail_main.m */; }; F5136EFA02F8933B01000002 /* GNUMail.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58841420249864E01A80205 /* GNUMail.framework */; }; F5136EFD02F893F901000002 /* GNUMail.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58841420249864E01A80205 /* GNUMail.framework */; }; F5136F0002F8950101000002 /* GNUMail.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58841420249864E01A80205 /* GNUMail.framework */; }; F5136F0302F8950101000002 /* GNUMail.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58841420249864E01A80205 /* GNUMail.framework */; }; F5136F0502F8950101000002 /* GNUMail.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58841420249864E01A80205 /* GNUMail.framework */; }; F5136F0702F8950101000002 /* GNUMail.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58841420249864E01A80205 /* GNUMail.framework */; }; F517DFBA02293ECB01A80103 /* ViewingViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = F517DFB702293ECA01A80103 /* ViewingViewController.h */; }; F517DFBB02293ECB01A80103 /* ViewingView.nib in Resources */ = {isa = PBXBuildFile; fileRef = F517DFB802293ECA01A80103 /* ViewingView.nib */; }; F517DFBC02293ECB01A80103 /* ViewingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F517DFB602293ECA01A80103 /* ViewingViewController.m */; }; F517DFC502293F3D01A80103 /* SendingViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = F517DFBF02293F3D01A80103 /* SendingViewController.h */; }; F517DFC702293F3D01A80103 /* SendingView.nib in Resources */ = {isa = PBXBuildFile; fileRef = F517DFC102293F3D01A80103 /* SendingView.nib */; }; F517DFC902293F3D01A80103 /* SendingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F517DFBD02293F3D01A80103 /* SendingViewController.m */; }; F517DFCB02293F6101A80103 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; F517DFCC02293F6D01A80103 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; F517E00E0229438901A80103 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; F517E0100229438901A80103 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; F517E0110229438901A80103 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; F517E0120229438901A80103 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; F517E01E0229468D01A80103 /* ComposeViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = F517E0170229468C01A80103 /* ComposeViewController.h */; }; F517E01F0229468D01A80103 /* ComposeView.nib in Resources */ = {isa = PBXBuildFile; fileRef = F517E01B0229468C01A80103 /* ComposeView.nib */; }; F517E0200229468D01A80103 /* ComposeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F517E0150229468C01A80103 /* ComposeViewController.m */; }; F517E039022947E101A80103 /* FontsViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = F517E034022947E001A80103 /* FontsViewController.h */; }; F517E03A022947E101A80103 /* fonts.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F517E036022947E001A80103 /* fonts.tiff */; }; F517E03B022947E101A80103 /* FontsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F517E031022947E001A80103 /* FontsViewController.m */; }; F517E0630229494701A80103 /* MimeTypeEditorWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = F517E0530229494701A80103 /* MimeTypeEditorWindow.h */; }; F517E0640229494701A80103 /* MimeTypeEditorWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = F517E0540229494701A80103 /* MimeTypeEditorWindowController.h */; }; F517E0660229494701A80103 /* MIMEViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = F517E0560229494701A80103 /* MIMEViewController.h */; }; F517E0670229494701A80103 /* mime.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F517E0580229494701A80103 /* mime.tiff */; }; F517E0690229494701A80103 /* MimeTypeEditorWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = F517E05C0229494701A80103 /* MimeTypeEditorWindow.nib */; }; F517E06A0229494701A80103 /* MIMEView.nib in Resources */ = {isa = PBXBuildFile; fileRef = F517E05E0229494701A80103 /* MIMEView.nib */; }; F517E06D0229494701A80103 /* MimeTypeEditorWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = F517E04D0229494701A80103 /* MimeTypeEditorWindowController.m */; }; F517E06E0229494701A80103 /* MIMEViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F517E04E0229494701A80103 /* MIMEViewController.m */; }; F517E06F0229494701A80103 /* FilterEditorWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = F517E0410229494701A80103 /* FilterEditorWindow.nib */; }; F517E0700229494701A80103 /* FilterHeaderEditorWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = F517E0430229494701A80103 /* FilterHeaderEditorWindow.nib */; }; F517E0710229494701A80103 /* FilteringView.nib in Resources */ = {isa = PBXBuildFile; fileRef = F517E0450229494701A80103 /* FilteringView.nib */; }; F517E0720229494701A80103 /* FilterMessageWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = F517E0470229494701A80103 /* FilterMessageWindow.nib */; }; F517E0860229495701A80103 /* FilterEditorWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = F517E0770229495701A80103 /* FilterEditorWindow.h */; }; F517E0870229495701A80103 /* FilterEditorWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = F517E0780229495701A80103 /* FilterEditorWindowController.h */; }; F517E0880229495701A80103 /* FilterHeaderEditorWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = F517E07A0229495701A80103 /* FilterHeaderEditorWindow.h */; }; F517E0890229495701A80103 /* FilterHeaderEditorWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = F517E07B0229495701A80103 /* FilterHeaderEditorWindowController.h */; }; F517E08A0229495701A80103 /* FilteringView.h in Headers */ = {isa = PBXBuildFile; fileRef = F517E07E0229495701A80103 /* FilteringView.h */; }; F517E08B0229495701A80103 /* FilteringViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = F517E07F0229495701A80103 /* FilteringViewController.h */; }; F517E08C0229495701A80103 /* FilterMessageWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = F517E0810229495701A80103 /* FilterMessageWindow.h */; }; F517E08D0229495701A80103 /* FilterMessageWindowController.h in Headers */ = {isa = PBXBuildFile; fileRef = F517E0820229495701A80103 /* FilterMessageWindowController.h */; }; F517E08E0229495701A80103 /* Filtering.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F517E07D0229495701A80103 /* Filtering.tiff */; }; F517E0910229495701A80103 /* FilterEditorWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = F517E0790229495701A80103 /* FilterEditorWindowController.m */; }; F517E0920229495701A80103 /* FilterHeaderEditorWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = F517E07C0229495701A80103 /* FilterHeaderEditorWindowController.m */; }; F517E0930229495701A80103 /* FilteringViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F517E0800229495701A80103 /* FilteringViewController.m */; }; F517E0940229495701A80103 /* FilterMessageWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = F517E0830229495701A80103 /* FilterMessageWindowController.m */; }; F517E0D802297BE401A80103 /* ReceivingViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = F517E0CB02297BE401A80103 /* ReceivingViewController.h */; }; F517E0DB02297BE401A80103 /* MailIcon_retrieve.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F517E0CF02297BE401A80103 /* MailIcon_retrieve.tiff */; }; F517E0DC02297BE401A80103 /* ReceivingView.nib in Resources */ = {isa = PBXBuildFile; fileRef = F517E0D102297BE401A80103 /* ReceivingView.nib */; }; F517E0DE02297BE401A80103 /* ReceivingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F517E0C502297BE401A80103 /* ReceivingViewController.m */; }; F517E0E002297C4901A80103 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; F533894902F89A8201000002 /* GNUMail.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58841420249864E01A80205 /* GNUMail.framework */; }; F533894A02F89A8201000002 /* GNUMail.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = F58841420249864E01A80205 /* GNUMail.framework */; }; F554A596022B29D201346888 /* FontsView.nib in Resources */ = {isa = PBXBuildFile; fileRef = F554A594022B29D201346888 /* FontsView.nib */; }; F5671D7101B18B6201A80205 /* ChangeLog in Resources */ = {isa = PBXBuildFile; fileRef = F5671D7001B18B6201A80205 /* ChangeLog */; }; F588414B0249864E01A80205 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; F58841520249936601A80205 /* Viewing.prefs in CopyFiles */ = {isa = PBXBuildFile; fileRef = F517DFA802293DA201A80103 /* Viewing.prefs */; }; F58841530249936601A80205 /* Sending.prefs in CopyFiles */ = {isa = PBXBuildFile; fileRef = F517DFA902293DA201A80103 /* Sending.prefs */; }; F58841540249936601A80205 /* Receiving.prefs in CopyFiles */ = {isa = PBXBuildFile; fileRef = F517DFCE022940C901A80103 /* Receiving.prefs */; }; F58841550249936601A80205 /* Compose.prefs in CopyFiles */ = {isa = PBXBuildFile; fileRef = F517DFCF022940C901A80103 /* Compose.prefs */; }; F58841560249936601A80205 /* Fonts.prefs in CopyFiles */ = {isa = PBXBuildFile; fileRef = F517DFD1022940C901A80103 /* Fonts.prefs */; }; F58841570249936601A80205 /* MIME.prefs in CopyFiles */ = {isa = PBXBuildFile; fileRef = F517DFD2022940C901A80103 /* MIME.prefs */; }; F58841580249936601A80205 /* Filtering.prefs in CopyFiles */ = {isa = PBXBuildFile; fileRef = F517DFD3022940C901A80103 /* Filtering.prefs */; }; F5CAFDCE02D74F1501000002 /* GNUMail.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F58841420249864E01A80205 /* GNUMail.framework */; }; F5E20AC90229937F01A80103 /* viewing.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F5E20AC50229937F01A80103 /* viewing.tiff */; }; F5E20ACA0229937F01A80103 /* MailIcon_send.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F5E20AC60229937F01A80103 /* MailIcon_send.tiff */; }; F5E20ACB0229937F01A80103 /* MailIcon_create.tiff in Resources */ = {isa = PBXBuildFile; fileRef = F5E20AC70229937F01A80103 /* MailIcon_create.tiff */; }; /* End PBXBuildFile section */ /* Begin PBXBundleTarget section */ 43376E1403C623F60085F876 /* PGP */ = { isa = PBXBundleTarget; buildConfigurationList = 827707D00A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "PGP" */; buildPhases = ( 43376E0F03C623F60085F876 /* Headers */, 43376E1003C623F60085F876 /* Resources */, 43376E1103C623F60085F876 /* Sources */, 43376E1203C623F60085F876 /* Frameworks */, 43376E1303C623F60085F876 /* Rez */, ); dependencies = ( ); name = PGP; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = PGP; productReference = 43376E1503C623F60085F876 /* PGP.bundle */; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature ???? CFBundleVersion 0.0.1d1 NSPrincipalClass PGPController "; }; 43376E3603C627140085F876 /* Face */ = { isa = PBXBundleTarget; buildConfigurationList = 827707D40A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Face" */; buildPhases = ( 43376E3103C627140085F876 /* Headers */, 43376E3203C627140085F876 /* Resources */, 43376E3303C627140085F876 /* Sources */, 43376E3403C627140085F876 /* Frameworks */, 43376E3503C627140085F876 /* Rez */, ); dependencies = ( ); name = Face; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Face; productReference = 43376E3703C627140085F876 /* Face.bundle */; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature ???? CFBundleVersion 0.0.1d1 NSPrincipalClass FaceController "; }; 4360B2E10542198E0029C389 /* Import */ = { isa = PBXBundleTarget; buildConfigurationList = 827707E80A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Import" */; buildPhases = ( 4360B2DC0542198E0029C389 /* Headers */, 4360B2DD0542198E0029C389 /* Resources */, 4360B2DE0542198E0029C389 /* Sources */, 4360B2DF0542198E0029C389 /* Frameworks */, 4360B2E00542198E0029C389 /* Rez */, ); dependencies = ( ); name = Import; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Import; productReference = 4360B2E20542198E0029C389 /* Import.bundle */; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature ???? CFBundleVersion 0.0.1d1 NSPrincipalClass MailboxImportController "; }; 43974D530411792000442E8B /* Account */ = { isa = PBXBundleTarget; buildConfigurationList = 827707D80A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Account" */; buildPhases = ( 43974D4E0411792000442E8B /* Headers */, 43974D4F0411792000442E8B /* Resources */, 43974D500411792000442E8B /* Sources */, 43974D510411792000442E8B /* Frameworks */, 43974D520411792000442E8B /* Rez */, ); dependencies = ( ); name = Account; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Account; productReference = 43974D540411792000442E8B /* Account.prefs */; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature ???? CFBundleVersion 1.0.99 Java MainClass AccountViewController NSPrincipalClass AccountViewController "; }; 43974D6F04117BB800442E8B /* Colors */ = { isa = PBXBundleTarget; buildConfigurationList = 827707DC0A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Colors" */; buildPhases = ( 43974D6A04117BB800442E8B /* Headers */, 43974D6B04117BB800442E8B /* Resources */, 43974D6C04117BB800442E8B /* Sources */, 43974D6D04117BB800442E8B /* Frameworks */, 43974D6E04117BB800442E8B /* Rez */, ); dependencies = ( ); name = Colors; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Colors; productReference = 43974D7004117BB800442E8B /* Colors.prefs */; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature ???? CFBundleVersion 1.0.99 Java MainClass ColorsViewController NSPrincipalClass ColorsViewController "; }; 43974D8504117DFB00442E8B /* Advanced */ = { isa = PBXBundleTarget; buildConfigurationList = 827707E00A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Advanced" */; buildPhases = ( 43974D8004117DFB00442E8B /* Headers */, 43974D8104117DFB00442E8B /* Resources */, 43974D8204117DFB00442E8B /* Sources */, 43974D8304117DFB00442E8B /* Frameworks */, 43974D8404117DFB00442E8B /* Rez */, ); dependencies = ( ); name = Advanced; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Advanced; productReference = 43974D8604117DFB00442E8B /* Advanced.prefs */; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature ???? CFBundleVersion 1.0.99 NSPrincipalClass AdvancedViewController "; }; 439CDE3905153D050025822F /* Emoticon */ = { isa = PBXBundleTarget; buildConfigurationList = 827707E40A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Emoticon" */; buildPhases = ( 439CDE3405153D050025822F /* Headers */, 439CDE3505153D050025822F /* Resources */, 439CDE3605153D050025822F /* Sources */, 439CDE3705153D050025822F /* Frameworks */, 439CDE3805153D050025822F /* Rez */, ); dependencies = ( ); name = Emoticon; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Emoticon; productReference = 439CDE3A05153D050025822F /* Emoticon.bundle */; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature ???? CFBundleVersion 0.0.1d1 NSPrincipalClass EmoticonController "; }; F517DFAA02293DA201A80103 /* Viewing */ = { isa = PBXBundleTarget; buildConfigurationList = 827707B40A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Viewing" */; buildPhases = ( F517DFAB02293DA201A80103 /* Headers */, F517DFAC02293DA201A80103 /* Resources */, F517DFAD02293DA201A80103 /* Sources */, F517DFAE02293DA201A80103 /* Frameworks */, F517DFAF02293DA201A80103 /* Rez */, ); dependencies = ( ); name = Viewing; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Viewing; productReference = F517DFA802293DA201A80103 /* Viewing.prefs */; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature GNUM CFBundleVersion 1.2.0 NSPrincipalClass ViewingViewController "; }; F517DFB002293DA201A80103 /* Sending */ = { isa = PBXBundleTarget; buildConfigurationList = 827707B80A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Sending" */; buildPhases = ( F517DFB102293DA201A80103 /* Headers */, F517DFB202293DA201A80103 /* Resources */, F517DFB302293DA201A80103 /* Sources */, F517DFB402293DA201A80103 /* Frameworks */, F517DFB502293DA201A80103 /* Rez */, ); dependencies = ( ); name = Sending; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Sending; productReference = F517DFA902293DA201A80103 /* Sending.prefs */; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature GNUM CFBundleVersion 1.0.2 NSPrincipalClass SendingViewController "; }; F517DFD4022940C901A80103 /* Receiving */ = { isa = PBXBundleTarget; buildConfigurationList = 827707BC0A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Receiving" */; buildPhases = ( F517DFD5022940C901A80103 /* Headers */, F517DFD6022940C901A80103 /* Resources */, F517DFD7022940C901A80103 /* Sources */, F517DFD8022940C901A80103 /* Frameworks */, F517DFD9022940C901A80103 /* Rez */, ); dependencies = ( ); name = Receiving; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Receiving; productReference = F517DFCE022940C901A80103 /* Receiving.prefs */; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature GNUM CFBundleVersion 1.0.2 NSPrincipalClass ReceivingViewController "; }; F517DFDA022940C901A80103 /* Compose */ = { isa = PBXBundleTarget; buildConfigurationList = 827707C00A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Compose" */; buildPhases = ( F517DFDB022940C901A80103 /* Headers */, F517DFDC022940C901A80103 /* Resources */, F517DFDD022940C901A80103 /* Sources */, F517DFDE022940C901A80103 /* Frameworks */, F517DFDF022940C901A80103 /* Rez */, ); dependencies = ( ); name = Compose; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Compose; productReference = F517DFCF022940C901A80103 /* Compose.prefs */; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature GNUM CFBundleVersion 1.0.99 NSPrincipalClass ComposeViewController "; }; F517DFE6022940C901A80103 /* Fonts */ = { isa = PBXBundleTarget; buildConfigurationList = 827707C40A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Fonts" */; buildPhases = ( F517DFE7022940C901A80103 /* Headers */, F517DFE8022940C901A80103 /* Resources */, F517DFE9022940C901A80103 /* Sources */, F517DFEA022940C901A80103 /* Frameworks */, F517DFEB022940C901A80103 /* Rez */, ); dependencies = ( ); name = Fonts; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Fonts; productReference = F517DFD1022940C901A80103 /* Fonts.prefs */; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature GNUM CFBundleVersion 1.0.99 NSPrincipalClass FontsViewController "; }; F517DFEC022940C901A80103 /* MIME */ = { isa = PBXBundleTarget; buildConfigurationList = 827707C80A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "MIME" */; buildPhases = ( F517DFED022940C901A80103 /* Headers */, F517DFEE022940C901A80103 /* Resources */, F517DFEF022940C901A80103 /* Sources */, F517DFF0022940C901A80103 /* Frameworks */, F517DFF1022940C901A80103 /* Rez */, ); dependencies = ( ); name = MIME; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = MIME; productReference = F517DFD2022940C901A80103 /* MIME.prefs */; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature GNUM CFBundleVersion 1.0.2 NSPrincipalClass MIMEViewController "; }; F517DFF2022940C901A80103 /* Filtering */ = { isa = PBXBundleTarget; buildConfigurationList = 827707CC0A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Filtering" */; buildPhases = ( F517DFF3022940C901A80103 /* Headers */, F517DFF4022940C901A80103 /* Resources */, F517DFF5022940C901A80103 /* Sources */, F517DFF6022940C901A80103 /* Frameworks */, F517DFF7022940C901A80103 /* Rez */, ); dependencies = ( ); name = Filtering; productInstallPath = "$(USER_LIBRARY_DIR)/Bundles"; productName = Filtering; productReference = F517DFD3022940C901A80103 /* Filtering.prefs */; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable CFBundleGetInfoString CFBundleIconFile CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType BNDL CFBundleShortVersionString CFBundleSignature GNUM CFBundleVersion 1.0.2 NSPrincipalClass FilteringViewController "; }; /* End PBXBundleTarget section */ /* Begin PBXContainerItemProxy section */ FEF39A8406AC5AFC00B95F53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 43974D6F04117BB800442E8B; remoteInfo = Colors; }; FEF39A8506AC5AFC00B95F53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = F517DFF2022940C901A80103; remoteInfo = Filtering; }; FEF39A8606AC5AFC00B95F53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 43376E3603C627140085F876; remoteInfo = Face; }; FEF39A8706AC5AFC00B95F53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = F517DFDA022940C901A80103; remoteInfo = Compose; }; FEF39A8806AC5AFC00B95F53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 43974D530411792000442E8B; remoteInfo = Account; }; FEF39A8906AC5AFC00B95F53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 4360B2E10542198E0029C389; remoteInfo = Import; }; FEF39A8A06AC5AFC00B95F53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = F517DFE6022940C901A80103; remoteInfo = Fonts; }; FEF39A8B06AC5AFC00B95F53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 439CDE3905153D050025822F; remoteInfo = Emoticon; }; FEF39A8C06AC5AFC00B95F53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 43376E1403C623F60085F876; remoteInfo = PGP; }; FEF39A8D06AC5AFC00B95F53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = F58841430249864E01A80205; remoteInfo = "GNUMail framework"; }; FEF39A8E06AC5AFC00B95F53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = 43974D8504117DFB00442E8B; remoteInfo = Advanced; }; FEF39A8F06AC5AFC00B95F53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = F517DFEC022940C901A80103; remoteInfo = MIME; }; FEF39A9006AC5AFC00B95F53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = F517DFD4022940C901A80103; remoteInfo = Receiving; }; FEF39A9106AC5AFC00B95F53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = F517DFB002293DA201A80103; remoteInfo = Sending; }; FEF39A9206AC5AFC00B95F53 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */; proxyType = 1; remoteGlobalIDString = F517DFAA02293DA201A80103; remoteInfo = Viewing; }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ 82E5FAF60B74C8D7005B155C /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 7; files = ( 82E5FAF80B74C918005B155C /* Welcome in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; F588414E024986D601A80205 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 13; files = ( F58841520249936601A80205 /* Viewing.prefs in CopyFiles */, F58841530249936601A80205 /* Sending.prefs in CopyFiles */, F58841540249936601A80205 /* Receiving.prefs in CopyFiles */, F58841550249936601A80205 /* Compose.prefs in CopyFiles */, F58841560249936601A80205 /* Fonts.prefs in CopyFiles */, F58841570249936601A80205 /* MIME.prefs in CopyFiles */, F58841580249936601A80205 /* Filtering.prefs in CopyFiles */, 43FE861B0411B29A008E9F6C /* Account.prefs in CopyFiles */, 43FE861C0411B29A008E9F6C /* Colors.prefs in CopyFiles */, 43FE861D0411B29A008E9F6C /* Advanced.prefs in CopyFiles */, 4360B2F905421D910029C389 /* Import.bundle in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; F59B4C8702909B7901A80205 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( F533894A02F89A8201000002 /* GNUMail.framework in CopyFiles */, 82137F660B6D29880049FAE9 /* Pantomime.framework in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 17587328FF379C6511CA2CBB /* GNUMail.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; path = GNUMail.app; sourceTree = BUILT_PRODUCTS_DIR; }; 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 43376E1503C623F60085F876 /* PGP.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = PGP.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 43376E2003C6241D0085F876 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Bundles/PGP/English.lproj/PGPView.nib; sourceTree = ""; }; 43376E2203C6244B0085F876 /* clear_20.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = clear_20.tiff; path = Bundles/PGP/clear_20.tiff; sourceTree = ""; }; 43376E2303C6244B0085F876 /* encrypted_20.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = encrypted_20.tiff; path = Bundles/PGP/encrypted_20.tiff; sourceTree = ""; }; 43376E2403C6244B0085F876 /* signed_20.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = signed_20.tiff; path = Bundles/PGP/signed_20.tiff; sourceTree = ""; }; 43376E2503C6244B0085F876 /* unsigned_20.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = unsigned_20.tiff; path = Bundles/PGP/unsigned_20.tiff; sourceTree = ""; }; 43376E3703C627140085F876 /* Face.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = Face.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 43376E3A03C627330085F876 /* Face.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Face.h; path = Bundles/Face/Face.h; sourceTree = ""; }; 43376E3B03C627330085F876 /* Face.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = Face.m; path = Bundles/Face/Face.m; sourceTree = ""; }; 43376E3C03C627330085F876 /* FaceController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FaceController.h; path = Bundles/Face/FaceController.h; sourceTree = ""; }; 43376E3D03C627330085F876 /* FaceController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = FaceController.m; path = Bundles/Face/FaceController.m; sourceTree = ""; }; 4360B2E20542198E0029C389 /* Import.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = Import.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 4360B2E905421A350029C389 /* MailboxImportController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = MailboxImportController.m; path = Bundles/Import/MailboxImportController.m; sourceTree = ""; }; 4360B2EA05421A350029C389 /* MailboxImportController+Filters.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "MailboxImportController+Filters.m"; path = "Bundles/Import/MailboxImportController+Filters.m"; sourceTree = ""; }; 4360B2ED05421A4C0029C389 /* MailboxImportController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = MailboxImportController.h; path = Bundles/Import/MailboxImportController.h; sourceTree = ""; }; 4360B2EE05421A4C0029C389 /* MailboxImportController+Filters.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "MailboxImportController+Filters.h"; path = "Bundles/Import/MailboxImportController+Filters.h"; sourceTree = ""; }; 438220440411990B00E574E2 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Bundles/Viewing/English.lproj/HeadersWindow.nib; sourceTree = ""; }; 4396BCFB05191438004D63F0 /* stamp.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = stamp.tiff; path = Bundles/Face/stamp.tiff; sourceTree = ""; }; 4396BCFD0519147F004D63F0 /* encrypted_80.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = encrypted_80.tiff; path = Bundles/PGP/encrypted_80.tiff; sourceTree = ""; }; 4396BCFE0519147F004D63F0 /* signed_80.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = signed_80.tiff; path = Bundles/PGP/signed_80.tiff; sourceTree = ""; }; 4396BCFF0519147F004D63F0 /* signed+encrypted_80.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "signed+encrypted_80.tiff"; path = "Bundles/PGP/signed+encrypted_80.tiff"; sourceTree = ""; }; 43974D420411736F00442E8B /* HeadersWindowController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = HeadersWindowController.h; path = Bundles/Viewing/HeadersWindowController.h; sourceTree = ""; }; 43974D430411736F00442E8B /* HeadersWindowController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = HeadersWindowController.m; path = Bundles/Viewing/HeadersWindowController.m; sourceTree = ""; }; 43974D540411792000442E8B /* Account.prefs */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = Account.prefs; sourceTree = BUILT_PRODUCTS_DIR; }; 43974D5C041179A800442E8B /* AccountEditorWindowController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AccountEditorWindowController.h; path = Bundles/Account/AccountEditorWindowController.h; sourceTree = ""; }; 43974D5D041179A800442E8B /* AccountEditorWindowController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = AccountEditorWindowController.m; path = Bundles/Account/AccountEditorWindowController.m; sourceTree = ""; }; 43974D5E041179A800442E8B /* AccountViewController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AccountViewController.h; path = Bundles/Account/AccountViewController.h; sourceTree = ""; }; 43974D5F041179A800442E8B /* AccountViewController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = AccountViewController.m; path = Bundles/Account/AccountViewController.m; sourceTree = ""; }; 43974D64041179D000442E8B /* account.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = account.tiff; path = Bundles/Account/account.tiff; sourceTree = ""; }; 43974D7004117BB800442E8B /* Colors.prefs */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = Colors.prefs; sourceTree = BUILT_PRODUCTS_DIR; }; 43974D7804117CA400442E8B /* colors.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = colors.tiff; path = Bundles/Colors/colors.tiff; sourceTree = ""; }; 43974D7904117CA400442E8B /* ColorsViewController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ColorsViewController.h; path = Bundles/Colors/ColorsViewController.h; sourceTree = ""; }; 43974D7A04117CA400442E8B /* ColorsViewController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ColorsViewController.m; path = Bundles/Colors/ColorsViewController.m; sourceTree = ""; }; 43974D8604117DFB00442E8B /* Advanced.prefs */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = Advanced.prefs; sourceTree = BUILT_PRODUCTS_DIR; }; 43974D8E04117E9B00442E8B /* advanced.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = advanced.tiff; path = Bundles/Advanced/advanced.tiff; sourceTree = ""; }; 43974D8F04117E9B00442E8B /* AdvancedViewController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AdvancedViewController.h; path = Bundles/Advanced/AdvancedViewController.h; sourceTree = ""; }; 43974D9004117E9B00442E8B /* AdvancedViewController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = AdvancedViewController.m; path = Bundles/Advanced/AdvancedViewController.m; sourceTree = ""; }; 43974D97041181BF00442E8B /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Bundles/Account/English.lproj/AccountView.nib; sourceTree = ""; }; 439CDE3A05153D050025822F /* Emoticon.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = Emoticon.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 439CDE4105153D790025822F /* emoticon-face1.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "emoticon-face1.tiff"; path = "Bundles/Emoticon/emoticon-face1.tiff"; sourceTree = ""; }; 439CDE4205153D790025822F /* emoticon-face2.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "emoticon-face2.tiff"; path = "Bundles/Emoticon/emoticon-face2.tiff"; sourceTree = ""; }; 439CDE4305153D790025822F /* emoticon-face3.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "emoticon-face3.tiff"; path = "Bundles/Emoticon/emoticon-face3.tiff"; sourceTree = ""; }; 439CDE4405153D790025822F /* emoticon-face4.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "emoticon-face4.tiff"; path = "Bundles/Emoticon/emoticon-face4.tiff"; sourceTree = ""; }; 439CDE4505153D790025822F /* emoticon-face5.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "emoticon-face5.tiff"; path = "Bundles/Emoticon/emoticon-face5.tiff"; sourceTree = ""; }; 439CDE4605153D790025822F /* emoticon-face6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "emoticon-face6.tiff"; path = "Bundles/Emoticon/emoticon-face6.tiff"; sourceTree = ""; }; 439CDE4705153D790025822F /* emoticon-face8.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "emoticon-face8.tiff"; path = "Bundles/Emoticon/emoticon-face8.tiff"; sourceTree = ""; }; 439CDE4805153D790025822F /* emoticon-face9.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "emoticon-face9.tiff"; path = "Bundles/Emoticon/emoticon-face9.tiff"; sourceTree = ""; }; 439CDE4905153D790025822F /* emoticon-face10.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "emoticon-face10.tiff"; path = "Bundles/Emoticon/emoticon-face10.tiff"; sourceTree = ""; }; 439CDE4A05153D790025822F /* emoticon-face11.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "emoticon-face11.tiff"; path = "Bundles/Emoticon/emoticon-face11.tiff"; sourceTree = ""; }; 439CDE4B05153D790025822F /* emoticon-face13.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "emoticon-face13.tiff"; path = "Bundles/Emoticon/emoticon-face13.tiff"; sourceTree = ""; }; 439CDE4C05153D790025822F /* emoticon-face14.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "emoticon-face14.tiff"; path = "Bundles/Emoticon/emoticon-face14.tiff"; sourceTree = ""; }; 439CDE4D05153D790025822F /* emoticon-face15.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "emoticon-face15.tiff"; path = "Bundles/Emoticon/emoticon-face15.tiff"; sourceTree = ""; }; 439CDE4E05153D790025822F /* emoticon-face19.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "emoticon-face19.tiff"; path = "Bundles/Emoticon/emoticon-face19.tiff"; sourceTree = ""; }; 439CDE4F05153D790025822F /* EmoticonController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = EmoticonController.h; path = Bundles/Emoticon/EmoticonController.h; sourceTree = ""; }; 439CDE5005153D790025822F /* EmoticonController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = EmoticonController.m; path = Bundles/Emoticon/EmoticonController.m; sourceTree = ""; }; 43B32B600411891200799887 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Bundles/Advanced/English.lproj/AdvancedView.nib; sourceTree = ""; }; 43B32B6304118A8600799887 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Bundles/Colors/English.lproj/ColorsView.nib; sourceTree = ""; }; 43B8D36003C606D000B85C1B /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = /System/Library/Frameworks/AddressBook.framework; sourceTree = ""; }; 43C89DD705422080008048D1 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Bundles/Import/English.lproj/MailboxImport.nib; sourceTree = ""; }; 43FE861F0411B8E6008E9F6C /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Bundles/Account/English.lproj/AccountEditorWindow.nib; sourceTree = ""; }; 82137F060B6D267E0049FAE9 /* Pantomime.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Pantomime.framework; path = ../Pantomime/build/release/Pantomime.framework; sourceTree = SOURCE_ROOT; }; 823AA8580A160B8C004CC486 /* AboutPanelController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AboutPanelController.h; path = Framework/GNUMail/AboutPanelController.h; sourceTree = ""; }; 823AA8590A160B8C004CC486 /* AboutPanelController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = AboutPanelController.m; path = Framework/GNUMail/AboutPanelController.m; sourceTree = ""; }; 823AA85A0A160B8C004CC486 /* AddressBookController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AddressBookController.h; path = Framework/GNUMail/AddressBookController.h; sourceTree = ""; }; 823AA85B0A160B8C004CC486 /* AddressBookController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = AddressBookController.m; path = Framework/GNUMail/AddressBookController.m; sourceTree = ""; }; 823AA85E0A160B8C004CC486 /* AddressTaker.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AddressTaker.h; path = Framework/GNUMail/AddressTaker.h; sourceTree = ""; }; 823AA85F0A160B8C004CC486 /* ApplicationIconController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ApplicationIconController.h; path = Framework/GNUMail/ApplicationIconController.h; sourceTree = ""; }; 823AA8600A160B8C004CC486 /* ApplicationIconController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ApplicationIconController.m; path = Framework/GNUMail/ApplicationIconController.m; sourceTree = ""; }; 823AA8610A160B8C004CC486 /* AutoCompletingTextField.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = AutoCompletingTextField.h; path = Framework/GNUMail/AutoCompletingTextField.h; sourceTree = ""; }; 823AA8620A160B8C004CC486 /* AutoCompletingTextField.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = AutoCompletingTextField.m; path = Framework/GNUMail/AutoCompletingTextField.m; sourceTree = ""; }; 823AA8650A160B8C004CC486 /* ConsoleWindowController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ConsoleWindowController.h; path = Framework/GNUMail/ConsoleWindowController.h; sourceTree = ""; }; 823AA8660A160B8C004CC486 /* ConsoleWindowController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ConsoleWindowController.m; path = Framework/GNUMail/ConsoleWindowController.m; sourceTree = ""; }; 823AA8670A160B8C004CC486 /* Constants.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Constants.h; path = Framework/GNUMail/Constants.h; sourceTree = ""; }; 823AA8680A160B8C004CC486 /* Constants.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = Constants.m; path = Framework/GNUMail/Constants.m; sourceTree = ""; }; 823AA86B0A160B8C004CC486 /* EditWindowController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = EditWindowController.h; path = Framework/GNUMail/EditWindowController.h; sourceTree = ""; }; 823AA86C0A160B8C004CC486 /* EditWindowController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = EditWindowController.m; path = Framework/GNUMail/EditWindowController.m; sourceTree = ""; }; 823AA86D0A160B8C004CC486 /* EditWindowToolbar.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = EditWindowToolbar.h; path = Framework/GNUMail/EditWindowToolbar.h; sourceTree = ""; }; 823AA86E0A160B8C004CC486 /* EditWindowToolbar.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = EditWindowToolbar.m; path = Framework/GNUMail/EditWindowToolbar.m; sourceTree = ""; }; 823AA86F0A160B8C004CC486 /* ExtendedCell.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ExtendedCell.h; path = Framework/GNUMail/ExtendedCell.h; sourceTree = ""; }; 823AA8700A160B8C004CC486 /* ExtendedCell.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ExtendedCell.m; path = Framework/GNUMail/ExtendedCell.m; sourceTree = ""; }; 823AA8710A160B8C004CC486 /* ExtendedFileWrapper.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ExtendedFileWrapper.h; path = Framework/GNUMail/ExtendedFileWrapper.h; sourceTree = ""; }; 823AA8720A160B8C004CC486 /* ExtendedFileWrapper.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ExtendedFileWrapper.m; path = Framework/GNUMail/ExtendedFileWrapper.m; sourceTree = ""; }; 823AA8730A160B8C004CC486 /* ExtendedMenuItem.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ExtendedMenuItem.h; path = Framework/GNUMail/ExtendedMenuItem.h; sourceTree = ""; }; 823AA8740A160B8C004CC486 /* ExtendedMenuItem.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ExtendedMenuItem.m; path = Framework/GNUMail/ExtendedMenuItem.m; sourceTree = ""; }; 823AA8750A160B8C004CC486 /* ExtendedOutlineView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ExtendedOutlineView.h; path = Framework/GNUMail/ExtendedOutlineView.h; sourceTree = ""; }; 823AA8760A160B8C004CC486 /* ExtendedOutlineView.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ExtendedOutlineView.m; path = Framework/GNUMail/ExtendedOutlineView.m; sourceTree = ""; }; 823AA8770A160B8C004CC486 /* ExtendedTableView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ExtendedTableView.h; path = Framework/GNUMail/ExtendedTableView.h; sourceTree = ""; }; 823AA8780A160B8C004CC486 /* ExtendedTableView.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ExtendedTableView.m; path = Framework/GNUMail/ExtendedTableView.m; sourceTree = ""; }; 823AA8790A160B8C004CC486 /* ExtendedTextAttachmentCell.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ExtendedTextAttachmentCell.h; path = Framework/GNUMail/ExtendedTextAttachmentCell.h; sourceTree = ""; }; 823AA87A0A160B8C004CC486 /* ExtendedTextAttachmentCell.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ExtendedTextAttachmentCell.m; path = Framework/GNUMail/ExtendedTextAttachmentCell.m; sourceTree = ""; }; 823AA87B0A160B8C004CC486 /* ExtendedTextView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ExtendedTextView.h; path = Framework/GNUMail/ExtendedTextView.h; sourceTree = ""; }; 823AA87C0A160B8C004CC486 /* ExtendedTextView.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ExtendedTextView.m; path = Framework/GNUMail/ExtendedTextView.m; sourceTree = ""; }; 823AA87D0A160B8C004CC486 /* ExtendedWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ExtendedWindow.h; path = Framework/GNUMail/ExtendedWindow.h; sourceTree = ""; }; 823AA87E0A160B8C004CC486 /* ExtendedWindow.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ExtendedWindow.m; path = Framework/GNUMail/ExtendedWindow.m; sourceTree = ""; }; 823AA87F0A160B8C004CC486 /* Filter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Filter.h; path = Framework/GNUMail/Filter.h; sourceTree = ""; }; 823AA8800A160B8C004CC486 /* Filter.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = Filter.m; path = Framework/GNUMail/Filter.m; sourceTree = ""; }; 823AA8810A160B8C004CC486 /* FilterManager.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FilterManager.h; path = Framework/GNUMail/FilterManager.h; sourceTree = ""; }; 823AA8820A160B8C004CC486 /* FilterManager.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = FilterManager.m; path = Framework/GNUMail/FilterManager.m; sourceTree = ""; }; 823AA8850A160B8C004CC486 /* FindWindowController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FindWindowController.h; path = Framework/GNUMail/FindWindowController.h; sourceTree = ""; }; 823AA8860A160B8C004CC486 /* FindWindowController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = FindWindowController.m; path = Framework/GNUMail/FindWindowController.m; sourceTree = ""; }; 823AA8870A160B8C004CC486 /* FolderNode.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FolderNode.h; path = Framework/GNUMail/FolderNode.h; sourceTree = ""; }; 823AA8880A160B8C004CC486 /* FolderNode.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = FolderNode.m; path = Framework/GNUMail/FolderNode.m; sourceTree = ""; }; 823AA8890A160B8C004CC486 /* FolderNodePopUpItem.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FolderNodePopUpItem.h; path = Framework/GNUMail/FolderNodePopUpItem.h; sourceTree = ""; }; 823AA88A0A160B8C004CC486 /* FolderNodePopUpItem.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = FolderNodePopUpItem.m; path = Framework/GNUMail/FolderNodePopUpItem.m; sourceTree = ""; }; 823AA88B0A160B8C004CC486 /* GetURLScriptCommand.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GetURLScriptCommand.h; path = Framework/GNUMail/GetURLScriptCommand.h; sourceTree = ""; }; 823AA88C0A160B8C004CC486 /* GetURLScriptCommand.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = GetURLScriptCommand.m; path = Framework/GNUMail/GetURLScriptCommand.m; sourceTree = ""; }; 823AA88D0A160B8C004CC486 /* GNUMail.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GNUMail.h; path = Framework/GNUMail/GNUMail.h; sourceTree = ""; }; 823AA88E0A160B8C004CC486 /* GNUMail.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = GNUMail.m; path = Framework/GNUMail/GNUMail.m; sourceTree = ""; }; 823AA88F0A160B8C004CC486 /* GNUMail+Extensions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "GNUMail+Extensions.h"; path = "Framework/GNUMail/GNUMail+Extensions.h"; sourceTree = ""; }; 823AA8900A160B8C004CC486 /* GNUMail+Extensions.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "GNUMail+Extensions.m"; path = "Framework/GNUMail/GNUMail+Extensions.m"; sourceTree = ""; }; 823AA8910A160B8C004CC486 /* GNUMail+Services.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "GNUMail+Services.h"; path = "Framework/GNUMail/GNUMail+Services.h"; sourceTree = ""; }; 823AA8920A160B8C004CC486 /* GNUMail+Services.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "GNUMail+Services.m"; path = "Framework/GNUMail/GNUMail+Services.m"; sourceTree = ""; }; 823AA8930A160B8C004CC486 /* GNUMailBundle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GNUMailBundle.h; path = Framework/GNUMail/GNUMailBundle.h; sourceTree = ""; }; 823AA8940A160B8C004CC486 /* GNUmakefile */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = GNUmakefile; path = Framework/GNUMail/GNUmakefile; sourceTree = ""; }; 823AA8950A160B8C004CC486 /* ImageTextCell.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ImageTextCell.h; path = Framework/GNUMail/ImageTextCell.h; sourceTree = ""; }; 823AA8960A160B8C004CC486 /* ImageTextCell.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ImageTextCell.m; path = Framework/GNUMail/ImageTextCell.m; sourceTree = ""; }; 823AA8970A160B8C004CC486 /* LabelWidget.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = LabelWidget.h; path = Framework/GNUMail/LabelWidget.h; sourceTree = ""; }; 823AA8980A160B8C004CC486 /* LabelWidget.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = LabelWidget.m; path = Framework/GNUMail/LabelWidget.m; sourceTree = ""; }; 823AA89B0A160B8C004CC486 /* MailboxInspectorPanelController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = MailboxInspectorPanelController.h; path = Framework/GNUMail/MailboxInspectorPanelController.h; sourceTree = ""; }; 823AA89C0A160B8C004CC486 /* MailboxInspectorPanelController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = MailboxInspectorPanelController.m; path = Framework/GNUMail/MailboxInspectorPanelController.m; sourceTree = ""; }; 823AA89F0A160B8C004CC486 /* MailboxManagerCache.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = MailboxManagerCache.h; path = Framework/GNUMail/MailboxManagerCache.h; sourceTree = ""; }; 823AA8A00A160B8C004CC486 /* MailboxManagerCache.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = MailboxManagerCache.m; path = Framework/GNUMail/MailboxManagerCache.m; sourceTree = ""; }; 823AA8A10A160B8C004CC486 /* MailboxManagerController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = MailboxManagerController.h; path = Framework/GNUMail/MailboxManagerController.h; sourceTree = ""; }; 823AA8A20A160B8C004CC486 /* MailboxManagerController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = MailboxManagerController.m; path = Framework/GNUMail/MailboxManagerController.m; sourceTree = ""; }; 823AA8A30A160B8C004CC486 /* MailboxManagerToolbar.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = MailboxManagerToolbar.h; path = Framework/GNUMail/MailboxManagerToolbar.h; sourceTree = ""; }; 823AA8A40A160B8C004CC486 /* MailboxManagerToolbar.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = MailboxManagerToolbar.m; path = Framework/GNUMail/MailboxManagerToolbar.m; sourceTree = ""; }; 823AA8A50A160B8C004CC486 /* MailHeaderCell.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = MailHeaderCell.h; path = Framework/GNUMail/MailHeaderCell.h; sourceTree = ""; }; 823AA8A60A160B8C004CC486 /* MailHeaderCell.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = MailHeaderCell.m; path = Framework/GNUMail/MailHeaderCell.m; sourceTree = ""; }; 823AA8A90A160B8C004CC486 /* MailWindowController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = MailWindowController.h; path = Framework/GNUMail/MailWindowController.h; sourceTree = ""; }; 823AA8AA0A160B8C004CC486 /* MailWindowController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = MailWindowController.m; path = Framework/GNUMail/MailWindowController.m; sourceTree = ""; }; 823AA8AB0A160B8C004CC486 /* MailWindowToolbar.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = MailWindowToolbar.h; path = Framework/GNUMail/MailWindowToolbar.h; sourceTree = ""; }; 823AA8AC0A160B8C004CC486 /* MailWindowToolbar.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = MailWindowToolbar.m; path = Framework/GNUMail/MailWindowToolbar.m; sourceTree = ""; }; 823AA8AD0A160B8C004CC486 /* MessageComposition.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = MessageComposition.h; path = Framework/GNUMail/MessageComposition.h; sourceTree = ""; }; 823AA8AE0A160B8C004CC486 /* MessageComposition.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = MessageComposition.m; path = Framework/GNUMail/MessageComposition.m; sourceTree = ""; }; 823AA8B10A160B8C004CC486 /* MessageViewWindowController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = MessageViewWindowController.h; path = Framework/GNUMail/MessageViewWindowController.h; sourceTree = ""; }; 823AA8B20A160B8C004CC486 /* MessageViewWindowController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = MessageViewWindowController.m; path = Framework/GNUMail/MessageViewWindowController.m; sourceTree = ""; }; 823AA8B30A160B8C004CC486 /* MessageViewWindowToolbar.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = MessageViewWindowToolbar.h; path = Framework/GNUMail/MessageViewWindowToolbar.h; sourceTree = ""; }; 823AA8B40A160B8C004CC486 /* MessageViewWindowToolbar.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = MessageViewWindowToolbar.m; path = Framework/GNUMail/MessageViewWindowToolbar.m; sourceTree = ""; }; 823AA8B50A160B8C004CC486 /* MimeType.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = MimeType.h; path = Framework/GNUMail/MimeType.h; sourceTree = ""; }; 823AA8B60A160B8C004CC486 /* MimeType.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = MimeType.m; path = Framework/GNUMail/MimeType.m; sourceTree = ""; }; 823AA8B70A160B8C004CC486 /* MimeTypeManager.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = MimeTypeManager.h; path = Framework/GNUMail/MimeTypeManager.h; sourceTree = ""; }; 823AA8B80A160B8C004CC486 /* MimeTypeManager.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = MimeTypeManager.m; path = Framework/GNUMail/MimeTypeManager.m; sourceTree = ""; }; 823AA8B90A160B8C004CC486 /* NavigationToolbarItem.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = NavigationToolbarItem.h; path = Framework/GNUMail/NavigationToolbarItem.h; sourceTree = ""; }; 823AA8BA0A160B8C004CC486 /* NavigationToolbarItem.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = NavigationToolbarItem.m; path = Framework/GNUMail/NavigationToolbarItem.m; sourceTree = ""; }; 823AA8BD0A160B8C004CC486 /* NewMailboxPanelController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = NewMailboxPanelController.h; path = Framework/GNUMail/NewMailboxPanelController.h; sourceTree = ""; }; 823AA8BE0A160B8C004CC486 /* NewMailboxPanelController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = NewMailboxPanelController.m; path = Framework/GNUMail/NewMailboxPanelController.m; sourceTree = ""; }; 823AA8BF0A160B8C004CC486 /* NSAttributedString+Extensions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "NSAttributedString+Extensions.h"; path = "Framework/GNUMail/NSAttributedString+Extensions.h"; sourceTree = ""; }; 823AA8C00A160B8C004CC486 /* NSAttributedString+Extensions.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+Extensions.m"; path = "Framework/GNUMail/NSAttributedString+Extensions.m"; sourceTree = ""; }; 823AA8C10A160B8C004CC486 /* NSAttributedString+TextEnriched.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "NSAttributedString+TextEnriched.h"; path = "Framework/GNUMail/NSAttributedString+TextEnriched.h"; sourceTree = ""; }; 823AA8C20A160B8C004CC486 /* NSAttributedString+TextEnriched.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+TextEnriched.m"; path = "Framework/GNUMail/NSAttributedString+TextEnriched.m"; sourceTree = ""; }; 823AA8C30A160B8C004CC486 /* NSBezierPath+Extensions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "NSBezierPath+Extensions.h"; path = "Framework/GNUMail/NSBezierPath+Extensions.h"; sourceTree = ""; }; 823AA8C40A160B8C004CC486 /* NSBezierPath+Extensions.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "NSBezierPath+Extensions.m"; path = "Framework/GNUMail/NSBezierPath+Extensions.m"; sourceTree = ""; }; 823AA8C50A160B8C004CC486 /* NSBundle+Extensions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "NSBundle+Extensions.h"; path = "Framework/GNUMail/NSBundle+Extensions.h"; sourceTree = ""; }; 823AA8C60A160B8C004CC486 /* NSBundle+Extensions.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+Extensions.m"; path = "Framework/GNUMail/NSBundle+Extensions.m"; sourceTree = ""; }; 823AA8C70A160B8C004CC486 /* NSColor+Extensions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "NSColor+Extensions.h"; path = "Framework/GNUMail/NSColor+Extensions.h"; sourceTree = ""; }; 823AA8C80A160B8C004CC486 /* NSColor+Extensions.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "NSColor+Extensions.m"; path = "Framework/GNUMail/NSColor+Extensions.m"; sourceTree = ""; }; 823AA8C90A160B8C004CC486 /* NSFont+Extensions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "NSFont+Extensions.h"; path = "Framework/GNUMail/NSFont+Extensions.h"; sourceTree = ""; }; 823AA8CA0A160B8C004CC486 /* NSFont+Extensions.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "NSFont+Extensions.m"; path = "Framework/GNUMail/NSFont+Extensions.m"; sourceTree = ""; }; 823AA8CB0A160B8C004CC486 /* NSPasteboard+Extensions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "NSPasteboard+Extensions.h"; path = "Framework/GNUMail/NSPasteboard+Extensions.h"; sourceTree = ""; }; 823AA8CC0A160B8C004CC486 /* NSPasteboard+Extensions.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "NSPasteboard+Extensions.m"; path = "Framework/GNUMail/NSPasteboard+Extensions.m"; sourceTree = ""; }; 823AA8CD0A160B8C004CC486 /* NSUserDefaults+Extensions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "NSUserDefaults+Extensions.h"; path = "Framework/GNUMail/NSUserDefaults+Extensions.h"; sourceTree = ""; }; 823AA8CE0A160B8C004CC486 /* NSUserDefaults+Extensions.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "NSUserDefaults+Extensions.m"; path = "Framework/GNUMail/NSUserDefaults+Extensions.m"; sourceTree = ""; }; 823AA8D10A160B8C004CC486 /* PasswordPanelController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PasswordPanelController.h; path = Framework/GNUMail/PasswordPanelController.h; sourceTree = ""; }; 823AA8D20A160B8C004CC486 /* PasswordPanelController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PasswordPanelController.m; path = Framework/GNUMail/PasswordPanelController.m; sourceTree = ""; }; 823AA8D30A160B8C004CC486 /* PreferencesModule.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PreferencesModule.h; path = Framework/GNUMail/PreferencesModule.h; sourceTree = ""; }; 823AA8D60A160B8C004CC486 /* PreferencesWindowController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PreferencesWindowController.h; path = Framework/GNUMail/PreferencesWindowController.h; sourceTree = ""; }; 823AA8D70A160B8D004CC486 /* PreferencesWindowController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PreferencesWindowController.m; path = Framework/GNUMail/PreferencesWindowController.m; sourceTree = ""; }; 823AA8D80A160B8D004CC486 /* StripeTableView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = StripeTableView.h; path = Framework/GNUMail/StripeTableView.h; sourceTree = ""; }; 823AA8D90A160B8D004CC486 /* StripeTableView.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = StripeTableView.m; path = Framework/GNUMail/StripeTableView.m; sourceTree = ""; }; 823AA8DC0A160B8D004CC486 /* Task.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Task.h; path = Framework/GNUMail/Task.h; sourceTree = ""; }; 823AA8DD0A160B8D004CC486 /* Task.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = Task.m; path = Framework/GNUMail/Task.m; sourceTree = ""; }; 823AA8DE0A160B8D004CC486 /* TaskManager.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = TaskManager.h; path = Framework/GNUMail/TaskManager.h; sourceTree = ""; }; 823AA8DF0A160B8D004CC486 /* TaskManager.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = TaskManager.m; path = Framework/GNUMail/TaskManager.m; sourceTree = ""; }; 823AA8E00A160B8D004CC486 /* ThreadArcsCell.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ThreadArcsCell.h; path = Framework/GNUMail/ThreadArcsCell.h; sourceTree = ""; }; 823AA8E10A160B8D004CC486 /* ThreadArcsCell.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ThreadArcsCell.m; path = Framework/GNUMail/ThreadArcsCell.m; sourceTree = ""; }; 823AA8E20A160B8D004CC486 /* Utilities.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Utilities.h; path = Framework/GNUMail/Utilities.h; sourceTree = ""; }; 823AA8E30A160B8D004CC486 /* Utilities.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = Utilities.m; path = Framework/GNUMail/Utilities.m; sourceTree = ""; }; 823AA8E40A160B8D004CC486 /* WelcomePanel.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = WelcomePanel.h; path = Framework/GNUMail/WelcomePanel.h; sourceTree = ""; }; 823AA8E50A160B8D004CC486 /* WelcomePanel.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = WelcomePanel.m; path = Framework/GNUMail/WelcomePanel.m; sourceTree = ""; }; 823AA9A00A160CA8004CC486 /* add_bcc_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = add_bcc_32.tiff; path = Resources/Icons/add_bcc_32.tiff; sourceTree = ""; }; 823AA9A10A160CA8004CC486 /* add_bcc_48.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = add_bcc_48.tiff; path = Resources/Icons/add_bcc_48.tiff; sourceTree = ""; }; 823AA9A20A160CA8004CC486 /* add_cc_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = add_cc_32.tiff; path = Resources/Icons/add_cc_32.tiff; sourceTree = ""; }; 823AA9A30A160CA8004CC486 /* add_cc_48.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = add_cc_48.tiff; path = Resources/Icons/add_cc_48.tiff; sourceTree = ""; }; 823AA9A40A160CA8004CC486 /* add.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = add.tiff; path = Resources/Icons/add.tiff; sourceTree = ""; }; 823AA9A50A160CA8004CC486 /* Address_bcc.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = Address_bcc.tiff; path = Resources/Icons/Address_bcc.tiff; sourceTree = ""; }; 823AA9A60A160CA8004CC486 /* Address_cc.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = Address_cc.tiff; path = Resources/Icons/Address_cc.tiff; sourceTree = ""; }; 823AA9A70A160CA8004CC486 /* Address_to.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = Address_to.tiff; path = Resources/Icons/Address_to.tiff; sourceTree = ""; }; 823AA9A80A160CA8004CC486 /* AddressBook_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = AddressBook_32.tiff; path = Resources/Icons/AddressBook_32.tiff; sourceTree = ""; }; 823AA9A90A160CA8004CC486 /* addresses_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = addresses_32.tiff; path = Resources/Icons/addresses_32.tiff; sourceTree = ""; }; 823AA9AA0A160CA8004CC486 /* addresses_48.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = addresses_48.tiff; path = Resources/Icons/addresses_48.tiff; sourceTree = ""; }; 823AA9AB0A160CA8004CC486 /* AddressManager_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = AddressManager_32.tiff; path = Resources/Icons/AddressManager_32.tiff; sourceTree = ""; }; 823AA9AC0A160CA8004CC486 /* anim-logo-1.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-1.tiff"; path = "Resources/Icons/anim-logo-1.tiff"; sourceTree = ""; }; 823AA9AD0A160CA8004CC486 /* anim-logo-2.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-2.tiff"; path = "Resources/Icons/anim-logo-2.tiff"; sourceTree = ""; }; 823AA9AE0A160CA8004CC486 /* anim-logo-3.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-3.tiff"; path = "Resources/Icons/anim-logo-3.tiff"; sourceTree = ""; }; 823AA9AF0A160CA8004CC486 /* anim-logo-4.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-4.tiff"; path = "Resources/Icons/anim-logo-4.tiff"; sourceTree = ""; }; 823AA9B00A160CA8004CC486 /* anim-logo-5.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-5.tiff"; path = "Resources/Icons/anim-logo-5.tiff"; sourceTree = ""; }; 823AA9B10A160CA8004CC486 /* anim-logo-6.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-6.tiff"; path = "Resources/Icons/anim-logo-6.tiff"; sourceTree = ""; }; 823AA9B20A160CA8004CC486 /* anim-logo-7.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-7.tiff"; path = "Resources/Icons/anim-logo-7.tiff"; sourceTree = ""; }; 823AA9B30A160CA8004CC486 /* anim-logo-8.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "anim-logo-8.tiff"; path = "Resources/Icons/anim-logo-8.tiff"; sourceTree = ""; }; 823AA9B40A160CA8004CC486 /* answered-flag.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "answered-flag.tiff"; path = "Resources/Icons/answered-flag.tiff"; sourceTree = ""; }; 823AA9B50A160CA8004CC486 /* attach_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = attach_32.tiff; path = Resources/Icons/attach_32.tiff; sourceTree = ""; }; 823AA9B60A160CA8004CC486 /* attach_48.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = attach_48.tiff; path = Resources/Icons/attach_48.tiff; sourceTree = ""; }; 823AA9B70A160CA8004CC486 /* common_Unknown.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = common_Unknown.tiff; path = Resources/Icons/common_Unknown.tiff; sourceTree = ""; }; 823AA9B80A160CA8004CC486 /* create_16.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = create_16.tiff; path = Resources/Icons/create_16.tiff; sourceTree = ""; }; 823AA9B90A160CA8004CC486 /* create_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = create_32.tiff; path = Resources/Icons/create_32.tiff; sourceTree = ""; }; 823AA9BA0A160CA8004CC486 /* create_48.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = create_48.tiff; path = Resources/Icons/create_48.tiff; sourceTree = ""; }; 823AA9BC0A160CA8004CC486 /* delete_20.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = delete_20.tiff; path = Resources/Icons/delete_20.tiff; sourceTree = ""; }; 823AA9BD0A160CA8004CC486 /* delete_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = delete_32.tiff; path = Resources/Icons/delete_32.tiff; sourceTree = ""; }; 823AA9BE0A160CA8004CC486 /* delete_48.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = delete_48.tiff; path = Resources/Icons/delete_48.tiff; sourceTree = ""; }; 823AA9BF0A160CA8004CC486 /* down_15.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = down_15.tiff; path = Resources/Icons/down_15.tiff; sourceTree = ""; }; 823AA9C10A160CA8004CC486 /* drag_mail.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = drag_mail.tiff; path = Resources/Icons/drag_mail.tiff; sourceTree = ""; }; 823AA9C20A160CA8004CC486 /* drag_mails.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = drag_mails.tiff; path = Resources/Icons/drag_mails.tiff; sourceTree = ""; }; 823AA9C30A160CA8004CC486 /* duplicate.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = duplicate.tiff; path = Resources/Icons/duplicate.tiff; sourceTree = ""; }; 823AA9C40A160CA8004CC486 /* edit.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = edit.tiff; path = Resources/Icons/edit.tiff; sourceTree = ""; }; 823AA9C50A160CA8004CC486 /* find_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = find_32.tiff; path = Resources/Icons/find_32.tiff; sourceTree = ""; }; 823AA9C60A160CA8004CC486 /* find_48.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = find_48.tiff; path = Resources/Icons/find_48.tiff; sourceTree = ""; }; 823AA9C70A160CA8004CC486 /* flagged-flag.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "flagged-flag.tiff"; path = "Resources/Icons/flagged-flag.tiff"; sourceTree = ""; }; 823AA9C80A160CA8004CC486 /* forward_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = forward_32.tiff; path = Resources/Icons/forward_32.tiff; sourceTree = ""; }; 823AA9C90A160CA8004CC486 /* forward_48.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = forward_48.tiff; path = Resources/Icons/forward_48.tiff; sourceTree = ""; }; 823AA9CA0A160CA8004CC486 /* GNUMail_128.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = GNUMail_128.tiff; path = Resources/Icons/GNUMail_128.tiff; sourceTree = ""; }; 823AA9CB0A160CA8004CC486 /* GNUMail_big.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = GNUMail_big.tiff; path = Resources/Icons/GNUMail_big.tiff; sourceTree = ""; }; 823AA9CC0A160CA8004CC486 /* GNUMail_Full.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = GNUMail_Full.tiff; path = Resources/Icons/GNUMail_Full.tiff; sourceTree = ""; }; 823AA9CD0A160CA8004CC486 /* GNUMail.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = GNUMail.icns; path = Resources/Icons/GNUMail.icns; sourceTree = ""; }; 823AA9CE0A160CA8004CC486 /* GNUMail.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = GNUMail.tiff; path = Resources/Icons/GNUMail.tiff; sourceTree = ""; }; 823AA9CF0A160CA8004CC486 /* hand.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = hand.tiff; path = Resources/Icons/hand.tiff; sourceTree = ""; }; 823AA9D00A160CA8004CC486 /* mailbox_add_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = mailbox_add_32.tiff; path = Resources/Icons/mailbox_add_32.tiff; sourceTree = ""; }; 823AA9D30A160CA8004CC486 /* mailbox_rename_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = mailbox_rename_32.tiff; path = Resources/Icons/mailbox_rename_32.tiff; sourceTree = ""; }; 823AA9D40A160CA8004CC486 /* mailboxes_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = mailboxes_32.tiff; path = Resources/Icons/mailboxes_32.tiff; sourceTree = ""; }; 823AA9D50A160CA8004CC486 /* mailboxes_48.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = mailboxes_48.tiff; path = Resources/Icons/mailboxes_48.tiff; sourceTree = ""; }; 823AA9D80A160CA8004CC486 /* pgp-mail-small.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "pgp-mail-small.tiff"; path = "Resources/Icons/pgp-mail-small.tiff"; sourceTree = ""; }; 823AA9D90A160CA8004CC486 /* pgp-mail.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "pgp-mail.tiff"; path = "Resources/Icons/pgp-mail.tiff"; sourceTree = ""; }; 823AA9DA0A160CA8004CC486 /* raw_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = raw_32.tiff; path = Resources/Icons/raw_32.tiff; sourceTree = ""; }; 823AA9DB0A160CA8004CC486 /* raw_48.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = raw_48.tiff; path = Resources/Icons/raw_48.tiff; sourceTree = ""; }; 823AA9DC0A160CA8004CC486 /* recent-flag.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "recent-flag.tiff"; path = "Resources/Icons/recent-flag.tiff"; sourceTree = ""; }; 823AA9DD0A160CA8004CC486 /* remove_bcc_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = remove_bcc_32.tiff; path = Resources/Icons/remove_bcc_32.tiff; sourceTree = ""; }; 823AA9DE0A160CA8004CC486 /* remove_bcc_48.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = remove_bcc_48.tiff; path = Resources/Icons/remove_bcc_48.tiff; sourceTree = ""; }; 823AA9DF0A160CA8004CC486 /* remove_cc_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = remove_cc_32.tiff; path = Resources/Icons/remove_cc_32.tiff; sourceTree = ""; }; 823AA9E00A160CA8004CC486 /* remove_cc_48.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = remove_cc_48.tiff; path = Resources/Icons/remove_cc_48.tiff; sourceTree = ""; }; 823AA9E10A160CA8004CC486 /* reply_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = reply_32.tiff; path = Resources/Icons/reply_32.tiff; sourceTree = ""; }; 823AA9E20A160CA8004CC486 /* reply_48.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = reply_48.tiff; path = Resources/Icons/reply_48.tiff; sourceTree = ""; }; 823AA9E30A160CA8004CC486 /* restart_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = restart_32.tiff; path = Resources/Icons/restart_32.tiff; sourceTree = ""; }; 823AA9E40A160CA8004CC486 /* retrieve_16.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = retrieve_16.tiff; path = Resources/Icons/retrieve_16.tiff; sourceTree = ""; }; 823AA9E50A160CA8004CC486 /* retrieve_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = retrieve_32.tiff; path = Resources/Icons/retrieve_32.tiff; sourceTree = ""; }; 823AA9E60A160CA8004CC486 /* retrieve_48.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = retrieve_48.tiff; path = Resources/Icons/retrieve_48.tiff; sourceTree = ""; }; 823AA9E70A160CA8004CC486 /* send_16.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = send_16.tiff; path = Resources/Icons/send_16.tiff; sourceTree = ""; }; 823AA9E80A160CA8004CC486 /* send_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = send_32.tiff; path = Resources/Icons/send_32.tiff; sourceTree = ""; }; 823AA9E90A160CA8004CC486 /* send_48.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = send_48.tiff; path = Resources/Icons/send_48.tiff; sourceTree = ""; }; 823AA9EA0A160CA8004CC486 /* show_all_headers_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = show_all_headers_32.tiff; path = Resources/Icons/show_all_headers_32.tiff; sourceTree = ""; }; 823AA9EB0A160CA8004CC486 /* show_all_headers_48.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = show_all_headers_48.tiff; path = Resources/Icons/show_all_headers_48.tiff; sourceTree = ""; }; 823AA9EC0A160CA8004CC486 /* sort_down.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = sort_down.tiff; path = Resources/Icons/sort_down.tiff; sourceTree = ""; }; 823AA9ED0A160CA8004CC486 /* sort_left.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = sort_left.tiff; path = Resources/Icons/sort_left.tiff; sourceTree = ""; }; 823AA9EE0A160CA8004CC486 /* sort_right.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = sort_right.tiff; path = Resources/Icons/sort_right.tiff; sourceTree = ""; }; 823AA9EF0A160CA8004CC486 /* sort_up.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = sort_up.tiff; path = Resources/Icons/sort_up.tiff; sourceTree = ""; }; 823AA9F00A160CA8004CC486 /* stop_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = stop_32.tiff; path = Resources/Icons/stop_32.tiff; sourceTree = ""; }; 823AA9F10A160CA8004CC486 /* up_15.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = up_15.tiff; path = Resources/Icons/up_15.tiff; sourceTree = ""; }; 823AAA4C0A160DF3004CC486 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Resources/English.lproj/AboutPanel.nib; sourceTree = ""; }; 823AAA4E0A160DF3004CC486 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Resources/English.lproj/AddressBookPanel.nib; sourceTree = ""; }; 823AAA500A160DF3004CC486 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Resources/English.lproj/ConsoleWindow.nib; sourceTree = ""; }; 823AAA520A160DF3004CC486 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Resources/English.lproj/EditWindow.nib; sourceTree = ""; }; 823AAA540A160DF3004CC486 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Resources/English.lproj/FindWindow.nib; sourceTree = ""; }; 823AAA5B0A160E12004CC486 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Resources/English.lproj/MailboxInspectorPanel.nib; sourceTree = ""; }; 823AAA5D0A160E12004CC486 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Resources/English.lproj/MailWindow.nib; sourceTree = ""; }; 823AAA5F0A160E12004CC486 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Resources/English.lproj/MainMenu.nib; sourceTree = ""; }; 823AAA610A160E12004CC486 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Resources/English.lproj/MessageViewWindow.nib; sourceTree = ""; }; 823AAA630A160E12004CC486 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Resources/English.lproj/NewMailboxPanel.nib; sourceTree = ""; }; 823AAA650A160E12004CC486 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Resources/English.lproj/PasswordPanel.nib; sourceTree = ""; }; 823AAA670A160E12004CC486 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Resources/English.lproj/PreferencesWindow.nib; sourceTree = ""; }; 823AAAB30A1612B7004CC486 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = Resources/English.lproj/InfoPlist.strings; sourceTree = ""; }; 823AAAB60A1612E8004CC486 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; name = English; path = Resources/English.lproj/GNUMail.scriptTerminology; sourceTree = ""; }; 823AE3BB0BB6F7600054A9F4 /* 3-pane_96x96.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "3-pane_96x96.tiff"; path = "Bundles/Viewing/3-pane_96x96.tiff"; sourceTree = ""; }; 823AE3BC0BB6F7600054A9F4 /* drawer_96x96.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = drawer_96x96.tiff; path = Bundles/Viewing/drawer_96x96.tiff; sourceTree = ""; }; 823AE3BF0BB6F77E0054A9F4 /* floating_96x96.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = floating_96x96.tiff; path = Bundles/Viewing/floating_96x96.tiff; sourceTree = ""; }; 823AE3C10BB6F79B0054A9F4 /* widescreen_96x96.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = widescreen_96x96.tiff; path = Bundles/Viewing/widescreen_96x96.tiff; sourceTree = ""; }; 824C14D60AC88BD40032E967 /* create_12.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = create_12.tiff; path = Resources/Icons/create_12.tiff; sourceTree = ""; }; 824C14D70AC88BD40032E967 /* create_20.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = create_20.tiff; path = Resources/Icons/create_20.tiff; sourceTree = ""; }; 824C14D80AC88BD40032E967 /* folder_12.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = folder_12.tiff; path = Resources/Icons/folder_12.tiff; sourceTree = ""; }; 824C14D90AC88BD40032E967 /* folder_16.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = folder_16.tiff; path = Resources/Icons/folder_16.tiff; sourceTree = ""; }; 824C14DA0AC88BD40032E967 /* folder_20.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = folder_20.tiff; path = Resources/Icons/folder_20.tiff; sourceTree = ""; }; 824C14DB0AC88BD40032E967 /* retrieve_12.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = retrieve_12.tiff; path = Resources/Icons/retrieve_12.tiff; sourceTree = ""; }; 824C14DC0AC88BD40032E967 /* retrieve_20.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = retrieve_20.tiff; path = Resources/Icons/retrieve_20.tiff; sourceTree = ""; }; 824C14DD0AC88BD40032E967 /* send_12.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = send_12.tiff; path = Resources/Icons/send_12.tiff; sourceTree = ""; }; 824C14DE0AC88BD40032E967 /* send_20.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = send_20.tiff; path = Resources/Icons/send_20.tiff; sourceTree = ""; }; 824C14DF0AC88BD40032E967 /* trash_12.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = trash_12.tiff; path = Resources/Icons/trash_12.tiff; sourceTree = ""; }; 824C14E00AC88BD40032E967 /* trash_16.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = trash_16.tiff; path = Resources/Icons/trash_16.tiff; sourceTree = ""; }; 824C14E10AC88BD40032E967 /* trash_20.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = trash_20.tiff; path = Resources/Icons/trash_20.tiff; sourceTree = ""; }; 824C14F10AC88CD40032E967 /* drafts_32.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = drafts_32.tiff; path = Resources/Icons/drafts_32.tiff; sourceTree = ""; }; 824C14F20AC88CD40032E967 /* drafts_48.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = drafts_48.tiff; path = Resources/Icons/drafts_48.tiff; sourceTree = ""; }; 828883DD0BA46B110073F597 /* GNUMail+MenuValidation.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = "GNUMail+MenuValidation.h"; path = "Framework/GNUMail/GNUMail+MenuValidation.h"; sourceTree = ""; }; 828883DE0BA46B110073F597 /* GNUMail+MenuValidation.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = "GNUMail+MenuValidation.m"; path = "Framework/GNUMail/GNUMail+MenuValidation.m"; sourceTree = ""; }; 82E5FAF40B74C892005B155C /* Welcome */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = Welcome; path = Resources/Goodies/Welcome; sourceTree = ""; }; DDAE831603E303C700A8A065 /* GNUMail.scriptSuite */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = GNUMail.scriptSuite; sourceTree = ""; }; F5136EF502F8926A01000002 /* GNUMail_main.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = GNUMail_main.m; sourceTree = ""; }; F517DFA802293DA201A80103 /* Viewing.prefs */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = Viewing.prefs; sourceTree = BUILT_PRODUCTS_DIR; }; F517DFA902293DA201A80103 /* Sending.prefs */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = Sending.prefs; sourceTree = BUILT_PRODUCTS_DIR; }; F517DFB602293ECA01A80103 /* ViewingViewController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ViewingViewController.m; path = Bundles/Viewing/ViewingViewController.m; sourceTree = ""; }; F517DFB702293ECA01A80103 /* ViewingViewController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ViewingViewController.h; path = Bundles/Viewing/ViewingViewController.h; sourceTree = ""; }; F517DFB902293ECA01A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Bundles/Viewing/English.lproj/ViewingView.nib; sourceTree = ""; }; F517DFBD02293F3D01A80103 /* SendingViewController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = SendingViewController.m; path = Bundles/Sending/SendingViewController.m; sourceTree = ""; }; F517DFBF02293F3D01A80103 /* SendingViewController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = SendingViewController.h; path = Bundles/Sending/SendingViewController.h; sourceTree = ""; }; F517DFC202293F3D01A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Bundles/Sending/English.lproj/SendingView.nib; sourceTree = ""; }; F517DFCE022940C901A80103 /* Receiving.prefs */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = Receiving.prefs; sourceTree = BUILT_PRODUCTS_DIR; }; F517DFCF022940C901A80103 /* Compose.prefs */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = Compose.prefs; sourceTree = BUILT_PRODUCTS_DIR; }; F517DFD1022940C901A80103 /* Fonts.prefs */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = Fonts.prefs; sourceTree = BUILT_PRODUCTS_DIR; }; F517DFD2022940C901A80103 /* MIME.prefs */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = MIME.prefs; sourceTree = BUILT_PRODUCTS_DIR; }; F517DFD3022940C901A80103 /* Filtering.prefs */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = Filtering.prefs; sourceTree = BUILT_PRODUCTS_DIR; }; F517E0150229468C01A80103 /* ComposeViewController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ComposeViewController.m; path = Bundles/Compose/ComposeViewController.m; sourceTree = ""; }; F517E0170229468C01A80103 /* ComposeViewController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ComposeViewController.h; path = Bundles/Compose/ComposeViewController.h; sourceTree = ""; }; F517E01C0229468C01A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Bundles/Compose/English.lproj/ComposeView.nib; sourceTree = ""; }; F517E031022947E001A80103 /* FontsViewController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = FontsViewController.m; path = Bundles/Fonts/FontsViewController.m; sourceTree = ""; }; F517E034022947E001A80103 /* FontsViewController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FontsViewController.h; path = Bundles/Fonts/FontsViewController.h; sourceTree = ""; }; F517E036022947E001A80103 /* fonts.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = fonts.tiff; path = Bundles/Fonts/fonts.tiff; sourceTree = ""; }; F517E0420229494701A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Bundles/Filtering/English.lproj/FilterEditorWindow.nib; sourceTree = ""; }; F517E0440229494701A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Bundles/Filtering/English.lproj/FilterHeaderEditorWindow.nib; sourceTree = ""; }; F517E0460229494701A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Bundles/Filtering/English.lproj/FilteringView.nib; sourceTree = ""; }; F517E0480229494701A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Bundles/Filtering/English.lproj/FilterMessageWindow.nib; sourceTree = ""; }; F517E04D0229494701A80103 /* MimeTypeEditorWindowController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = MimeTypeEditorWindowController.m; path = Bundles/MIME/MimeTypeEditorWindowController.m; sourceTree = ""; }; F517E04E0229494701A80103 /* MIMEViewController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = MIMEViewController.m; path = Bundles/MIME/MIMEViewController.m; sourceTree = ""; }; F517E0530229494701A80103 /* MimeTypeEditorWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = MimeTypeEditorWindow.h; path = Bundles/MIME/MimeTypeEditorWindow.h; sourceTree = ""; }; F517E0540229494701A80103 /* MimeTypeEditorWindowController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = MimeTypeEditorWindowController.h; path = Bundles/MIME/MimeTypeEditorWindowController.h; sourceTree = ""; }; F517E0560229494701A80103 /* MIMEViewController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = MIMEViewController.h; path = Bundles/MIME/MIMEViewController.h; sourceTree = ""; }; F517E0580229494701A80103 /* mime.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = mime.tiff; path = Bundles/MIME/mime.tiff; sourceTree = ""; }; F517E05D0229494701A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Bundles/MIME/English.lproj/MimeTypeEditorWindow.nib; sourceTree = ""; }; F517E05F0229494701A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Bundles/MIME/English.lproj/MIMEView.nib; sourceTree = ""; }; F517E0770229495701A80103 /* FilterEditorWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FilterEditorWindow.h; path = Bundles/Filtering/FilterEditorWindow.h; sourceTree = ""; }; F517E0780229495701A80103 /* FilterEditorWindowController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FilterEditorWindowController.h; path = Bundles/Filtering/FilterEditorWindowController.h; sourceTree = ""; }; F517E0790229495701A80103 /* FilterEditorWindowController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = FilterEditorWindowController.m; path = Bundles/Filtering/FilterEditorWindowController.m; sourceTree = ""; }; F517E07A0229495701A80103 /* FilterHeaderEditorWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FilterHeaderEditorWindow.h; path = Bundles/Filtering/FilterHeaderEditorWindow.h; sourceTree = ""; }; F517E07B0229495701A80103 /* FilterHeaderEditorWindowController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FilterHeaderEditorWindowController.h; path = Bundles/Filtering/FilterHeaderEditorWindowController.h; sourceTree = ""; }; F517E07C0229495701A80103 /* FilterHeaderEditorWindowController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = FilterHeaderEditorWindowController.m; path = Bundles/Filtering/FilterHeaderEditorWindowController.m; sourceTree = ""; }; F517E07D0229495701A80103 /* Filtering.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = Filtering.tiff; path = Bundles/Filtering/Filtering.tiff; sourceTree = ""; }; F517E07E0229495701A80103 /* FilteringView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FilteringView.h; path = Bundles/Filtering/FilteringView.h; sourceTree = ""; }; F517E07F0229495701A80103 /* FilteringViewController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FilteringViewController.h; path = Bundles/Filtering/FilteringViewController.h; sourceTree = ""; }; F517E0800229495701A80103 /* FilteringViewController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = FilteringViewController.m; path = Bundles/Filtering/FilteringViewController.m; sourceTree = ""; }; F517E0810229495701A80103 /* FilterMessageWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FilterMessageWindow.h; path = Bundles/Filtering/FilterMessageWindow.h; sourceTree = ""; }; F517E0820229495701A80103 /* FilterMessageWindowController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FilterMessageWindowController.h; path = Bundles/Filtering/FilterMessageWindowController.h; sourceTree = ""; }; F517E0830229495701A80103 /* FilterMessageWindowController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = FilterMessageWindowController.m; path = Bundles/Filtering/FilterMessageWindowController.m; sourceTree = ""; }; F517E0C502297BE401A80103 /* ReceivingViewController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ReceivingViewController.m; path = Bundles/Receiving/ReceivingViewController.m; sourceTree = ""; }; F517E0CB02297BE401A80103 /* ReceivingViewController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ReceivingViewController.h; path = Bundles/Receiving/ReceivingViewController.h; sourceTree = ""; }; F517E0CF02297BE401A80103 /* MailIcon_retrieve.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = MailIcon_retrieve.tiff; path = Bundles/Receiving/MailIcon_retrieve.tiff; sourceTree = ""; }; F517E0D202297BE401A80103 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Bundles/Receiving/English.lproj/ReceivingView.nib; sourceTree = ""; }; F533894E02F8A00801000002 /* PGPController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PGPController.m; path = Bundles/PGP/PGPController.m; sourceTree = ""; }; F533895002F8A00801000002 /* PGPViewController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PGPViewController.m; path = Bundles/PGP/PGPViewController.m; sourceTree = ""; }; F533895202F8A00801000002 /* PGPController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PGPController.h; path = Bundles/PGP/PGPController.h; sourceTree = ""; }; F533895402F8A00801000002 /* PGPViewController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PGPViewController.h; path = Bundles/PGP/PGPViewController.h; sourceTree = ""; }; F533895802F8A00801000002 /* pgp-mail.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = "pgp-mail.tiff"; path = "Bundles/PGP/pgp-mail.tiff"; sourceTree = ""; }; F554A595022B29D201346888 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = Bundles/Fonts/English.lproj/FontsView.nib; sourceTree = ""; }; F5671D7001B18B6201A80205 /* ChangeLog */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; F58841420249864E01A80205 /* GNUMail.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GNUMail.framework; sourceTree = BUILT_PRODUCTS_DIR; }; F5E20AC50229937F01A80103 /* viewing.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = viewing.tiff; path = Bundles/Viewing/viewing.tiff; sourceTree = ""; }; F5E20AC60229937F01A80103 /* MailIcon_send.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = MailIcon_send.tiff; path = Bundles/Sending/MailIcon_send.tiff; sourceTree = ""; }; F5E20AC70229937F01A80103 /* MailIcon_create.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = MailIcon_create.tiff; path = Bundles/Compose/MailIcon_create.tiff; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworkTarget section */ F58841430249864E01A80205 /* GNUMail framework */ = { isa = PBXFrameworkTarget; buildConfigurationList = 827707B00A13F3D90009F1A9 /* Build configuration list for PBXFrameworkTarget "GNUMail framework" */; buildPhases = ( F58841440249864E01A80205 /* Headers */, F58841480249864E01A80205 /* Resources */, F58841490249864E01A80205 /* Sources */, F588414A0249864E01A80205 /* Frameworks */, F588414C0249864E01A80205 /* Rez */, ); dependencies = ( ); name = "GNUMail framework"; productInstallPath = "@executable_path/../Frameworks"; productName = "GNUMail Bundle"; productReference = F58841420249864E01A80205 /* GNUMail.framework */; productSettingsXML = " CFBundleDevelopmentRegion English CFBundleExecutable GNUMail CFBundleGetInfoString 1.2.0 CFBundleIdentifier CFBundleInfoDictionaryVersion 6.0 CFBundleName CFBundlePackageType FMWK CFBundleShortVersionString 1.2.0 CFBundleSignature GNUM CFBundleVersion 1.2.0 "; }; /* End PBXFrameworkTarget section */ /* Begin PBXFrameworksBuildPhase section */ 29B9732DFDCFA39411CA2CEA /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 1058C7A3FEA54F0111CA2CBB /* Cocoa.framework in Frameworks */, F533894902F89A8201000002 /* GNUMail.framework in Frameworks */, 43B8D36103C606D000B85C1B /* AddressBook.framework in Frameworks */, 82137F070B6D267E0049FAE9 /* Pantomime.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 43376E1203C623F60085F876 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 43376E2A03C6249A0085F876 /* Cocoa.framework in Frameworks */, 43376E2C03C624E50085F876 /* GNUMail.framework in Frameworks */, 82137F100B6D267E0049FAE9 /* Pantomime.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 43376E3403C627140085F876 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 43376E4303C627A70085F876 /* Cocoa.framework in Frameworks */, 43376E4403C627A90085F876 /* GNUMail.framework in Frameworks */, 82137F110B6D267E0049FAE9 /* Pantomime.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 4360B2DF0542198E0029C389 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 4360B2F205421A990029C389 /* Cocoa.framework in Frameworks */, 4360B2F305421AFA0029C389 /* GNUMail.framework in Frameworks */, 82137F160B6D267E0049FAE9 /* Pantomime.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 43974D510411792000442E8B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 43974D6704117A8B00442E8B /* GNUMail.framework in Frameworks */, 43974D6904117B4F00442E8B /* Cocoa.framework in Frameworks */, 82137F120B6D267E0049FAE9 /* Pantomime.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 43974D6D04117BB800442E8B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 43974D7E04117D1D00442E8B /* Cocoa.framework in Frameworks */, 43974D7F04117D2D00442E8B /* GNUMail.framework in Frameworks */, 82137F130B6D267E0049FAE9 /* Pantomime.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 43974D8304117DFB00442E8B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 43974D9404117EC600442E8B /* GNUMail.framework in Frameworks */, 43974D9504117EC800442E8B /* Cocoa.framework in Frameworks */, 82137F140B6D267E0049FAE9 /* Pantomime.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 439CDE3705153D050025822F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 439CDE6105153DDC0025822F /* Cocoa.framework in Frameworks */, 82137F150B6D267E0049FAE9 /* Pantomime.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFAE02293DA201A80103 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( F517DFCC02293F6D01A80103 /* Cocoa.framework in Frameworks */, F5136EFA02F8933B01000002 /* GNUMail.framework in Frameworks */, 82137F090B6D267E0049FAE9 /* Pantomime.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFB402293DA201A80103 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( F517DFCB02293F6101A80103 /* Cocoa.framework in Frameworks */, F5136EFD02F893F901000002 /* GNUMail.framework in Frameworks */, 82137F0A0B6D267E0049FAE9 /* Pantomime.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFD8022940C901A80103 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( F517E0E002297C4901A80103 /* Cocoa.framework in Frameworks */, F5136F0002F8950101000002 /* GNUMail.framework in Frameworks */, 82137F0B0B6D267E0049FAE9 /* Pantomime.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFDE022940C901A80103 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( F517E00E0229438901A80103 /* Cocoa.framework in Frameworks */, F5136F0302F8950101000002 /* GNUMail.framework in Frameworks */, 82137F0C0B6D267E0049FAE9 /* Pantomime.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFEA022940C901A80103 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( F517E0100229438901A80103 /* Cocoa.framework in Frameworks */, F5136F0502F8950101000002 /* GNUMail.framework in Frameworks */, 82137F0D0B6D267E0049FAE9 /* Pantomime.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFF0022940C901A80103 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( F517E0110229438901A80103 /* Cocoa.framework in Frameworks */, F5136F0702F8950101000002 /* GNUMail.framework in Frameworks */, 82137F0E0B6D267E0049FAE9 /* Pantomime.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFF6022940C901A80103 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( F517E0120229438901A80103 /* Cocoa.framework in Frameworks */, F5CAFDCE02D74F1501000002 /* GNUMail.framework in Frameworks */, DD0F41DE05768621001625E2 /* AddressBook.framework in Frameworks */, 82137F0F0B6D267E0049FAE9 /* Pantomime.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; F588414A0249864E01A80205 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( F588414B0249864E01A80205 /* Cocoa.framework in Frameworks */, 43B8D36203C608B700B85C1B /* AddressBook.framework in Frameworks */, 82137F080B6D267E0049FAE9 /* Pantomime.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 080E96DDFE201D6D7F000001 /* Classes */ = { isa = PBXGroup; children = ( 828883DD0BA46B110073F597 /* GNUMail+MenuValidation.h */, 828883DE0BA46B110073F597 /* GNUMail+MenuValidation.m */, F5136EF502F8926A01000002 /* GNUMail_main.m */, 823AA8590A160B8C004CC486 /* AboutPanelController.m */, 823AA85B0A160B8C004CC486 /* AddressBookController.m */, 823AA85E0A160B8C004CC486 /* AddressTaker.h */, 823AA85F0A160B8C004CC486 /* ApplicationIconController.h */, 823AA8600A160B8C004CC486 /* ApplicationIconController.m */, 823AA8610A160B8C004CC486 /* AutoCompletingTextField.h */, 823AA8620A160B8C004CC486 /* AutoCompletingTextField.m */, 823AA8650A160B8C004CC486 /* ConsoleWindowController.h */, 823AA8660A160B8C004CC486 /* ConsoleWindowController.m */, 823AA8670A160B8C004CC486 /* Constants.h */, 823AA8680A160B8C004CC486 /* Constants.m */, 823AA86B0A160B8C004CC486 /* EditWindowController.h */, 823AA86C0A160B8C004CC486 /* EditWindowController.m */, 823AA86D0A160B8C004CC486 /* EditWindowToolbar.h */, 823AA86E0A160B8C004CC486 /* EditWindowToolbar.m */, 823AA86F0A160B8C004CC486 /* ExtendedCell.h */, 823AA8700A160B8C004CC486 /* ExtendedCell.m */, 823AA8710A160B8C004CC486 /* ExtendedFileWrapper.h */, 823AA8720A160B8C004CC486 /* ExtendedFileWrapper.m */, 823AA8730A160B8C004CC486 /* ExtendedMenuItem.h */, 823AA8740A160B8C004CC486 /* ExtendedMenuItem.m */, 823AA8750A160B8C004CC486 /* ExtendedOutlineView.h */, 823AA8760A160B8C004CC486 /* ExtendedOutlineView.m */, 823AA8770A160B8C004CC486 /* ExtendedTableView.h */, 823AA8780A160B8C004CC486 /* ExtendedTableView.m */, 823AA8790A160B8C004CC486 /* ExtendedTextAttachmentCell.h */, 823AA87A0A160B8C004CC486 /* ExtendedTextAttachmentCell.m */, 823AA87B0A160B8C004CC486 /* ExtendedTextView.h */, 823AA87C0A160B8C004CC486 /* ExtendedTextView.m */, 823AA87D0A160B8C004CC486 /* ExtendedWindow.h */, 823AA87E0A160B8C004CC486 /* ExtendedWindow.m */, 823AA87F0A160B8C004CC486 /* Filter.h */, 823AA8800A160B8C004CC486 /* Filter.m */, 823AA8810A160B8C004CC486 /* FilterManager.h */, 823AA8820A160B8C004CC486 /* FilterManager.m */, 823AA8850A160B8C004CC486 /* FindWindowController.h */, 823AA8860A160B8C004CC486 /* FindWindowController.m */, 823AA8870A160B8C004CC486 /* FolderNode.h */, 823AA8880A160B8C004CC486 /* FolderNode.m */, 823AA8890A160B8C004CC486 /* FolderNodePopUpItem.h */, 823AA88A0A160B8C004CC486 /* FolderNodePopUpItem.m */, 823AA88B0A160B8C004CC486 /* GetURLScriptCommand.h */, 823AA88C0A160B8C004CC486 /* GetURLScriptCommand.m */, 823AA88D0A160B8C004CC486 /* GNUMail.h */, 823AA88E0A160B8C004CC486 /* GNUMail.m */, 823AA88F0A160B8C004CC486 /* GNUMail+Extensions.h */, 823AA8900A160B8C004CC486 /* GNUMail+Extensions.m */, 823AA8910A160B8C004CC486 /* GNUMail+Services.h */, 823AA8920A160B8C004CC486 /* GNUMail+Services.m */, 823AA8930A160B8C004CC486 /* GNUMailBundle.h */, 823AA8940A160B8C004CC486 /* GNUmakefile */, 823AA8950A160B8C004CC486 /* ImageTextCell.h */, 823AA8960A160B8C004CC486 /* ImageTextCell.m */, 823AA8970A160B8C004CC486 /* LabelWidget.h */, 823AA8980A160B8C004CC486 /* LabelWidget.m */, 823AA89B0A160B8C004CC486 /* MailboxInspectorPanelController.h */, 823AA89C0A160B8C004CC486 /* MailboxInspectorPanelController.m */, 823AA89F0A160B8C004CC486 /* MailboxManagerCache.h */, 823AA8A00A160B8C004CC486 /* MailboxManagerCache.m */, 823AA8A10A160B8C004CC486 /* MailboxManagerController.h */, 823AA8A20A160B8C004CC486 /* MailboxManagerController.m */, 823AA8A30A160B8C004CC486 /* MailboxManagerToolbar.h */, 823AA8A40A160B8C004CC486 /* MailboxManagerToolbar.m */, 823AA8A50A160B8C004CC486 /* MailHeaderCell.h */, 823AA8A60A160B8C004CC486 /* MailHeaderCell.m */, 823AA8A90A160B8C004CC486 /* MailWindowController.h */, 823AA8AA0A160B8C004CC486 /* MailWindowController.m */, 823AA8AB0A160B8C004CC486 /* MailWindowToolbar.h */, 823AA8AC0A160B8C004CC486 /* MailWindowToolbar.m */, 823AA8AD0A160B8C004CC486 /* MessageComposition.h */, 823AA8AE0A160B8C004CC486 /* MessageComposition.m */, 823AA8B10A160B8C004CC486 /* MessageViewWindowController.h */, 823AA8B20A160B8C004CC486 /* MessageViewWindowController.m */, 823AA8B30A160B8C004CC486 /* MessageViewWindowToolbar.h */, 823AA8B40A160B8C004CC486 /* MessageViewWindowToolbar.m */, 823AA8B50A160B8C004CC486 /* MimeType.h */, 823AA8B60A160B8C004CC486 /* MimeType.m */, 823AA8B70A160B8C004CC486 /* MimeTypeManager.h */, 823AA8B80A160B8C004CC486 /* MimeTypeManager.m */, 823AA8B90A160B8C004CC486 /* NavigationToolbarItem.h */, 823AA8BA0A160B8C004CC486 /* NavigationToolbarItem.m */, 823AA8BD0A160B8C004CC486 /* NewMailboxPanelController.h */, 823AA8BE0A160B8C004CC486 /* NewMailboxPanelController.m */, 823AA8BF0A160B8C004CC486 /* NSAttributedString+Extensions.h */, 823AA8C00A160B8C004CC486 /* NSAttributedString+Extensions.m */, 823AA8C10A160B8C004CC486 /* NSAttributedString+TextEnriched.h */, 823AA8C20A160B8C004CC486 /* NSAttributedString+TextEnriched.m */, 823AA8C30A160B8C004CC486 /* NSBezierPath+Extensions.h */, 823AA8C40A160B8C004CC486 /* NSBezierPath+Extensions.m */, 823AA8C50A160B8C004CC486 /* NSBundle+Extensions.h */, 823AA8C60A160B8C004CC486 /* NSBundle+Extensions.m */, 823AA8C70A160B8C004CC486 /* NSColor+Extensions.h */, 823AA8C80A160B8C004CC486 /* NSColor+Extensions.m */, 823AA8C90A160B8C004CC486 /* NSFont+Extensions.h */, 823AA8CA0A160B8C004CC486 /* NSFont+Extensions.m */, 823AA8CB0A160B8C004CC486 /* NSPasteboard+Extensions.h */, 823AA8CC0A160B8C004CC486 /* NSPasteboard+Extensions.m */, 823AA8CD0A160B8C004CC486 /* NSUserDefaults+Extensions.h */, 823AA8CE0A160B8C004CC486 /* NSUserDefaults+Extensions.m */, 823AA8D10A160B8C004CC486 /* PasswordPanelController.h */, 823AA8D20A160B8C004CC486 /* PasswordPanelController.m */, 823AA8D30A160B8C004CC486 /* PreferencesModule.h */, 823AA8D60A160B8C004CC486 /* PreferencesWindowController.h */, 823AA8D70A160B8D004CC486 /* PreferencesWindowController.m */, 823AA8D80A160B8D004CC486 /* StripeTableView.h */, 823AA8D90A160B8D004CC486 /* StripeTableView.m */, 823AA8DC0A160B8D004CC486 /* Task.h */, 823AA8DD0A160B8D004CC486 /* Task.m */, 823AA8DE0A160B8D004CC486 /* TaskManager.h */, 823AA8DF0A160B8D004CC486 /* TaskManager.m */, 823AA8E00A160B8D004CC486 /* ThreadArcsCell.h */, 823AA8E10A160B8D004CC486 /* ThreadArcsCell.m */, 823AA8E20A160B8D004CC486 /* Utilities.h */, 823AA8E30A160B8D004CC486 /* Utilities.m */, 823AA8E40A160B8D004CC486 /* WelcomePanel.h */, 823AA8E50A160B8D004CC486 /* WelcomePanel.m */, ); name = Classes; sourceTree = ""; }; 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { isa = PBXGroup; children = ( 82137F060B6D267E0049FAE9 /* Pantomime.framework */, 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, 43B8D36003C606D000B85C1B /* AddressBook.framework */, ); name = "Linked Frameworks"; sourceTree = ""; }; 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { isa = PBXGroup; children = ( 29B97325FDCFA39411CA2CEA /* Foundation.framework */, 29B97324FDCFA39411CA2CEA /* AppKit.framework */, ); name = "Other Frameworks"; sourceTree = ""; }; 19C28FACFE9D520D11CA2CBB /* Products */ = { isa = PBXGroup; children = ( 17587328FF379C6511CA2CBB /* GNUMail.app */, F58841420249864E01A80205 /* GNUMail.framework */, F517DFA802293DA201A80103 /* Viewing.prefs */, F517DFA902293DA201A80103 /* Sending.prefs */, F517DFCE022940C901A80103 /* Receiving.prefs */, F517DFCF022940C901A80103 /* Compose.prefs */, F517DFD1022940C901A80103 /* Fonts.prefs */, F517DFD2022940C901A80103 /* MIME.prefs */, F517DFD3022940C901A80103 /* Filtering.prefs */, 43376E1503C623F60085F876 /* PGP.bundle */, 43376E3703C627140085F876 /* Face.bundle */, 43974D540411792000442E8B /* Account.prefs */, 43974D7004117BB800442E8B /* Colors.prefs */, 43974D8604117DFB00442E8B /* Advanced.prefs */, 439CDE3A05153D050025822F /* Emoticon.bundle */, 4360B2E20542198E0029C389 /* Import.bundle */, ); name = Products; sourceTree = ""; }; 29B97314FDCFA39411CA2CEA /* GNUMail */ = { isa = PBXGroup; children = ( 82E5FAF40B74C892005B155C /* Welcome */, 43376E0E03C623A00085F876 /* Bundles */, F517DF880229323601A80103 /* Preferences */, 080E96DDFE201D6D7F000001 /* Classes */, F5E3EA6A01ADEA1E01A80205 /* Headers */, 29B97317FDCFA39411CA2CEA /* Resources */, 29B97323FDCFA39411CA2CEA /* Frameworks */, 19C28FACFE9D520D11CA2CBB /* Products */, ); name = GNUMail; sourceTree = ""; }; 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( 823AAAB50A1612E8004CC486 /* GNUMail.scriptTerminology */, 823AAAB20A1612B7004CC486 /* InfoPlist.strings */, F5671D6F01B18B5301A80205 /* Documentation */, F59FEB2B01AC737D01899DF1 /* Icons */, F5E3EA6B01ADEA1E01A80205 /* Nibs */, DDAE831603E303C700A8A065 /* GNUMail.scriptSuite */, ); name = Resources; sourceTree = ""; }; 29B97323FDCFA39411CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, ); name = Frameworks; sourceTree = ""; }; 43376E0E03C623A00085F876 /* Bundles */ = { isa = PBXGroup; children = ( 439CDE3D05153D1C0025822F /* Emoticon */, 43376E2D03C626E70085F876 /* Face */, 4360B2E5054219F90029C389 /* Import */, F533894C02F8A00801000002 /* PGP */, ); name = Bundles; sourceTree = ""; }; 43376E2D03C626E70085F876 /* Face */ = { isa = PBXGroup; children = ( 43376E3003C626FF0085F876 /* Classes */, 43376E2F03C626F80085F876 /* Headers */, 4396BCFA051913F7004D63F0 /* Resources */, ); name = Face; sourceTree = ""; }; 43376E2F03C626F80085F876 /* Headers */ = { isa = PBXGroup; children = ( 43376E3A03C627330085F876 /* Face.h */, 43376E3C03C627330085F876 /* FaceController.h */, ); name = Headers; sourceTree = ""; }; 43376E3003C626FF0085F876 /* Classes */ = { isa = PBXGroup; children = ( 43376E3B03C627330085F876 /* Face.m */, 43376E3D03C627330085F876 /* FaceController.m */, ); name = Classes; sourceTree = ""; }; 4360B2E5054219F90029C389 /* Import */ = { isa = PBXGroup; children = ( 4360B2E805421A150029C389 /* Classes */, 4360B2E705421A0F0029C389 /* Headers */, 4360B2E605421A080029C389 /* Resources */, ); name = Import; sourceTree = ""; }; 4360B2E605421A080029C389 /* Resources */ = { isa = PBXGroup; children = ( 43C89DD505422062008048D1 /* Nibs */, ); name = Resources; sourceTree = ""; }; 4360B2E705421A0F0029C389 /* Headers */ = { isa = PBXGroup; children = ( 4360B2ED05421A4C0029C389 /* MailboxImportController.h */, 4360B2EE05421A4C0029C389 /* MailboxImportController+Filters.h */, 4360B2F105421A5E0029C389 /* Nibs */, ); name = Headers; sourceTree = ""; }; 4360B2E805421A150029C389 /* Classes */ = { isa = PBXGroup; children = ( 4360B2E905421A350029C389 /* MailboxImportController.m */, 4360B2EA05421A350029C389 /* MailboxImportController+Filters.m */, ); name = Classes; sourceTree = ""; }; 4360B2F105421A5E0029C389 /* Nibs */ = { isa = PBXGroup; children = ( ); name = Nibs; sourceTree = ""; }; 4396BCFA051913F7004D63F0 /* Resources */ = { isa = PBXGroup; children = ( 4396BCFB05191438004D63F0 /* stamp.tiff */, ); name = Resources; sourceTree = ""; }; 43974D580411794A00442E8B /* Account */ = { isa = PBXGroup; children = ( 43974D590411795900442E8B /* Classes */, 43974D5A0411796100442E8B /* Headers */, 43974D5B0411796900442E8B /* Resources */, ); name = Account; sourceTree = ""; }; 43974D590411795900442E8B /* Classes */ = { isa = PBXGroup; children = ( 43974D5D041179A800442E8B /* AccountEditorWindowController.m */, 43974D5F041179A800442E8B /* AccountViewController.m */, ); name = Classes; sourceTree = ""; }; 43974D5A0411796100442E8B /* Headers */ = { isa = PBXGroup; children = ( 43974D5C041179A800442E8B /* AccountEditorWindowController.h */, 43974D5E041179A800442E8B /* AccountViewController.h */, ); name = Headers; sourceTree = ""; }; 43974D5B0411796900442E8B /* Resources */ = { isa = PBXGroup; children = ( 43974D64041179D000442E8B /* account.tiff */, 43974D66041179D500442E8B /* Nibs */, ); name = Resources; sourceTree = ""; }; 43974D66041179D500442E8B /* Nibs */ = { isa = PBXGroup; children = ( 43974D96041181BF00442E8B /* AccountView.nib */, 43FE861E0411B8E6008E9F6C /* AccountEditorWindow.nib */, ); name = Nibs; sourceTree = ""; }; 43974D7304117BC800442E8B /* Colors */ = { isa = PBXGroup; children = ( 43974D7704117BEE00442E8B /* Classes */, 43974D7604117BE600442E8B /* Headers */, 43974D7404117BD300442E8B /* Ressources */, ); name = Colors; sourceTree = ""; }; 43974D7404117BD300442E8B /* Ressources */ = { isa = PBXGroup; children = ( 43974D7804117CA400442E8B /* colors.tiff */, 43974D7504117BDB00442E8B /* Nibs */, ); name = Ressources; sourceTree = ""; }; 43974D7504117BDB00442E8B /* Nibs */ = { isa = PBXGroup; children = ( 43B32B6204118A8600799887 /* ColorsView.nib */, ); name = Nibs; sourceTree = ""; }; 43974D7604117BE600442E8B /* Headers */ = { isa = PBXGroup; children = ( 43974D7904117CA400442E8B /* ColorsViewController.h */, ); name = Headers; sourceTree = ""; }; 43974D7704117BEE00442E8B /* Classes */ = { isa = PBXGroup; children = ( 43974D7A04117CA400442E8B /* ColorsViewController.m */, ); name = Classes; sourceTree = ""; }; 43974D8904117E4500442E8B /* Advanced */ = { isa = PBXGroup; children = ( 43974D8D04117E7900442E8B /* Classes */, 43974D8C04117E6A00442E8B /* Headers */, 43974D8A04117E5C00442E8B /* Ressources */, ); name = Advanced; sourceTree = ""; }; 43974D8A04117E5C00442E8B /* Ressources */ = { isa = PBXGroup; children = ( 43974D8E04117E9B00442E8B /* advanced.tiff */, 43974D8B04117E6400442E8B /* Nibs */, ); name = Ressources; sourceTree = ""; }; 43974D8B04117E6400442E8B /* Nibs */ = { isa = PBXGroup; children = ( 43B32B5F0411891200799887 /* AdvancedView.nib */, ); name = Nibs; sourceTree = ""; }; 43974D8C04117E6A00442E8B /* Headers */ = { isa = PBXGroup; children = ( 43974D8F04117E9B00442E8B /* AdvancedViewController.h */, ); name = Headers; sourceTree = ""; }; 43974D8D04117E7900442E8B /* Classes */ = { isa = PBXGroup; children = ( 43974D9004117E9B00442E8B /* AdvancedViewController.m */, ); name = Classes; sourceTree = ""; }; 439CDE3D05153D1C0025822F /* Emoticon */ = { isa = PBXGroup; children = ( 439CDE4005153D510025822F /* Classes */, 439CDE3F05153D460025822F /* Headers */, 439CDE3E05153D330025822F /* Resources */, ); name = Emoticon; sourceTree = ""; }; 439CDE3E05153D330025822F /* Resources */ = { isa = PBXGroup; children = ( 439CDE4105153D790025822F /* emoticon-face1.tiff */, 439CDE4205153D790025822F /* emoticon-face2.tiff */, 439CDE4305153D790025822F /* emoticon-face3.tiff */, 439CDE4405153D790025822F /* emoticon-face4.tiff */, 439CDE4505153D790025822F /* emoticon-face5.tiff */, 439CDE4605153D790025822F /* emoticon-face6.tiff */, 439CDE4705153D790025822F /* emoticon-face8.tiff */, 439CDE4805153D790025822F /* emoticon-face9.tiff */, 439CDE4905153D790025822F /* emoticon-face10.tiff */, 439CDE4A05153D790025822F /* emoticon-face11.tiff */, 439CDE4B05153D790025822F /* emoticon-face13.tiff */, 439CDE4C05153D790025822F /* emoticon-face14.tiff */, 439CDE4D05153D790025822F /* emoticon-face15.tiff */, 439CDE4E05153D790025822F /* emoticon-face19.tiff */, ); name = Resources; sourceTree = ""; }; 439CDE3F05153D460025822F /* Headers */ = { isa = PBXGroup; children = ( 439CDE4F05153D790025822F /* EmoticonController.h */, ); name = Headers; sourceTree = ""; }; 439CDE4005153D510025822F /* Classes */ = { isa = PBXGroup; children = ( 439CDE5005153D790025822F /* EmoticonController.m */, ); name = Classes; sourceTree = ""; }; 43C89DD505422062008048D1 /* Nibs */ = { isa = PBXGroup; children = ( 43C89DD605422080008048D1 /* MailboxImport.nib */, ); name = Nibs; sourceTree = ""; }; F517DF79022924D001A80103 /* Headers */ = { isa = PBXGroup; children = ( ); name = Headers; sourceTree = ""; }; F517DF880229323601A80103 /* Preferences */ = { isa = PBXGroup; children = ( F517DF79022924D001A80103 /* Headers */, 43974D580411794A00442E8B /* Account */, 43974D8904117E4500442E8B /* Advanced */, 43974D7304117BC800442E8B /* Colors */, F517E0130229468C01A80103 /* Compose */, F517E03C0229494701A80103 /* Filtering */, F517E02F022947E001A80103 /* Fonts */, F517E0490229494701A80103 /* Mime */, F517E0C302297BE401A80103 /* Receiving */, F517DFA302293D6201A80103 /* Sending */, F517DF9E02293D6201A80103 /* Viewing */, ); name = Preferences; sourceTree = ""; }; F517DF9E02293D6201A80103 /* Viewing */ = { isa = PBXGroup; children = ( F517DF9F02293D6201A80103 /* Classes */, F517DFA002293D6201A80103 /* Headers */, F517DFA102293D6201A80103 /* Ressources */, ); name = Viewing; sourceTree = ""; }; F517DF9F02293D6201A80103 /* Classes */ = { isa = PBXGroup; children = ( F517DFB602293ECA01A80103 /* ViewingViewController.m */, 43974D430411736F00442E8B /* HeadersWindowController.m */, ); name = Classes; sourceTree = ""; }; F517DFA002293D6201A80103 /* Headers */ = { isa = PBXGroup; children = ( F517DFB702293ECA01A80103 /* ViewingViewController.h */, 43974D420411736F00442E8B /* HeadersWindowController.h */, ); name = Headers; sourceTree = ""; }; F517DFA102293D6201A80103 /* Ressources */ = { isa = PBXGroup; children = ( 823AE3C10BB6F79B0054A9F4 /* widescreen_96x96.tiff */, 823AE3BF0BB6F77E0054A9F4 /* floating_96x96.tiff */, 823AE3BB0BB6F7600054A9F4 /* 3-pane_96x96.tiff */, 823AE3BC0BB6F7600054A9F4 /* drawer_96x96.tiff */, F5E20AC50229937F01A80103 /* viewing.tiff */, F517DFA202293D6201A80103 /* Nibs */, ); name = Ressources; sourceTree = ""; }; F517DFA202293D6201A80103 /* Nibs */ = { isa = PBXGroup; children = ( F517DFB802293ECA01A80103 /* ViewingView.nib */, 438220430411990B00E574E2 /* HeadersWindow.nib */, ); name = Nibs; sourceTree = ""; }; F517DFA302293D6201A80103 /* Sending */ = { isa = PBXGroup; children = ( F517DFA402293D6201A80103 /* Classes */, F517DFA502293D6201A80103 /* Headers */, F517DFA602293D6201A80103 /* Ressources */, ); name = Sending; sourceTree = ""; }; F517DFA402293D6201A80103 /* Classes */ = { isa = PBXGroup; children = ( F517DFBD02293F3D01A80103 /* SendingViewController.m */, ); name = Classes; sourceTree = ""; }; F517DFA502293D6201A80103 /* Headers */ = { isa = PBXGroup; children = ( F517DFBF02293F3D01A80103 /* SendingViewController.h */, ); name = Headers; sourceTree = ""; }; F517DFA602293D6201A80103 /* Ressources */ = { isa = PBXGroup; children = ( F5E20AC60229937F01A80103 /* MailIcon_send.tiff */, F517DFA702293D6201A80103 /* Nibs */, ); name = Ressources; sourceTree = ""; }; F517DFA702293D6201A80103 /* Nibs */ = { isa = PBXGroup; children = ( F517DFC102293F3D01A80103 /* SendingView.nib */, ); name = Nibs; sourceTree = ""; }; F517E0130229468C01A80103 /* Compose */ = { isa = PBXGroup; children = ( F517E0140229468C01A80103 /* Classes */, F517E0160229468C01A80103 /* Headers */, F517E0190229468C01A80103 /* Ressources */, ); name = Compose; sourceTree = ""; }; F517E0140229468C01A80103 /* Classes */ = { isa = PBXGroup; children = ( F517E0150229468C01A80103 /* ComposeViewController.m */, ); name = Classes; sourceTree = ""; }; F517E0160229468C01A80103 /* Headers */ = { isa = PBXGroup; children = ( F517E0170229468C01A80103 /* ComposeViewController.h */, ); name = Headers; sourceTree = ""; }; F517E0190229468C01A80103 /* Ressources */ = { isa = PBXGroup; children = ( F5E20AC70229937F01A80103 /* MailIcon_create.tiff */, F517E01A0229468C01A80103 /* Nibs */, ); name = Ressources; sourceTree = ""; }; F517E01A0229468C01A80103 /* Nibs */ = { isa = PBXGroup; children = ( F517E01B0229468C01A80103 /* ComposeView.nib */, ); name = Nibs; sourceTree = ""; }; F517E02F022947E001A80103 /* Fonts */ = { isa = PBXGroup; children = ( F517E030022947E001A80103 /* Classes */, F517E032022947E001A80103 /* Headers */, F517E035022947E001A80103 /* Ressources */, ); name = Fonts; sourceTree = ""; }; F517E030022947E001A80103 /* Classes */ = { isa = PBXGroup; children = ( F517E031022947E001A80103 /* FontsViewController.m */, ); name = Classes; sourceTree = ""; }; F517E032022947E001A80103 /* Headers */ = { isa = PBXGroup; children = ( F517E034022947E001A80103 /* FontsViewController.h */, ); name = Headers; sourceTree = ""; }; F517E035022947E001A80103 /* Ressources */ = { isa = PBXGroup; children = ( F517E036022947E001A80103 /* fonts.tiff */, F517E037022947E001A80103 /* Nibs */, ); name = Ressources; sourceTree = ""; }; F517E037022947E001A80103 /* Nibs */ = { isa = PBXGroup; children = ( F554A594022B29D201346888 /* FontsView.nib */, ); name = Nibs; sourceTree = ""; }; F517E03C0229494701A80103 /* Filtering */ = { isa = PBXGroup; children = ( F517E03D0229494701A80103 /* Classes */, F517E03E0229494701A80103 /* Headers */, F517E03F0229494701A80103 /* Ressources */, ); name = Filtering; sourceTree = ""; }; F517E03D0229494701A80103 /* Classes */ = { isa = PBXGroup; children = ( F517E0790229495701A80103 /* FilterEditorWindowController.m */, F517E07C0229495701A80103 /* FilterHeaderEditorWindowController.m */, F517E0800229495701A80103 /* FilteringViewController.m */, F517E0830229495701A80103 /* FilterMessageWindowController.m */, ); name = Classes; sourceTree = ""; }; F517E03E0229494701A80103 /* Headers */ = { isa = PBXGroup; children = ( F517E0770229495701A80103 /* FilterEditorWindow.h */, F517E0780229495701A80103 /* FilterEditorWindowController.h */, F517E07A0229495701A80103 /* FilterHeaderEditorWindow.h */, F517E07B0229495701A80103 /* FilterHeaderEditorWindowController.h */, F517E07E0229495701A80103 /* FilteringView.h */, F517E07F0229495701A80103 /* FilteringViewController.h */, F517E0810229495701A80103 /* FilterMessageWindow.h */, F517E0820229495701A80103 /* FilterMessageWindowController.h */, ); name = Headers; sourceTree = ""; }; F517E03F0229494701A80103 /* Ressources */ = { isa = PBXGroup; children = ( F517E07D0229495701A80103 /* Filtering.tiff */, F517E0400229494701A80103 /* Nibs */, ); name = Ressources; sourceTree = ""; }; F517E0400229494701A80103 /* Nibs */ = { isa = PBXGroup; children = ( F517E0410229494701A80103 /* FilterEditorWindow.nib */, F517E0430229494701A80103 /* FilterHeaderEditorWindow.nib */, F517E0450229494701A80103 /* FilteringView.nib */, F517E0470229494701A80103 /* FilterMessageWindow.nib */, ); name = Nibs; sourceTree = ""; }; F517E0490229494701A80103 /* Mime */ = { isa = PBXGroup; children = ( F517E04A0229494701A80103 /* Classes */, F517E04F0229494701A80103 /* Headers */, F517E0570229494701A80103 /* Ressources */, ); name = Mime; sourceTree = ""; }; F517E04A0229494701A80103 /* Classes */ = { isa = PBXGroup; children = ( F517E04D0229494701A80103 /* MimeTypeEditorWindowController.m */, F517E04E0229494701A80103 /* MIMEViewController.m */, ); name = Classes; sourceTree = ""; }; F517E04F0229494701A80103 /* Headers */ = { isa = PBXGroup; children = ( F517E0530229494701A80103 /* MimeTypeEditorWindow.h */, F517E0540229494701A80103 /* MimeTypeEditorWindowController.h */, F517E0560229494701A80103 /* MIMEViewController.h */, ); name = Headers; sourceTree = ""; }; F517E0570229494701A80103 /* Ressources */ = { isa = PBXGroup; children = ( F517E0580229494701A80103 /* mime.tiff */, F517E0590229494701A80103 /* Nibs */, ); name = Ressources; sourceTree = ""; }; F517E0590229494701A80103 /* Nibs */ = { isa = PBXGroup; children = ( F517E05C0229494701A80103 /* MimeTypeEditorWindow.nib */, F517E05E0229494701A80103 /* MIMEView.nib */, ); name = Nibs; sourceTree = ""; }; F517E0C302297BE401A80103 /* Receiving */ = { isa = PBXGroup; children = ( F517E0C402297BE401A80103 /* Classes */, F517E0C702297BE401A80103 /* Headers */, F517E0CE02297BE401A80103 /* Ressources */, ); name = Receiving; sourceTree = ""; }; F517E0C402297BE401A80103 /* Classes */ = { isa = PBXGroup; children = ( F517E0C502297BE401A80103 /* ReceivingViewController.m */, ); name = Classes; sourceTree = ""; }; F517E0C702297BE401A80103 /* Headers */ = { isa = PBXGroup; children = ( F517E0CB02297BE401A80103 /* ReceivingViewController.h */, ); name = Headers; sourceTree = ""; }; F517E0CE02297BE401A80103 /* Ressources */ = { isa = PBXGroup; children = ( F517E0CF02297BE401A80103 /* MailIcon_retrieve.tiff */, F517E0D002297BE401A80103 /* Nibs */, ); name = Ressources; sourceTree = ""; }; F517E0D002297BE401A80103 /* Nibs */ = { isa = PBXGroup; children = ( F517E0D102297BE401A80103 /* ReceivingView.nib */, ); name = Nibs; sourceTree = ""; }; F533894C02F8A00801000002 /* PGP */ = { isa = PBXGroup; children = ( F533894D02F8A00801000002 /* Classes */, F533895102F8A00801000002 /* Headers */, F533895502F8A00801000002 /* Ressources */, ); name = PGP; sourceTree = ""; }; F533894D02F8A00801000002 /* Classes */ = { isa = PBXGroup; children = ( F533894E02F8A00801000002 /* PGPController.m */, F533895002F8A00801000002 /* PGPViewController.m */, ); name = Classes; sourceTree = ""; }; F533895102F8A00801000002 /* Headers */ = { isa = PBXGroup; children = ( F533895202F8A00801000002 /* PGPController.h */, F533895402F8A00801000002 /* PGPViewController.h */, ); name = Headers; sourceTree = ""; }; F533895502F8A00801000002 /* Ressources */ = { isa = PBXGroup; children = ( F533895802F8A00801000002 /* pgp-mail.tiff */, 43376E2203C6244B0085F876 /* clear_20.tiff */, 43376E2303C6244B0085F876 /* encrypted_20.tiff */, 43376E2403C6244B0085F876 /* signed_20.tiff */, 43376E2503C6244B0085F876 /* unsigned_20.tiff */, 4396BCFD0519147F004D63F0 /* encrypted_80.tiff */, 4396BCFE0519147F004D63F0 /* signed_80.tiff */, 4396BCFF0519147F004D63F0 /* signed+encrypted_80.tiff */, F533895B02F8A00801000002 /* Nibs */, ); name = Ressources; sourceTree = ""; }; F533895B02F8A00801000002 /* Nibs */ = { isa = PBXGroup; children = ( 43376E1F03C6241D0085F876 /* PGPView.nib */, ); name = Nibs; sourceTree = ""; }; F5671D6F01B18B5301A80205 /* Documentation */ = { isa = PBXGroup; children = ( F5671D7001B18B6201A80205 /* ChangeLog */, ); name = Documentation; sourceTree = ""; }; F59FEB2B01AC737D01899DF1 /* Icons */ = { isa = PBXGroup; children = ( 823AA9A00A160CA8004CC486 /* add_bcc_32.tiff */, 823AA9A10A160CA8004CC486 /* add_bcc_48.tiff */, 823AA9A20A160CA8004CC486 /* add_cc_32.tiff */, 823AA9A30A160CA8004CC486 /* add_cc_48.tiff */, 823AA9A40A160CA8004CC486 /* add.tiff */, 823AA9A50A160CA8004CC486 /* Address_bcc.tiff */, 823AA9A60A160CA8004CC486 /* Address_cc.tiff */, 823AA9A70A160CA8004CC486 /* Address_to.tiff */, 823AA9A80A160CA8004CC486 /* AddressBook_32.tiff */, 823AA9A90A160CA8004CC486 /* addresses_32.tiff */, 823AA9AA0A160CA8004CC486 /* addresses_48.tiff */, 823AA9AB0A160CA8004CC486 /* AddressManager_32.tiff */, 823AA9AC0A160CA8004CC486 /* anim-logo-1.tiff */, 823AA9AD0A160CA8004CC486 /* anim-logo-2.tiff */, 823AA9AE0A160CA8004CC486 /* anim-logo-3.tiff */, 823AA9AF0A160CA8004CC486 /* anim-logo-4.tiff */, 823AA9B00A160CA8004CC486 /* anim-logo-5.tiff */, 823AA9B10A160CA8004CC486 /* anim-logo-6.tiff */, 823AA9B20A160CA8004CC486 /* anim-logo-7.tiff */, 823AA9B30A160CA8004CC486 /* anim-logo-8.tiff */, 823AA9B40A160CA8004CC486 /* answered-flag.tiff */, 823AA9B50A160CA8004CC486 /* attach_32.tiff */, 823AA9B60A160CA8004CC486 /* attach_48.tiff */, 823AA9B70A160CA8004CC486 /* common_Unknown.tiff */, 823AA9B80A160CA8004CC486 /* create_16.tiff */, 823AA9B90A160CA8004CC486 /* create_32.tiff */, 823AA9BA0A160CA8004CC486 /* create_48.tiff */, 823AA9BC0A160CA8004CC486 /* delete_20.tiff */, 823AA9BD0A160CA8004CC486 /* delete_32.tiff */, 823AA9BE0A160CA8004CC486 /* delete_48.tiff */, 823AA9BF0A160CA8004CC486 /* down_15.tiff */, 823AA9C10A160CA8004CC486 /* drag_mail.tiff */, 823AA9C20A160CA8004CC486 /* drag_mails.tiff */, 823AA9C30A160CA8004CC486 /* duplicate.tiff */, 823AA9C40A160CA8004CC486 /* edit.tiff */, 823AA9C50A160CA8004CC486 /* find_32.tiff */, 823AA9C60A160CA8004CC486 /* find_48.tiff */, 823AA9C70A160CA8004CC486 /* flagged-flag.tiff */, 823AA9C80A160CA8004CC486 /* forward_32.tiff */, 823AA9C90A160CA8004CC486 /* forward_48.tiff */, 823AA9CA0A160CA8004CC486 /* GNUMail_128.tiff */, 823AA9CB0A160CA8004CC486 /* GNUMail_big.tiff */, 823AA9CC0A160CA8004CC486 /* GNUMail_Full.tiff */, 823AA9CD0A160CA8004CC486 /* GNUMail.icns */, 823AA9CE0A160CA8004CC486 /* GNUMail.tiff */, 823AA9CF0A160CA8004CC486 /* hand.tiff */, 823AA9D00A160CA8004CC486 /* mailbox_add_32.tiff */, 823AA9D30A160CA8004CC486 /* mailbox_rename_32.tiff */, 823AA9D40A160CA8004CC486 /* mailboxes_32.tiff */, 823AA9D50A160CA8004CC486 /* mailboxes_48.tiff */, 823AA9D80A160CA8004CC486 /* pgp-mail-small.tiff */, 823AA9D90A160CA8004CC486 /* pgp-mail.tiff */, 823AA9DA0A160CA8004CC486 /* raw_32.tiff */, 823AA9DB0A160CA8004CC486 /* raw_48.tiff */, 823AA9DC0A160CA8004CC486 /* recent-flag.tiff */, 823AA9DD0A160CA8004CC486 /* remove_bcc_32.tiff */, 823AA9DE0A160CA8004CC486 /* remove_bcc_48.tiff */, 823AA9DF0A160CA8004CC486 /* remove_cc_32.tiff */, 823AA9E00A160CA8004CC486 /* remove_cc_48.tiff */, 823AA9E10A160CA8004CC486 /* reply_32.tiff */, 823AA9E20A160CA8004CC486 /* reply_48.tiff */, 823AA9E30A160CA8004CC486 /* restart_32.tiff */, 823AA9E40A160CA8004CC486 /* retrieve_16.tiff */, 823AA9E50A160CA8004CC486 /* retrieve_32.tiff */, 823AA9E60A160CA8004CC486 /* retrieve_48.tiff */, 823AA9E70A160CA8004CC486 /* send_16.tiff */, 823AA9E80A160CA8004CC486 /* send_32.tiff */, 823AA9E90A160CA8004CC486 /* send_48.tiff */, 823AA9EA0A160CA8004CC486 /* show_all_headers_32.tiff */, 823AA9EB0A160CA8004CC486 /* show_all_headers_48.tiff */, 823AA9EC0A160CA8004CC486 /* sort_down.tiff */, 823AA9ED0A160CA8004CC486 /* sort_left.tiff */, 823AA9EE0A160CA8004CC486 /* sort_right.tiff */, 823AA9EF0A160CA8004CC486 /* sort_up.tiff */, 823AA9F00A160CA8004CC486 /* stop_32.tiff */, 823AA9F10A160CA8004CC486 /* up_15.tiff */, ); name = Icons; sourceTree = ""; }; F5E3EA6A01ADEA1E01A80205 /* Headers */ = { isa = PBXGroup; children = ( 823AA8580A160B8C004CC486 /* AboutPanelController.h */, 823AA85A0A160B8C004CC486 /* AddressBookController.h */, ); name = Headers; sourceTree = ""; }; F5E3EA6B01ADEA1E01A80205 /* Nibs */ = { isa = PBXGroup; children = ( 824C14F10AC88CD40032E967 /* drafts_32.tiff */, 824C14F20AC88CD40032E967 /* drafts_48.tiff */, 824C14D60AC88BD40032E967 /* create_12.tiff */, 824C14D70AC88BD40032E967 /* create_20.tiff */, 824C14D80AC88BD40032E967 /* folder_12.tiff */, 824C14D90AC88BD40032E967 /* folder_16.tiff */, 824C14DA0AC88BD40032E967 /* folder_20.tiff */, 824C14DB0AC88BD40032E967 /* retrieve_12.tiff */, 824C14DC0AC88BD40032E967 /* retrieve_20.tiff */, 824C14DD0AC88BD40032E967 /* send_12.tiff */, 824C14DE0AC88BD40032E967 /* send_20.tiff */, 824C14DF0AC88BD40032E967 /* trash_12.tiff */, 824C14E00AC88BD40032E967 /* trash_16.tiff */, 824C14E10AC88BD40032E967 /* trash_20.tiff */, 823AAA5A0A160E12004CC486 /* MailboxInspectorPanel.nib */, 823AAA5C0A160E12004CC486 /* MailWindow.nib */, 823AAA5E0A160E12004CC486 /* MainMenu.nib */, 823AAA600A160E12004CC486 /* MessageViewWindow.nib */, 823AAA620A160E12004CC486 /* NewMailboxPanel.nib */, 823AAA640A160E12004CC486 /* PasswordPanel.nib */, 823AAA660A160E12004CC486 /* PreferencesWindow.nib */, 823AAA4B0A160DF3004CC486 /* AboutPanel.nib */, 823AAA4D0A160DF3004CC486 /* AddressBookPanel.nib */, 823AAA4F0A160DF3004CC486 /* ConsoleWindow.nib */, 823AAA510A160DF3004CC486 /* EditWindow.nib */, 823AAA530A160DF3004CC486 /* FindWindow.nib */, ); name = Nibs; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ 29B97327FDCFA39411CA2CEA /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 43376E0F03C623F60085F876 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 43376E1B03C624020085F876 /* PGPController.h in Headers */, 43376E1D03C624030085F876 /* PGPViewController.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 43376E3103C627140085F876 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 43376E3E03C627330085F876 /* Face.h in Headers */, 43376E4003C627330085F876 /* FaceController.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 4360B2DC0542198E0029C389 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 4360B2EF05421A4C0029C389 /* MailboxImportController.h in Headers */, 4360B2F005421A4C0029C389 /* MailboxImportController+Filters.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 43974D4E0411792000442E8B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 43974D60041179A800442E8B /* AccountEditorWindowController.h in Headers */, 43974D62041179A800442E8B /* AccountViewController.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 43974D6A04117BB800442E8B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 43974D7C04117CA400442E8B /* ColorsViewController.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 43974D8004117DFB00442E8B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 43974D9204117E9B00442E8B /* AdvancedViewController.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; 439CDE3405153D050025822F /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 439CDE5F05153D790025822F /* EmoticonController.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFAB02293DA201A80103 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( F517DFBA02293ECB01A80103 /* ViewingViewController.h in Headers */, 43974D440411736F00442E8B /* HeadersWindowController.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFB102293DA201A80103 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( F517DFC502293F3D01A80103 /* SendingViewController.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFD5022940C901A80103 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( F517E0D802297BE401A80103 /* ReceivingViewController.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFDB022940C901A80103 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( F517E01E0229468D01A80103 /* ComposeViewController.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFE7022940C901A80103 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( F517E039022947E101A80103 /* FontsViewController.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFED022940C901A80103 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( F517E0630229494701A80103 /* MimeTypeEditorWindow.h in Headers */, F517E0640229494701A80103 /* MimeTypeEditorWindowController.h in Headers */, F517E0660229494701A80103 /* MIMEViewController.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFF3022940C901A80103 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( F517E0860229495701A80103 /* FilterEditorWindow.h in Headers */, F517E0870229495701A80103 /* FilterEditorWindowController.h in Headers */, F517E0880229495701A80103 /* FilterHeaderEditorWindow.h in Headers */, F517E0890229495701A80103 /* FilterHeaderEditorWindowController.h in Headers */, F517E08A0229495701A80103 /* FilteringView.h in Headers */, F517E08B0229495701A80103 /* FilteringViewController.h in Headers */, F517E08C0229495701A80103 /* FilterMessageWindow.h in Headers */, F517E08D0229495701A80103 /* FilterMessageWindowController.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; F58841440249864E01A80205 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( 823AA8E80A160B8D004CC486 /* AboutPanelController.h in Headers */, 823AA8EA0A160B8D004CC486 /* AddressBookController.h in Headers */, 823AA8EE0A160B8D004CC486 /* AddressTaker.h in Headers */, 823AA8EF0A160B8D004CC486 /* ApplicationIconController.h in Headers */, 823AA8F10A160B8D004CC486 /* AutoCompletingTextField.h in Headers */, 823AA8F50A160B8D004CC486 /* ConsoleWindowController.h in Headers */, 823AA8F70A160B8D004CC486 /* Constants.h in Headers */, 823AA8FB0A160B8D004CC486 /* EditWindowController.h in Headers */, 823AA8FD0A160B8D004CC486 /* EditWindowToolbar.h in Headers */, 823AA8FF0A160B8D004CC486 /* ExtendedCell.h in Headers */, 823AA9010A160B8D004CC486 /* ExtendedFileWrapper.h in Headers */, 823AA9030A160B8D004CC486 /* ExtendedMenuItem.h in Headers */, 823AA9050A160B8D004CC486 /* ExtendedOutlineView.h in Headers */, 823AA9070A160B8D004CC486 /* ExtendedTableView.h in Headers */, 823AA9090A160B8D004CC486 /* ExtendedTextAttachmentCell.h in Headers */, 823AA90B0A160B8D004CC486 /* ExtendedTextView.h in Headers */, 823AA90D0A160B8D004CC486 /* ExtendedWindow.h in Headers */, 823AA90F0A160B8D004CC486 /* Filter.h in Headers */, 823AA9110A160B8D004CC486 /* FilterManager.h in Headers */, 823AA9150A160B8D004CC486 /* FindWindowController.h in Headers */, 823AA9170A160B8D004CC486 /* FolderNode.h in Headers */, 823AA9190A160B8D004CC486 /* FolderNodePopUpItem.h in Headers */, 823AA91B0A160B8D004CC486 /* GetURLScriptCommand.h in Headers */, 823AA91D0A160B8D004CC486 /* GNUMail.h in Headers */, 823AA91F0A160B8D004CC486 /* GNUMail+Extensions.h in Headers */, 823AA9210A160B8D004CC486 /* GNUMail+Services.h in Headers */, 823AA9230A160B8D004CC486 /* GNUMailBundle.h in Headers */, 823AA9250A160B8D004CC486 /* ImageTextCell.h in Headers */, 823AA9270A160B8D004CC486 /* LabelWidget.h in Headers */, 823AA92B0A160B8D004CC486 /* MailboxInspectorPanelController.h in Headers */, 823AA92F0A160B8D004CC486 /* MailboxManagerCache.h in Headers */, 823AA9310A160B8D004CC486 /* MailboxManagerController.h in Headers */, 823AA9330A160B8D004CC486 /* MailboxManagerToolbar.h in Headers */, 823AA9350A160B8D004CC486 /* MailHeaderCell.h in Headers */, 823AA9390A160B8D004CC486 /* MailWindowController.h in Headers */, 823AA93B0A160B8D004CC486 /* MailWindowToolbar.h in Headers */, 823AA93D0A160B8D004CC486 /* MessageComposition.h in Headers */, 823AA9410A160B8D004CC486 /* MessageViewWindowController.h in Headers */, 823AA9430A160B8D004CC486 /* MessageViewWindowToolbar.h in Headers */, 823AA9450A160B8D004CC486 /* MimeType.h in Headers */, 823AA9470A160B8D004CC486 /* MimeTypeManager.h in Headers */, 823AA9490A160B8D004CC486 /* NavigationToolbarItem.h in Headers */, 823AA94D0A160B8D004CC486 /* NewMailboxPanelController.h in Headers */, 823AA94F0A160B8D004CC486 /* NSAttributedString+Extensions.h in Headers */, 823AA9510A160B8D004CC486 /* NSAttributedString+TextEnriched.h in Headers */, 823AA9530A160B8D004CC486 /* NSBezierPath+Extensions.h in Headers */, 823AA9550A160B8D004CC486 /* NSBundle+Extensions.h in Headers */, 823AA9570A160B8D004CC486 /* NSColor+Extensions.h in Headers */, 823AA9590A160B8D004CC486 /* NSFont+Extensions.h in Headers */, 823AA95B0A160B8D004CC486 /* NSPasteboard+Extensions.h in Headers */, 823AA95D0A160B8D004CC486 /* NSUserDefaults+Extensions.h in Headers */, 823AA9610A160B8D004CC486 /* PasswordPanelController.h in Headers */, 823AA9630A160B8D004CC486 /* PreferencesModule.h in Headers */, 823AA9660A160B8D004CC486 /* PreferencesWindowController.h in Headers */, 823AA9680A160B8D004CC486 /* StripeTableView.h in Headers */, 823AA96C0A160B8D004CC486 /* Task.h in Headers */, 823AA96E0A160B8D004CC486 /* TaskManager.h in Headers */, 823AA9700A160B8D004CC486 /* ThreadArcsCell.h in Headers */, 823AA9720A160B8D004CC486 /* Utilities.h in Headers */, 823AA9740A160B8D004CC486 /* WelcomePanel.h in Headers */, 828883DF0BA46B110073F597 /* GNUMail+MenuValidation.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXProject section */ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; buildConfigurationList = 827707F00A13F3D90009F1A9 /* Build configuration list for PBXProject "GNUMail" */; hasScannedForEncodings = 1; mainGroup = 29B97314FDCFA39411CA2CEA /* GNUMail */; projectDirPath = ""; targets = ( 29B97326FDCFA39411CA2CEA /* GNUMail */, F58841430249864E01A80205 /* GNUMail framework */, F517DFAA02293DA201A80103 /* Viewing */, F517DFB002293DA201A80103 /* Sending */, F517DFD4022940C901A80103 /* Receiving */, F517DFDA022940C901A80103 /* Compose */, F517DFE6022940C901A80103 /* Fonts */, F517DFEC022940C901A80103 /* MIME */, F517DFF2022940C901A80103 /* Filtering */, 43376E1403C623F60085F876 /* PGP */, 43376E3603C627140085F876 /* Face */, 43974D530411792000442E8B /* Account */, 43974D6F04117BB800442E8B /* Colors */, 43974D8504117DFB00442E8B /* Advanced */, 439CDE3905153D050025822F /* Emoticon */, 4360B2E10542198E0029C389 /* Import */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 29B97328FDCFA39411CA2CEA /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( F5671D7101B18B6201A80205 /* ChangeLog in Resources */, 43376E1703C623F60085F876 /* PGP.bundle in Resources */, 43376E3903C627140085F876 /* Face.bundle in Resources */, DDAE831703E303C700A8A065 /* GNUMail.scriptSuite in Resources */, 43974D560411792000442E8B /* Account.prefs in Resources */, 43974D7204117BB800442E8B /* Colors.prefs in Resources */, 43974D8804117DFB00442E8B /* Advanced.prefs in Resources */, 439CDE3C05153D050025822F /* Emoticon.bundle in Resources */, 4360B2E40542198E0029C389 /* Import.bundle in Resources */, 823AA9F30A160CA8004CC486 /* add_bcc_32.tiff in Resources */, 823AA9F40A160CA8004CC486 /* add_bcc_48.tiff in Resources */, 823AA9F50A160CA8004CC486 /* add_cc_32.tiff in Resources */, 823AA9F60A160CA8004CC486 /* add_cc_48.tiff in Resources */, 823AA9F70A160CA8004CC486 /* add.tiff in Resources */, 823AA9F80A160CA8004CC486 /* Address_bcc.tiff in Resources */, 823AA9F90A160CA8004CC486 /* Address_cc.tiff in Resources */, 823AA9FA0A160CA8004CC486 /* Address_to.tiff in Resources */, 823AA9FB0A160CA8004CC486 /* AddressBook_32.tiff in Resources */, 823AA9FC0A160CA8004CC486 /* addresses_32.tiff in Resources */, 823AA9FD0A160CA8004CC486 /* addresses_48.tiff in Resources */, 823AA9FE0A160CA8004CC486 /* AddressManager_32.tiff in Resources */, 823AA9FF0A160CA8004CC486 /* anim-logo-1.tiff in Resources */, 823AAA000A160CA8004CC486 /* anim-logo-2.tiff in Resources */, 823AAA010A160CA8004CC486 /* anim-logo-3.tiff in Resources */, 823AAA020A160CA8004CC486 /* anim-logo-4.tiff in Resources */, 823AAA030A160CA8004CC486 /* anim-logo-5.tiff in Resources */, 823AAA040A160CA8004CC486 /* anim-logo-6.tiff in Resources */, 823AAA050A160CA8004CC486 /* anim-logo-7.tiff in Resources */, 823AAA060A160CA8004CC486 /* anim-logo-8.tiff in Resources */, 823AAA070A160CA8004CC486 /* answered-flag.tiff in Resources */, 823AAA080A160CA8004CC486 /* attach_32.tiff in Resources */, 823AAA090A160CA8004CC486 /* attach_48.tiff in Resources */, 823AAA0A0A160CA8004CC486 /* common_Unknown.tiff in Resources */, 823AAA0B0A160CA8004CC486 /* create_16.tiff in Resources */, 823AAA0C0A160CA8004CC486 /* create_32.tiff in Resources */, 823AAA0D0A160CA8004CC486 /* create_48.tiff in Resources */, 823AAA0F0A160CA8004CC486 /* delete_20.tiff in Resources */, 823AAA100A160CA8004CC486 /* delete_32.tiff in Resources */, 823AAA110A160CA8004CC486 /* delete_48.tiff in Resources */, 823AAA120A160CA8004CC486 /* down_15.tiff in Resources */, 823AAA140A160CA8004CC486 /* drag_mail.tiff in Resources */, 823AAA150A160CA8004CC486 /* drag_mails.tiff in Resources */, 823AAA160A160CA8004CC486 /* duplicate.tiff in Resources */, 823AAA170A160CA8004CC486 /* edit.tiff in Resources */, 823AAA180A160CA8004CC486 /* find_32.tiff in Resources */, 823AAA190A160CA8004CC486 /* find_48.tiff in Resources */, 823AAA1A0A160CA8004CC486 /* flagged-flag.tiff in Resources */, 823AAA1B0A160CA8004CC486 /* forward_32.tiff in Resources */, 823AAA1C0A160CA8004CC486 /* forward_48.tiff in Resources */, 823AAA1D0A160CA8004CC486 /* GNUMail_128.tiff in Resources */, 823AAA1E0A160CA8004CC486 /* GNUMail_big.tiff in Resources */, 823AAA1F0A160CA8004CC486 /* GNUMail_Full.tiff in Resources */, 823AAA200A160CA8004CC486 /* GNUMail.icns in Resources */, 823AAA210A160CA8004CC486 /* GNUMail.tiff in Resources */, 823AAA220A160CA8004CC486 /* hand.tiff in Resources */, 823AAA230A160CA8004CC486 /* mailbox_add_32.tiff in Resources */, 823AAA260A160CA8004CC486 /* mailbox_rename_32.tiff in Resources */, 823AAA270A160CA8004CC486 /* mailboxes_32.tiff in Resources */, 823AAA280A160CA8004CC486 /* mailboxes_48.tiff in Resources */, 823AAA2B0A160CA8004CC486 /* pgp-mail-small.tiff in Resources */, 823AAA2C0A160CA8004CC486 /* pgp-mail.tiff in Resources */, 823AAA2D0A160CA8004CC486 /* raw_32.tiff in Resources */, 823AAA2E0A160CA8004CC486 /* raw_48.tiff in Resources */, 823AAA2F0A160CA8004CC486 /* recent-flag.tiff in Resources */, 823AAA300A160CA8004CC486 /* remove_bcc_32.tiff in Resources */, 823AAA310A160CA8004CC486 /* remove_bcc_48.tiff in Resources */, 823AAA320A160CA8004CC486 /* remove_cc_32.tiff in Resources */, 823AAA330A160CA8004CC486 /* remove_cc_48.tiff in Resources */, 823AAA340A160CA8004CC486 /* reply_32.tiff in Resources */, 823AAA350A160CA8004CC486 /* reply_48.tiff in Resources */, 823AAA360A160CA8004CC486 /* restart_32.tiff in Resources */, 823AAA370A160CA8004CC486 /* retrieve_16.tiff in Resources */, 823AAA380A160CA8004CC486 /* retrieve_32.tiff in Resources */, 823AAA390A160CA8004CC486 /* retrieve_48.tiff in Resources */, 823AAA3A0A160CA8004CC486 /* send_16.tiff in Resources */, 823AAA3B0A160CA8004CC486 /* send_32.tiff in Resources */, 823AAA3C0A160CA8004CC486 /* send_48.tiff in Resources */, 823AAA3D0A160CA8004CC486 /* show_all_headers_32.tiff in Resources */, 823AAA3E0A160CA8004CC486 /* show_all_headers_48.tiff in Resources */, 823AAA3F0A160CA8004CC486 /* sort_down.tiff in Resources */, 823AAA400A160CA8004CC486 /* sort_left.tiff in Resources */, 823AAA410A160CA8004CC486 /* sort_right.tiff in Resources */, 823AAA420A160CA8004CC486 /* sort_up.tiff in Resources */, 823AAA430A160CA8004CC486 /* stop_32.tiff in Resources */, 823AAA440A160CA8004CC486 /* up_15.tiff in Resources */, 823AAA550A160DF3004CC486 /* AboutPanel.nib in Resources */, 823AAA560A160DF3004CC486 /* AddressBookPanel.nib in Resources */, 823AAA570A160DF3004CC486 /* ConsoleWindow.nib in Resources */, 823AAA580A160DF3004CC486 /* EditWindow.nib in Resources */, 823AAA590A160DF3004CC486 /* FindWindow.nib in Resources */, 823AAA680A160E12004CC486 /* MailboxInspectorPanel.nib in Resources */, 823AAA690A160E12004CC486 /* MailWindow.nib in Resources */, 823AAA6A0A160E12004CC486 /* MainMenu.nib in Resources */, 823AAA6B0A160E12004CC486 /* MessageViewWindow.nib in Resources */, 823AAA6C0A160E12004CC486 /* NewMailboxPanel.nib in Resources */, 823AAA6D0A160E12004CC486 /* PasswordPanel.nib in Resources */, 823AAA6E0A160E12004CC486 /* PreferencesWindow.nib in Resources */, 823AAAB40A1612B7004CC486 /* InfoPlist.strings in Resources */, 823AAAB70A1612E8004CC486 /* GNUMail.scriptTerminology in Resources */, 824C14E20AC88BD40032E967 /* create_12.tiff in Resources */, 824C14E30AC88BD40032E967 /* create_20.tiff in Resources */, 824C14E40AC88BD40032E967 /* folder_12.tiff in Resources */, 824C14E50AC88BD40032E967 /* folder_16.tiff in Resources */, 824C14E60AC88BD40032E967 /* folder_20.tiff in Resources */, 824C14E70AC88BD40032E967 /* retrieve_12.tiff in Resources */, 824C14E80AC88BD40032E967 /* retrieve_20.tiff in Resources */, 824C14E90AC88BD40032E967 /* send_12.tiff in Resources */, 824C14EA0AC88BD40032E967 /* send_20.tiff in Resources */, 824C14EB0AC88BD40032E967 /* trash_12.tiff in Resources */, 824C14EC0AC88BD40032E967 /* trash_16.tiff in Resources */, 824C14ED0AC88BD40032E967 /* trash_20.tiff in Resources */, 824C14F30AC88CD40032E967 /* drafts_32.tiff in Resources */, 824C14F40AC88CD40032E967 /* drafts_48.tiff in Resources */, 82E5FAF50B74C892005B155C /* Welcome in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 43376E1003C623F60085F876 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 43376E1E03C624050085F876 /* pgp-mail.tiff in Resources */, 43376E2103C6241D0085F876 /* PGPView.nib in Resources */, 43376E2603C6244B0085F876 /* clear_20.tiff in Resources */, 43376E2703C6244B0085F876 /* encrypted_20.tiff in Resources */, 43376E2803C6244B0085F876 /* signed_20.tiff in Resources */, 43376E2903C6244B0085F876 /* unsigned_20.tiff in Resources */, 4396BD000519147F004D63F0 /* encrypted_80.tiff in Resources */, 4396BD010519147F004D63F0 /* signed_80.tiff in Resources */, 4396BD020519147F004D63F0 /* signed+encrypted_80.tiff in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 43376E3203C627140085F876 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 4396BCFC05191438004D63F0 /* stamp.tiff in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 4360B2DD0542198E0029C389 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 43C89DD805422080008048D1 /* MailboxImport.nib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 43974D4F0411792000442E8B /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 43974D65041179D000442E8B /* account.tiff in Resources */, 43974D98041181BF00442E8B /* AccountView.nib in Resources */, 43FE86200411B8E6008E9F6C /* AccountEditorWindow.nib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 43974D6B04117BB800442E8B /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 43974D7B04117CA400442E8B /* colors.tiff in Resources */, 43B32B6404118A8600799887 /* ColorsView.nib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 43974D8104117DFB00442E8B /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 43974D9104117E9B00442E8B /* advanced.tiff in Resources */, 43B32B610411891200799887 /* AdvancedView.nib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 439CDE3505153D050025822F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 439CDE5105153D790025822F /* emoticon-face1.tiff in Resources */, 439CDE5205153D790025822F /* emoticon-face2.tiff in Resources */, 439CDE5305153D790025822F /* emoticon-face3.tiff in Resources */, 439CDE5405153D790025822F /* emoticon-face4.tiff in Resources */, 439CDE5505153D790025822F /* emoticon-face5.tiff in Resources */, 439CDE5605153D790025822F /* emoticon-face6.tiff in Resources */, 439CDE5705153D790025822F /* emoticon-face8.tiff in Resources */, 439CDE5805153D790025822F /* emoticon-face9.tiff in Resources */, 439CDE5905153D790025822F /* emoticon-face10.tiff in Resources */, 439CDE5A05153D790025822F /* emoticon-face11.tiff in Resources */, 439CDE5B05153D790025822F /* emoticon-face13.tiff in Resources */, 439CDE5C05153D790025822F /* emoticon-face14.tiff in Resources */, 439CDE5D05153D790025822F /* emoticon-face15.tiff in Resources */, 439CDE5E05153D790025822F /* emoticon-face19.tiff in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFAC02293DA201A80103 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( F517DFBB02293ECB01A80103 /* ViewingView.nib in Resources */, F5E20AC90229937F01A80103 /* viewing.tiff in Resources */, 438220450411990B00E574E2 /* HeadersWindow.nib in Resources */, 823AE3BD0BB6F7600054A9F4 /* 3-pane_96x96.tiff in Resources */, 823AE3BE0BB6F7600054A9F4 /* drawer_96x96.tiff in Resources */, 823AE3C00BB6F77E0054A9F4 /* floating_96x96.tiff in Resources */, 823AE3C20BB6F79B0054A9F4 /* widescreen_96x96.tiff in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFB202293DA201A80103 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( F517DFC702293F3D01A80103 /* SendingView.nib in Resources */, F5E20ACA0229937F01A80103 /* MailIcon_send.tiff in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFD6022940C901A80103 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( F517E0DC02297BE401A80103 /* ReceivingView.nib in Resources */, F517E0DB02297BE401A80103 /* MailIcon_retrieve.tiff in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFDC022940C901A80103 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( F517E01F0229468D01A80103 /* ComposeView.nib in Resources */, F5E20ACB0229937F01A80103 /* MailIcon_create.tiff in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFE8022940C901A80103 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( F517E03A022947E101A80103 /* fonts.tiff in Resources */, F554A596022B29D201346888 /* FontsView.nib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFEE022940C901A80103 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( F517E0690229494701A80103 /* MimeTypeEditorWindow.nib in Resources */, F517E06A0229494701A80103 /* MIMEView.nib in Resources */, F517E0670229494701A80103 /* mime.tiff in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFF4022940C901A80103 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( F517E06F0229494701A80103 /* FilterEditorWindow.nib in Resources */, F517E0700229494701A80103 /* FilterHeaderEditorWindow.nib in Resources */, F517E0710229494701A80103 /* FilteringView.nib in Resources */, F517E0720229494701A80103 /* FilterMessageWindow.nib in Resources */, F517E08E0229495701A80103 /* Filtering.tiff in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; F58841480249864E01A80205 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 823AA9240A160B8D004CC486 /* GNUmakefile in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXRezBuildPhase section */ 43376E1303C623F60085F876 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 43376E3503C627140085F876 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 4360B2E00542198E0029C389 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 43974D520411792000442E8B /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 43974D6E04117BB800442E8B /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 43974D8404117DFB00442E8B /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; 439CDE3805153D050025822F /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; F517DFAF02293DA201A80103 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; F517DFB502293DA201A80103 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; F517DFD9022940C901A80103 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; F517DFDF022940C901A80103 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; F517DFEB022940C901A80103 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; F517DFF1022940C901A80103 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; F517DFF7022940C901A80103 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; F588414C0249864E01A80205 /* Rez */ = { isa = PBXRezBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXRezBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 29B9732BFDCFA39411CA2CEA /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( F5136EF702F892E301000002 /* GNUMail_main.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 43376E1103C623F60085F876 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 43376E1803C624010085F876 /* PGPController.m in Sources */, 43376E1A03C624020085F876 /* PGPViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 43376E3303C627140085F876 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 43376E3F03C627330085F876 /* Face.m in Sources */, 43376E4103C627330085F876 /* FaceController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 4360B2DE0542198E0029C389 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 4360B2EB05421A350029C389 /* MailboxImportController.m in Sources */, 4360B2EC05421A350029C389 /* MailboxImportController+Filters.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 43974D500411792000442E8B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 43974D61041179A800442E8B /* AccountEditorWindowController.m in Sources */, 43974D63041179A800442E8B /* AccountViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 43974D6C04117BB800442E8B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 43974D7D04117CA400442E8B /* ColorsViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 43974D8204117DFB00442E8B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 43974D9304117E9B00442E8B /* AdvancedViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 439CDE3605153D050025822F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 439CDE6005153D790025822F /* EmoticonController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFAD02293DA201A80103 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( F517DFBC02293ECB01A80103 /* ViewingViewController.m in Sources */, 43974D450411736F00442E8B /* HeadersWindowController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFB302293DA201A80103 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( F517DFC902293F3D01A80103 /* SendingViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFD7022940C901A80103 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( F517E0DE02297BE401A80103 /* ReceivingViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFDD022940C901A80103 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( F517E0200229468D01A80103 /* ComposeViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFE9022940C901A80103 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( F517E03B022947E101A80103 /* FontsViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFEF022940C901A80103 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( F517E06D0229494701A80103 /* MimeTypeEditorWindowController.m in Sources */, F517E06E0229494701A80103 /* MIMEViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; F517DFF5022940C901A80103 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( F517E0910229495701A80103 /* FilterEditorWindowController.m in Sources */, F517E0920229495701A80103 /* FilterHeaderEditorWindowController.m in Sources */, F517E0930229495701A80103 /* FilteringViewController.m in Sources */, F517E0940229495701A80103 /* FilterMessageWindowController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; F58841490249864E01A80205 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 823AA8E90A160B8D004CC486 /* AboutPanelController.m in Sources */, 823AA8EB0A160B8D004CC486 /* AddressBookController.m in Sources */, 823AA8F00A160B8D004CC486 /* ApplicationIconController.m in Sources */, 823AA8F20A160B8D004CC486 /* AutoCompletingTextField.m in Sources */, 823AA8F60A160B8D004CC486 /* ConsoleWindowController.m in Sources */, 823AA8F80A160B8D004CC486 /* Constants.m in Sources */, 823AA8FC0A160B8D004CC486 /* EditWindowController.m in Sources */, 823AA8FE0A160B8D004CC486 /* EditWindowToolbar.m in Sources */, 823AA9000A160B8D004CC486 /* ExtendedCell.m in Sources */, 823AA9020A160B8D004CC486 /* ExtendedFileWrapper.m in Sources */, 823AA9040A160B8D004CC486 /* ExtendedMenuItem.m in Sources */, 823AA9060A160B8D004CC486 /* ExtendedOutlineView.m in Sources */, 823AA9080A160B8D004CC486 /* ExtendedTableView.m in Sources */, 823AA90A0A160B8D004CC486 /* ExtendedTextAttachmentCell.m in Sources */, 823AA90C0A160B8D004CC486 /* ExtendedTextView.m in Sources */, 823AA90E0A160B8D004CC486 /* ExtendedWindow.m in Sources */, 823AA9100A160B8D004CC486 /* Filter.m in Sources */, 823AA9120A160B8D004CC486 /* FilterManager.m in Sources */, 823AA9160A160B8D004CC486 /* FindWindowController.m in Sources */, 823AA9180A160B8D004CC486 /* FolderNode.m in Sources */, 823AA91A0A160B8D004CC486 /* FolderNodePopUpItem.m in Sources */, 823AA91C0A160B8D004CC486 /* GetURLScriptCommand.m in Sources */, 823AA91E0A160B8D004CC486 /* GNUMail.m in Sources */, 823AA9200A160B8D004CC486 /* GNUMail+Extensions.m in Sources */, 823AA9220A160B8D004CC486 /* GNUMail+Services.m in Sources */, 823AA9260A160B8D004CC486 /* ImageTextCell.m in Sources */, 823AA9280A160B8D004CC486 /* LabelWidget.m in Sources */, 823AA92C0A160B8D004CC486 /* MailboxInspectorPanelController.m in Sources */, 823AA9300A160B8D004CC486 /* MailboxManagerCache.m in Sources */, 823AA9320A160B8D004CC486 /* MailboxManagerController.m in Sources */, 823AA9340A160B8D004CC486 /* MailboxManagerToolbar.m in Sources */, 823AA9360A160B8D004CC486 /* MailHeaderCell.m in Sources */, 823AA93A0A160B8D004CC486 /* MailWindowController.m in Sources */, 823AA93C0A160B8D004CC486 /* MailWindowToolbar.m in Sources */, 823AA93E0A160B8D004CC486 /* MessageComposition.m in Sources */, 823AA9420A160B8D004CC486 /* MessageViewWindowController.m in Sources */, 823AA9440A160B8D004CC486 /* MessageViewWindowToolbar.m in Sources */, 823AA9460A160B8D004CC486 /* MimeType.m in Sources */, 823AA9480A160B8D004CC486 /* MimeTypeManager.m in Sources */, 823AA94A0A160B8D004CC486 /* NavigationToolbarItem.m in Sources */, 823AA94E0A160B8D004CC486 /* NewMailboxPanelController.m in Sources */, 823AA9500A160B8D004CC486 /* NSAttributedString+Extensions.m in Sources */, 823AA9520A160B8D004CC486 /* NSAttributedString+TextEnriched.m in Sources */, 823AA9540A160B8D004CC486 /* NSBezierPath+Extensions.m in Sources */, 823AA9560A160B8D004CC486 /* NSBundle+Extensions.m in Sources */, 823AA9580A160B8D004CC486 /* NSColor+Extensions.m in Sources */, 823AA95A0A160B8D004CC486 /* NSFont+Extensions.m in Sources */, 823AA95C0A160B8D004CC486 /* NSPasteboard+Extensions.m in Sources */, 823AA95E0A160B8D004CC486 /* NSUserDefaults+Extensions.m in Sources */, 823AA9620A160B8D004CC486 /* PasswordPanelController.m in Sources */, 823AA9670A160B8D004CC486 /* PreferencesWindowController.m in Sources */, 823AA9690A160B8D004CC486 /* StripeTableView.m in Sources */, 823AA96D0A160B8D004CC486 /* Task.m in Sources */, 823AA96F0A160B8D004CC486 /* TaskManager.m in Sources */, 823AA9710A160B8D004CC486 /* ThreadArcsCell.m in Sources */, 823AA9730A160B8D004CC486 /* Utilities.m in Sources */, 823AA9750A160B8D004CC486 /* WelcomePanel.m in Sources */, 828883E00BA46B110073F597 /* GNUMail+MenuValidation.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ 43376E1603C623F60085F876 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 43376E1403C623F60085F876 /* PGP */; targetProxy = FEF39A8C06AC5AFC00B95F53 /* PBXContainerItemProxy */; }; 43376E3803C627140085F876 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 43376E3603C627140085F876 /* Face */; targetProxy = FEF39A8606AC5AFC00B95F53 /* PBXContainerItemProxy */; }; 4360B2E30542198E0029C389 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 4360B2E10542198E0029C389 /* Import */; targetProxy = FEF39A8906AC5AFC00B95F53 /* PBXContainerItemProxy */; }; 43974D550411792000442E8B /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 43974D530411792000442E8B /* Account */; targetProxy = FEF39A8806AC5AFC00B95F53 /* PBXContainerItemProxy */; }; 43974D7104117BB800442E8B /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 43974D6F04117BB800442E8B /* Colors */; targetProxy = FEF39A8406AC5AFC00B95F53 /* PBXContainerItemProxy */; }; 43974D8704117DFB00442E8B /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 43974D8504117DFB00442E8B /* Advanced */; targetProxy = FEF39A8E06AC5AFC00B95F53 /* PBXContainerItemProxy */; }; 439CDE3B05153D050025822F /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 439CDE3905153D050025822F /* Emoticon */; targetProxy = FEF39A8B06AC5AFC00B95F53 /* PBXContainerItemProxy */; }; F5BC733802F8A3CC01000002 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = F58841430249864E01A80205 /* GNUMail framework */; targetProxy = FEF39A8D06AC5AFC00B95F53 /* PBXContainerItemProxy */; }; F5BC733A02F8A3CC01000002 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = F517DFAA02293DA201A80103 /* Viewing */; targetProxy = FEF39A9206AC5AFC00B95F53 /* PBXContainerItemProxy */; }; F5BC733B02F8A3CC01000002 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = F517DFB002293DA201A80103 /* Sending */; targetProxy = FEF39A9106AC5AFC00B95F53 /* PBXContainerItemProxy */; }; F5BC733C02F8A3CC01000002 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = F517DFD4022940C901A80103 /* Receiving */; targetProxy = FEF39A9006AC5AFC00B95F53 /* PBXContainerItemProxy */; }; F5BC733E02F8A3CC01000002 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = F517DFDA022940C901A80103 /* Compose */; targetProxy = FEF39A8706AC5AFC00B95F53 /* PBXContainerItemProxy */; }; F5BC733F02F8A3CC01000002 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = F517DFE6022940C901A80103 /* Fonts */; targetProxy = FEF39A8A06AC5AFC00B95F53 /* PBXContainerItemProxy */; }; F5BC734002F8A3CC01000002 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = F517DFEC022940C901A80103 /* MIME */; targetProxy = FEF39A8F06AC5AFC00B95F53 /* PBXContainerItemProxy */; }; F5BC734102F8A3CC01000002 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = F517DFF2022940C901A80103 /* Filtering */; targetProxy = FEF39A8506AC5AFC00B95F53 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ 43376E1F03C6241D0085F876 /* PGPView.nib */ = { isa = PBXVariantGroup; children = ( 43376E2003C6241D0085F876 /* English */, ); name = PGPView.nib; sourceTree = ""; }; 438220430411990B00E574E2 /* HeadersWindow.nib */ = { isa = PBXVariantGroup; children = ( 438220440411990B00E574E2 /* English */, ); name = HeadersWindow.nib; sourceTree = ""; }; 43974D96041181BF00442E8B /* AccountView.nib */ = { isa = PBXVariantGroup; children = ( 43974D97041181BF00442E8B /* English */, ); name = AccountView.nib; sourceTree = ""; }; 43B32B5F0411891200799887 /* AdvancedView.nib */ = { isa = PBXVariantGroup; children = ( 43B32B600411891200799887 /* English */, ); name = AdvancedView.nib; sourceTree = ""; }; 43B32B6204118A8600799887 /* ColorsView.nib */ = { isa = PBXVariantGroup; children = ( 43B32B6304118A8600799887 /* English */, ); name = ColorsView.nib; sourceTree = ""; }; 43C89DD605422080008048D1 /* MailboxImport.nib */ = { isa = PBXVariantGroup; children = ( 43C89DD705422080008048D1 /* English */, ); name = MailboxImport.nib; sourceTree = ""; }; 43FE861E0411B8E6008E9F6C /* AccountEditorWindow.nib */ = { isa = PBXVariantGroup; children = ( 43FE861F0411B8E6008E9F6C /* English */, ); name = AccountEditorWindow.nib; sourceTree = ""; }; 823AAA4B0A160DF3004CC486 /* AboutPanel.nib */ = { isa = PBXVariantGroup; children = ( 823AAA4C0A160DF3004CC486 /* English */, ); name = AboutPanel.nib; sourceTree = ""; }; 823AAA4D0A160DF3004CC486 /* AddressBookPanel.nib */ = { isa = PBXVariantGroup; children = ( 823AAA4E0A160DF3004CC486 /* English */, ); name = AddressBookPanel.nib; sourceTree = ""; }; 823AAA4F0A160DF3004CC486 /* ConsoleWindow.nib */ = { isa = PBXVariantGroup; children = ( 823AAA500A160DF3004CC486 /* English */, ); name = ConsoleWindow.nib; sourceTree = ""; }; 823AAA510A160DF3004CC486 /* EditWindow.nib */ = { isa = PBXVariantGroup; children = ( 823AAA520A160DF3004CC486 /* English */, ); name = EditWindow.nib; sourceTree = ""; }; 823AAA530A160DF3004CC486 /* FindWindow.nib */ = { isa = PBXVariantGroup; children = ( 823AAA540A160DF3004CC486 /* English */, ); name = FindWindow.nib; sourceTree = ""; }; 823AAA5A0A160E12004CC486 /* MailboxInspectorPanel.nib */ = { isa = PBXVariantGroup; children = ( 823AAA5B0A160E12004CC486 /* English */, ); name = MailboxInspectorPanel.nib; sourceTree = ""; }; 823AAA5C0A160E12004CC486 /* MailWindow.nib */ = { isa = PBXVariantGroup; children = ( 823AAA5D0A160E12004CC486 /* English */, ); name = MailWindow.nib; sourceTree = ""; }; 823AAA5E0A160E12004CC486 /* MainMenu.nib */ = { isa = PBXVariantGroup; children = ( 823AAA5F0A160E12004CC486 /* English */, ); name = MainMenu.nib; sourceTree = ""; }; 823AAA600A160E12004CC486 /* MessageViewWindow.nib */ = { isa = PBXVariantGroup; children = ( 823AAA610A160E12004CC486 /* English */, ); name = MessageViewWindow.nib; sourceTree = ""; }; 823AAA620A160E12004CC486 /* NewMailboxPanel.nib */ = { isa = PBXVariantGroup; children = ( 823AAA630A160E12004CC486 /* English */, ); name = NewMailboxPanel.nib; sourceTree = ""; }; 823AAA640A160E12004CC486 /* PasswordPanel.nib */ = { isa = PBXVariantGroup; children = ( 823AAA650A160E12004CC486 /* English */, ); name = PasswordPanel.nib; sourceTree = ""; }; 823AAA660A160E12004CC486 /* PreferencesWindow.nib */ = { isa = PBXVariantGroup; children = ( 823AAA670A160E12004CC486 /* English */, ); name = PreferencesWindow.nib; sourceTree = ""; }; 823AAAB20A1612B7004CC486 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( 823AAAB30A1612B7004CC486 /* English */, ); name = InfoPlist.strings; sourceTree = ""; }; 823AAAB50A1612E8004CC486 /* GNUMail.scriptTerminology */ = { isa = PBXVariantGroup; children = ( 823AAAB60A1612E8004CC486 /* English */, ); name = GNUMail.scriptTerminology; sourceTree = ""; }; F517DFB802293ECA01A80103 /* ViewingView.nib */ = { isa = PBXVariantGroup; children = ( F517DFB902293ECA01A80103 /* English */, ); name = ViewingView.nib; sourceTree = ""; }; F517DFC102293F3D01A80103 /* SendingView.nib */ = { isa = PBXVariantGroup; children = ( F517DFC202293F3D01A80103 /* English */, ); name = SendingView.nib; sourceTree = ""; }; F517E01B0229468C01A80103 /* ComposeView.nib */ = { isa = PBXVariantGroup; children = ( F517E01C0229468C01A80103 /* English */, ); name = ComposeView.nib; sourceTree = ""; }; F517E0410229494701A80103 /* FilterEditorWindow.nib */ = { isa = PBXVariantGroup; children = ( F517E0420229494701A80103 /* English */, ); name = FilterEditorWindow.nib; sourceTree = ""; }; F517E0430229494701A80103 /* FilterHeaderEditorWindow.nib */ = { isa = PBXVariantGroup; children = ( F517E0440229494701A80103 /* English */, ); name = FilterHeaderEditorWindow.nib; sourceTree = ""; }; F517E0450229494701A80103 /* FilteringView.nib */ = { isa = PBXVariantGroup; children = ( F517E0460229494701A80103 /* English */, ); name = FilteringView.nib; sourceTree = ""; }; F517E0470229494701A80103 /* FilterMessageWindow.nib */ = { isa = PBXVariantGroup; children = ( F517E0480229494701A80103 /* English */, ); name = FilterMessageWindow.nib; sourceTree = ""; }; F517E05C0229494701A80103 /* MimeTypeEditorWindow.nib */ = { isa = PBXVariantGroup; children = ( F517E05D0229494701A80103 /* English */, ); name = MimeTypeEditorWindow.nib; sourceTree = ""; }; F517E05E0229494701A80103 /* MIMEView.nib */ = { isa = PBXVariantGroup; children = ( F517E05F0229494701A80103 /* English */, ); name = MIMEView.nib; sourceTree = ""; }; F517E0D102297BE401A80103 /* ReceivingView.nib */ = { isa = PBXVariantGroup; children = ( F517E0D202297BE401A80103 /* English */, ); name = ReceivingView.nib; sourceTree = ""; }; F554A594022B29D201346888 /* FontsView.nib */ = { isa = PBXVariantGroup; children = ( F554A595022B29D201346888 /* English */, ); name = FontsView.nib; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 827707B10A13F3D90009F1A9 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = NO; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); FRAMEWORK_VERSION = A; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; INSTALL_PATH = "@executable_path/../Frameworks"; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ( "-seg1addr", 0x14000000, ); OTHER_LIBTOOL_FLAGS = ""; OTHER_REZFLAGS = ""; PRINCIPAL_CLASS = ""; PRODUCT_NAME = GNUMail; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = framework; ZERO_LINK = YES; }; name = Development; }; 827707B20A13F3D90009F1A9 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUGGING_SYMBOLS = NO; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); FRAMEWORK_VERSION = A; GCC_ENABLE_FIX_AND_CONTINUE = NO; INSTALL_PATH = "@executable_path/../Frameworks"; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ( "-seg1addr", 0x14000000, ); OTHER_LIBTOOL_FLAGS = ""; OTHER_REZFLAGS = ""; PRINCIPAL_CLASS = ""; PRODUCT_NAME = GNUMail; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = framework; ZERO_LINK = NO; }; name = Deployment; }; 827707B30A13F3D90009F1A9 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { DEBUGGING_SYMBOLS = NO; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); FRAMEWORK_VERSION = A; INSTALL_PATH = "@executable_path/../Frameworks"; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ( "-seg1addr", 0x14000000, ); OTHER_LIBTOOL_FLAGS = ""; OTHER_REZFLAGS = ""; PRINCIPAL_CLASS = ""; PRODUCT_NAME = GNUMail; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = framework; }; name = Default; }; 827707B50A13F3D90009F1A9 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; HEADER_SEARCH_PATHS = Framework/GNUMail; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Viewing; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = YES; }; name = Development; }; 827707B60A13F3D90009F1A9 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_ENABLE_FIX_AND_CONTINUE = NO; HEADER_SEARCH_PATHS = ""; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Viewing; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = NO; }; name = Deployment; }; 827707B70A13F3D90009F1A9 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); HEADER_SEARCH_PATHS = ""; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Viewing; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; }; name = Default; }; 827707B90A13F3D90009F1A9 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; HEADER_SEARCH_PATHS = Framework/GNUMail; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Sending; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = YES; }; name = Development; }; 827707BA0A13F3D90009F1A9 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_ENABLE_FIX_AND_CONTINUE = NO; HEADER_SEARCH_PATHS = ""; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Sending; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = NO; }; name = Deployment; }; 827707BB0A13F3D90009F1A9 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); HEADER_SEARCH_PATHS = ""; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Sending; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; }; name = Default; }; 827707BD0A13F3D90009F1A9 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; HEADER_SEARCH_PATHS = Framework/GNUMail; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Receiving; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = YES; }; name = Development; }; 827707BE0A13F3D90009F1A9 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_ENABLE_FIX_AND_CONTINUE = NO; HEADER_SEARCH_PATHS = ""; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Receiving; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = NO; }; name = Deployment; }; 827707BF0A13F3D90009F1A9 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); HEADER_SEARCH_PATHS = ""; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Receiving; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; }; name = Default; }; 827707C10A13F3D90009F1A9 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; HEADER_SEARCH_PATHS = Framework/GNUMail; JAVA_COMPILER_DEBUGGING_SYMBOLS = NO; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Compose; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = YES; }; name = Development; }; 827707C20A13F3D90009F1A9 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_ENABLE_FIX_AND_CONTINUE = NO; JAVA_COMPILER_DEBUGGING_SYMBOLS = NO; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Compose; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = NO; }; name = Deployment; }; 827707C30A13F3D90009F1A9 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); JAVA_COMPILER_DEBUGGING_SYMBOLS = NO; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Compose; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; }; name = Default; }; 827707C50A13F3D90009F1A9 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; HEADER_SEARCH_PATHS = Framework/GNUMail; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Fonts; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = YES; }; name = Development; }; 827707C60A13F3D90009F1A9 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_ENABLE_FIX_AND_CONTINUE = NO; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Fonts; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = NO; }; name = Deployment; }; 827707C70A13F3D90009F1A9 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Fonts; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; }; name = Default; }; 827707C90A13F3D90009F1A9 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; HEADER_SEARCH_PATHS = Framework/GNUMail; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = MIME; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = YES; }; name = Development; }; 827707CA0A13F3D90009F1A9 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_ENABLE_FIX_AND_CONTINUE = NO; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = MIME; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = NO; }; name = Deployment; }; 827707CB0A13F3D90009F1A9 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = MIME; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; }; name = Default; }; 827707CD0A13F3D90009F1A9 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; HEADER_SEARCH_PATHS = Framework/GNUMail; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Filtering; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = YES; }; name = Development; }; 827707CE0A13F3D90009F1A9 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_ENABLE_FIX_AND_CONTINUE = NO; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Filtering; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = NO; }; name = Deployment; }; 827707CF0A13F3D90009F1A9 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_REZFLAGS = ""; PRODUCT_NAME = Filtering; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; }; name = Default; }; 827707D10A13F3D90009F1A9 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; HEADER_SEARCH_PATHS = Framework/GNUMail; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = PGP; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = bundle; ZERO_LINK = YES; }; name = Development; }; 827707D20A13F3D90009F1A9 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_ENABLE_FIX_AND_CONTINUE = NO; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = PGP; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = bundle; ZERO_LINK = NO; }; name = Deployment; }; 827707D30A13F3D90009F1A9 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = PGP; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = bundle; }; name = Default; }; 827707D50A13F3D90009F1A9 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; HEADER_SEARCH_PATHS = Framework/GNUMail; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = Face; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = bundle; ZERO_LINK = YES; }; name = Development; }; 827707D60A13F3D90009F1A9 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_ENABLE_FIX_AND_CONTINUE = NO; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = Face; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = bundle; ZERO_LINK = NO; }; name = Deployment; }; 827707D70A13F3D90009F1A9 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = Face; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = bundle; }; name = Default; }; 827707D90A13F3D90009F1A9 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; HEADER_SEARCH_PATHS = Framework/GNUMail; JAVA_COMPILER_DEBUGGING_SYMBOLS = NO; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = Account; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = YES; }; name = Development; }; 827707DA0A13F3D90009F1A9 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_ENABLE_FIX_AND_CONTINUE = NO; JAVA_COMPILER_DEBUGGING_SYMBOLS = NO; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = Account; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = NO; }; name = Deployment; }; 827707DB0A13F3D90009F1A9 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); JAVA_COMPILER_DEBUGGING_SYMBOLS = NO; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = Account; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; }; name = Default; }; 827707DD0A13F3D90009F1A9 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; HEADER_SEARCH_PATHS = Framework/GNUMail; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = Colors; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = YES; }; name = Development; }; 827707DE0A13F3D90009F1A9 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_ENABLE_FIX_AND_CONTINUE = NO; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = Colors; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = NO; }; name = Deployment; }; 827707DF0A13F3D90009F1A9 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = Colors; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; }; name = Default; }; 827707E10A13F3D90009F1A9 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; HEADER_SEARCH_PATHS = Framework/GNUMail; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = Advanced; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = YES; }; name = Development; }; 827707E20A13F3D90009F1A9 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_ENABLE_FIX_AND_CONTINUE = NO; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = Advanced; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; ZERO_LINK = NO; }; name = Deployment; }; 827707E30A13F3D90009F1A9 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = Advanced; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = prefs; }; name = Default; }; 827707E50A13F3D90009F1A9 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; HEADER_SEARCH_PATHS = Framework/GNUMail; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = Emoticon; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = bundle; ZERO_LINK = YES; }; name = Development; }; 827707E60A13F3D90009F1A9 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_ENABLE_FIX_AND_CONTINUE = NO; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = Emoticon; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = bundle; ZERO_LINK = NO; }; name = Deployment; }; 827707E70A13F3D90009F1A9 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = Emoticon; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = bundle; }; name = Default; }; 827707E90A13F3D90009F1A9 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; HEADER_SEARCH_PATHS = Framework/GNUMail; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = Import; SECTORDER_FLAGS = ""; USE_GCC3_PFE_SUPPORT = NO; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = bundle; ZERO_LINK = YES; }; name = Development; }; 827707EA0A13F3D90009F1A9 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_ENABLE_FIX_AND_CONTINUE = NO; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = Import; SECTORDER_FLAGS = ""; USE_GCC3_PFE_SUPPORT = NO; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = bundle; ZERO_LINK = NO; }; name = Deployment; }; 827707EB0A13F3D90009F1A9 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; OTHER_REZFLAGS = ""; PRODUCT_NAME = Import; SECTORDER_FLAGS = ""; USE_GCC3_PFE_SUPPORT = NO; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = bundle; }; name = Default; }; 827707ED0A13F3D90009F1A9 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; GCC_OPTIMIZATION_LEVEL = 0; HEADER_SEARCH_PATHS = ""; LIBRARY_SEARCH_PATHS = ""; OPTIMIZATION_CFLAGS = "-O0"; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; PRODUCT_NAME = GNUMail; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = app; ZERO_LINK = YES; }; name = Development; }; 827707EE0A13F3D90009F1A9 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = YES; DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); GCC_ENABLE_FIX_AND_CONTINUE = NO; HEADER_SEARCH_PATHS = ""; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; PRODUCT_NAME = GNUMail; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = app; ZERO_LINK = NO; }; name = Deployment; }; 827707EF0A13F3D90009F1A9 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { DEBUGGING_SYMBOLS = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SRCROOT)/../Pantomime/build/release", ); HEADER_SEARCH_PATHS = ""; LIBRARY_SEARCH_PATHS = ""; OTHER_CFLAGS = ( "-DMACOSX", "-no-cpp-precomp", ); OTHER_LDFLAGS = ""; PRODUCT_NAME = GNUMail; SECTORDER_FLAGS = ""; WARNING_CFLAGS = ( "-Wmost", "-Wno-four-char-constants", "-Wno-unknown-pragmas", ); WRAPPER_EXTENSION = app; }; name = Default; }; 827707F10A13F3D90009F1A9 /* Development */ = { isa = XCBuildConfiguration; buildSettings = { SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; }; name = Development; }; 827707F20A13F3D90009F1A9 /* Deployment */ = { isa = XCBuildConfiguration; buildSettings = { SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; }; name = Deployment; }; 827707F30A13F3D90009F1A9 /* Default */ = { isa = XCBuildConfiguration; buildSettings = { SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; }; name = Default; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 827707B00A13F3D90009F1A9 /* Build configuration list for PBXFrameworkTarget "GNUMail framework" */ = { isa = XCConfigurationList; buildConfigurations = ( 827707B10A13F3D90009F1A9 /* Development */, 827707B20A13F3D90009F1A9 /* Deployment */, 827707B30A13F3D90009F1A9 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 827707B40A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Viewing" */ = { isa = XCConfigurationList; buildConfigurations = ( 827707B50A13F3D90009F1A9 /* Development */, 827707B60A13F3D90009F1A9 /* Deployment */, 827707B70A13F3D90009F1A9 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 827707B80A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Sending" */ = { isa = XCConfigurationList; buildConfigurations = ( 827707B90A13F3D90009F1A9 /* Development */, 827707BA0A13F3D90009F1A9 /* Deployment */, 827707BB0A13F3D90009F1A9 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 827707BC0A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Receiving" */ = { isa = XCConfigurationList; buildConfigurations = ( 827707BD0A13F3D90009F1A9 /* Development */, 827707BE0A13F3D90009F1A9 /* Deployment */, 827707BF0A13F3D90009F1A9 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 827707C00A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Compose" */ = { isa = XCConfigurationList; buildConfigurations = ( 827707C10A13F3D90009F1A9 /* Development */, 827707C20A13F3D90009F1A9 /* Deployment */, 827707C30A13F3D90009F1A9 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 827707C40A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Fonts" */ = { isa = XCConfigurationList; buildConfigurations = ( 827707C50A13F3D90009F1A9 /* Development */, 827707C60A13F3D90009F1A9 /* Deployment */, 827707C70A13F3D90009F1A9 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 827707C80A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "MIME" */ = { isa = XCConfigurationList; buildConfigurations = ( 827707C90A13F3D90009F1A9 /* Development */, 827707CA0A13F3D90009F1A9 /* Deployment */, 827707CB0A13F3D90009F1A9 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 827707CC0A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Filtering" */ = { isa = XCConfigurationList; buildConfigurations = ( 827707CD0A13F3D90009F1A9 /* Development */, 827707CE0A13F3D90009F1A9 /* Deployment */, 827707CF0A13F3D90009F1A9 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 827707D00A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "PGP" */ = { isa = XCConfigurationList; buildConfigurations = ( 827707D10A13F3D90009F1A9 /* Development */, 827707D20A13F3D90009F1A9 /* Deployment */, 827707D30A13F3D90009F1A9 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 827707D40A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Face" */ = { isa = XCConfigurationList; buildConfigurations = ( 827707D50A13F3D90009F1A9 /* Development */, 827707D60A13F3D90009F1A9 /* Deployment */, 827707D70A13F3D90009F1A9 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 827707D80A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Account" */ = { isa = XCConfigurationList; buildConfigurations = ( 827707D90A13F3D90009F1A9 /* Development */, 827707DA0A13F3D90009F1A9 /* Deployment */, 827707DB0A13F3D90009F1A9 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 827707DC0A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Colors" */ = { isa = XCConfigurationList; buildConfigurations = ( 827707DD0A13F3D90009F1A9 /* Development */, 827707DE0A13F3D90009F1A9 /* Deployment */, 827707DF0A13F3D90009F1A9 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 827707E00A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Advanced" */ = { isa = XCConfigurationList; buildConfigurations = ( 827707E10A13F3D90009F1A9 /* Development */, 827707E20A13F3D90009F1A9 /* Deployment */, 827707E30A13F3D90009F1A9 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 827707E40A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Emoticon" */ = { isa = XCConfigurationList; buildConfigurations = ( 827707E50A13F3D90009F1A9 /* Development */, 827707E60A13F3D90009F1A9 /* Deployment */, 827707E70A13F3D90009F1A9 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 827707E80A13F3D90009F1A9 /* Build configuration list for PBXBundleTarget "Import" */ = { isa = XCConfigurationList; buildConfigurations = ( 827707E90A13F3D90009F1A9 /* Development */, 827707EA0A13F3D90009F1A9 /* Deployment */, 827707EB0A13F3D90009F1A9 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 827707EC0A13F3D90009F1A9 /* Build configuration list for PBXApplicationTarget "GNUMail" */ = { isa = XCConfigurationList; buildConfigurations = ( 827707ED0A13F3D90009F1A9 /* Development */, 827707EE0A13F3D90009F1A9 /* Deployment */, 827707EF0A13F3D90009F1A9 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; 827707F00A13F3D90009F1A9 /* Build configuration list for PBXProject "GNUMail" */ = { isa = XCConfigurationList; buildConfigurations = ( 827707F10A13F3D90009F1A9 /* Development */, 827707F20A13F3D90009F1A9 /* Deployment */, 827707F30A13F3D90009F1A9 /* Default */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Default; }; /* End XCConfigurationList section */ }; rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; }